@confluentinc/mcp-confluent 1.4.0 → 1.6.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 (489) hide show
  1. package/README.md +57 -34
  2. package/config.example.yaml +36 -7
  3. package/config.oauth.example.yaml +14 -1
  4. package/dist/build-config.d.ts +1 -0
  5. package/dist/build-config.d.ts.map +1 -1
  6. package/dist/build-config.js +1 -0
  7. package/dist/build-config.js.map +1 -1
  8. package/dist/cli.d.ts +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +128 -94
  11. package/dist/cli.js.map +1 -1
  12. package/dist/config/env-config.d.ts +9 -3
  13. package/dist/config/env-config.d.ts.map +1 -1
  14. package/dist/config/env-config.js +15 -34
  15. package/dist/config/env-config.js.map +1 -1
  16. package/dist/config/models.d.ts +105 -13
  17. package/dist/config/models.d.ts.map +1 -1
  18. package/dist/config/models.js +49 -37
  19. package/dist/config/models.js.map +1 -1
  20. package/dist/confluent/base-client-manager.d.ts +3 -1
  21. package/dist/confluent/base-client-manager.d.ts.map +1 -1
  22. package/dist/confluent/base-client-manager.js +5 -1
  23. package/dist/confluent/base-client-manager.js.map +1 -1
  24. package/dist/confluent/client-manager.d.ts +15 -1
  25. package/dist/confluent/client-manager.d.ts.map +1 -1
  26. package/dist/confluent/direct-client-manager.d.ts +1 -1
  27. package/dist/confluent/direct-client-manager.d.ts.map +1 -1
  28. package/dist/confluent/middleware.d.ts +1 -1
  29. package/dist/confluent/middleware.d.ts.map +1 -1
  30. package/dist/confluent/node-deps.d.ts +8 -0
  31. package/dist/confluent/node-deps.d.ts.map +1 -1
  32. package/dist/confluent/node-deps.js +9 -2
  33. package/dist/confluent/node-deps.js.map +1 -1
  34. package/dist/confluent/oauth/auth0-config.d.ts +26 -4
  35. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -1
  36. package/dist/confluent/oauth/auth0-config.js +59 -19
  37. package/dist/confluent/oauth/auth0-config.js.map +1 -1
  38. package/dist/confluent/oauth/pkce-login.d.ts.map +1 -1
  39. package/dist/confluent/oauth/pkce-login.js +180 -150
  40. package/dist/confluent/oauth/pkce-login.js.map +1 -1
  41. package/dist/confluent/oauth/types.d.ts +1 -2
  42. package/dist/confluent/oauth/types.d.ts.map +1 -1
  43. package/dist/confluent/oauth-client-manager.d.ts +6 -3
  44. package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
  45. package/dist/confluent/oauth-client-manager.js +28 -6
  46. package/dist/confluent/oauth-client-manager.js.map +1 -1
  47. package/dist/confluent/oauth-resource-resolvers.d.ts +11 -0
  48. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -1
  49. package/dist/confluent/oauth-resource-resolvers.js +24 -0
  50. package/dist/confluent/oauth-resource-resolvers.js.map +1 -1
  51. package/dist/confluent/schema-registry-helper.d.ts +131 -7
  52. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  53. package/dist/confluent/schema-registry-helper.js +336 -40
  54. package/dist/confluent/schema-registry-helper.js.map +1 -1
  55. package/dist/confluent/schema.d.ts +2 -2
  56. package/dist/confluent/schema.d.ts.map +1 -1
  57. package/dist/confluent/sentry-redact.d.ts +5 -0
  58. package/dist/confluent/sentry-redact.d.ts.map +1 -0
  59. package/dist/confluent/sentry-redact.js +64 -0
  60. package/dist/confluent/sentry-redact.js.map +1 -0
  61. package/dist/confluent/sentry.d.ts +23 -0
  62. package/dist/confluent/sentry.d.ts.map +1 -0
  63. package/dist/confluent/sentry.js +68 -0
  64. package/dist/confluent/sentry.js.map +1 -0
  65. package/dist/confluent/tools/base-tools.d.ts +169 -24
  66. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  67. package/dist/confluent/tools/base-tools.js +225 -21
  68. package/dist/confluent/tools/base-tools.js.map +1 -1
  69. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +22 -1
  70. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -1
  71. package/dist/confluent/tools/cluster-arg-resolvers.js +50 -4
  72. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -1
  73. package/dist/confluent/tools/connection-predicates.d.ts +70 -7
  74. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
  75. package/dist/confluent/tools/connection-predicates.js +69 -6
  76. package/dist/confluent/tools/connection-predicates.js.map +1 -1
  77. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +9 -3
  78. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  79. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +77 -62
  80. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  81. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +5 -5
  82. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  83. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +9 -5
  84. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  85. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +5 -5
  86. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  87. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +9 -5
  88. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  89. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +5 -5
  90. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  91. package/dist/confluent/tools/handlers/catalog/delete-tag.js +9 -5
  92. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  93. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +6 -6
  94. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  95. package/dist/confluent/tools/handlers/catalog/list-tags.js +14 -6
  96. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  97. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +5 -5
  98. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  99. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +9 -5
  100. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  101. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +4 -3
  102. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  103. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +1 -1
  104. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  105. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +8 -8
  106. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
  107. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +9 -10
  108. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
  109. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +3 -3
  110. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  111. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +1 -2
  112. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  113. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +3 -3
  114. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  115. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +1 -2
  116. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  117. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts +3 -3
  118. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -1
  119. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +1 -2
  120. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -1
  121. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +3 -3
  122. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -1
  123. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +1 -2
  124. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -1
  125. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +3 -3
  126. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -1
  127. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +2 -3
  128. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -1
  129. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +3 -3
  130. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -1
  131. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +171 -100
  132. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -1
  133. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +3 -3
  134. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -1
  135. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +1 -2
  136. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -1
  137. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +3 -3
  138. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -1
  139. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +1 -2
  140. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -1
  141. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +3 -3
  142. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -1
  143. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +1 -2
  144. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -1
  145. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +3 -3
  146. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  147. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +1 -2
  148. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  149. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +3 -3
  150. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -1
  151. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +1 -2
  152. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -1
  153. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +3 -3
  154. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -1
  155. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +1 -2
  156. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -1
  157. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +3 -3
  158. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -1
  159. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +1 -2
  160. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -1
  161. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +3 -3
  162. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -1
  163. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +1 -2
  164. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -1
  165. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts +43 -0
  166. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts.map +1 -0
  167. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js +297 -0
  168. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js.map +1 -0
  169. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts +32 -0
  170. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts.map +1 -0
  171. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js +116 -0
  172. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js.map +1 -0
  173. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts +52 -0
  174. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts.map +1 -0
  175. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js +114 -0
  176. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js.map +1 -0
  177. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +22 -44
  178. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
  179. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +95 -81
  180. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
  181. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts +28 -0
  182. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts.map +1 -0
  183. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js +93 -0
  184. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js.map +1 -0
  185. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +4 -3
  186. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -1
  187. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -1
  188. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +4 -3
  189. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -1
  190. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -1
  191. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +9 -3
  192. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  193. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +68 -46
  194. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  195. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +4 -3
  196. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  197. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +2 -2
  198. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  199. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +1 -1
  200. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
  201. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +12 -6
  202. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
  203. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +3 -3
  204. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  205. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +24 -21
  206. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  207. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts +1 -1
  208. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -1
  209. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +3 -3
  210. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  211. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +24 -21
  212. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  213. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +3 -3
  214. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  215. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +9 -7
  216. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  217. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +3 -3
  218. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  219. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +14 -12
  220. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  221. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +3 -3
  222. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  223. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +14 -12
  224. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  225. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +3 -3
  226. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  227. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +27 -22
  228. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  229. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +3 -3
  230. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  231. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +20 -12
  232. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  233. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +3 -3
  234. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  235. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +20 -12
  236. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  237. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +3 -3
  238. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  239. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +203 -156
  240. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  241. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +12 -8
  242. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
  243. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js +346 -377
  244. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -1
  245. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +3 -3
  246. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  247. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +374 -317
  248. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  249. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +4 -3
  250. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  251. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -57
  252. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  253. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +27 -6
  254. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
  255. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +37 -7
  256. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
  257. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +3 -3
  258. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  259. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +20 -12
  260. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  261. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts +9 -0
  262. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts.map +1 -0
  263. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.js → get-flink-statement-results-handler.js} +30 -22
  264. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.js.map +1 -0
  265. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts +11 -0
  266. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts.map +1 -0
  267. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js +118 -0
  268. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js.map +1 -0
  269. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +3 -3
  270. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  271. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +19 -17
  272. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  273. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +4 -3
  274. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  275. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +1 -1
  276. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  277. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +21 -10
  278. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  279. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +136 -73
  280. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  281. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +4 -3
  282. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  283. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +12 -3
  284. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  285. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +4 -3
  286. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  287. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +1 -1
  288. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  289. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +4 -3
  290. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -1
  291. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +6 -41
  292. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -1
  293. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +4 -3
  294. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -1
  295. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +6 -10
  296. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -1
  297. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +4 -3
  298. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -1
  299. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +1 -1
  300. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -1
  301. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +4 -3
  302. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  303. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +1 -1
  304. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  305. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +4 -3
  306. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -1
  307. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +1 -1
  308. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -1
  309. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +4 -3
  310. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  311. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +1 -1
  312. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  313. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +1 -1
  314. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -1
  315. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +12 -4
  316. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  317. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +140 -34
  318. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  319. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +5 -5
  320. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  321. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +105 -60
  322. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  323. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +5 -5
  324. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  325. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +75 -57
  326. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  327. package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts +9 -0
  328. package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts.map +1 -0
  329. package/dist/confluent/tools/handlers/metrics/telemetry-error.js +38 -0
  330. package/dist/confluent/tools/handlers/metrics/telemetry-error.js.map +1 -0
  331. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +4 -3
  332. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
  333. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +2 -1
  334. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
  335. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts +11 -0
  336. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts.map +1 -0
  337. package/dist/confluent/tools/handlers/schema/create-schema-handler.js +76 -0
  338. package/dist/confluent/tools/handlers/schema/create-schema-handler.js.map +1 -0
  339. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +4 -3
  340. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  341. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +1 -1
  342. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  343. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +4 -3
  344. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  345. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +101 -72
  346. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  347. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +5 -5
  348. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  349. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +9 -5
  350. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  351. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +5 -5
  352. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  353. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +9 -5
  354. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  355. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts +3 -3
  356. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  357. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +2 -2
  358. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  359. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts +3 -3
  360. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  361. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +2 -2
  362. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  363. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts +3 -3
  364. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  365. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +2 -2
  366. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  367. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts +3 -3
  368. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  369. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +2 -2
  370. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  371. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts +3 -3
  372. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  373. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +1 -1
  374. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  375. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts +3 -3
  376. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  377. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +1 -1
  378. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  379. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +15 -10
  380. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
  381. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +17 -14
  382. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
  383. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +3 -3
  384. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  385. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +2 -2
  386. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  387. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts +3 -3
  388. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  389. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +2 -2
  390. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  391. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts +3 -3
  392. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  393. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +2 -2
  394. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  395. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts +3 -3
  396. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  397. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +2 -2
  398. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  399. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts +3 -3
  400. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  401. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +1 -1
  402. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  403. package/dist/confluent/tools/pagination.d.ts +31 -0
  404. package/dist/confluent/tools/pagination.d.ts.map +1 -0
  405. package/dist/confluent/tools/pagination.js +40 -0
  406. package/dist/confluent/tools/pagination.js.map +1 -0
  407. package/dist/confluent/tools/tool-availability.d.ts +63 -32
  408. package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
  409. package/dist/confluent/tools/tool-availability.js +101 -69
  410. package/dist/confluent/tools/tool-availability.js.map +1 -1
  411. package/dist/confluent/tools/tool-input-error.d.ts +17 -0
  412. package/dist/confluent/tools/tool-input-error.d.ts.map +1 -0
  413. package/dist/confluent/tools/tool-input-error.js +23 -0
  414. package/dist/confluent/tools/tool-input-error.js.map +1 -0
  415. package/dist/confluent/tools/tool-metadata-handler.d.ts +52 -0
  416. package/dist/confluent/tools/tool-metadata-handler.d.ts.map +1 -0
  417. package/dist/confluent/tools/tool-metadata-handler.js +61 -0
  418. package/dist/confluent/tools/tool-metadata-handler.js.map +1 -0
  419. package/dist/confluent/tools/tool-name.d.ts +7 -2
  420. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  421. package/dist/confluent/tools/tool-name.js +6 -1
  422. package/dist/confluent/tools/tool-name.js.map +1 -1
  423. package/dist/confluent/tools/tool-registry.d.ts +1 -1
  424. package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
  425. package/dist/confluent/tools/tool-registry.js +24 -2
  426. package/dist/confluent/tools/tool-registry.js.map +1 -1
  427. package/dist/env-schema.d.ts +0 -1
  428. package/dist/env-schema.d.ts.map +1 -1
  429. package/dist/env-schema.js +0 -7
  430. package/dist/env-schema.js.map +1 -1
  431. package/dist/env.d.ts +1 -2
  432. package/dist/env.d.ts.map +1 -1
  433. package/dist/index.d.ts +54 -64
  434. package/dist/index.d.ts.map +1 -1
  435. package/dist/index.js +78 -324
  436. package/dist/index.js.map +1 -1
  437. package/dist/lazy.d.ts +4 -2
  438. package/dist/lazy.d.ts.map +1 -1
  439. package/dist/lazy.js +27 -12
  440. package/dist/lazy.js.map +1 -1
  441. package/dist/logger.d.ts +1 -1
  442. package/dist/logger.d.ts.map +1 -1
  443. package/dist/mcp/server.d.ts +6 -4
  444. package/dist/mcp/server.d.ts.map +1 -1
  445. package/dist/mcp/server.js +19 -6
  446. package/dist/mcp/server.js.map +1 -1
  447. package/dist/mcp/transports/auth.d.ts +1 -1
  448. package/dist/mcp/transports/auth.d.ts.map +1 -1
  449. package/dist/mcp/transports/http.d.ts +3 -3
  450. package/dist/mcp/transports/http.d.ts.map +1 -1
  451. package/dist/mcp/transports/manager.d.ts +1 -1
  452. package/dist/mcp/transports/manager.d.ts.map +1 -1
  453. package/dist/mcp/transports/manager.js.map +1 -1
  454. package/dist/mcp/transports/ping.d.ts +1 -1
  455. package/dist/mcp/transports/ping.d.ts.map +1 -1
  456. package/dist/mcp/transports/server.d.ts +3 -3
  457. package/dist/mcp/transports/server.d.ts.map +1 -1
  458. package/dist/mcp/transports/server.js +1 -1
  459. package/dist/mcp/transports/server.js.map +1 -1
  460. package/dist/mcp/transports/sse.d.ts +3 -3
  461. package/dist/mcp/transports/sse.d.ts.map +1 -1
  462. package/dist/mcp/transports/stdio.d.ts +2 -2
  463. package/dist/mcp/transports/stdio.d.ts.map +1 -1
  464. package/dist/preflight.d.ts +33 -0
  465. package/dist/preflight.d.ts.map +1 -0
  466. package/dist/preflight.js +68 -0
  467. package/dist/preflight.js.map +1 -0
  468. package/dist/print-md-schema.js +21 -18
  469. package/dist/print-md-schema.js.map +1 -1
  470. package/dist/server-main.d.ts +104 -0
  471. package/dist/server-main.d.ts.map +1 -0
  472. package/dist/server-main.js +410 -0
  473. package/dist/server-main.js.map +1 -0
  474. package/dist/server-runtime.d.ts +22 -7
  475. package/dist/server-runtime.d.ts.map +1 -1
  476. package/dist/server-runtime.js +45 -28
  477. package/dist/server-runtime.js.map +1 -1
  478. package/dist/utils/quote-join-ids.d.ts +9 -0
  479. package/dist/utils/quote-join-ids.d.ts.map +1 -0
  480. package/dist/utils/quote-join-ids.js +11 -0
  481. package/dist/utils/quote-join-ids.js.map +1 -0
  482. package/package.json +37 -35
  483. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +0 -9
  484. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +0 -1
  485. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +0 -1
  486. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +0 -18
  487. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +0 -1
  488. package/dist/confluent/tools/handlers/kafka/topic-metadata.js +0 -18
  489. package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +0 -1
