@confluentinc/mcp-confluent 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/README.md +52 -31
  2. package/config.example.yaml +36 -7
  3. package/config.oauth.example.yaml +14 -1
  4. package/dist/config/env-config.d.ts +9 -3
  5. package/dist/config/env-config.d.ts.map +1 -1
  6. package/dist/config/env-config.js +15 -34
  7. package/dist/config/env-config.js.map +1 -1
  8. package/dist/config/models.d.ts +105 -13
  9. package/dist/config/models.d.ts.map +1 -1
  10. package/dist/config/models.js +49 -37
  11. package/dist/config/models.js.map +1 -1
  12. package/dist/confluent/base-client-manager.d.ts +2 -0
  13. package/dist/confluent/base-client-manager.d.ts.map +1 -1
  14. package/dist/confluent/base-client-manager.js +4 -0
  15. package/dist/confluent/base-client-manager.js.map +1 -1
  16. package/dist/confluent/client-manager.d.ts +14 -0
  17. package/dist/confluent/client-manager.d.ts.map +1 -1
  18. package/dist/confluent/oauth/auth0-config.d.ts +26 -4
  19. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -1
  20. package/dist/confluent/oauth/auth0-config.js +59 -19
  21. package/dist/confluent/oauth/auth0-config.js.map +1 -1
  22. package/dist/confluent/oauth/types.d.ts +1 -2
  23. package/dist/confluent/oauth/types.d.ts.map +1 -1
  24. package/dist/confluent/oauth-client-manager.d.ts +5 -2
  25. package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
  26. package/dist/confluent/oauth-client-manager.js +28 -6
  27. package/dist/confluent/oauth-client-manager.js.map +1 -1
  28. package/dist/confluent/oauth-resource-resolvers.d.ts +11 -0
  29. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -1
  30. package/dist/confluent/oauth-resource-resolvers.js +24 -0
  31. package/dist/confluent/oauth-resource-resolvers.js.map +1 -1
  32. package/dist/confluent/schema-registry-helper.d.ts +114 -7
  33. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  34. package/dist/confluent/schema-registry-helper.js +302 -40
  35. package/dist/confluent/schema-registry-helper.js.map +1 -1
  36. package/dist/confluent/tools/base-tools.d.ts +165 -21
  37. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  38. package/dist/confluent/tools/base-tools.js +223 -20
  39. package/dist/confluent/tools/base-tools.js.map +1 -1
  40. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +21 -0
  41. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -1
  42. package/dist/confluent/tools/cluster-arg-resolvers.js +45 -0
  43. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -1
  44. package/dist/confluent/tools/connection-predicates.d.ts +70 -7
  45. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
  46. package/dist/confluent/tools/connection-predicates.js +69 -6
  47. package/dist/confluent/tools/connection-predicates.js.map +1 -1
  48. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +1 -1
  49. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  50. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +1 -2
  51. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  52. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +9 -5
  53. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  54. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +1 -2
  55. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  56. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +9 -5
  57. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  58. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +1 -2
  59. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  60. package/dist/confluent/tools/handlers/catalog/delete-tag.js +9 -5
  61. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  62. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +2 -3
  63. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  64. package/dist/confluent/tools/handlers/catalog/list-tags.js +14 -6
  65. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  66. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +1 -2
  67. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  68. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +9 -5
  69. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  70. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  71. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +1 -1
  72. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  73. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +8 -8
  74. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
  75. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +9 -10
  76. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
  77. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  78. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +1 -2
  79. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  80. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  81. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +1 -2
  82. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  83. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -1
  84. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +1 -2
  85. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -1
  86. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -1
  87. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +1 -2
  88. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -1
  89. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -1
  90. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +1 -2
  91. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -1
  92. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -1
  93. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +36 -11
  94. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -1
  95. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -1
  96. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +1 -2
  97. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -1
  98. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -1
  99. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +1 -2
  100. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -1
  101. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -1
  102. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +1 -2
  103. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -1
  104. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  105. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +1 -2
  106. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  107. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -1
  108. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +1 -2
  109. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -1
  110. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -1
  111. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +1 -2
  112. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -1
  113. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -1
  114. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +1 -2
  115. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -1
  116. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -1
  117. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +1 -2
  118. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -1
  119. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts +42 -0
  120. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts.map +1 -0
  121. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js +297 -0
  122. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js.map +1 -0
  123. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts +31 -0
  124. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts.map +1 -0
  125. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js +116 -0
  126. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js.map +1 -0
  127. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts +52 -0
  128. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts.map +1 -0
  129. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js +114 -0
  130. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js.map +1 -0
  131. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +19 -42
  132. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
  133. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +95 -81
  134. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
  135. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts +27 -0
  136. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts.map +1 -0
  137. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js +93 -0
  138. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js.map +1 -0
  139. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +1 -1
  140. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  141. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +1 -1
  142. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  143. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  144. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +24 -21
  145. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  146. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  147. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +24 -21
  148. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  149. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  150. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +9 -7
  151. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  152. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  153. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +14 -12
  154. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  155. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  156. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +14 -12
  157. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  158. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  159. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +27 -22
  160. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  161. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  162. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +20 -12
  163. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  164. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  165. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +20 -12
  166. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  167. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  168. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +20 -18
  169. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  170. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  171. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +24 -22
  172. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  173. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +3 -2
  174. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  175. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -57
  176. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  177. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +27 -6
  178. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
  179. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +36 -7
  180. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
  181. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  182. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +20 -12
  183. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  184. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.d.ts → get-flink-statement-results-handler.d.ts} +2 -2
  185. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts.map +1 -0
  186. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.js → get-flink-statement-results-handler.js} +30 -22
  187. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.js.map +1 -0
  188. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts +10 -0
  189. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts.map +1 -0
  190. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js +118 -0
  191. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js.map +1 -0
  192. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  193. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +19 -17
  194. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  195. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  196. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +1 -1
  197. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  198. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +15 -5
  199. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  200. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +54 -10
  201. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  202. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  203. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +12 -3
  204. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  205. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  206. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +1 -1
  207. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  208. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -1
  209. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +1 -1
  210. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -1
  211. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -1
  212. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +1 -1
  213. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -1
  214. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -1
  215. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +1 -1
  216. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -1
  217. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  218. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +1 -1
  219. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  220. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -1
  221. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +1 -1
  222. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -1
  223. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  224. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +1 -1
  225. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  226. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +8 -1
  227. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  228. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +140 -34
  229. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  230. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +1 -2
  231. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  232. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +3 -3
  233. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  234. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +1 -2
  235. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  236. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +6 -4
  237. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  238. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
  239. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +2 -1
  240. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
  241. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts +10 -0
  242. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts.map +1 -0
  243. package/dist/confluent/tools/handlers/schema/create-schema-handler.js +76 -0
  244. package/dist/confluent/tools/handlers/schema/create-schema-handler.js.map +1 -0
  245. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +1 -1
  246. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  247. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +1 -1
  248. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  249. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +1 -2
  250. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  251. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +9 -5
  252. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  253. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +1 -2
  254. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  255. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +9 -5
  256. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  257. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  258. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +2 -2
  259. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  260. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  261. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +2 -2
  262. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  263. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  264. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +2 -2
  265. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  266. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  267. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +2 -2
  268. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  269. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  270. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +1 -1
  271. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  272. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  273. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +1 -1
  274. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  275. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +15 -10
  276. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
  277. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +17 -14
  278. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
  279. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  280. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +2 -2
  281. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  282. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  283. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +2 -2
  284. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  285. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  286. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +2 -2
  287. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  288. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  289. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +2 -2
  290. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  291. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  292. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +1 -1
  293. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  294. package/dist/confluent/tools/tool-availability.d.ts +59 -28
  295. package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
  296. package/dist/confluent/tools/tool-availability.js +101 -69
  297. package/dist/confluent/tools/tool-availability.js.map +1 -1
  298. package/dist/confluent/tools/tool-metadata-handler.d.ts +51 -0
  299. package/dist/confluent/tools/tool-metadata-handler.d.ts.map +1 -0
  300. package/dist/confluent/tools/tool-metadata-handler.js +61 -0
  301. package/dist/confluent/tools/tool-metadata-handler.js.map +1 -0
  302. package/dist/confluent/tools/tool-name.d.ts +7 -2
  303. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  304. package/dist/confluent/tools/tool-name.js +6 -1
  305. package/dist/confluent/tools/tool-name.js.map +1 -1
  306. package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
  307. package/dist/confluent/tools/tool-registry.js +24 -2
  308. package/dist/confluent/tools/tool-registry.js.map +1 -1
  309. package/dist/env-schema.d.ts +0 -1
  310. package/dist/env-schema.d.ts.map +1 -1
  311. package/dist/env-schema.js +0 -7
  312. package/dist/env-schema.js.map +1 -1
  313. package/dist/env.d.ts +0 -1
  314. package/dist/env.d.ts.map +1 -1
  315. package/dist/index.d.ts +54 -64
  316. package/dist/index.d.ts.map +1 -1
  317. package/dist/index.js +78 -324
  318. package/dist/index.js.map +1 -1
  319. package/dist/lazy.d.ts +4 -2
  320. package/dist/lazy.d.ts.map +1 -1
  321. package/dist/lazy.js +27 -12
  322. package/dist/lazy.js.map +1 -1
  323. package/dist/mcp/server.d.ts.map +1 -1
  324. package/dist/mcp/server.js +8 -5
  325. package/dist/mcp/server.js.map +1 -1
  326. package/dist/preflight.d.ts +33 -0
  327. package/dist/preflight.d.ts.map +1 -0
  328. package/dist/preflight.js +68 -0
  329. package/dist/preflight.js.map +1 -0
  330. package/dist/server-main.d.ts +98 -0
  331. package/dist/server-main.d.ts.map +1 -0
  332. package/dist/server-main.js +383 -0
  333. package/dist/server-main.js.map +1 -0
  334. package/dist/server-runtime.d.ts +20 -5
  335. package/dist/server-runtime.d.ts.map +1 -1
  336. package/dist/server-runtime.js +45 -28
  337. package/dist/server-runtime.js.map +1 -1
  338. package/dist/utils/quote-join-ids.d.ts +9 -0
  339. package/dist/utils/quote-join-ids.d.ts.map +1 -0
  340. package/dist/utils/quote-join-ids.js +11 -0
  341. package/dist/utils/quote-join-ids.js.map +1 -0
  342. package/package.json +32 -34
  343. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +0 -1
  344. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +0 -1
