@confluentinc/mcp-confluent 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +174 -791
- package/assets/oauth-templates/callback-failure.html +22 -0
- package/assets/oauth-templates/callback-success.html +19 -0
- package/assets/oauth-templates/logo.html +91 -0
- package/assets/oauth-templates/styles.html +49 -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 +473 -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 +396 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +401 -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 +100 -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 -94
- package/dist/confluent/client-manager.d.ts.map +1 -1
- package/dist/confluent/client-manager.js +5 -242
- 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 +146 -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 +32 -39
- package/dist/confluent/node-deps.d.ts.map +1 -1
- package/dist/confluent/node-deps.js +42 -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 +5 -0
- package/dist/confluent/oauth/callback-pages.d.ts.map +1 -0
- package/dist/confluent/oauth/callback-pages.js +38 -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 +26 -0
- package/dist/confluent/oauth/pkce-login.d.ts.map +1 -0
- package/dist/confluent/oauth/pkce-login.js +161 -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/telemetry.d.ts +32 -1
- package/dist/confluent/telemetry.d.ts.map +1 -1
- package/dist/confluent/telemetry.js +31 -8
- package/dist/confluent/telemetry.js.map +1 -1
- package/dist/confluent/tools/base-tools.d.ts +108 -34
- package/dist/confluent/tools/base-tools.d.ts.map +1 -1
- package/dist/confluent/tools/base-tools.js +73 -10
- 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 +168 -0
- package/dist/confluent/tools/connection-predicates.d.ts.map +1 -0
- package/dist/confluent/tools/connection-predicates.js +273 -0
- package/dist/confluent/tools/connection-predicates.js.map +1 -0
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +3 -5
- 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 +7 -19
- 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 +4 -5
- 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 +7 -19
- 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 +4 -5
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +7 -19
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +4 -5
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.js +7 -19
- package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +4 -5
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.js +7 -23
- package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +4 -5
- 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 +7 -19
- 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 +3 -5
- 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 -22
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +21 -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 +22 -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 +23 -33
- 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 +12 -26
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
- 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 +17 -28
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +6 -7
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +12 -26
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +57 -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 +122 -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 +17 -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 +234 -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 +13 -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 +285 -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 +3 -5
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js +7 -19
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +3 -5
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js +7 -19
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +16 -9
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +18 -12
- 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 +17 -31
- 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 +17 -31
- 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 +14 -28
- 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 +14 -30
- 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 +14 -38
- 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 +20 -32
- 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 +9 -24
- 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 +9 -23
- 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 +11 -25
- 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 +13 -29
- 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 +2 -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 +21 -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 +31 -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 +9 -23
- 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 +11 -25
- 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 +9 -23
- 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 +3 -5
- 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 -29
- 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 +5 -4
- 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 +25 -17
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +3 -4
- 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 +3 -4
- 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/get-topic-config.d.ts +3 -5
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js +21 -28
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +3 -4
- 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/produce-kafka-message-handler.d.ts +3 -4
- 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 +54 -34
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +4 -5
- 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 -8
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +22 -5
- 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 -52
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +49 -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 +115 -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 +3 -4
- 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 -18
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +3 -4
- 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 +4 -5
- 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 +7 -19
- 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 +4 -5
- 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 +7 -19
- 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 +16 -22
- 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 +8 -24
- 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 +9 -25
- 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 +8 -24
- 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 +7 -21
- 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 +20 -32
- 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 +25 -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 +27 -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 +16 -22
- 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 +8 -24
- 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 +9 -25
- 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 +8 -24
- 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 +7 -21
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/tool-availability.d.ts +74 -0
- package/dist/confluent/tools/tool-availability.d.ts.map +1 -0
- package/dist/confluent/tools/tool-availability.js +121 -0
- package/dist/confluent/tools/tool-availability.js.map +1 -0
- package/dist/confluent/tools/tool-name.d.ts +5 -1
- package/dist/confluent/tools/tool-name.d.ts.map +1 -1
- package/dist/confluent/tools/tool-name.js +4 -0
- package/dist/confluent/tools/tool-name.js.map +1 -1
- package/dist/confluent/tools/tool-registry.d.ts +18 -0
- package/dist/confluent/tools/tool-registry.d.ts.map +1 -0
- package/dist/confluent/tools/{tool-factory.js → tool-registry.js} +32 -19
- package/dist/confluent/tools/tool-registry.js.map +1 -0
- package/dist/env-schema.d.ts +5 -2
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +20 -5
- package/dist/env-schema.js.map +1 -1
- package/dist/env.d.ts +16 -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 +279 -162
- 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 +52 -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 +25 -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/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 @@
|
|
|
1
|
+
{"version":3,"file":"token-lifetimes.js","sourceRoot":"","sources":["../../../src/confluent/oauth/token-lifetimes.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3D,oFAAoF;AACpF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErE,oFAAoF;AACpF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEjE,uFAAuF;AACvF,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzD,gFAAgF;AAChF,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export type Auth0Environment = "devel" | "stag" | "prod";
|
|
2
|
+
export interface Auth0Config {
|
|
3
|
+
clientId: string;
|
|
4
|
+
domain: string;
|
|
5
|
+
apiUrl: string;
|
|
6
|
+
/** Confluent Cloud REST API base URL for this environment (e.g. https://api.confluent.cloud for prod). */
|
|
7
|
+
cloudRestUrl: string;
|
|
8
|
+
callbackUrl: string;
|
|
9
|
+
scopes: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ConfluentTokenSet {
|
|
12
|
+
/** Auth0 refresh token — single-use, rotated each refresh cycle */
|
|
13
|
+
refreshToken: string;
|
|
14
|
+
/** Absolute expiration of the refresh token family (epoch ms). 8hr from original login. */
|
|
15
|
+
refreshTokenAbsoluteExpiresAt: number;
|
|
16
|
+
/** Idle expiration of the current refresh token (epoch ms). 4hr from last rotation. */
|
|
17
|
+
refreshTokenIdleExpiresAt: number;
|
|
18
|
+
/** Confluent Cloud control plane token (Bearer token for api.confluent.cloud) */
|
|
19
|
+
controlPlaneToken: string;
|
|
20
|
+
/** Control plane token expiration (epoch ms). ~5 min TTL. */
|
|
21
|
+
controlPlaneExpiresAt: number;
|
|
22
|
+
/** Confluent Cloud data plane token (Bearer token for cluster-specific endpoints) */
|
|
23
|
+
dataPlaneToken: string;
|
|
24
|
+
/** Data plane token expiration (epoch ms). ~10 min TTL. */
|
|
25
|
+
dataPlaneExpiresAt: number;
|
|
26
|
+
/** Opaque access token returned to MCP clients. Stable across refreshes. */
|
|
27
|
+
accessToken: string;
|
|
28
|
+
}
|
|
29
|
+
export interface OAuthConfig {
|
|
30
|
+
auth: "oauth";
|
|
31
|
+
environment: Auth0Environment;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Response from POST login.confluent.io/oauth/token
|
|
35
|
+
*/
|
|
36
|
+
export interface Auth0TokenResponse {
|
|
37
|
+
id_token: string;
|
|
38
|
+
refresh_token: string;
|
|
39
|
+
access_token: string;
|
|
40
|
+
token_type: string;
|
|
41
|
+
expires_in: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* User identity returned in the body of POST confluent.cloud/api/sessions.
|
|
45
|
+
* Sourced from the JSON response, not from any JWT claim. Fields beyond what
|
|
46
|
+
* we consume are intentionally omitted.
|
|
47
|
+
*/
|
|
48
|
+
export interface UserDetails {
|
|
49
|
+
id?: string;
|
|
50
|
+
email?: string;
|
|
51
|
+
resource_id?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Response from POST confluent.cloud/api/sessions
|
|
55
|
+
*/
|
|
56
|
+
export interface ControlPlaneTokenResponse {
|
|
57
|
+
token: string;
|
|
58
|
+
expires_at: string;
|
|
59
|
+
user?: UserDetails;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Response from POST confluent.cloud/api/access_tokens
|
|
63
|
+
*/
|
|
64
|
+
export interface DataPlaneTokenResponse {
|
|
65
|
+
token: string;
|
|
66
|
+
expires_at: string;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/confluent/oauth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0GAA0G;IAC1G,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,6BAA6B,EAAE,MAAM,CAAC;IACtC,uFAAuF;IACvF,yBAAyB,EAAE,MAAM,CAAC;IAElC,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAE9B,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAE3B,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/confluent/oauth/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview OAuth (bearer-auth) client manager. Wires Confluent Cloud
|
|
3
|
+
* REST surfaces, native Kafka admin/producer/consumer (via `@confluentinc/kafka-javascript` +
|
|
4
|
+
* SASL/OAUTHBEARER), and the Schema Registry SDK to bearer tokens supplied
|
|
5
|
+
* by an {@link OAuthHolder}. REST endpoint URLs and Kafka bootstrap servers
|
|
6
|
+
* are resolved at call time from the CCloud environment + cluster IDs the
|
|
7
|
+
* agent supplies as tool args.
|
|
8
|
+
*
|
|
9
|
+
* Native Kafka clients are built fresh per call; handlers wrap usage in
|
|
10
|
+
* `try { ... } finally { await disposeIfOAuth(...) }` for caller-owned
|
|
11
|
+
* disposal. SASL/OAUTHBEARER is configured via librdkafka's synchronous
|
|
12
|
+
* token-refresh callback (no kafkaJS-compat async-provider race), so no
|
|
13
|
+
* warmup workaround is needed.
|
|
14
|
+
*
|
|
15
|
+
* Schema Registry serialization is supported through `produce-message` and
|
|
16
|
+
* `consume-messages`: the manager's `getSchemaRegistrySdkClient` auto-resolves
|
|
17
|
+
* the SR cluster id from the environment id supplied by the agent (single SR
|
|
18
|
+
* per environment is the CCloud invariant) and builds a bearer-authenticated
|
|
19
|
+
* SDK client per call.
|
|
20
|
+
*/
|
|
21
|
+
import type { KafkaJS } from "@confluentinc/kafka-javascript";
|
|
22
|
+
import { SchemaRegistryClient } from "@confluentinc/schemaregistry";
|
|
23
|
+
import { BaseClientManager } from "../confluent/base-client-manager.js";
|
|
24
|
+
import type { ConfluentRestClient } from "../confluent/client-manager.js";
|
|
25
|
+
import { OAuthHolder } from "../confluent/oauth/oauth-holder.js";
|
|
26
|
+
import type { Auth0Environment } from "../confluent/oauth/types.js";
|
|
27
|
+
/**
|
|
28
|
+
* Bearer-auth client manager. Wires every REST surface to the OAuth holder's
|
|
29
|
+
* tokens — control plane (cloud / tableflow / telemetry) reads
|
|
30
|
+
* {@link OAuthHolder.getControlPlaneToken}; data plane (flink / schema-registry
|
|
31
|
+
* REST / kafka REST) reads {@link OAuthHolder.getDataPlaneToken}. Cloud REST URL
|
|
32
|
+
* is auto-derived from the CCloud env. Native Kafka clients (admin, producer,
|
|
33
|
+
* consumer) are built fresh per call against bootstrap endpoints resolved
|
|
34
|
+
* via the cmk REST API; SASL/OAUTHBEARER is configured via librdkafka's
|
|
35
|
+
* synchronous token-refresh callback to avoid the kafkaJS-compat
|
|
36
|
+
* async-provider race that previously required a warmup workaround.
|
|
37
|
+
*/
|
|
38
|
+
export declare class OAuthClientManager extends BaseClientManager {
|
|
39
|
+
private readonly holder;
|
|
40
|
+
private readonly kafkaDebug;
|
|
41
|
+
/**
|
|
42
|
+
* @param kafkaDebug Optional librdkafka `debug` contexts string, threaded
|
|
43
|
+
* through to every native Kafka client built by this manager. Sourced
|
|
44
|
+
* from `connections.<name>.kafka_debug` on the OAuth YAML arm; used as a
|
|
45
|
+
* diagnostic knob when a SASL/OAUTHBEARER handshake misbehaves.
|
|
46
|
+
*/
|
|
47
|
+
constructor(holder: OAuthHolder, env: Auth0Environment, kafkaDebug?: string);
|
|
48
|
+
/** @inheritdoc */
|
|
49
|
+
getSchemaRegistrySdkClient(envId?: string): Promise<SchemaRegistryClient>;
|
|
50
|
+
/** @inheritdoc */
|
|
51
|
+
getConfluentCloudKafkaRestClient(clusterId?: string, envId?: string): Promise<ConfluentRestClient>;
|
|
52
|
+
/** @inheritdoc */
|
|
53
|
+
getSchemaRegistryRestClient(envId?: string): Promise<ConfluentRestClient>;
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
getKafkaAdminClient(clusterId?: string, envId?: string): Promise<KafkaJS.Admin>;
|
|
56
|
+
/** @inheritdoc */
|
|
57
|
+
getKafkaProducer(clusterId?: string, envId?: string): Promise<KafkaJS.Producer>;
|
|
58
|
+
/** @inheritdoc */
|
|
59
|
+
buildKafkaConsumer(clusterId?: string, envId?: string, groupId?: string): Promise<KafkaJS.Consumer>;
|
|
60
|
+
/** @inheritdoc */
|
|
61
|
+
disconnect(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Returns the current data-plane token, throwing when none is available.
|
|
64
|
+
* Used by every OAuth-side client accessor to fail fast before
|
|
65
|
+
* constructing a client with an empty bearer.
|
|
66
|
+
*
|
|
67
|
+
* The MCP tool-call gate calls `holder.ensureLoggedIn()` before any
|
|
68
|
+
* handler that needs Confluent access, so by the time this method runs
|
|
69
|
+
* login has already completed. A missing DPAT here means the holder was
|
|
70
|
+
* cleared mid-call (shutdown raced with a tool call) or a non-transient
|
|
71
|
+
* refresh error has invalidated the token between the gate check and
|
|
72
|
+
* the client construction — both rare and surface a clear message.
|
|
73
|
+
*/
|
|
74
|
+
private requireDataPlaneToken;
|
|
75
|
+
private requireClusterArgs;
|
|
76
|
+
private buildOAuthKafkaClient;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=oauth-client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-client-manager.d.ts","sourceRoot":"","sources":["../../src/confluent/oauth-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAa5E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAqBtE;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD;;;;;OAKG;gBACS,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM;IA8B3E,kBAAkB;IACZ,0BAA0B,CAC9B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;IA0BhC,kBAAkB;IACZ,gCAAgC,CACpC,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAoB/B,kBAAkB;IACZ,2BAA2B,CAC/B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0B/B,kBAAkB;IACZ,mBAAmB,CACvB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAuBzB,kBAAkB;IACZ,gBAAgB,CACpB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAQ5B,kBAAkB;IACZ,kBAAkB,CACtB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAY5B,kBAAkB;IACZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,kBAAkB;YAiBZ,qBAAqB;CAuDpC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview OAuth (bearer-auth) client manager. Wires Confluent Cloud
|
|
3
|
+
* REST surfaces, native Kafka admin/producer/consumer (via `@confluentinc/kafka-javascript` +
|
|
4
|
+
* SASL/OAUTHBEARER), and the Schema Registry SDK to bearer tokens supplied
|
|
5
|
+
* by an {@link OAuthHolder}. REST endpoint URLs and Kafka bootstrap servers
|
|
6
|
+
* are resolved at call time from the CCloud environment + cluster IDs the
|
|
7
|
+
* agent supplies as tool args.
|
|
8
|
+
*
|
|
9
|
+
* Native Kafka clients are built fresh per call; handlers wrap usage in
|
|
10
|
+
* `try { ... } finally { await disposeIfOAuth(...) }` for caller-owned
|
|
11
|
+
* disposal. SASL/OAUTHBEARER is configured via librdkafka's synchronous
|
|
12
|
+
* token-refresh callback (no kafkaJS-compat async-provider race), so no
|
|
13
|
+
* warmup workaround is needed.
|
|
14
|
+
*
|
|
15
|
+
* Schema Registry serialization is supported through `produce-message` and
|
|
16
|
+
* `consume-messages`: the manager's `getSchemaRegistrySdkClient` auto-resolves
|
|
17
|
+
* the SR cluster id from the environment id supplied by the agent (single SR
|
|
18
|
+
* per environment is the CCloud invariant) and builds a bearer-authenticated
|
|
19
|
+
* SDK client per call.
|
|
20
|
+
*/
|
|
21
|
+
import { SchemaRegistryClient } from "@confluentinc/schemaregistry";
|
|
22
|
+
import { BaseClientManager } from "../confluent/base-client-manager.js";
|
|
23
|
+
import { createAuthMiddleware, } from "../confluent/middleware.js";
|
|
24
|
+
import { kafkaDeps } from "../confluent/node-deps.js";
|
|
25
|
+
import { resolveKafkaBootstrap, resolveKafkaRestEndpoint, resolveSchemaRegistryClusterId, resolveSchemaRegistryEndpoint, } from "../confluent/oauth-resource-resolvers.js";
|
|
26
|
+
import { getCloudRestUrlForEnv } from "../confluent/oauth/auth0-config.js";
|
|
27
|
+
import { kafkaLogger } from "../logger.js";
|
|
28
|
+
import createClient from "openapi-fetch";
|
|
29
|
+
import { DATA_PLANE_TOKEN_LIFETIME_MS } from "./oauth/token-lifetimes.js";
|
|
30
|
+
/**
|
|
31
|
+
* Bearer-auth client manager. Wires every REST surface to the OAuth holder's
|
|
32
|
+
* tokens — control plane (cloud / tableflow / telemetry) reads
|
|
33
|
+
* {@link OAuthHolder.getControlPlaneToken}; data plane (flink / schema-registry
|
|
34
|
+
* REST / kafka REST) reads {@link OAuthHolder.getDataPlaneToken}. Cloud REST URL
|
|
35
|
+
* is auto-derived from the CCloud env. Native Kafka clients (admin, producer,
|
|
36
|
+
* consumer) are built fresh per call against bootstrap endpoints resolved
|
|
37
|
+
* via the cmk REST API; SASL/OAUTHBEARER is configured via librdkafka's
|
|
38
|
+
* synchronous token-refresh callback to avoid the kafkaJS-compat
|
|
39
|
+
* async-provider race that previously required a warmup workaround.
|
|
40
|
+
*/
|
|
41
|
+
export class OAuthClientManager extends BaseClientManager {
|
|
42
|
+
holder;
|
|
43
|
+
kafkaDebug;
|
|
44
|
+
/**
|
|
45
|
+
* @param kafkaDebug Optional librdkafka `debug` contexts string, threaded
|
|
46
|
+
* through to every native Kafka client built by this manager. Sourced
|
|
47
|
+
* from `connections.<name>.kafka_debug` on the OAuth YAML arm; used as a
|
|
48
|
+
* diagnostic knob when a SASL/OAUTHBEARER handshake misbehaves.
|
|
49
|
+
*/
|
|
50
|
+
constructor(holder, env, kafkaDebug) {
|
|
51
|
+
const cpToken = () => holder.getControlPlaneToken();
|
|
52
|
+
const dpToken = () => holder.getDataPlaneToken();
|
|
53
|
+
super({
|
|
54
|
+
endpoints: {
|
|
55
|
+
// BaseClientManager re-uses `cloud` for the Tableflow base URL too.
|
|
56
|
+
cloud: getCloudRestUrlForEnv(env),
|
|
57
|
+
flink: undefined,
|
|
58
|
+
schemaRegistry: undefined,
|
|
59
|
+
kafka: undefined,
|
|
60
|
+
telemetry: undefined,
|
|
61
|
+
},
|
|
62
|
+
auth: {
|
|
63
|
+
cloud: { type: "oauth", getToken: cpToken },
|
|
64
|
+
tableflow: { type: "oauth", getToken: cpToken },
|
|
65
|
+
telemetry: { type: "oauth", getToken: cpToken },
|
|
66
|
+
flink: { type: "oauth", getToken: dpToken },
|
|
67
|
+
schemaRegistry: { type: "oauth", getToken: dpToken },
|
|
68
|
+
kafka: { type: "oauth", getToken: dpToken },
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
this.holder = holder;
|
|
72
|
+
this.kafkaDebug = kafkaDebug;
|
|
73
|
+
// Eager construction: surface the cloud REST client at startup so a bad
|
|
74
|
+
// endpoint or middleware wiring fails fast rather than at first tool call.
|
|
75
|
+
this.getConfluentCloudRestClient();
|
|
76
|
+
}
|
|
77
|
+
/** @inheritdoc */
|
|
78
|
+
async getSchemaRegistrySdkClient(envId) {
|
|
79
|
+
// The SR SDK captures `Authorization: Bearer <token>` in its axios
|
|
80
|
+
// `createAxiosDefaults` at construction time, so a build during initial
|
|
81
|
+
// login or a broken refresh would freeze an empty bearer into every
|
|
82
|
+
// subsequent request — fail fast here before that can happen.
|
|
83
|
+
const dpat = this.requireDataPlaneToken();
|
|
84
|
+
if (!envId) {
|
|
85
|
+
throw new Error("environment_id is required under OAuth for Schema Registry access. " +
|
|
86
|
+
"Call list-environments to discover available environments.");
|
|
87
|
+
}
|
|
88
|
+
const cloud = this.getConfluentCloudRestClient();
|
|
89
|
+
const lsrc = await resolveSchemaRegistryClusterId(cloud, envId);
|
|
90
|
+
const endpoint = await resolveSchemaRegistryEndpoint(cloud, lsrc, envId);
|
|
91
|
+
return new SchemaRegistryClient({
|
|
92
|
+
baseURLs: [endpoint],
|
|
93
|
+
createAxiosDefaults: {
|
|
94
|
+
headers: {
|
|
95
|
+
Authorization: `Bearer ${dpat}`,
|
|
96
|
+
"target-sr-cluster": lsrc,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/** @inheritdoc */
|
|
102
|
+
async getConfluentCloudKafkaRestClient(clusterId, envId) {
|
|
103
|
+
this.requireClusterArgs(clusterId, envId);
|
|
104
|
+
// The bearer middleware reads `auth.getToken()` per-request, but failing
|
|
105
|
+
// fast here gives the agent a clear error rather than letting an empty
|
|
106
|
+
// bearer go out on the wire.
|
|
107
|
+
this.requireDataPlaneToken();
|
|
108
|
+
const baseUrl = await resolveKafkaRestEndpoint(this.getConfluentCloudRestClient(), clusterId, envId);
|
|
109
|
+
const auth = {
|
|
110
|
+
type: "oauth",
|
|
111
|
+
getToken: () => this.holder.getDataPlaneToken(),
|
|
112
|
+
};
|
|
113
|
+
const client = createClient({ baseUrl });
|
|
114
|
+
client.use(createAuthMiddleware(auth));
|
|
115
|
+
return client;
|
|
116
|
+
}
|
|
117
|
+
/** @inheritdoc */
|
|
118
|
+
async getSchemaRegistryRestClient(envId) {
|
|
119
|
+
this.requireDataPlaneToken();
|
|
120
|
+
if (!envId) {
|
|
121
|
+
throw new Error("environment_id is required under OAuth for Schema Registry REST access. " +
|
|
122
|
+
"Call list-environments to discover available environments.");
|
|
123
|
+
}
|
|
124
|
+
const cloud = this.getConfluentCloudRestClient();
|
|
125
|
+
const lsrc = await resolveSchemaRegistryClusterId(cloud, envId);
|
|
126
|
+
const baseUrl = await resolveSchemaRegistryEndpoint(cloud, lsrc, envId);
|
|
127
|
+
const auth = {
|
|
128
|
+
type: "oauth",
|
|
129
|
+
getToken: () => this.holder.getDataPlaneToken(),
|
|
130
|
+
};
|
|
131
|
+
const client = createClient({
|
|
132
|
+
baseUrl,
|
|
133
|
+
// The `target-sr-cluster` header pins all requests on this client to
|
|
134
|
+
// the right logical SR cluster — mirrors the SR SDK construction in
|
|
135
|
+
// `getSchemaRegistrySdkClient`.
|
|
136
|
+
headers: { "target-sr-cluster": lsrc },
|
|
137
|
+
});
|
|
138
|
+
client.use(createAuthMiddleware(auth));
|
|
139
|
+
return client;
|
|
140
|
+
}
|
|
141
|
+
/** @inheritdoc */
|
|
142
|
+
async getKafkaAdminClient(clusterId, envId) {
|
|
143
|
+
this.requireClusterArgs(clusterId, envId);
|
|
144
|
+
const kafka = await this.buildOAuthKafkaClient(clusterId, envId);
|
|
145
|
+
const admin = kafka.admin();
|
|
146
|
+
try {
|
|
147
|
+
await admin.connect();
|
|
148
|
+
// Metadata warmup: `admin.connect()` returns before librdkafka has
|
|
149
|
+
// discovered the controller broker. The first non-list operation
|
|
150
|
+
// (createTopics, deleteTopics) needs the controller and times out
|
|
151
|
+
// locally if metadata isn't yet cached. listTopics is a cheap
|
|
152
|
+
// metadata-only roundtrip that primes the broker map; subsequent
|
|
153
|
+
// ops on this admin instance reuse it. Costs ~50-200ms per OAuth
|
|
154
|
+
// admin call; acceptable given clients are per-call by design.
|
|
155
|
+
await admin.listTopics();
|
|
156
|
+
return admin;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
// Disconnect the half-built admin so we don't leak the broker
|
|
160
|
+
// connection on a failed warmup.
|
|
161
|
+
await admin.disconnect().catch(() => undefined);
|
|
162
|
+
throw err;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/** @inheritdoc */
|
|
166
|
+
async getKafkaProducer(clusterId, envId) {
|
|
167
|
+
this.requireClusterArgs(clusterId, envId);
|
|
168
|
+
const kafka = await this.buildOAuthKafkaClient(clusterId, envId);
|
|
169
|
+
const producer = kafka.producer();
|
|
170
|
+
await producer.connect();
|
|
171
|
+
return producer;
|
|
172
|
+
}
|
|
173
|
+
/** @inheritdoc */
|
|
174
|
+
async buildKafkaConsumer(clusterId, envId, groupId) {
|
|
175
|
+
this.requireClusterArgs(clusterId, envId);
|
|
176
|
+
const kafka = await this.buildOAuthKafkaClient(clusterId, envId);
|
|
177
|
+
return kafka.consumer({
|
|
178
|
+
kafkaJS: {
|
|
179
|
+
groupId: groupId ?? "mcp-confluent",
|
|
180
|
+
autoCommit: false,
|
|
181
|
+
fromBeginning: true,
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/** @inheritdoc */
|
|
186
|
+
async disconnect() {
|
|
187
|
+
// No state to drain — every Kafka client is caller-owned and disposed
|
|
188
|
+
// by the handler's `finally` block via `disposeIfOAuth`.
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Returns the current data-plane token, throwing when none is available.
|
|
192
|
+
* Used by every OAuth-side client accessor to fail fast before
|
|
193
|
+
* constructing a client with an empty bearer.
|
|
194
|
+
*
|
|
195
|
+
* The MCP tool-call gate calls `holder.ensureLoggedIn()` before any
|
|
196
|
+
* handler that needs Confluent access, so by the time this method runs
|
|
197
|
+
* login has already completed. A missing DPAT here means the holder was
|
|
198
|
+
* cleared mid-call (shutdown raced with a tool call) or a non-transient
|
|
199
|
+
* refresh error has invalidated the token between the gate check and
|
|
200
|
+
* the client construction — both rare and surface a clear message.
|
|
201
|
+
*/
|
|
202
|
+
requireDataPlaneToken() {
|
|
203
|
+
const dpat = this.holder.getDataPlaneToken();
|
|
204
|
+
if (!dpat) {
|
|
205
|
+
throw new Error("No data-plane token available. The OAuth holder may have been " +
|
|
206
|
+
"shut down or an authentication error has invalidated the token.");
|
|
207
|
+
}
|
|
208
|
+
return dpat;
|
|
209
|
+
}
|
|
210
|
+
requireClusterArgs(clusterId, envId) {
|
|
211
|
+
if (clusterId === undefined || envId === undefined) {
|
|
212
|
+
// Defensive check — handlers should validate arg-name shape and throw
|
|
213
|
+
// their own user-facing error via resolveKafkaClusterArgs (native, snake_case)
|
|
214
|
+
// or resolveKafkaRestArgs (REST, camelCase) before reaching the manager.
|
|
215
|
+
// This message fires only when a caller bypasses those resolvers, so
|
|
216
|
+
// it's worded generically rather than tied to either arg-name convention.
|
|
217
|
+
throw new Error("OAuth client construction requires a cluster id and environment id. " +
|
|
218
|
+
"Discover via list-environments and list-clusters; pass the cluster's `id` and `spec.environment.id`.");
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async buildOAuthKafkaClient(clusterId, envId) {
|
|
222
|
+
// Ensure the DPAT is populated before librdkafka starts the SASL
|
|
223
|
+
// handshake — the synchronous `oauthbearer_token_refresh_cb` (configured
|
|
224
|
+
// below) reads it on demand, so an empty token here would surface as a
|
|
225
|
+
// broker-side auth failure with no useful diagnostic.
|
|
226
|
+
this.requireDataPlaneToken();
|
|
227
|
+
// librdkafka debug logs — gated by `kafka_debug` on the OAuth YAML arm so
|
|
228
|
+
// they don't pollute normal server stderr. Set
|
|
229
|
+
// `connections.<name>.kafka_debug: "security,broker,protocol"` (or "all")
|
|
230
|
+
// to see the full SASL/OAUTHBEARER handshake and broker traffic.
|
|
231
|
+
const debug = this.kafkaDebug;
|
|
232
|
+
const bootstrap = await resolveKafkaBootstrap(this.getConfluentCloudRestClient(), clusterId, envId);
|
|
233
|
+
const config = {
|
|
234
|
+
"bootstrap.servers": bootstrap,
|
|
235
|
+
"security.protocol": "sasl_ssl",
|
|
236
|
+
"sasl.mechanisms": "OAUTHBEARER",
|
|
237
|
+
// Synchronous librdkafka-native refresh callback. Reads the holder's
|
|
238
|
+
// current DPAT and pushes it into librdkafka via postProcessTokenRefresh
|
|
239
|
+
// inline — no async, no microtask race with the SASL state machine.
|
|
240
|
+
oauthbearer_token_refresh_cb: (_oauthbearerConfig, postProcessTokenRefresh) => {
|
|
241
|
+
const dpat = this.holder.getDataPlaneToken();
|
|
242
|
+
if (!dpat) {
|
|
243
|
+
postProcessTokenRefresh(new Error("Data-plane token unavailable for SASL refresh"));
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
postProcessTokenRefresh(null, {
|
|
247
|
+
tokenValue: dpat,
|
|
248
|
+
lifetime: Date.now() + DATA_PLANE_TOKEN_LIFETIME_MS,
|
|
249
|
+
principal: clusterId,
|
|
250
|
+
extensions: { logicalCluster: clusterId },
|
|
251
|
+
});
|
|
252
|
+
},
|
|
253
|
+
...(debug ? { debug } : {}),
|
|
254
|
+
};
|
|
255
|
+
// Critical for stdio MCP: route KafkaJS / librdkafka logs through pino
|
|
256
|
+
// (which writes to stderr). Without this, the default logger prints to
|
|
257
|
+
// stdout in pretty format, corrupting the stdio JSON-RPC stream.
|
|
258
|
+
return new kafkaDeps.Kafka({
|
|
259
|
+
...config,
|
|
260
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
261
|
+
kafkaJS: { logger: kafkaLogger },
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=oauth-client-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-client-manager.js","sourceRoot":"","sources":["../../src/confluent/oauth-client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ConfluentRestClient } from "../confluent/client-manager.js";
|
|
2
|
+
export declare function resolveKafkaBootstrap(cloudClient: ConfluentRestClient, clusterId: string, envId: string): Promise<string>;
|
|
3
|
+
export declare function resolveKafkaRestEndpoint(cloudClient: ConfluentRestClient, clusterId: string, envId: string): Promise<string>;
|
|
4
|
+
export declare function resolveSchemaRegistryEndpoint(cloudClient: ConfluentRestClient, clusterId: string, envId: string): Promise<string>;
|
|
5
|
+
export declare function resolveSchemaRegistryClusterId(cloudClient: ConfluentRestClient, envId: string): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=oauth-resource-resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-resource-resolvers.d.ts","sourceRoot":"","sources":["../../src/confluent/oauth-resource-resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,mBAAmB,EAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,mBAAmB,EAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,mBAAmB,EAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export async function resolveKafkaBootstrap(cloudClient, clusterId, envId) {
|
|
2
|
+
const { data, error } = await cloudClient.GET("/cmk/v2/clusters/{id}", {
|
|
3
|
+
params: { path: { id: clusterId }, query: { environment: envId } },
|
|
4
|
+
});
|
|
5
|
+
if (error !== undefined) {
|
|
6
|
+
throw new Error(`Failed to read Kafka cluster ${clusterId} in environment ${envId}: ${JSON.stringify(error)}`);
|
|
7
|
+
}
|
|
8
|
+
const bootstrap = data?.spec?.kafka_bootstrap_endpoint;
|
|
9
|
+
if (typeof bootstrap !== "string" || bootstrap.length === 0) {
|
|
10
|
+
throw new Error(`Cluster ${clusterId} in environment ${envId} has no kafka_bootstrap_endpoint`);
|
|
11
|
+
}
|
|
12
|
+
return bootstrap;
|
|
13
|
+
}
|
|
14
|
+
export async function resolveKafkaRestEndpoint(cloudClient, clusterId, envId) {
|
|
15
|
+
const { data, error } = await cloudClient.GET("/cmk/v2/clusters/{id}", {
|
|
16
|
+
params: { path: { id: clusterId }, query: { environment: envId } },
|
|
17
|
+
});
|
|
18
|
+
if (error !== undefined) {
|
|
19
|
+
throw new Error(`Failed to read Kafka cluster ${clusterId} in environment ${envId}: ${JSON.stringify(error)}`);
|
|
20
|
+
}
|
|
21
|
+
const httpEndpoint = data?.spec?.http_endpoint;
|
|
22
|
+
if (typeof httpEndpoint !== "string" || httpEndpoint.length === 0) {
|
|
23
|
+
throw new Error(`Cluster ${clusterId} in environment ${envId} has no http_endpoint`);
|
|
24
|
+
}
|
|
25
|
+
return httpEndpoint;
|
|
26
|
+
}
|
|
27
|
+
export async function resolveSchemaRegistryEndpoint(cloudClient, clusterId, envId) {
|
|
28
|
+
const { data, error } = await cloudClient.GET("/srcm/v3/clusters/{id}", {
|
|
29
|
+
params: { path: { id: clusterId }, query: { environment: envId } },
|
|
30
|
+
});
|
|
31
|
+
if (error !== undefined) {
|
|
32
|
+
throw new Error(`Failed to read Schema Registry cluster ${clusterId} in environment ${envId}: ${JSON.stringify(error)}`);
|
|
33
|
+
}
|
|
34
|
+
const httpEndpoint = data?.spec?.http_endpoint;
|
|
35
|
+
if (typeof httpEndpoint !== "string" || httpEndpoint.length === 0) {
|
|
36
|
+
throw new Error(`Schema Registry cluster ${clusterId} in environment ${envId} has no http_endpoint`);
|
|
37
|
+
}
|
|
38
|
+
return httpEndpoint;
|
|
39
|
+
}
|
|
40
|
+
export async function resolveSchemaRegistryClusterId(cloudClient, envId) {
|
|
41
|
+
const { data, error } = await cloudClient.GET("/srcm/v3/clusters", {
|
|
42
|
+
params: { query: { environment: envId } },
|
|
43
|
+
});
|
|
44
|
+
if (error !== undefined) {
|
|
45
|
+
throw new Error(`Failed to list Schema Registry clusters in environment ${envId}: ${JSON.stringify(error)}`);
|
|
46
|
+
}
|
|
47
|
+
const clusters = data?.data ?? [];
|
|
48
|
+
if (clusters.length === 0) {
|
|
49
|
+
throw new Error(`No Schema Registry cluster found in environment ${envId}. ` +
|
|
50
|
+
`Schema Registry must be enabled on the environment in Confluent Cloud.`);
|
|
51
|
+
}
|
|
52
|
+
if (clusters.length > 1) {
|
|
53
|
+
// Defensive: CCloud's documented invariant is one SR per environment.
|
|
54
|
+
// If that ever changes, callers will need to pick a specific cluster
|
|
55
|
+
// rather than have us silently take the first.
|
|
56
|
+
throw new Error(`Multiple Schema Registry clusters found in environment ${envId} (count: ${clusters.length}). ` +
|
|
57
|
+
`Single SR per environment is assumed; multi-SR is not supported.`);
|
|
58
|
+
}
|
|
59
|
+
const id = clusters[0]?.id;
|
|
60
|
+
if (typeof id !== "string" || id.length === 0) {
|
|
61
|
+
throw new Error(`Schema Registry cluster in environment ${envId} has no id`);
|
|
62
|
+
}
|
|
63
|
+
return id;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=oauth-resource-resolvers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-resource-resolvers.js","sourceRoot":"","sources":["../../src/confluent/oauth-resource-resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
export declare enum TelemetryEvent {
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Emitted once after successful startup so we can count boots independently
|
|
4
|
+
* of tool calls.
|
|
5
|
+
*/
|
|
6
|
+
SERVER_START = "Server Start",
|
|
7
|
+
/**
|
|
8
|
+
* Emitted once for every tool call for telemetry on tool usage.
|
|
9
|
+
*/
|
|
10
|
+
TOOL_CALL = "Tool Call",
|
|
11
|
+
/**
|
|
12
|
+
* Emitted once per terminal OAuth PKCE login attempt (success or failure).
|
|
13
|
+
* Refresh-token rotations are not tracked here.
|
|
14
|
+
*/
|
|
15
|
+
CCLOUD_AUTHENTICATION = "CCloud Authentication"
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Inputs to {@link TelemetryService.initialize}. `writeKey` is whatever the
|
|
19
|
+
* caller resolved (YAML override, build-config injected value, or undefined);
|
|
20
|
+
* the service treats `undefined`/`""` as "telemetry off" and otherwise hands
|
|
21
|
+
* the value to the Segment Analytics constructor.
|
|
22
|
+
*/
|
|
23
|
+
export interface TelemetryInitOptions {
|
|
24
|
+
readonly doNotTrack: boolean;
|
|
25
|
+
readonly writeKey: string | undefined;
|
|
3
26
|
}
|
|
4
27
|
export declare const FALLBACK_MACHINE_ID = "00000000-0000-0000-0000-000000000000";
|
|
5
28
|
export declare class TelemetryService {
|
|
@@ -9,6 +32,14 @@ export declare class TelemetryService {
|
|
|
9
32
|
private serverSessionId;
|
|
10
33
|
private commonProperties;
|
|
11
34
|
private constructor();
|
|
35
|
+
/**
|
|
36
|
+
* Bootstrap-time entry point. The caller (main()) is responsible for
|
|
37
|
+
* resolving `writeKey` from its sources — typically
|
|
38
|
+
* `mcpConfig.server.analytics?.write_key ?? buildConfig.TELEMETRY_WRITE_KEY`
|
|
39
|
+
* — before invoking this. A falsy `writeKey` (`undefined` or `""`) keeps
|
|
40
|
+
* analytics disabled even when `doNotTrack` is false.
|
|
41
|
+
*/
|
|
42
|
+
static initialize(opts: TelemetryInitOptions): void;
|
|
12
43
|
static getInstance(): TelemetryService;
|
|
13
44
|
setCommonProperties(properties: Record<string, unknown>): void;
|
|
14
45
|
track(event: TelemetryEvent, properties: Record<string, unknown>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/confluent/telemetry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/confluent/telemetry.ts"],"names":[],"mappings":"AAIA,oBAAY,cAAc;IACxB;;;OAGG;IACH,YAAY,iBAAiB;IAC7B;;OAEG;IACH,SAAS,cAAc;IACvB;;;OAGG;IACH,qBAAqB,0BAA0B;CAChD;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,eAAO,MAAM,mBAAmB,yCAAyC,CAAC;AAsC1E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IACtD,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO;IAoBP;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IASnD,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAStC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IASvE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKzD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC"}
|