@@ -0,0 +1,68 @@
1
+ import { buildConfig, sentry } from "../confluent/node-deps.js";
2
+ import { redactEvent } from "../confluent/sentry-redact.js";
3
+ import { logger } from "../logger.js";
4
+ let initialized = false;
5
+ /** DSN baked at pack time; empty (-> disabled) on dev/unpacked builds. */
6
+ export function resolveSentryDsn() {
7
+ return buildConfig.SENTRY_DSN || undefined;
8
+ }
9
+ function joinSorted(values) {
10
+ return values.length
11
+ ? [...values].sort((a, b) => a.localeCompare(b)).join(",")
12
+ : "none";
13
+ }
14
+ /**
15
+ * Initialize crash reporting. Short-circuits — no DSN registered, no transport,
16
+ * no global handlers — when the user has opted out or no DSN was baked in. Uses
17
+ * the same resolved `doNotTrack` value as usage analytics, so one switch
18
+ * disables both.
19
+ */
20
+ export function initSentry(opts) {
21
+ if (initialized)
22
+ return; // idempotent: never register the client twice
23
+ if (opts.doNotTrack || !opts.dsn) {
24
+ logger.info("Error reporting disabled");
25
+ return;
26
+ }
27
+ sentry.init({
28
+ dsn: opts.dsn,
29
+ release: opts.release,
30
+ debug: false,
31
+ attachStacktrace: true,
32
+ includeLocalVariables: false,
33
+ tracesSampleRate: 0,
34
+ profilesSampleRate: 0,
35
+ // Defense in depth on top of `beforeSend`: this server handles credentials,
36
+ // so never attach HTTP bodies (may carry secrets) and don't set user.* fields.
37
+ dataCollection: {
38
+ userInfo: false,
39
+ httpBodies: [],
40
+ },
41
+ initialScope: {
42
+ tags: {
43
+ transport: joinSorted(opts.transports),
44
+ connections: joinSorted(opts.connectionTypes),
45
+ },
46
+ },
47
+ integrations: (defaults) => [
48
+ ...defaults,
49
+ sentry.rewriteFramesIntegration(),
50
+ ],
51
+ beforeSend: (event) => redactEvent(event),
52
+ });
53
+ initialized = true;
54
+ logger.info("Error reporting enabled");
55
+ }
56
+ /** Report an error. No-op until {@link initSentry} has registered a client. */
57
+ export function captureException(error, context) {
58
+ if (!initialized)
59
+ return;
60
+ sentry.captureException(error, context);
61
+ }
62
+ export async function closeSentry(timeoutMs = 2000) {
63
+ if (!initialized)
64
+ return true;
65
+ initialized = false;
66
+ return sentry.close(timeoutMs);
67
+ }
68
+ //# sourceMappingURL=sentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../src/confluent/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,WAAW,CAAC,UAAU,IAAI,SAAS,CAAC;AAC7C,CAAC;AAWD,SAAS,UAAU,CAAC,MAAyB;IAC3C,OAAO,MAAM,CAAC,MAAM;QAClB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1D,CAAC,CAAC,MAAM,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,IAAI,WAAW;QAAE,OAAO,CAAC,8CAA8C;IACvE,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,KAAK;QAC5B,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,CAAC;QACrB,4EAA4E;QAC5E,+EAA+E;QAC/E,cAAc,EAAE;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;SACf;QACD,YAAY,EAAE;YACZ,IAAI,EAAE;gBACJ,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBACtC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;aAC9C;SACF;QACD,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1B,GAAG,QAAQ;YACX,MAAM,CAAC,wBAAwB,EAAE;SAClC;QACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;KAC1C,CAAC,CAAC;IACH,WAAW,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAC9B,KAAc,EACd,OAA2C;IAE3C,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAS,GAAG,IAAI;IAChD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
2
- import type { ConnectionConfig } from "../../config/models.js";
2
+ import type { ConnectionConfig, DirectConnectionConfig } from "../../config/models.js";
3
3
  import type { BaseClientManager } from "../../confluent/base-client-manager.js";