@@ -3,23 +3,33 @@
3
3
  * It handles schema registration, serialization, and deserialization of messages
4
4
  * using various schema formats (AVRO, JSON, PROTOBUF).
5
5
  */
6
- import { AvroDeserializer, AvroSerializer, JsonDeserializer, JsonSerializer, ProtobufDeserializer, ProtobufSerializer, SerdeType, } from "@confluentinc/schemaregistry";
6
+ import { createFileRegistry, createMutableRegistry, fromBinary, fromJson, } from "@bufbuild/protobuf";
7
+ import { FileDescriptorProtoSchema, FileDescriptorSetSchema, } from "@bufbuild/protobuf/wkt";
8
+ import { AvroDeserializer, AvroSerializer, HeaderSchemaIdSerializer, JsonDeserializer, JsonSerializer, ProtobufDeserializer, ProtobufSerializer, SchemaId, SerdeType, } from "@confluentinc/schemaregistry";
7
9
  import { logger } from "../logger.js";
10
+ import protobuf from "protobufjs";
11
+ import descriptor from "protobufjs/ext/descriptor/index.js";
8
12
  /**
9
13
  * Creates and returns the appropriate serializer instance based on schema type.
10
- * The serializer is configured to use either a specific schema ID or the latest version.
14
+ *
15
+ * This is a pure factory: it maps a {@link SchemaType} to its serializer
16
+ * constructor and forwards the caller-built {@link SerializerConfig}. The
17
+ * format-specific *decisions* — schema-id vs. use-latest for AVRO/JSON, plus the descriptor registry for PROTOBUF — live
18
+ * with the callers ({@link serializeMessage}, {@link serializeProtobufMessage}),
19
+ * which is why the config arrives ready-made. For PROTOBUF the descriptor
20
+ * registry rides inside the config as its optional `registry` field
21
+ * (`ProtobufSerializerConfig = SerializerConfig & { registry?: MutableRegistry }`).
11
22
  *
12
23
  * @param schemaType - The type of schema (AVRO, JSON, PROTOBUF)
13
24
  * @param registry - The schema registry client instance
14
25
  * @param serdeType - Whether this is for key or value serialization
15
- * @param schemaId - Optional schema ID to use for serialization
26
+ * @param serializerConfig - The serializer configuration to forward (use-latest,
27
+ * use-schema-id, the optional `schemaIdLocation` header serializer, and/or the
28
+ * PROTOBUF descriptor registry)
16
29
  * @returns The appropriate Serializer instance
17
30
  * @throws Error if the schema type is unknown or unsupported
18
31
  */
