@confluentinc/mcp-confluent 1.2.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +299 -240
- package/assets/oauth-templates/callback-failure.html +22 -0
- package/assets/oauth-templates/callback-success.html +99 -0
- package/assets/oauth-templates/logo.html +91 -0
- package/assets/oauth-templates/styles.html +110 -0
- package/config.example.yaml +149 -0
- package/config.oauth.example.yaml +45 -0
- package/dist/cli.d.ts +59 -12
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +131 -61
- package/dist/cli.js.map +1 -1
- package/dist/config/env-config.d.ts +33 -0
- package/dist/config/env-config.d.ts.map +1 -0
- package/dist/config/env-config.js +478 -0
- package/dist/config/env-config.js.map +1 -0
- package/dist/config/index.d.ts +31 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +76 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/interpolation.d.ts +9 -0
- package/dist/config/interpolation.d.ts.map +1 -0
- package/dist/config/interpolation.js +51 -0
- package/dist/config/interpolation.js.map +1 -0
- package/dist/config/models.d.ts +399 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +406 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/validation.d.ts +9 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +46 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/confluent/base-client-manager.d.ts +133 -0
- package/dist/confluent/base-client-manager.d.ts.map +1 -0
- package/dist/confluent/base-client-manager.js +188 -0
- package/dist/confluent/base-client-manager.js.map +1 -0
- package/dist/confluent/client-manager.d.ts +42 -77
- package/dist/confluent/client-manager.d.ts.map +1 -1
- package/dist/confluent/client-manager.js +5 -213
- package/dist/confluent/client-manager.js.map +1 -1
- package/dist/confluent/config-telemetry.d.ts +41 -0
- package/dist/confluent/config-telemetry.d.ts.map +1 -0
- package/dist/confluent/config-telemetry.js +17 -0
- package/dist/confluent/config-telemetry.js.map +1 -0
- package/dist/confluent/direct-client-manager.d.ts +43 -0
- package/dist/confluent/direct-client-manager.d.ts.map +1 -0
- package/dist/confluent/direct-client-manager.js +154 -0
- package/dist/confluent/direct-client-manager.js.map +1 -0
- package/dist/confluent/middleware.d.ts +32 -4
- package/dist/confluent/middleware.d.ts.map +1 -1
- package/dist/confluent/middleware.js +46 -2
- package/dist/confluent/middleware.js.map +1 -1
- package/dist/confluent/node-deps.d.ts +33 -39
- package/dist/confluent/node-deps.d.ts.map +1 -1
- package/dist/confluent/node-deps.js +48 -7
- package/dist/confluent/node-deps.js.map +1 -1
- package/dist/confluent/oauth/auth-context.d.ts +94 -0
- package/dist/confluent/oauth/auth-context.d.ts.map +1 -0
- package/dist/confluent/oauth/auth-context.js +323 -0
- package/dist/confluent/oauth/auth-context.js.map +1 -0
- package/dist/confluent/oauth/auth0-config.d.ts +12 -0
- package/dist/confluent/oauth/auth0-config.d.ts.map +1 -0
- package/dist/confluent/oauth/auth0-config.js +43 -0
- package/dist/confluent/oauth/auth0-config.js.map +1 -0
- package/dist/confluent/oauth/callback-pages.d.ts +13 -0
- package/dist/confluent/oauth/callback-pages.d.ts.map +1 -0
- package/dist/confluent/oauth/callback-pages.js +47 -0
- package/dist/confluent/oauth/callback-pages.js.map +1 -0
- package/dist/confluent/oauth/crypto-utils.d.ts +16 -0
- package/dist/confluent/oauth/crypto-utils.d.ts.map +1 -0
- package/dist/confluent/oauth/crypto-utils.js +23 -0
- package/dist/confluent/oauth/crypto-utils.js.map +1 -0
- package/dist/confluent/oauth/errors.d.ts +27 -0
- package/dist/confluent/oauth/errors.d.ts.map +1 -0
- package/dist/confluent/oauth/errors.js +6 -0
- package/dist/confluent/oauth/errors.js.map +1 -0
- package/dist/confluent/oauth/oauth-holder.d.ts +34 -0
- package/dist/confluent/oauth/oauth-holder.d.ts.map +1 -0
- package/dist/confluent/oauth/oauth-holder.js +155 -0
- package/dist/confluent/oauth/oauth-holder.js.map +1 -0
- package/dist/confluent/oauth/pkce-login.d.ts +45 -0
- package/dist/confluent/oauth/pkce-login.d.ts.map +1 -0
- package/dist/confluent/oauth/pkce-login.js +270 -0
- package/dist/confluent/oauth/pkce-login.js.map +1 -0
- package/dist/confluent/oauth/token-chain.d.ts +53 -0
- package/dist/confluent/oauth/token-chain.d.ts.map +1 -0
- package/dist/confluent/oauth/token-chain.js +141 -0
- package/dist/confluent/oauth/token-chain.js.map +1 -0
- package/dist/confluent/oauth/token-lifetimes.d.ts +13 -0
- package/dist/confluent/oauth/token-lifetimes.d.ts.map +1 -0
- package/dist/confluent/oauth/token-lifetimes.js +13 -0
- package/dist/confluent/oauth/token-lifetimes.js.map +1 -0
- package/dist/confluent/oauth/types.d.ts +68 -0
- package/dist/confluent/oauth/types.d.ts.map +1 -0
- package/dist/confluent/oauth/types.js +2 -0
- package/dist/confluent/oauth/types.js.map +1 -0
- package/dist/confluent/oauth-client-manager.d.ts +78 -0
- package/dist/confluent/oauth-client-manager.d.ts.map +1 -0
- package/dist/confluent/oauth-client-manager.js +265 -0
- package/dist/confluent/oauth-client-manager.js.map +1 -0
- package/dist/confluent/oauth-resource-resolvers.d.ts +6 -0
- package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -0
- package/dist/confluent/oauth-resource-resolvers.js +65 -0
- package/dist/confluent/oauth-resource-resolvers.js.map +1 -0
- package/dist/confluent/schema-registry-helper.d.ts +5 -9
- package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
- package/dist/confluent/schema-registry-helper.js +1 -9
- package/dist/confluent/schema-registry-helper.js.map +1 -1
- package/dist/confluent/telemetry.d.ts +38 -1
- package/dist/confluent/telemetry.d.ts.map +1 -1
- package/dist/confluent/telemetry.js +37 -8
- package/dist/confluent/telemetry.js.map +1 -1
- package/dist/confluent/tools/base-tools.d.ts +140 -23
- package/dist/confluent/tools/base-tools.d.ts.map +1 -1
- package/dist/confluent/tools/base-tools.js +98 -4
- package/dist/confluent/tools/base-tools.js.map +1 -1
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts +75 -0
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -0
- package/dist/confluent/tools/cluster-arg-resolvers.js +127 -0
- package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -0
- package/dist/confluent/tools/connection-predicates.d.ts +176 -0
- package/dist/confluent/tools/connection-predicates.d.ts.map +1 -0
- package/dist/confluent/tools/connection-predicates.js +284 -0
- package/dist/confluent/tools/connection-predicates.js.map +1 -0
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +5 -6
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +40 -11
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +6 -6
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +6 -9
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +6 -6
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +6 -9
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +6 -6
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.js +6 -9
- package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +6 -6
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.js +6 -9
- package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +6 -6
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +6 -9
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +5 -6
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +11 -13
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +34 -0
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +47 -0
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +11 -7
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js +21 -21
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +6 -7
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +10 -15
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +35 -0
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +66 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +131 -0
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +244 -0
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +35 -0
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +44 -0
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +35 -0
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +6 -7
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +15 -17
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +35 -0
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +35 -0
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +35 -0
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +44 -0
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +58 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +135 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +18 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js +235 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +14 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js +286 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +11 -12
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js +11 -14
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +5 -6
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js +6 -9
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +32 -11
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +22 -16
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +34 -30
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts +14 -0
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js +15 -0
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +34 -30
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +21 -24
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +21 -24
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +22 -33
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +18 -23
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +7 -13
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +7 -13
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +8 -15
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +2 -2
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +7 -7
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +11 -17
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +15 -2
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +22 -0
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +32 -0
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +7 -13
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +9 -17
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js +7 -13
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +5 -6
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +22 -20
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +216 -30
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +797 -70
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts +48 -0
- package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js +84 -0
- package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts +54 -0
- package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js +89 -0
- package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +5 -5
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +52 -15
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +5 -5
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +26 -8
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +64 -0
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +140 -0
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +73 -0
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +337 -0
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +43 -0
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +123 -0
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +5 -6
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js +22 -20
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +45 -0
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +86 -0
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +5 -5
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +25 -10
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +54 -0
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.js +56 -0
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +8 -8
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +57 -46
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +18 -0
- package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/topic-metadata.js +18 -0
- package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +1 -0
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +6 -6
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +6 -9
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +24 -6
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +88 -53
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +50 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +116 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +5 -5
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +13 -8
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +5 -5
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +13 -7
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +6 -6
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +6 -9
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +6 -6
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +6 -9
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +17 -13
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +6 -12
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +7 -13
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +6 -12
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +5 -9
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +18 -21
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +26 -0
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +28 -0
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +17 -13
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +6 -12
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +7 -13
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +6 -12
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +5 -9
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/tool-availability.d.ts +91 -0
- package/dist/confluent/tools/tool-availability.d.ts.map +1 -0
- package/dist/confluent/tools/tool-availability.js +130 -0
- package/dist/confluent/tools/tool-availability.js.map +1 -0
- package/dist/confluent/tools/tool-name.d.ts +20 -2
- package/dist/confluent/tools/tool-name.d.ts.map +1 -1
- package/dist/confluent/tools/tool-name.js +19 -1
- package/dist/confluent/tools/tool-name.js.map +1 -1
- package/dist/confluent/tools/tool-registry.d.ts +17 -0
- package/dist/confluent/tools/tool-registry.d.ts.map +1 -0
- package/dist/confluent/tools/{tool-factory.js → tool-registry.js} +66 -22
- package/dist/confluent/tools/tool-registry.js.map +1 -0
- package/dist/env-schema.d.ts +6 -7
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +30 -44
- package/dist/env-schema.js.map +1 -1
- package/dist/env.d.ts +17 -7
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +16 -6
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +74 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +302 -166
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +21 -20
- package/dist/logger.js.map +1 -1
- package/dist/mcp/server.d.ts +29 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +53 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/transports/auth.d.ts +20 -4
- package/dist/mcp/transports/auth.d.ts.map +1 -1
- package/dist/mcp/transports/auth.js +27 -7
- package/dist/mcp/transports/auth.js.map +1 -1
- package/dist/mcp/transports/http.d.ts +8 -2
- package/dist/mcp/transports/http.d.ts.map +1 -1
- package/dist/mcp/transports/http.js +57 -42
- package/dist/mcp/transports/http.js.map +1 -1
- package/dist/mcp/transports/manager.d.ts +23 -9
- package/dist/mcp/transports/manager.d.ts.map +1 -1
- package/dist/mcp/transports/manager.js +27 -24
- package/dist/mcp/transports/manager.js.map +1 -1
- package/dist/mcp/transports/server.d.ts +1 -1
- package/dist/mcp/transports/server.d.ts.map +1 -1
- package/dist/mcp/transports/server.js +17 -5
- package/dist/mcp/transports/server.js.map +1 -1
- package/dist/mcp/transports/session-registry.d.ts +33 -0
- package/dist/mcp/transports/session-registry.d.ts.map +1 -0
- package/dist/mcp/transports/session-registry.js +65 -0
- package/dist/mcp/transports/session-registry.js.map +1 -0
- package/dist/mcp/transports/sse.d.ts +13 -2
- package/dist/mcp/transports/sse.d.ts.map +1 -1
- package/dist/mcp/transports/sse.js +58 -46
- package/dist/mcp/transports/sse.js.map +1 -1
- package/dist/server-runtime.d.ts +28 -0
- package/dist/server-runtime.d.ts.map +1 -0
- package/dist/server-runtime.js +73 -0
- package/dist/server-runtime.js.map +1 -0
- package/package.json +26 -9
- package/dist/confluent/helpers.d.ts +0 -11
- package/dist/confluent/helpers.d.ts.map +0 -1
- package/dist/confluent/helpers.js +0 -17
- package/dist/confluent/helpers.js.map +0 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +0 -11
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +0 -59
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +0 -1
- package/dist/confluent/tools/tool-factory.d.ts +0 -9
- package/dist/confluent/tools/tool-factory.d.ts.map +0 -1
- package/dist/confluent/tools/tool-factory.js.map +0 -1
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { validateBootstrapServers } from "../config/validation.js";
|
|
2
|
+
import { logLevels } from "../logger.js";
|
|
3
|
+
import { TransportType } from "../mcp/transports/types.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
/**
|
|
6
|
+
* Root configuration object representing the entire MCP server configuration.
|
|
7
|
+
* Validated and constructed from parsed YAML via {@link mcpConfigSchema}.
|
|
8
|
+
*/
|
|
9
|
+
export class MCPServerConfiguration {
|
|
10
|
+
/** Named connection map. Corresponds to the `connections` block at the root of the YAML configuration. */
|
|
11
|
+
connections;
|
|
12
|
+
/** MCP server operational settings. Corresponds to the `server` block at the root of the YAML configuration. */
|
|
13
|
+
server;
|
|
14
|
+
constructor(data) {
|
|
15
|
+
this.connections = data.connections;
|
|
16
|
+
// DEFAULT_SERVER_CONFIG is declared after the schemas below; it is always
|
|
17
|
+
// initialized before any MCPServerConfiguration instance is created at runtime.
|
|
18
|
+
this.server = data.server ?? DEFAULT_SERVER_CONFIG;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns the single defined connection in the configuration.
|
|
22
|
+
*
|
|
23
|
+
* @returns the single defined connection
|
|
24
|
+
* @throws Error if 0 or more than 1 connection is defined.
|
|
25
|
+
*/
|
|
26
|
+
getSoleConnection() {
|
|
27
|
+
const connectionNames = Object.keys(this.connections);
|
|
28
|
+
if (connectionNames.length === 0) {
|
|
29
|
+
throw new Error("No connections defined in configuration");
|
|
30
|
+
}
|
|
31
|
+
if (connectionNames.length > 1) {
|
|
32
|
+
throw new Error("Multiple connections defined in configuration; only one is supported currently");
|
|
33
|
+
}
|
|
34
|
+
// must be exactly one connection at this point, so return it.
|
|
35
|
+
return this.connections[connectionNames[0]];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns the sole connection narrowed to {@link DirectConnectionConfig}, throwing
|
|
39
|
+
* if it is OAuth-typed. Use from callers that need to read service-block fields
|
|
40
|
+
* (e.g., `kafka.cluster_id`, `flink.environment_id`) — the throw replaces what
|
|
41
|
+
* would otherwise be a `conn.type === "direct"` guard at every read site.
|
|
42
|
+
*/
|
|
43
|
+
getSoleDirectConnection() {
|
|
44
|
+
const conn = this.getSoleConnection();
|
|
45
|
+
if (conn.type !== "direct") {
|
|
46
|
+
throw new Error(`Expected sole connection to be a direct connection; got type "${conn.type}"`);
|
|
47
|
+
}
|
|
48
|
+
return conn;
|
|
49
|
+
}
|
|
50
|
+
getConnectionNames() {
|
|
51
|
+
return Object.keys(this.connections).sort((a, b) => a.localeCompare(b));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/* And now, Zod schemas for validation of MCPServerConfiguration and contained objects. */
|
|
55
|
+
/**
|
|
56
|
+
* librdkafka property keys that have named YAML equivalents and must not appear in
|
|
57
|
+
* `extra_properties`. Authoring them there is an error in YAML-configured connections;
|
|
58
|
+
* use `bootstrap_servers` or the `auth` block instead.
|
|
59
|
+
*
|
|
60
|
+
* Note: this restriction applies only to YAML-authored configs. The `-k` /
|
|
61
|
+
* `--kafka-config-file` CLI flag is a higher-precedence override mechanism and is
|
|
62
|
+
* permitted to supply these keys (env vars are always lowest precedence).
|
|
63
|
+
*/
|
|
64
|
+
export const KAFKA_PROTECTED_EXTRA_PROPERTY_KEYS = [
|
|
65
|
+
"bootstrap.servers",
|
|
66
|
+
"sasl.username",
|
|
67
|
+
"sasl.password",
|
|
68
|
+
];
|
|
69
|
+
/**
|
|
70
|
+
* Requires at least one primary connectivity field (`bootstrap_servers` or `rest_endpoint`).
|
|
71
|
+
*
|
|
72
|
+
* (`cluster_id` and `env_id` are intentionally excluded: they are per-call defaults
|
|
73
|
+
* resolved at handler runtime. Each handler accepts the value as a tool argument and
|
|
74
|
+
* falls back to this block when the argument is absent, throwing only if neither
|
|
75
|
+
* source supplies it. Either field can therefore be omitted from config and supplied
|
|
76
|
+
* at call time, so partial presence is valid.)
|
|
77
|
+
*/
|
|
78
|
+
function kafkaBlockHasConnectivity(k) {
|
|
79
|
+
return k.bootstrap_servers !== undefined || k.rest_endpoint !== undefined;
|
|
80
|
+
}
|
|
81
|
+
const apiKeyAuthSchema = z
|
|
82
|
+
.object({
|
|
83
|
+
type: z.literal("api_key"),
|
|
84
|
+
key: z.string().trim().min(1, "auth.key cannot be empty"),
|
|
85
|
+
secret: z.string().trim().min(1, "auth.secret cannot be empty"),
|
|
86
|
+
})
|
|
87
|
+
.strict();
|
|
88
|
+
const authConfigSchema = z.discriminatedUnion("type", [apiKeyAuthSchema]);
|
|
89
|
+
/** Zod schema for direct connection type */
|
|
90
|
+
const directConnectionSchema = z
|
|
91
|
+
.object({
|
|
92
|
+
type: z.literal("direct"),
|
|
93
|
+
confluent_cloud: z
|
|
94
|
+
.object({
|
|
95
|
+
endpoint: z
|
|
96
|
+
.string()
|
|
97
|
+
.trim()
|
|
98
|
+
.check(z.url({ error: "confluent_cloud.endpoint must be a valid URL" }))
|
|
99
|
+
.optional(),
|
|
100
|
+
auth: authConfigSchema,
|
|
101
|
+
organization_id: z
|
|
102
|
+
.string()
|
|
103
|
+
.trim()
|
|
104
|
+
.min(1, "confluent_cloud.organization_id cannot be empty")
|
|
105
|
+
.optional(),
|
|
106
|
+
})
|
|
107
|
+
.strict()
|
|
108
|
+
.optional(),
|
|
109
|
+
kafka: z
|
|
110
|
+
.object({
|
|
111
|
+
bootstrap_servers: z
|
|
112
|
+
.string()
|
|
113
|
+
.trim()
|
|
114
|
+
.min(1, "bootstrap_servers cannot be empty")
|
|
115
|
+
.superRefine((value, ctx) => {
|
|
116
|
+
try {
|
|
117
|
+
validateBootstrapServers(value);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
ctx.addIssue({
|
|
121
|
+
code: "custom",
|
|
122
|
+
message: error instanceof Error ? error.message : String(error),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
})
|
|
126
|
+
.optional(),
|
|
127
|
+
auth: authConfigSchema.optional(),
|
|
128
|
+
rest_endpoint: z
|
|
129
|
+
.string()
|
|
130
|
+
.trim()
|
|
131
|
+
.check(z.url({ error: "kafka.rest_endpoint must be a valid URL" }))
|
|
132
|
+
.optional(),
|
|
133
|
+
cluster_id: z
|
|
134
|
+
.string()
|
|
135
|
+
.trim()
|
|
136
|
+
.min(1, "kafka.cluster_id cannot be empty")
|
|
137
|
+
.optional(),
|
|
138
|
+
env_id: z
|
|
139
|
+
.string()
|
|
140
|
+
.trim()
|
|
141
|
+
.startsWith("env-", "kafka.env_id must start with 'env-'")
|
|
142
|
+
.optional(),
|
|
143
|
+
extra_properties: z
|
|
144
|
+
.record(z.string(), z.string())
|
|
145
|
+
.superRefine((props, ctx) => {
|
|
146
|
+
const found = KAFKA_PROTECTED_EXTRA_PROPERTY_KEYS.filter((k) => Object.hasOwn(props, k));
|
|
147
|
+
if (found.length > 0) {
|
|
148
|
+
ctx.addIssue({
|
|
149
|
+
code: "custom",
|
|
150
|
+
message: `extra_properties must not include ${found.join(", ")} — use the named YAML fields (bootstrap_servers, auth) instead`,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
})
|
|
154
|
+
.optional(),
|
|
155
|
+
})
|
|
156
|
+
.strict()
|
|
157
|
+
.refine(kafkaBlockHasConnectivity, {
|
|
158
|
+
message: "kafka block must contain at least one of 'bootstrap_servers' or 'rest_endpoint'",
|
|
159
|
+
})
|
|
160
|
+
.optional(),
|
|
161
|
+
schema_registry: z
|
|
162
|
+
.object({
|
|
163
|
+
endpoint: z
|
|
164
|
+
.string()
|
|
165
|
+
.trim()
|
|
166
|
+
.check(z.url({ error: "schema_registry.endpoint must be a valid URL" })),
|
|
167
|
+
auth: authConfigSchema.optional(),
|
|
168
|
+
})
|
|
169
|
+
.strict()
|
|
170
|
+
.optional(),
|
|
171
|
+
tableflow: z
|
|
172
|
+
.object({
|
|
173
|
+
auth: authConfigSchema,
|
|
174
|
+
})
|
|
175
|
+
.strict()
|
|
176
|
+
.optional(),
|
|
177
|
+
telemetry: z
|
|
178
|
+
.object({
|
|
179
|
+
endpoint: z
|
|
180
|
+
.string()
|
|
181
|
+
.trim()
|
|
182
|
+
.check(z.url({ error: "telemetry.endpoint must be a valid URL" }))
|
|
183
|
+
.optional(),
|
|
184
|
+
// Optional in raw input: absent auth falls back to confluent_cloud.auth in
|
|
185
|
+
// the connection-level transform, so TelemetryDirectConfig.auth is always
|
|
186
|
+
// non-null after parsing. See the transform below and TelemetryDirectConfig.
|
|
187
|
+
auth: authConfigSchema.optional(),
|
|
188
|
+
})
|
|
189
|
+
.strict()
|
|
190
|
+
.refine((t) => t.endpoint !== undefined || t.auth !== undefined, {
|
|
191
|
+
message: "telemetry block must contain at least 'endpoint' or 'auth'",
|
|
192
|
+
})
|
|
193
|
+
.optional(),
|
|
194
|
+
flink: z
|
|
195
|
+
.object({
|
|
196
|
+
endpoint: z
|
|
197
|
+
.string()
|
|
198
|
+
.trim()
|
|
199
|
+
.check(z.url({ error: "flink.endpoint must be a valid URL" })),
|
|
200
|
+
auth: authConfigSchema,
|
|
201
|
+
environment_id: z
|
|
202
|
+
.string()
|
|
203
|
+
.trim()
|
|
204
|
+
.startsWith("env-", "flink.environment_id must start with 'env-'"),
|
|
205
|
+
organization_id: z
|
|
206
|
+
.string()
|
|
207
|
+
.trim()
|
|
208
|
+
.min(1, "flink.organization_id cannot be empty"),
|
|
209
|
+
compute_pool_id: z
|
|
210
|
+
.string()
|
|
211
|
+
.trim()
|
|
212
|
+
.startsWith("lfcp-", "flink.compute_pool_id must start with 'lfcp-'"),
|
|
213
|
+
catalog_name: z
|
|
214
|
+
.string()
|
|
215
|
+
.trim()
|
|
216
|
+
.min(1, "flink.catalog_name cannot be empty")
|
|
217
|
+
.optional(),
|
|
218
|
+
database_name: z
|
|
219
|
+
.string()
|
|
220
|
+
.trim()
|
|
221
|
+
.min(1, "flink.database_name cannot be empty")
|
|
222
|
+
.optional(),
|
|
223
|
+
})
|
|
224
|
+
.strict()
|
|
225
|
+
.optional(),
|
|
226
|
+
})
|
|
227
|
+
.strict();
|
|
228
|
+
export const CONFLUENT_CLOUD_DEFAULT_ENDPOINT = "https://api.confluent.cloud";
|
|
229
|
+
const TELEMETRY_DEFAULT_ENDPOINT = "https://api.telemetry.confluent.cloud";
|
|
230
|
+
/** Zod schema for the OAuth (PKCE) connection arm. */
|
|
231
|
+
const oauthConnectionSchema = z
|
|
232
|
+
.object({
|
|
233
|
+
type: z.literal("oauth"),
|
|
234
|
+
ccloud_env: z.enum(["devel", "stag", "prod"]).default("prod"),
|
|
235
|
+
kafka_debug: z
|
|
236
|
+
.string()
|
|
237
|
+
.trim()
|
|
238
|
+
.min(1, "kafka_debug cannot be empty")
|
|
239
|
+
.optional(),
|
|
240
|
+
})
|
|
241
|
+
.strict();
|
|
242
|
+
/**
|
|
243
|
+
* Discriminated union of all connection types: direct (api-key) and oauth (PKCE).
|
|
244
|
+
*/
|
|
245
|
+
const connectionConfigSchema = z
|
|
246
|
+
.discriminatedUnion("type", [directConnectionSchema, oauthConnectionSchema])
|
|
247
|
+
// superRefine call is placed here (after the union) rather than on directConnectionSchema
|
|
248
|
+
// because wrapping a ZodObject in ZodEffects breaks z.discriminatedUnion's discriminant lookup.
|
|
249
|
+
.superRefine((data, ctx) => {
|
|
250
|
+
// Reject endpoint-only telemetry when there is no auth available from either
|
|
251
|
+
// telemetry.auth or the confluent_cloud.auth fallback. Without this check the
|
|
252
|
+
// transform below would pass undefined to the ! assertion on auth, producing a
|
|
253
|
+
// TelemetryDirectConfig with auth set to undefined at runtime despite the type.
|
|
254
|
+
if (data.type === "direct" &&
|
|
255
|
+
data.telemetry?.endpoint !== undefined &&
|
|
256
|
+
data.telemetry?.auth === undefined &&
|
|
257
|
+
data.confluent_cloud?.auth === undefined) {
|
|
258
|
+
ctx.addIssue({
|
|
259
|
+
code: "custom",
|
|
260
|
+
path: ["telemetry", "endpoint"],
|
|
261
|
+
message: "telemetry.endpoint is set but no auth is available — provide telemetry.auth or confluent_cloud.auth",
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
})
|
|
265
|
+
.transform((data) => {
|
|
266
|
+
// OAuth connections carry no service blocks — pass through untouched so the
|
|
267
|
+
// direct-arm telemetry/cc resolution below doesn't spread `undefined` onto them.
|
|
268
|
+
if (data.type !== "direct")
|
|
269
|
+
return data;
|
|
270
|
+
// Resolve the raw (optional-field) telemetry input into a fully-populated
|
|
271
|
+
// TelemetryDirectConfig or undefined, applying two normalisation rules:
|
|
272
|
+
// 1. If telemetry.auth is absent, fall back to confluent_cloud.auth.
|
|
273
|
+
// 2. If telemetry.endpoint is absent, default to TELEMETRY_DEFAULT_ENDPOINT.
|
|
274
|
+
// If no telemetry block exists but confluent_cloud.auth is present, synthesise
|
|
275
|
+
// a telemetry block from it so callers never need to repeat the fallback logic.
|
|
276
|
+
const rawTelemetry = data.telemetry;
|
|
277
|
+
const ccAuth = data.confluent_cloud?.auth;
|
|
278
|
+
let resolvedTelemetry;
|
|
279
|
+
if (rawTelemetry) {
|
|
280
|
+
// superRefine above guarantees auth is non-null: endpoint-only telemetry without
|
|
281
|
+
// any auth fallback is rejected before this transform runs.
|
|
282
|
+
// Post-condition: resolvedTelemetry.auth is always non-null — hasTelemetry() is
|
|
283
|
+
// sufficient to gate telemetry-dependent tools; a separate auth check is redundant.
|
|
284
|
+
const auth = (rawTelemetry.auth ?? ccAuth);
|
|
285
|
+
const endpoint = rawTelemetry.endpoint ?? TELEMETRY_DEFAULT_ENDPOINT;
|
|
286
|
+
resolvedTelemetry = { endpoint, auth };
|
|
287
|
+
}
|
|
288
|
+
else if (ccAuth) {
|
|
289
|
+
resolvedTelemetry = {
|
|
290
|
+
endpoint: TELEMETRY_DEFAULT_ENDPOINT,
|
|
291
|
+
auth: ccAuth,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
const resolvedCC = data.confluent_cloud
|
|
295
|
+
? {
|
|
296
|
+
...data.confluent_cloud,
|
|
297
|
+
endpoint: data.confluent_cloud.endpoint ?? CONFLUENT_CLOUD_DEFAULT_ENDPOINT,
|
|
298
|
+
}
|
|
299
|
+
: undefined;
|
|
300
|
+
// Cast required: TypeScript cannot verify that spreading `data` (whose optional-field
|
|
301
|
+
// types for confluent_cloud and telemetry) and overriding with fully resolved types
|
|
302
|
+
// satisfies ConnectionConfig.
|
|
303
|
+
return {
|
|
304
|
+
...data,
|
|
305
|
+
confluent_cloud: resolvedCC,
|
|
306
|
+
telemetry: resolvedTelemetry,
|
|
307
|
+
};
|
|
308
|
+
});
|
|
309
|
+
// Server block schemas. Defaults are applied at each level so that omitting the
|
|
310
|
+
// entire `server` block (or any sub-block) from YAML yields a fully-populated
|
|
311
|
+
// ServerConfig with all fields set. MCPServerConfiguration.server is therefore
|
|
312
|
+
// always non-optional and carries all operational settings.
|
|
313
|
+
const serverHttpConfigSchema = z
|
|
314
|
+
.object({
|
|
315
|
+
port: z.coerce.number().int().positive().default(8080),
|
|
316
|
+
host: z.string().default("127.0.0.1"),
|
|
317
|
+
mcp_endpoint: z.string().default("/mcp"),
|
|
318
|
+
sse_endpoint: z.string().default("/sse"),
|
|
319
|
+
sse_message_endpoint: z.string().default("/messages"),
|
|
320
|
+
})
|
|
321
|
+
.strict();
|
|
322
|
+
const serverAuthConfigSchema = z
|
|
323
|
+
.object({
|
|
324
|
+
api_key: z
|
|
325
|
+
.string()
|
|
326
|
+
.min(32, "server.auth.api_key must be at least 32 characters")
|
|
327
|
+
.optional(),
|
|
328
|
+
disabled: z.boolean().default(false),
|
|
329
|
+
allowed_hosts: z
|
|
330
|
+
.array(z.string())
|
|
331
|
+
.default(() => ["localhost", "127.0.0.1"]),
|
|
332
|
+
})
|
|
333
|
+
.strict()
|
|
334
|
+
.refine((auth) => !(auth.disabled === true && auth.api_key !== undefined), {
|
|
335
|
+
message: "server.auth.disabled and server.auth.api_key cannot both be set — remove the api_key or set disabled: false",
|
|
336
|
+
});
|
|
337
|
+
const serverAnalyticsConfigSchema = z
|
|
338
|
+
.object({
|
|
339
|
+
write_key: z
|
|
340
|
+
.string()
|
|
341
|
+
.trim()
|
|
342
|
+
.min(1, "server.analytics.write_key cannot be empty"),
|
|
343
|
+
})
|
|
344
|
+
.strict();
|
|
345
|
+
// Zod v4 requires .default() to receive a value (or factory) matching the schema's
|
|
346
|
+
// output type. Since each sub-schema's output type has required fields (those with
|
|
347
|
+
// their own .default() calls), we use factory functions so Zod resolves field-level
|
|
348
|
+
// defaults lazily through the schema itself rather than requiring a full literal here.
|
|
349
|
+
const serverConfigSchema = z
|
|
350
|
+
.object({
|
|
351
|
+
transports: z
|
|
352
|
+
.array(z.enum(Object.values(TransportType)))
|
|
353
|
+
.min(1, "server.transports must contain at least one transport")
|
|
354
|
+
.refine((arr) => new Set(arr).size === arr.length, {
|
|
355
|
+
message: "server.transports must not contain duplicate entries",
|
|
356
|
+
})
|
|
357
|
+
.default(() => [TransportType.STDIO]),
|
|
358
|
+
log_level: z
|
|
359
|
+
.enum(Object.keys(logLevels))
|
|
360
|
+
.default("info"),
|
|
361
|
+
do_not_track: z.boolean().default(false),
|
|
362
|
+
http: serverHttpConfigSchema.default(() => serverHttpConfigSchema.parse({})),
|
|
363
|
+
auth: serverAuthConfigSchema.default(() => serverAuthConfigSchema.parse({})),
|
|
364
|
+
analytics: serverAnalyticsConfigSchema.optional(),
|
|
365
|
+
})
|
|
366
|
+
.strict();
|
|
367
|
+
// Compile-time assertion: ServerConfig interface must remain compatible with the schema output.
|
|
368
|
+
serverConfigSchema;
|
|
369
|
+
/**
|
|
370
|
+
* The default server configuration produced when no `server` block is present in YAML
|
|
371
|
+
* or when MCPServerConfiguration is constructed without an explicit server argument.
|
|
372
|
+
* Derived from serverConfigSchema defaults — single source of truth.
|
|
373
|
+
*/
|
|
374
|
+
export const DEFAULT_SERVER_CONFIG = serverConfigSchema.parse({});
|
|
375
|
+
/**
|
|
376
|
+
* Root configuration schema. This is the single validation and normalisation
|
|
377
|
+
* entry point shared by both configuration paths: YAML files (via
|
|
378
|
+
* {@link parseYamlConfiguration}) and environment variables (via
|
|
379
|
+
* {@link buildConfigFromEnvAndCli}). Transforms and cross-field rules defined here
|
|
380
|
+
* therefore apply equally to both.
|
|
381
|
+
*
|
|
382
|
+
* Parsed output is wrapped in {@link MCPServerConfiguration} by
|
|
383
|
+
* parseYamlConfiguration().
|
|
384
|
+
*/
|
|
385
|
+
export const mcpConfigSchema = z
|
|
386
|
+
.object({
|
|
387
|
+
connections: z
|
|
388
|
+
.record(z.string().trim().min(1, "Connection name cannot be empty"), connectionConfigSchema)
|
|
389
|
+
.refine(enforceSingleConnectionOnly, "Exactly one connection must be defined (multiple connections not yet supported)"),
|
|
390
|
+
server: serverConfigSchema.default(() => DEFAULT_SERVER_CONFIG),
|
|
391
|
+
})
|
|
392
|
+
.strict();
|
|
393
|
+
/** Format Zod issues into a human-readable string */
|
|
394
|
+
export function formatZodIssues(issues) {
|
|
395
|
+
return issues
|
|
396
|
+
.map((issue) => {
|
|
397
|
+
const path = issue.path.join(".");
|
|
398
|
+
return path ? ` - ${path}: ${issue.message}` : ` - ${issue.message}`;
|
|
399
|
+
})
|
|
400
|
+
.join("\n");
|
|
401
|
+
}
|
|
402
|
+
// Temporary guard: remove when multi-connection support (#151) lands.
|
|
403
|
+
function enforceSingleConnectionOnly(connections) {
|
|
404
|
+
return Object.keys(connections).length === 1;
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates a Kafka bootstrap servers string.
|
|
3
|
+
* Expects comma-separated host:port pairs where port is in range 1-65535.
|
|
4
|
+
*
|
|
5
|
+
* @param value - Bootstrap servers string (e.g., "localhost:9092" or "host1:9092,host2:9093")
|
|
6
|
+
* @throws Error with specific message if validation fails
|
|
7
|
+
*/
|
|
8
|
+
export declare function validateBootstrapServers(value: string): void;
|
|
9
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAsD5D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates a Kafka bootstrap servers string.
|
|
3
|
+
* Expects comma-separated host:port pairs where port is in range 1-65535.
|
|
4
|
+
*
|
|
5
|
+
* @param value - Bootstrap servers string (e.g., "localhost:9092" or "host1:9092,host2:9093")
|
|
6
|
+
* @throws Error with specific message if validation fails
|
|
7
|
+
*/
|
|
8
|
+
export function validateBootstrapServers(value) {
|
|
9
|
+
if (!value || typeof value !== "string") {
|
|
10
|
+
throw new Error("Value must be a non-empty string");
|
|
11
|
+
}
|
|
12
|
+
const servers = value.split(",").map((s) => s.trim());
|
|
13
|
+
// Check for empty entries (trailing/consecutive commas)
|
|
14
|
+
if (servers.includes("")) {
|
|
15
|
+
throw new Error("Invalid format: empty server entries (check for trailing or consecutive commas)");
|
|
16
|
+
}
|
|
17
|
+
for (const server of servers) {
|
|
18
|
+
// Must contain exactly one colon separating host and port
|
|
19
|
+
const parts = server.split(":");
|
|
20
|
+
if (parts.length !== 2) {
|
|
21
|
+
throw new Error(`Invalid format '${server}': must be host:port`);
|
|
22
|
+
}
|
|
23
|
+
const [host, portStr] = parts;
|
|
24
|
+
// Host must be non-empty
|
|
25
|
+
if (!host || host.trim().length === 0) {
|
|
26
|
+
throw new Error(`Invalid server '${server}': host cannot be empty`);
|
|
27
|
+
}
|
|
28
|
+
// Port must be non-empty and valid
|
|
29
|
+
if (!portStr) {
|
|
30
|
+
throw new Error(`Invalid server '${server}': port cannot be empty`);
|
|
31
|
+
}
|
|
32
|
+
// Port must be a valid integer in range 1-65535
|
|
33
|
+
const port = Number.parseInt(portStr, 10);
|
|
34
|
+
if (Number.isNaN(port)) {
|
|
35
|
+
throw new TypeError(`Invalid server '${server}': port '${portStr}' is not numeric`);
|
|
36
|
+
}
|
|
37
|
+
if (port < 1 || port > 65535) {
|
|
38
|
+
throw new Error(`Invalid server '${server}': port ${port} out of range (1-65535)`);
|
|
39
|
+
}
|
|
40
|
+
// Ensure port string is purely numeric (no trailing characters)
|
|
41
|
+
if (port.toString() !== portStr) {
|
|
42
|
+
throw new Error(`Invalid server '${server}': port '${portStr}' contains non-numeric characters`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtD,wDAAwD;IACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,0DAA0D;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,sBAAsB,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;QAE9B,yBAAyB;QACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,yBAAyB,CAAC,CAAC;QACtE,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,yBAAyB,CAAC,CAAC;QACtE,CAAC;QAED,gDAAgD;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,CACjB,mBAAmB,MAAM,YAAY,OAAO,kBAAkB,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,WAAW,IAAI,yBAAyB,CAClE,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,YAAY,OAAO,mCAAmC,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Abstract {@link BaseClientManager} that owns every Confluent Cloud
|
|
3
|
+
* REST client and the Schema Registry SDK client. Concrete subclasses live in
|
|
4
|
+
* sibling files ({@link DirectClientManager} for api-key auth + native Kafka,
|
|
5
|
+
* plus the OAuth variant introduced in the OAuth wiring ticket).
|
|
6
|
+
*/
|
|
7
|
+
import type { KafkaJS } from "@confluentinc/kafka-javascript";
|
|
8
|
+
import { SchemaRegistryClient } from "@confluentinc/schemaregistry";
|
|
9
|
+
import { type ConfluentCloudRestClientManager, type ConfluentRestClient, type SchemaRegistryClientHandler } from "../confluent/client-manager.js";
|
|
10
|
+
import { ConfluentAuth, ConfluentEndpoints } from "../confluent/middleware.js";
|
|
11
|
+
export interface BaseClientManagerConfig {
|
|
12
|
+
endpoints: ConfluentEndpoints;
|
|
13
|
+
auth: {
|
|
14
|
+
cloud: ConfluentAuth;
|
|
15
|
+
flink: ConfluentAuth;
|
|
16
|
+
tableflow: ConfluentAuth;
|
|
17
|
+
schemaRegistry: ConfluentAuth;
|
|
18
|
+
kafka: ConfluentAuth;
|
|
19
|
+
telemetry: ConfluentAuth;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Holds every Confluent Cloud REST client (cloud, tableflow, flink,
|
|
24
|
+
* schema-registry REST, kafka REST, telemetry) and the Schema Registry SDK
|
|
25
|
+
* client. Native Kafka admin/producer/consumer clients are declared abstract
|
|
26
|
+
* here so subclasses can supply the implementation that fits their auth model:
|
|
27
|
+
* api-key + SASL/PLAIN in {@link DirectClientManager}, or DPAT +
|
|
28
|
+
* SASL/OAUTHBEARER in OAuthClientManager.
|
|
29
|
+
*
|
|
30
|
+
* The `getSchemaRegistrySdkClient(envId?)` accessor has a default
|
|
31
|
+
* implementation that delegates to the no-arg `getSchemaRegistryClient()`.
|
|
32
|
+
* That covers direct connections (the arg is ignored). OAuth subclasses
|
|
33
|
+
* override it to auto-resolve the SR cluster from the supplied environment
|
|
34
|
+
* id (single SR per environment is the CCloud invariant) and build a
|
|
35
|
+
* bearer-authenticated SDK client per call.
|
|
36
|
+
*/
|
|
37
|
+
export declare abstract class BaseClientManager implements ConfluentCloudRestClientManager, SchemaRegistryClientHandler {
|
|
38
|
+
private confluentCloudBaseUrl;
|
|
39
|
+
private confluentCloudFlinkBaseUrl;
|
|
40
|
+
private confluentCloudSchemaRegistryBaseUrl;
|
|
41
|
+
private confluentCloudKafkaRestBaseUrl;
|
|
42
|
+
private confluentCloudTelemetryBaseUrl;
|
|
43
|
+
private readonly confluentCloudFlinkRestClient;
|
|
44
|
+
private readonly confluentCloudRestClient;
|
|
45
|
+
private readonly confluentCloudTableflowRestClient;
|
|
46
|
+
private readonly confluentCloudSchemaRegistryRestClient;
|
|
47
|
+
private readonly confluentCloudKafkaRestClient;
|
|
48
|
+
private readonly confluentCloudTelemetryRestClient;
|
|
49
|
+
private readonly schemaRegistryClient;
|
|
50
|
+
constructor(config: BaseClientManagerConfig);
|
|
51
|
+
/** @inheritdoc */
|
|
52
|
+
getConfluentCloudFlinkRestClient(): ConfluentRestClient;
|
|
53
|
+
/** @inheritdoc */
|
|
54
|
+
getConfluentCloudRestClient(): ConfluentRestClient;
|
|
55
|
+
/** @inheritdoc */
|
|
56
|
+
getConfluentCloudTableflowRestClient(): ConfluentRestClient;
|
|
57
|
+
/** @inheritdoc */
|
|
58
|
+
getConfluentCloudSchemaRegistryRestClient(): ConfluentRestClient;
|
|
59
|
+
/** @inheritdoc */
|
|
60
|
+
getSchemaRegistryRestClient(_envId?: string): Promise<ConfluentRestClient>;
|
|
61
|
+
/** @inheritdoc */
|
|
62
|
+
getConfluentCloudKafkaRestClient(_clusterId?: string, _envId?: string): Promise<ConfluentRestClient>;
|
|
63
|
+
/** @inheritdoc */
|
|
64
|
+
getConfluentCloudTelemetryRestClient(): ConfluentRestClient;
|
|
65
|
+
/** @inheritdoc */
|
|
66
|
+
getSchemaRegistryClient(): SchemaRegistryClient;
|
|
67
|
+
/**
|
|
68
|
+
* Environment-aware Schema Registry SDK client accessor. Under direct, the
|
|
69
|
+
* arg is ignored and the existing single-instance Lazy is returned. Under
|
|
70
|
+
* OAuth, `envId` (`env-...`) is required; the SR cluster (`lsrc-...`) is
|
|
71
|
+
* auto-resolved from the environment (single SR per environment is the
|
|
72
|
+
* CCloud invariant). The SR client itself is built per-call (no cache)
|
|
73
|
+
* because the DPAT is captured in the SDK's axios headers at construction
|
|
74
|
+
* time; endpoint resolution happens fresh on every call too.
|
|
75
|
+
*/
|
|
76
|
+
getSchemaRegistrySdkClient(_envId?: string): Promise<SchemaRegistryClient>;
|
|
77
|
+
/**
|
|
78
|
+
* Cluster-aware Kafka admin client. Under direct, args are ignored and the
|
|
79
|
+
* manager-owned `AsyncLazy` singleton admin is returned (manager controls
|
|
80
|
+
* its lifetime). Under OAuth, args are required and a fresh admin is built
|
|
81
|
+
* per call — the caller owns the lifetime and must dispose via
|
|
82
|
+
* `disposeIfOAuth(runtime, connId, admin)` in a `try { ... } finally { ... }`
|
|
83
|
+
* block (helper at `@src/confluent/tools/cluster-arg-resolvers.js`).
|
|
84
|
+
*/
|
|
85
|
+
abstract getKafkaAdminClient(clusterId?: string, envId?: string): Promise<KafkaJS.Admin>;
|
|
86
|
+
/**
|
|
87
|
+
* Cluster-aware Kafka producer. Same direct/OAuth lifecycle asymmetry as
|
|
88
|
+
* {@link getKafkaAdminClient}.
|
|
89
|
+
*/
|
|
90
|
+
abstract getKafkaProducer(clusterId?: string, envId?: string): Promise<KafkaJS.Producer>;
|
|
91
|
+
/**
|
|
92
|
+
* Build a fresh Kafka consumer (per-call on both direct and OAuth — group
|
|
93
|
+
* membership has its own server-side lifecycle that doesn't compose with
|
|
94
|
+
* cached clients). The returned consumer is unconnected; the caller must
|
|
95
|
+
* call `connect()` and `disconnect()` (typically in a `try/finally`).
|
|
96
|
+
*/
|
|
97
|
+
abstract buildKafkaConsumer(opts?: ConsumerBuildOptions): Promise<KafkaJS.Consumer>;
|
|
98
|
+
abstract disconnect(): Promise<void>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Per-call options for {@link BaseClientManager.buildKafkaConsumer}. All
|
|
102
|
+
* fields are optional; each concrete manager validates only what its auth
|
|
103
|
+
* model requires (e.g. OAuth needs `clusterId` + `envId`, direct ignores
|
|
104
|
+
* both).
|
|
105
|
+
*/
|
|
106
|
+
export interface ConsumerBuildOptions {
|
|
107
|
+
/**
|
|
108
|
+
* Confluent Cloud logical Kafka cluster id (`lkc-...`). Required for
|
|
109
|
+
* OAuth (used to resolve the SASL/OAUTHBEARER bootstrap endpoint);
|
|
110
|
+
* ignored on direct (the bootstrap comes from connection config).
|
|
111
|
+
*/
|
|
112
|
+
clusterId?: string;
|
|
113
|
+
/**
|
|
114
|
+
* Confluent Cloud environment id (`env-...`) that owns the cluster.
|
|
115
|
+
* Required for OAuth; ignored on direct.
|
|
116
|
+
*/
|
|
117
|
+
envId?: string;
|
|
118
|
+
/**
|
|
119
|
+
* Consumer group identifier. On direct, appended as a suffix to the
|
|
120
|
+
* configured base group.id so concurrent MCP sessions don't share a
|
|
121
|
+
* group. On OAuth, used as the literal group id.
|
|
122
|
+
*/
|
|
123
|
+
groupId?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Reset policy for the consumer. Defaults to `"earliest"` when the
|
|
126
|
+
* caller omits it. Handlers that derive the value from per-call inputs
|
|
127
|
+
* (e.g. `consume-messages`, which inspects each topic entry's `start`
|
|
128
|
+
* field) pass it explicitly. Maps straight to librdkafka
|
|
129
|
+
* `auto.offset.reset`.
|
|
130
|
+
*/
|
|
131
|
+
offsetReset?: "earliest" | "latest";
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=base-client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-client-manager.d.ts","sourceRoot":"","sources":["../../src/confluent/base-client-manager.ts"],"names":[],"mappings":"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"}
|