4
- import { CallToolResult } from "../../confluent/schema.js";
5
- import { ConnectionPredicate, PredicateResult } from "../../confluent/tools/connection-predicates.js";
4
+ import type { CallToolResult } from "../../confluent/schema.js";
5
+ import type { ConnectionPredicate, PredicateResult } from "../../confluent/tools/connection-predicates.js";
6
6
  import { ToolName } from "../../confluent/tools/tool-name.js";
7
- import { ServerRuntime } from "../../server-runtime.js";
8
- import { ZodRawShape } from "zod";
7
+ import type { ServerRuntime } from "../../server-runtime.js";
8
+ import type { ZodRawShape } from "zod";
9
+ import { z } from "zod";
9
10
  /**
10
11
  * Standard MCP tool annotations.
11
12
  * Tools should reference these constants rather than creating ad-hoc instances.
@@ -13,6 +14,18 @@ import { ZodRawShape } from "zod";
13
14
  export declare const READ_ONLY: ToolAnnotations;
14
15
  export declare const CREATE_UPDATE: ToolAnnotations;
15
16
  export declare const DESTRUCTIVE: ToolAnnotations;
17
+ /**
18
+ * Opening clause of the injected `connectionId` parameter description, before the
19
+ * quoted, comma-separated list of viable connection ids (see
20
+ * {@linkcode quoteJoinIds}) is appended.
21
+ */
22
+ export declare const CONNECTION_ID_DESCRIPTION_PREFIX = "Which configured connection to target. One of: ";
23
+ /**
24
+ * Sentence appended to the `connectionId` description that steers the agent at the
25
+ * discovery tool. Emitted only when that tool is itself reachable; the joining space
26
+ * is added at the call site so a blocked tool leaves no dangling trailing space.
27
+ */
28
+ export declare const LIST_CONFIGURED_CONNECTIONS_POINTER = "Discover connections and learn what tools are supported by each connection by invoking 'list-configured-connections'.";
16
29
  /**
17
30
  * Operator-facing taxonomy of tool kinds.
18
31
  *
@@ -34,8 +47,18 @@ export declare enum ToolCategory {
34
47
  Tableflow = "tableflow"
35
48
  }
36
49
  export interface ToolHandler {
50
+ /** Handle a tool invocation. */
37
51
  handle(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined, sessionId?: string): Promise<CallToolResult> | CallToolResult;