19
- export function getSerializer(schemaType, registry, serdeType, schemaId) {
20
- const serializerConfig = typeof schemaId === "number"
21
- ? { useSchemaId: schemaId }
22
- : { useLatestVersion: true };
32
+ export function getSerializer(schemaType, registry, serdeType, serializerConfig) {
23
33
  const serializers = {
24
34
  AVRO: () => new AvroSerializer(registry, serdeType, serializerConfig),
25
35
  JSON: () => new JsonSerializer(registry, serdeType, serializerConfig),
@@ -104,6 +114,161 @@ export async function getLatestSchemaIfExists(registry, subject) {
104
114
  throw err;
105
115
  }
106
116
  }
117
+ /**
118
+ * Fetches the latest registered schema for a subject and asserts it matches the
119
+ * requested schema type. Without this guard a use-latest produce against a
120
+ * subject registered with a different format fails deep inside the serializer
121
+ * with an opaque parse/decode error (e.g. an AvroSerializer trying to parse a
122
+ * JSON schema string, or the Protobuf path base64-decoding an Avro schema);
123
+ * surfacing the mismatch here gives the caller an actionable message instead.
124
+ *
125
+ * @param registry - The schema registry client instance
126
+ * @param subject - The resolved Schema Registry subject
127
+ * @param expected - The schema type the caller asked to produce with
128
+ * @returns The latest schema string and (matching) schema type
129
+ * @throws Error if no schema is registered for the subject, or the registered
130
+ * schema type differs from `expected`
131
+ */
132
+ export async function getLatestSchemaOfTypeOrThrow(registry, subject, expected) {
133
+ const latest = await getLatestSchemaIfExists(registry, subject);
134
+ if (!latest) {
135
+ throw new Error(`No ${expected} schema registered for subject '${subject}', and none provided.`);
136
+ }
137
+ if (latest.schemaType !== expected) {
138
+ throw new Error(`Subject '${subject}' is registered as ${latest.schemaType}, but the requested schemaType is ${expected}. ` +
139
+ `Use the matching schemaType, or produce to a different subject.`);
140
+ }
141
+ return latest;
142
+ }
143
+ /**
144
+ * Builds a `@bufbuild/protobuf` descriptor registry from raw `.proto` schema text.
145
+ *
146
+ * The `@confluentinc/schemaregistry` ProtobufSerializer encodes locally against
147
+ * a descriptor registry, so we parse the `.proto` text with protobufjs, export
148
+ * it to a canonical `FileDescriptorSet` (the standard `google.protobuf` wire
149
+ * format), and read that into a registry. This is the path used when the caller
150
+ * supplies the schema on a produce.
151
+ *
152
+ * @param protoText - The `.proto` schema definition (proto3)
153
+ * @returns A mutable descriptor registry the serializer can consume
154
+ * @throws Error if the `.proto` text cannot be parsed
155
+ */
156
+ export function protobufRegistryFromProto(protoText) {
157
+ try {
158
+ const root = protobuf.parse(protoText, { keepCase: true }).root;
159
+ root.resolveAll();
160
+ // protobufjs/ext/descriptor exposes FileDescriptorSet and augments Root with
161
+ // toDescriptor at runtime, but v8's bundled types no longer declare either on
162
+ // the exported shape, so narrow both locally.
163
+ const FileDescriptorSet = descriptor.FileDescriptorSet;
164
+ const toDescriptor = root.toDescriptor;
165
+ const fileDescriptorSet = toDescriptor.call(root, "proto3");
166
+ const bytes = FileDescriptorSet.encode(fileDescriptorSet).finish();
167
+ return createMutableRegistry(createFileRegistry(fromBinary(FileDescriptorSetSchema, bytes)));
168
+ }
169
+ catch (err) {
170
+ throw new Error(`Failed to parse Protobuf schema: ${err instanceof Error ? err.message : String(err)}`);
171
+ }
172
+ }
173
+ /**
174
+ * Serialize a message when Schema Registry is not in use: a string passes
175
+ * through verbatim, anything else is JSON-encoded. Warns on a non-string
176
+ * payload, which a schema-bearing topic will likely reject.
177
+ */
178
+ function serializeWithoutSchemaRegistry(message) {
179
+ if (typeof message !== "string") {
180
+ logger.warn("Warning: Sending non-string message without schema registry. This may fail if the topic expects a schema.");
181
+ }
182
+ return typeof message === "string" ? message : JSON.stringify(message);
183
+ }
184
+ /**
185
+ * Validate the preconditions for Schema Registry serialization, narrowing
186
+ * `registry` to non-undefined for the caller. Throws an actionable error when
187
+ * the schema type is missing, no registry client is configured, or header
188
+ * mode was requested without a record-header accumulator. The
189
+ * HeaderSchemaIdSerializer writes the schema-id header into the headers object
190
+ * it's handed; with no accumulator the library otherwise throws a cryptic
191
+ * "Missing Headers", so fail fast here instead.
192
+ */
193
+ function assertSchemaRegistrySerializable(options, registry, recordHeaders) {
194
+ if (!options.schemaType) {
195
+ throw new Error("schemaType is required when useSchemaRegistry is true");
196
+ }
197
+ if (!registry) {
198
+ throw new Error("Schema Registry client is required for serialization");
199
+ }
200
+ if (options.schemaIdLocation === "header" && !recordHeaders) {
201
+ throw new Error("schemaIdLocation 'header' requires a record-header accumulator to write the schema-id header into.");
202
+ }
203
+ }
204
+ /**
205
+ * Register the caller-supplied schema under `subject` and return its assigned
206
+ * id, or undefined when no schema was supplied (the use-latest path). Wraps a
207
+ * registration failure in a subject-scoped error.
208
+ */
209
+ async function registerSchemaIfProvided(registry, subject, options) {
210
+ if (!options.schema) {
211
+ return undefined;
212
+ }
213
+ try {
214
+ return await registry.register(subject, {
215
+ schema: options.schema,
216
+ schemaType: options.schemaType,
217
+ }, options.normalize);
218
+ }
219
+ catch (err) {
220
+ throw new Error(`Failed to register schema for subject '${subject}': ${err}`);
221
+ }
222
+ }
223
+ /**
224
+ * Builds a descriptor registry from a Protobuf schema as stored in Schema
225
+ * Registry — a base64-encoded `FileDescriptorProto` (the "serialized" format
226
+ * this SDK reads/writes). Used on the use-latest produce path, where the schema
227
+ * was previously registered by the serializer rather than supplied as text.
228
+ *
229
+ * @param serializedSchema - base64-encoded `FileDescriptorProto`
230
+ * @returns A mutable descriptor registry the serializer can consume
231
+ * @throws Error if the stored schema cannot be decoded
232
+ */
233
+ export function protobufRegistryFromSerialized(serializedSchema) {
234
+ try {
235
+ const fileDescriptorProto = fromBinary(FileDescriptorProtoSchema, Buffer.from(serializedSchema, "base64"));
236
+ // Single self-contained file: no external dependencies to resolve.
237
+ return createMutableRegistry(createFileRegistry(fileDescriptorProto, () => undefined));
238
+ }
239
+ catch (err) {
240
+ throw new Error(`Failed to decode registered Protobuf schema: ${err instanceof Error ? err.message : String(err)}`);
241
+ }
242
+ }
243
+ /**
244
+ * Converts a plain JS payload into a typed `@bufbuild/protobuf` message (carrying
245
+ * the `$typeName` the ProtobufSerializer requires) using a descriptor registry.
246
+ *
247
+ * @param registry - Descriptor registry containing the target message type
248
+ * @param messageName - Fully-qualified message type name (e.g. `com.example.User`)
249
+ * @param payload - The payload to encode. Keys may use either the proto field
250
+ * name (`user_id`) or its auto-generated camelCase JSON name (`userId`):
251
+ * `fromJson` accepts both and maps them onto the same field. Keys that match
252
+ * neither are rejected as unknown fields.
253
+ * @returns The typed protobuf message
254
+ * @throws Error if `messageName` does not match a message in the registry (the
255
+ * error lists the available names)
256
+ */
257
+ export function protobufMessageFrom(registry, messageName, payload) {
258
+ const messageDesc = registry.getMessage(messageName);
259
+ if (!messageDesc) {
260
+ const available = [];
261
+ for (const type of registry) {
262
+ if (type.kind === "message") {
263
+ available.push(type.typeName);
264
+ }
265
+ }
266
+ throw new Error(`Protobuf message type '${messageName}' not found in schema. ` +
267
+ `Available message types: ${available.join(", ") || "(none)"}. ` +
268
+ `Provide the fully-qualified name including the package (e.g. com.example.User).`);
269
+ }
270
+ return fromJson(messageDesc, payload);
271
+ }
107
272
  /**
108
273
  * Serializes a message using the provided options and schema registry configuration.
109
274
  * This function:
@@ -116,58 +281,133 @@ export async function getLatestSchemaIfExists(registry, subject) {
116
281
  * @param options - The message options including schema, type, and payload
117
282
  * @param serdeType - Whether this is for key or value serialization
118
283
  * @param registry - The schema registry client instance (if used)
284
+ * @param recordHeaders - Mutable record-header accumulator. Required for
285
+ * `schemaIdLocation: "header"`, where the serializer writes the schema-id
286
+ * header into it; ignored by the payload format and the raw (non-registry) path.
119
287
  * @returns The serialized message as a Buffer or string
120
288
  * @throws Error if serialization fails, schema registration fails, or message type is invalid
121
289
  */
122
- export async function serializeMessage(topicName, options, serdeType, registry) {
290
+ export async function serializeMessage(topicName, options, serdeType, registry, recordHeaders) {
123
291
  if (!options.useSchemaRegistry) {
124
- if (typeof options.message !== "string") {
125
- logger.warn("Warning: Sending non-string message without schema registry. This may fail if the topic expects a schema.");
126
- }
127
- return typeof options.message === "string"
128
- ? options.message
129
- : JSON.stringify(options.message);
130
- }
131
- if (!options.schemaType) {
132
- throw new Error("schemaType is required when useSchemaRegistry is true");
292
+ return serializeWithoutSchemaRegistry(options.message);
133
293
  }
134
- if (!registry) {
135
- throw new Error("Schema Registry client is required for serialization");
136
- }
137
- // Default subject naming
294
+ assertSchemaRegistrySerializable(options, registry, recordHeaders);
138
295
  const subject = options.subject ||
139
296
  `${topicName}-${serdeType === SerdeType.KEY ? "key" : "value"}`;
140
- let schemaId;
141
- // Register schema if provided
142
- if (options.schema) {
143
- try {
144
- schemaId = await registry.register(subject, {
145
- schema: options.schema,
146
- schemaType: options.schemaType,
147
- }, options.normalize);
148
- }
149
- catch (err) {
150
- throw new Error(`Failed to register schema for subject '${subject}': ${err}`);
151
- }
297
+ const schemaId = await registerSchemaIfProvided(registry, subject, options);
298
+ // Protobuf takes a separate path: the serializer encodes locally against a
299
+ // @bufbuild/protobuf descriptor and registers/looks up the schema itself in
300
+ // the "serialized" (base64 FileDescriptorProto) format that the deserializer
301
+ // reads back. Registering raw .proto text here (the Avro/JSON path) would
302
+ // produce bytes that fail to deserialize, so we don't reuse it.
303
+ if (options.schemaType === "PROTOBUF") {
304
+ return serializeProtobufMessage(topicName, subject, options, serdeType, registry);
152
305
  }
153
- // Validate message type
154
- if (typeof options.message !== "object" || options.message === null) {
155
- throw new Error("When using schema registry, message must be an object matching the schema.");
306
+ // Primitives (number/boolean/string) are valid payloads for top-level
307
+ // primitive schemas (e.g. Avro "long"); only null/undefined is rejected here
308
+ // because the serializer refuses it with a cryptic "message is empty". Every
309
+ // other shape is validated against the actual schema by the serializer.
310
+ // Validate the payload before any registry lookup below.
311
+ if (options.message === null || options.message === undefined) {
312
+ throw new Error("When using schema registry, a non-null message payload is required.");
313
+ }
314
+ // Use-latest path (no schema supplied): confirm the registered schema is the
315
+ // requested type so a mismatch fails with an actionable message here rather
316
+ // than as an opaque parse error inside the serializer's lazy useLatestVersion
317
+ // fetch.
318
+ if (schemaId === undefined && options.schemaType) {
319
+ await getLatestSchemaOfTypeOrThrow(registry, subject, options.schemaType);
320
+ }
321
+ const serializerConfig = typeof schemaId === "number"
322
+ ? { useSchemaId: schemaId }
323
+ : { useLatestVersion: true };
324
+ if (options.schemaIdLocation === "header") {
325
+ serializerConfig.schemaIdSerializer = HeaderSchemaIdSerializer;
156
326
  }
157
327
  let serializer;
158
328
  try {
159
- serializer = getSerializer(options.schemaType, registry, serdeType, schemaId);
329
+ serializer = getSerializer(options.schemaType, registry, serdeType, serializerConfig);
160
330
  }
161
331
  catch (err) {
162
332
  throw new Error(`Failed to get serializer: ${err}`);
163
333
  }
164
334
  try {
165
- return await serializer.serialize(topicName, options.message);
335
+ return await serializer.serialize(topicName, options.message, recordHeaders);
166
336
  }
167
337
  catch (err) {
168
338
  throw new Error(`Failed to serialize message for subject '${subject}': ${err}`);
169
339
  }
170
340
  }
341
+ /**
342
+ * Serializes a Protobuf payload, registering or looking up the schema in the
343
+ * format the SDK's deserializer can read back.
344
+ *
345
+ * - When no schema is supplied (use-latest), the previously-registered schema is
346
+ * fetched, its descriptor rebuilt from the stored serialized form, and the
347
+ * serializer uses the latest version.
348
+ *
349
+ * The payload is always converted into a typed `@bufbuild/protobuf` message
350
+ * (carrying `$typeName`) before serialization.
351
+ *
352
+ * @param topicName - The Kafka topic name
353
+ * @param subject - The resolved Schema Registry subject
354
+ * @param options - The message options (must have `schemaType === "PROTOBUF"`)
355
+ * @param registry - The schema registry client
356
+ * @returns The serialized message bytes
357
+ * @throws Error if `messageName` is missing, the schema is unavailable, or
358
+ * serialization fails
359
+ */
360
+ async function serializeProtobufMessage(topicName, subject, options, serdeType, registry) {
361
+ if (!options.messageName) {
362
+ throw new Error("messageName is required when schemaType is PROTOBUF (e.g. com.example.User).");
363
+ }
364
+ // Header schema-id mode isn't supported for PROTOBUF yet, so reject it
365
+ // explicitly: otherwise the produce would silently fall back to the payload
366
+ // wire format and write a message that doesn't match what the caller asked
367
+ // for. Header support for AVRO/JSON landed in #607; protobuf parity is a
368
+ // separate follow-up in #633.
369
+ if (options.schemaIdLocation === "header") {
370
+ throw new Error("schemaIdLocation 'header' is not supported for PROTOBUF yet; use the default payload format.");
371
+ }
372
+ let protobufRegistry;
373
+ let serializerConfig;
374
+ if (options.schema) {
375
+ // Provide path: the serializer registers the schema in the binary format
376
+ // the deserializer expects. subjectNameStrategy overrides TopicNameStrategy
377
+ // so the serializer uses the caller-resolved subject instead of deriving
378
+ // one from the topic name.
379
+ protobufRegistry = protobufRegistryFromProto(options.schema);
380
+ serializerConfig = {
381
+ normalizeSchemas: Boolean(options.normalize),
382
+ autoRegisterSchemas: true,
383
+ subjectNameStrategy: () => subject,
384
+ };
385
+ }
386
+ else {
387
+ // Use-latest path: rebuild the descriptor from the stored serialized schema.
388
+ const latest = await getLatestSchemaOfTypeOrThrow(registry, subject, "PROTOBUF");
389
+ protobufRegistry = protobufRegistryFromSerialized(latest.schema);
390
+ serializerConfig = {
391
+ useLatestVersion: true,
392
+ subjectNameStrategy: () => subject,
393
+ };
394
+ }
395
+ const message = protobufMessageFrom(protobufRegistry, options.messageName, options.message);
396
+ // The descriptor registry rides inside the config: ProtobufSerializer reads
397
+ // its optional `registry` field to encode locally. getSerializer forwards the
398
+ // whole config, so PROTOBUF flows through the same factory as AVRO/JSON.
399
+ const protobufConfig = {
400
+ ...serializerConfig,
401
+ registry: protobufRegistry,
402
+ };
403
+ const serializer = getSerializer("PROTOBUF", registry, serdeType, protobufConfig);
404
+ try {
405
+ return await serializer.serialize(topicName, message);
406
+ }
407
+ catch (err) {
408
+ throw new Error(`Failed to serialize message for subject '${subject}': ${err instanceof Error ? err.message : String(err)}`);
409
+ }
410
+ }
171
411
  /**
172
412
  * Deserializes a message using Schema Registry.
173
413
  * This function:
@@ -179,16 +419,38 @@ export async function serializeMessage(topicName, options, serdeType, registry)
179
419
  * @param schemaType - The schema type (AVRO, JSON, PROTOBUF)
180
420
  * @param registry - The schema registry client
181
421
  * @param serdeType - Whether this is key or value
422
+ * @param headers - Raw record headers. When present, the default dual
423
+ * deserializer reads a header-located schema ID (__value_schema_id /
424
+ * __key_schema_id) before falling back to the magic-byte prefix.
182
425
  * @returns The deserialized object
183
426
  * @throws Error if deserialization fails
184
427
  */
185
- export async function deserializeMessage(topic, message, schemaType, registry, serdeType) {
428
+ export async function deserializeMessage(topic, message, schemaType, registry, serdeType, headers) {
186
429
  try {
187
430
  const deserializer = getDeserializer(schemaType, registry, serdeType);
188
- return await deserializer.deserialize(topic, message);
431
+ return await deserializer.deserialize(topic, message, headers);
189
432
  }
190
433
  catch (err) {
191
434
  throw new Error(`Failed to deserialize message: ${err}`);
192
435
  }
193
436
  }
437
+ /**
438
+ * Decode a header-located schema-id record-header value into its canonical
439
+ * schema GUID string. The header wire format (written by the serde library's
440
+ * HeaderSchemaIdSerializer) is MAGIC_BYTE_V1 followed by the 16-byte GUID; the
441
+ * schema type only governs the Protobuf message-index tail that the GUID read
442
+ * ignores, so a fixed type is safe here. Returns null when the bytes aren't a
443
+ * recognizable GUID header (e.g. a payload-format magic-byte-0 buffer, or
444
+ * garbage), letting the caller fall back to echoing the raw value.
445
+ */
446
+ export function decodeSchemaGuidHeader(headerValue) {
447
+ try {
448
+ const schemaId = new SchemaId("AVRO");
449
+ schemaId.fromBytes(headerValue);
450
+ return schemaId.guid ?? null;
451
+ }
452
+ catch {
453
+ return null;
454
+ }
455
+ }
194
456
  //# sourceMappingURL=schema-registry-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-registry-helper.js","sourceRoot":"","sources":["../../src/confluent/schema-registry-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-registry-helper.js","sourceRoot":"","sources":["../../src/confluent/schema-registry-helper.ts"],"names":[],"mappings":"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"}