38
- getToolConfig(): ToolConfig;
52
+ /**
53
+ * Produce the actual config registered with MCP for this tool, injecting a
54
+ * required `connectionId` parameter when the server holds more than one
55
+ * connection. See {@linkcode BaseToolHandler.getRegisteredToolConfig} for the
56
+ * rules.
57
+ *
58
+ * This method is called when setting up the MCP server, and we ourselves make
59
+ * the downcall to the handler-authored `getToolConfig()`.
60
+ */
61
+ getRegisteredToolConfig(runtime: ServerRuntime): RegisteredToolConfig;
39
62
  /**
40
63
  * The connection predicate that gates this tool's enablement. Lifted onto
41
64
  * the interface so the MCP tool-call wrapper can compare it against
@@ -68,6 +91,16 @@ export interface ToolHandler {
68
91
  * `describe-tool-availability` diagnostic tool.
69
92
  */
70
93
  connectionVerdicts(runtime: ServerRuntime): Map<string, PredicateResult>;
94
+ /**
95
+ * Whether this tool is enabled irrespective of the configured connections.
96
+ * See {@linkcode BaseToolHandler.isConnectionIndependent}.
97
+ */
98
+ readonly isConnectionIndependent: boolean;
99
+ /**
100
+ * The connection id this invocation routes to, or `undefined` when it routes
101
+ * to none. See {@linkcode BaseToolHandler.resolvedTargetConnectionId}.
102
+ */
103
+ resolvedTargetConnectionId(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): string | undefined;
71
104
  }
72
105
  export interface ToolConfig {
73
106
  name: ToolName;
@@ -75,9 +108,65 @@ export interface ToolConfig {
75
108
  inputSchema: ZodRawShape;
76
109
  annotations: ToolAnnotations;
77
110
  }
111
+ /**
112
+ * The config actually registered with MCP, produced by
113
+ * {@linkcode BaseToolHandler.getRegisteredToolConfig}. Differs from the
114
+ * handler-authored {@linkcode ToolConfig} in that `inputSchema` is a resolved,
115
+ * strict Zod object rather than a bare shape: strict so unknown parameters are
116
+ * rejected (not silently stripped) before `handle()` runs, and resolved because
117
+ * a multi-connection server injects the required `connectionId` enum into it.
118
+ */
119
+ export interface RegisteredToolConfig extends Omit<ToolConfig, "inputSchema"> {
120
+ inputSchema: z.ZodObject;
121
+ }
122
+ /**
123
+ * What the connection-resolution helpers hand back: the chosen connection id,
124
+ * its resolved config, and the client manager bound to it.
125
+ *
126
+ * Generic over the connection arm so the type-neutral resolvers
127
+ * ({@linkcode BaseToolHandler.resolveConnection}) and the direct-narrowing one
128
+ * ({@linkcode BaseToolHandler.resolveDirectConnection}) share a single name —
129
+ * the latter instantiates it via the {@link ResolvedDirectConnection} alias.
130
+ */
131
+ export interface ResolvedConnection<C extends ConnectionConfig = ConnectionConfig> {
132
+ connId: string;
133
+ conn: C;
134
+ clientManager: BaseClientManager;
135
+ }
136
+ /**
137
+ * A {@link ResolvedConnection} pre-narrowed to the direct arm — the return type
138
+ * of {@linkcode BaseToolHandler.resolveDirectConnection}.
139
+ */
140
+ export type ResolvedDirectConnection = ResolvedConnection<DirectConnectionConfig>;
78
141
  export declare abstract class BaseToolHandler implements ToolHandler {
79
142
  abstract handle(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined, sessionId?: string): Promise<CallToolResult> | CallToolResult;
80
- abstract getToolConfig(): ToolConfig;
143
+ protected abstract getToolConfig(): ToolConfig;
144
+ /**
145
+ * Produce the actual config registered with MCP for this tool.
146
+ *
147
+ * * If the tool is connection-oriented and the server is configured
148
+ * with multiple connections, injects a required `connectionId` parameter
149
+ * indicating which connection the tool call should route to.
150
+ * See {@linkcode registeredInputShape} for more details.
151
+ *
152
+ * * Wrap the input schema in `z.object(...).strict()` to uniformly reject
153
+ * unknown parameters before `handle()` runs.
154
+ *
155
+ * This method is called for each active tool when setting up the MCP server.
156
+ *
157
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
158
+ */
159
+ getRegisteredToolConfig(runtime: ServerRuntime): RegisteredToolConfig;
160
+ /**
161
+ * The input shape to register, before strict-wrapping: the authored shape,
162
+ * plus a required `connectionId` enum when the server holds more than one
163
+ * connection AND this tool is connection-oriented. A single-element enum (when
164
+ * only one connection is viable) is still injected on a multi-connection server,
165
+ * so that an explicit request for a non-viable connection (e.g. to a disabled
166
+ * tool because it is read_only) is rejected by the enum rather than silently
167
+ * auto-routed.
168
+ */
169
+ private registeredInputShape;
81
170
  /**
82
171
  * The connection predicate that gates this tool. The single customization
83
172
  * seam for tool enablement — declared as a one-line readonly property:
@@ -117,8 +206,10 @@ export declare abstract class BaseToolHandler implements ToolHandler {
117
206
  */
118
207
  abstract readonly category: ToolCategory;
119
208
  /**
120
- * IDs of connections that satisfy this tool's {@linkcode predicate}. A
121
- * non-empty result enables the tool; an empty result disables it.
209
+ * IDs of connections that satisfy this tool's {@linkcode predicate} and are
210
+ * not blocked by the read-only overlay. A non-empty result enables the tool;
211
+ * an empty result disables it. Derived from {@linkcode connectionVerdicts} so
212
+ * the two stay in lockstep.
122
213
  *
123
214
  * Customize tool gating by declaring {@linkcode predicate}, never by
124
215
  * replacing this derivation.
@@ -127,9 +218,40 @@ export declare abstract class BaseToolHandler implements ToolHandler {
127
218
  */
128
219
  enabledConnectionIds(runtime: ServerRuntime): string[];
129
220
  /**
130
- * Per-connection verdict map for this tool, derived from
131
- * {@linkcode predicate}. Powers grouped startup logging and
132
- * the diagnostic-tool surface.
221
+ * Whether this tool is enabled regardless of the configured connections —
222
+ * true exactly when its {@linkcode predicate} is `alwaysEnabled`, the only
223
+ * predicate that returns enabled without inspecting a connection. Such tools
224
+ * (docs lookup, server diagnostics) never route to a connection, so they
225
+ * register even on a zero-connection config, where the per-connection verdict
226
+ * map driving {@linkcode enabledConnectionIds} is empty.
227
+ */
228
+ get isConnectionIndependent(): boolean;
229
+ /**
230
+ * The connection id this invocation routes to — the OAuth-login gate uses it
231
+ * to launch the browser flow only when a call actually targets the OAuth
232
+ * connection, not merely because one exists somewhere in the config.
233
+ *
234
+ * Returns `undefined` for a connection-independent tool — it routes to no
235
+ * connection, so there is nothing to pre-launch a login for.
236
+ *
237
+ * Otherwise delegates to {@linkcode resolveConnection} so routing is decided
238
+ * in one place rather than duplicated in the gate, and propagates its throw.
239
+ * Every throw path there is a `"Wacky --"` invariant violation: the injected
240
+ * schema (see {@linkcode getRegisteredToolConfig}) makes `connectionId`
241
+ * required for multi-connection tools and strips it for single-connection
242
+ * ones, so a call that can't resolve means that contract broke. Surfacing the
243
+ * error rather than swallowing it to `undefined` lets the broken invariant
244
+ * reach the caller instead of being silently re-discovered inside `handle()`.
245
+ *
246
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
247
+ */
248
+ resolvedTargetConnectionId(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): string | undefined;
249
+ /**
250
+ * Per-connection verdict map for this tool — the single source of truth for
251
+ * enablement. Each verdict composes the {@linkcode predicate} with the
252
+ * read-only overlay (see {@linkcode connectionVerdict}). Powers grouped
253
+ * startup logging, the diagnostic-tool surface, and
254
+ * {@linkcode enabledConnectionIds}.
133
255
  *
134
256
  * Customize tool gating by declaring {@linkcode predicate}, never by
135
257
  * replacing this derivation.
@@ -138,20 +260,43 @@ export declare abstract class BaseToolHandler implements ToolHandler {
138
260
  */
139
261
  connectionVerdicts(runtime: ServerRuntime): Map<string, PredicateResult>;
140
262
  /**
141
- * Resolves the single connection enabled for this tool, returning the
142
- * connection id, its config, and the matching client manager. Designed
143
- * for handlers that look up `runtime.clientManagers[connId]` (multi-
144
- * connection-ready shape).
263
+ * Single-connection verdict composing the two gating layers: the
264
+ * {@linkcode predicate} (service reachability) and the read-only overlay.
265
+ *
266
+ * A connection the predicate already disables keeps that verdict unchanged —
267
+ * service reachability is the more fundamental reason and wins, so a
268
+ * connection missing the service block is never reported as "read-only
269
+ * blocked". Otherwise, a `read_only` connection disables any tool that
270
+ * mutates state (`annotations.readOnlyHint !== true`).
271
+ */
272
+ private connectionVerdict;
273
+ /**
274
+ * Resolves which connection a tool call targets: the explicit `connectionId`
275
+ * argument when present, else the sole connection enabled for this tool.
276
+ * Throws a listing error when the id is unknown/not-enabled, when it is
277
+ * present but not a string, or when omitted while two or more connections are
278
+ * candidates (the augmented schema makes all three unreachable in normal MCP
279
+ * flow — these are defensive backstops against internal call sites).
280
+ *
281
+ * Reads `connectionId` off the **raw** `toolArguments` rather than off the
282
+ * handler's locally-parsed object: the framework already validated it against
283
+ * the registered schema (see {@linkcode getRegisteredToolConfig}), and a
284
+ * handler's own `z.object` re-`parse()` would strip the key it never declared.
145
285
  *
146
- * Selects `enabledConnectionIds(runtime)[0]` — current runtime is single-
147
- * connection, so this is unambiguous; if multi-connection support lands
148
- * later, handlers can switch to iterating ids.
286
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
287
+ */
288
+ protected resolveConnection(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): ResolvedConnection;
289
+ /**
290
+ * Like {@linkcode resolveConnection}, but narrows the resolved connection to
291
+ * a {@link DirectConnectionConfig} — throwing if the addressed connection is
292
+ * OAuth-typed. The throw is a defensive backstop: a tool's `connectionId`
293
+ * enum only offers connections its predicate enables, and the direct-block
294
+ * predicates exclude OAuth, so an OAuth connection is unreachable here via
295
+ * normal MCP flow.
296
+ *
297
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
149
298
  */
150
- protected resolveSoleConnection(runtime: ServerRuntime): {
151
- connId: string;
152
- conn: ConnectionConfig;
153
- clientManager: BaseClientManager;
154
- };
299
+ protected resolveDirectConnection(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): ResolvedDirectConnection;
155
300
  /**
156
301
  * Resolves a required string from an explicit tool argument, falling back to
157
302
  * a connection-config value. Throws if neither is present.
@@ -1 +1 @@
1
- {"version":3,"file":"base-tools.d.ts","sourceRoot":"","sources":["../../../src/confluent/tools/base-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-tools.d.ts","sourceRoot":"","sources":["../../../src/confluent/tools/base-tools.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ import { alwaysEnabled, ENABLED, ToolDisabledReason, } from "../../confluent/tools/connection-predicates.js";
2
+ import { ToolInputError } from "../../confluent/tools/tool-input-error.js";
3
+ import { ToolName } from "../../confluent/tools/tool-name.js";
4
+ import { quoteJoinIds } from "../../utils/quote-join-ids.js";
5
+ import { z } from "zod";
1
6
  /**
2
7
  * Standard MCP tool annotations.
3
8
  * Tools should reference these constants rather than creating ad-hoc instances.
@@ -13,6 +18,18 @@ export const DESTRUCTIVE = {
13
18
  destructiveHint: true,
14
19
  readOnlyHint: false,
15
20
  };
21
+ /**
22
+ * Opening clause of the injected `connectionId` parameter description, before the
23
+ * quoted, comma-separated list of viable connection ids (see
24
+ * {@linkcode quoteJoinIds}) is appended.
25
+ */
26
+ export const CONNECTION_ID_DESCRIPTION_PREFIX = "Which configured connection to target. One of: ";
27
+ /**
28
+ * Sentence appended to the `connectionId` description that steers the agent at the
29
+ * discovery tool. Emitted only when that tool is itself reachable; the joining space
30
+ * is added at the call site so a blocked tool leaves no dangling trailing space.
31
+ */
32
+ export const LIST_CONFIGURED_CONNECTIONS_POINTER = `Discover connections and learn what tools are supported by each connection by invoking '${ToolName.LIST_CONFIGURED_CONNECTIONS}'.`;
16
33
  /**
17
34
  * Operator-facing taxonomy of tool kinds.
18
35
  *
@@ -36,8 +53,77 @@ export var ToolCategory;
36
53
  })(ToolCategory || (ToolCategory = {}));
37
54
  export class BaseToolHandler {
38
55
  /**
39
- * IDs of connections that satisfy this tool's {@linkcode predicate}. A
40
- * non-empty result enables the tool; an empty result disables it.
56
+ * Produce the actual config registered with MCP for this tool.
57
+ *
58
+ * * If the tool is connection-oriented and the server is configured
59
+ * with multiple connections, injects a required `connectionId` parameter
60
+ * indicating which connection the tool call should route to.
61
+ * See {@linkcode registeredInputShape} for more details.
62
+ *
63
+ * * Wrap the input schema in `z.object(...).strict()` to uniformly reject
64
+ * unknown parameters before `handle()` runs.
65
+ *
66
+ * This method is called for each active tool when setting up the MCP server.
67
+ *
68
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
69
+ */
70
+ getRegisteredToolConfig(runtime) {
71
+ const config = this.getToolConfig();
72
+ return {
73
+ ...config,
74
+ inputSchema: z
75
+ .object(this.registeredInputShape(config, runtime))
76
+ .strict(),
77
+ };
78
+ }
79
+ /**
80
+ * The input shape to register, before strict-wrapping: the authored shape,
81
+ * plus a required `connectionId` enum when the server holds more than one
82
+ * connection AND this tool is connection-oriented. A single-element enum (when
83
+ * only one connection is viable) is still injected on a multi-connection server,
84
+ * so that an explicit request for a non-viable connection (e.g. to a disabled
85
+ * tool because it is read_only) is rejected by the enum rather than silently
86
+ * auto-routed.
87
+ */
88
+ registeredInputShape(config, runtime) {
89
+ // Connection-independent tools (docs, diagnostics) never route to a
90
+ // connection and so never need a connectionId parameter.
91
+ if (this.isConnectionIndependent)
92
+ return config.inputSchema;
93
+ // A single-connection (or zero-connection) server has no ambiguity as to
94
+ // which connection a call routes to, so the call auto-routes with no extra
95
+ // argument. The zero-connection case also covers the `--list-tools` runtime,
96
+ // which wants the unaugmented view.
97
+ if (runtime.config.getConnectionIds().length <= 1)
98
+ return config.inputSchema;
99
+ const ids = this.enabledConnectionIds(runtime);
100
+ // A tool viable on no connection is never registered (the enablement filter
101
+ // in index.ts drops it), so this method is never called for one. Reaching
102
+ // here means the wiring is broken; bail loudly rather than build an illegal
103
+ // `z.enum([])`.
104
+ if (ids.length === 0) {
105
+ throw new Error(`Wacky -- tool ${config.name} resolved to zero enabled connections on a multi-connection server; it should never have been registered`);
106
+ }
107
+ // Point the agent at list-configured-connections so it can learn which
108
+ // tools each connection supports — but only when that tool is itself
109
+ // reachable; naming a tool the operator blocked would send the agent
110
+ // chasing a ghost. The leading space rides with the pointer (not the
111
+ // template) so the blocked, empty-pointer case ends cleanly at the period.
112
+ const listConfiguredConnectionsPointer = runtime.isToolAllowed(ToolName.LIST_CONFIGURED_CONNECTIONS)
113
+ ? ` ${LIST_CONFIGURED_CONNECTIONS_POINTER}`
114
+ : "";
115
+ return {
116
+ ...config.inputSchema,
117
+ connectionId: z
118
+ .enum(ids)
119
+ .describe(`${CONNECTION_ID_DESCRIPTION_PREFIX}${quoteJoinIds(ids)}.${listConfiguredConnectionsPointer}`),
120
+ };
121
+ }
122
+ /**
123
+ * IDs of connections that satisfy this tool's {@linkcode predicate} and are
124
+ * not blocked by the read-only overlay. A non-empty result enables the tool;
125
+ * an empty result disables it. Derived from {@linkcode connectionVerdicts} so
126
+ * the two stay in lockstep.
41
127
  *
42
128
  * Customize tool gating by declaring {@linkcode predicate}, never by
43
129
  * replacing this derivation.
@@ -45,14 +131,51 @@ export class BaseToolHandler {
45
131
  * @final — concrete on `BaseToolHandler`; subclasses must not override.
46
132
  */
47
133
  enabledConnectionIds(runtime) {
48
- return Object.entries(runtime.config.connections)
49
- .filter(([, conn]) => this.predicate(conn).enabled)
134
+ return [...this.connectionVerdicts(runtime)]
135
+ .filter(([, verdict]) => verdict.enabled)
50
136
  .map(([id]) => id);
51
137
  }
52
138
  /**
53
- * Per-connection verdict map for this tool, derived from
54
- * {@linkcode predicate}. Powers grouped startup logging and
55
- * the diagnostic-tool surface.
139
+ * Whether this tool is enabled regardless of the configured connections —
140
+ * true exactly when its {@linkcode predicate} is `alwaysEnabled`, the only
141
+ * predicate that returns enabled without inspecting a connection. Such tools
142
+ * (docs lookup, server diagnostics) never route to a connection, so they
143
+ * register even on a zero-connection config, where the per-connection verdict
144
+ * map driving {@linkcode enabledConnectionIds} is empty.
145
+ */
146
+ get isConnectionIndependent() {
147
+ return this.predicate === alwaysEnabled;
148
+ }
149
+ /**
150
+ * The connection id this invocation routes to — the OAuth-login gate uses it
151
+ * to launch the browser flow only when a call actually targets the OAuth
152
+ * connection, not merely because one exists somewhere in the config.
153
+ *
154
+ * Returns `undefined` for a connection-independent tool — it routes to no
155
+ * connection, so there is nothing to pre-launch a login for.
156
+ *
157
+ * Otherwise delegates to {@linkcode resolveConnection} so routing is decided
158
+ * in one place rather than duplicated in the gate, and propagates its throw.
159
+ * Every throw path there is a `"Wacky --"` invariant violation: the injected
160
+ * schema (see {@linkcode getRegisteredToolConfig}) makes `connectionId`
161
+ * required for multi-connection tools and strips it for single-connection
162
+ * ones, so a call that can't resolve means that contract broke. Surfacing the
163
+ * error rather than swallowing it to `undefined` lets the broken invariant
164
+ * reach the caller instead of being silently re-discovered inside `handle()`.
165
+ *
166
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
167
+ */
168
+ resolvedTargetConnectionId(runtime, toolArguments) {
169
+ if (this.isConnectionIndependent)
170
+ return undefined;
171
+ return this.resolveConnection(runtime, toolArguments).connId;
172
+ }
173
+ /**
174
+ * Per-connection verdict map for this tool — the single source of truth for
175
+ * enablement. Each verdict composes the {@linkcode predicate} with the
176
+ * read-only overlay (see {@linkcode connectionVerdict}). Powers grouped
177
+ * startup logging, the diagnostic-tool surface, and
178
+ * {@linkcode enabledConnectionIds}.
56
179
  *
57
180
  * Customize tool gating by declaring {@linkcode predicate}, never by
58
181
  * replacing this derivation.
@@ -62,27 +185,108 @@ export class BaseToolHandler {
62
185
  connectionVerdicts(runtime) {
63
186
  return new Map(Object.entries(runtime.config.connections).map(([id, conn]) => [
64
187
  id,
65
- this.predicate(conn),
188
+ this.connectionVerdict(conn),
66
189
  ]));
67
190
  }
68
191
  /**
69
- * Resolves the single connection enabled for this tool, returning the
70
- * connection id, its config, and the matching client manager. Designed
71
- * for handlers that look up `runtime.clientManagers[connId]` (multi-
72
- * connection-ready shape).
192
+ * Single-connection verdict composing the two gating layers: the
193
+ * {@linkcode predicate} (service reachability) and the read-only overlay.
194
+ *
195
+ * A connection the predicate already disables keeps that verdict unchanged —
196
+ * service reachability is the more fundamental reason and wins, so a
197
+ * connection missing the service block is never reported as "read-only
198
+ * blocked". Otherwise, a `read_only` connection disables any tool that
199
+ * mutates state (`annotations.readOnlyHint !== true`).
200
+ */
201
+ connectionVerdict(conn) {
202
+ const verdict = this.predicate(conn);
203
+ if (!verdict.enabled)
204
+ return verdict;
205
+ if (conn.read_only === true &&
206
+ this.getToolConfig().annotations.readOnlyHint !== true) {
207
+ return { enabled: false, reason: ToolDisabledReason.ReadOnlyConnection };
208
+ }
209
+ return ENABLED;
210
+ }
211
+ /**
212
+ * Resolves which connection a tool call targets: the explicit `connectionId`
213
+ * argument when present, else the sole connection enabled for this tool.
214
+ * Throws a listing error when the id is unknown/not-enabled, when it is
215
+ * present but not a string, or when omitted while two or more connections are
216
+ * candidates (the augmented schema makes all three unreachable in normal MCP
217
+ * flow — these are defensive backstops against internal call sites).
73
218
  *
74
- * Selects `enabledConnectionIds(runtime)[0]` — current runtime is single-
75
- * connection, so this is unambiguous; if multi-connection support lands
76
- * later, handlers can switch to iterating ids.
219
+ * Reads `connectionId` off the **raw** `toolArguments` rather than off the
220
+ * handler's locally-parsed object: the framework already validated it against
221
+ * the registered schema (see {@linkcode getRegisteredToolConfig}), and a
222
+ * handler's own `z.object` re-`parse()` would strip the key it never declared.
223
+ *
224
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
77
225
  */
78
- resolveSoleConnection(runtime) {
79
- const connId = this.enabledConnectionIds(runtime)[0];
226
+ resolveConnection(runtime, toolArguments) {
227
+ // The connection this tool call should route to.
228
+ let determinedId;
229
+ // What connection ids this tool possibly supports.
230
+ const enabledIds = this.enabledConnectionIds(runtime);
231
+ // The requested connection id, if the caller provided one. Per the Zod schema injected by
232
+ // `getRegisteredToolConfig()` it should be a string that is one of the enabled ids; both
233
+ // expectations are enforced below rather than assumed.
234
+ const requestedId = toolArguments?.connectionId;
235
+ if (typeof requestedId === "string") {
236
+ if (!enabledIds.includes(requestedId)) {
237
+ throw new Error(`Wacky -- connection "${requestedId}" is not an enabled connection for this tool; enabled: ${enabledIds.join(", ")}`);
238
+ }
239
+ // Explicit requested ID must be valid based on the injected schema enum already having validated it, so can
240
+ // at this point trust fully.
241
+ determinedId = requestedId;
242
+ }
243
+ else if (requestedId !== undefined) {
244
+ // Unreachable in normal operation: Zod has already validated `args`
245
+ // against the registered schema before `handle()` runs, and that schema
246
+ // either declares `connectionId` as a string enum (multi-connection
247
+ // servers — a non-string fails parsing) or omits it entirely (single-
248
+ // connection servers — the strict schema rejects the unknown key). Either
249
+ // way a non-string can't survive to reach this branch. It exists purely as a symmetric
250
+ // peer to the two backstops below, so a malformed value can never quietly
251
+ // masquerade as an omission and auto-route.
252
+ throw new Error(`Wacky -- connectionId present but not a string (got ${typeof requestedId}); the injected schema should have rejected this`);
253
+ }
254
+ else if (enabledIds.length === 1) {
255
+ // No requested ID, but only one enabled connection — unambiguous, so route there.
256
+ determinedId = enabledIds[0];
257
+ }
258
+ else {
259
+ // Not a string and not a sole enabled connection. Should have been blocked by the injected schema.
260
+ throw new Error(`Wacky -- connectionId omitted but this tool is enabled for ${enabledIds.length} connections (${enabledIds.join(", ") || "none"}); cannot auto-route`);
261
+ }
80
262
  return {
81
- connId,
82
- conn: runtime.config.connections[connId],
83
- clientManager: runtime.clientManagers[connId],
263
+ connId: determinedId,
264
+ conn: runtime.config.connections[determinedId],
265
+ clientManager: runtime.clientManagers[determinedId],
84
266
  };
85
267
  }
268
+ /**
269
+ * Like {@linkcode resolveConnection}, but narrows the resolved connection to
270
+ * a {@link DirectConnectionConfig} — throwing if the addressed connection is
271
+ * OAuth-typed. The throw is a defensive backstop: a tool's `connectionId`
272
+ * enum only offers connections its predicate enables, and the direct-block
273
+ * predicates exclude OAuth, so an OAuth connection is unreachable here via
274
+ * normal MCP flow.
275
+ *
276
+ * @final — concrete on `BaseToolHandler`; subclasses must not override.
277
+ */
278
+ resolveDirectConnection(runtime, toolArguments) {
279
+ // Reuse resolveConnection for id selection + validation; this method only
280
+ // adds the direct-vs-oauth narrowing on top of its type-neutral result.
281
+ const { connId, conn, clientManager } = this.resolveConnection(runtime, toolArguments);
282
+ // A resolved OAuth connection means the wiring is broken (a non-oauth tool
283
+ // somehow offered an oauth id), not that a caller legitimately asked for one.
284
+ if (conn.type !== "direct") {
285
+ throw new Error(`Wacky -- connection "${connId}" is ${conn.type}-typed; this tool requires a direct connection`);
286
+ }
287
+ // conn is narrowed to DirectConnectionConfig by the guard above.
288
+ return { connId, conn, clientManager };
289
+ }
86
290
  /**
87
291
  * Resolves a required string from an explicit tool argument, falling back to
88
292
  * a connection-config value. Throws if neither is present.
@@ -93,7 +297,7 @@ export class BaseToolHandler {
93
297
  resolveParam(argValue, configValue, label) {
94
298
  const resolved = argValue?.trim() || configValue?.trim();
95
299
  if (!resolved)
96
- throw new Error(`${label} is required`);
300
+ throw new ToolInputError(`${label} is required`);
97
301
  return resolved;
98
302
  }
99
303
  /** Like resolveParam but returns undefined instead of throwing when both are absent or blank. The returned value is always trimmed. */