@confluentinc/mcp-confluent 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -34
- package/config.example.yaml +36 -7
- package/config.oauth.example.yaml +14 -1
- package/dist/build-config.d.ts +1 -0
- package/dist/build-config.d.ts.map +1 -1
- package/dist/build-config.js +1 -0
- package/dist/build-config.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +128 -94
- package/dist/cli.js.map +1 -1
- package/dist/config/env-config.d.ts +9 -3
- package/dist/config/env-config.d.ts.map +1 -1
- package/dist/config/env-config.js +15 -34
- package/dist/config/env-config.js.map +1 -1
- package/dist/config/models.d.ts +105 -13
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +49 -37
- package/dist/config/models.js.map +1 -1
- package/dist/confluent/base-client-manager.d.ts +3 -1
- package/dist/confluent/base-client-manager.d.ts.map +1 -1
- package/dist/confluent/base-client-manager.js +5 -1
- package/dist/confluent/base-client-manager.js.map +1 -1
- package/dist/confluent/client-manager.d.ts +15 -1
- package/dist/confluent/client-manager.d.ts.map +1 -1
- package/dist/confluent/direct-client-manager.d.ts +1 -1
- package/dist/confluent/direct-client-manager.d.ts.map +1 -1
- package/dist/confluent/middleware.d.ts +1 -1
- package/dist/confluent/middleware.d.ts.map +1 -1
- package/dist/confluent/node-deps.d.ts +8 -0
- package/dist/confluent/node-deps.d.ts.map +1 -1
- package/dist/confluent/node-deps.js +9 -2
- package/dist/confluent/node-deps.js.map +1 -1
- package/dist/confluent/oauth/auth0-config.d.ts +26 -4
- package/dist/confluent/oauth/auth0-config.d.ts.map +1 -1
- package/dist/confluent/oauth/auth0-config.js +59 -19
- package/dist/confluent/oauth/auth0-config.js.map +1 -1
- package/dist/confluent/oauth/pkce-login.d.ts.map +1 -1
- package/dist/confluent/oauth/pkce-login.js +180 -150
- package/dist/confluent/oauth/pkce-login.js.map +1 -1
- package/dist/confluent/oauth/types.d.ts +1 -2
- package/dist/confluent/oauth/types.d.ts.map +1 -1
- package/dist/confluent/oauth-client-manager.d.ts +6 -3
- package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
- package/dist/confluent/oauth-client-manager.js +28 -6
- package/dist/confluent/oauth-client-manager.js.map +1 -1
- package/dist/confluent/oauth-resource-resolvers.d.ts +11 -0
- package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -1
- package/dist/confluent/oauth-resource-resolvers.js +24 -0
- package/dist/confluent/oauth-resource-resolvers.js.map +1 -1
- package/dist/confluent/schema-registry-helper.d.ts +131 -7
- package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
- package/dist/confluent/schema-registry-helper.js +336 -40
- package/dist/confluent/schema-registry-helper.js.map +1 -1
- package/dist/confluent/schema.d.ts +2 -2
- package/dist/confluent/schema.d.ts.map +1 -1
- package/dist/confluent/sentry-redact.d.ts +5 -0
- package/dist/confluent/sentry-redact.d.ts.map +1 -0
- package/dist/confluent/sentry-redact.js +64 -0
- package/dist/confluent/sentry-redact.js.map +1 -0
- package/dist/confluent/sentry.d.ts +23 -0
- package/dist/confluent/sentry.d.ts.map +1 -0
- package/dist/confluent/sentry.js +68 -0
- package/dist/confluent/sentry.js.map +1 -0
- package/dist/confluent/tools/base-tools.d.ts +169 -24
- package/dist/confluent/tools/base-tools.d.ts.map +1 -1
- package/dist/confluent/tools/base-tools.js +225 -21
- package/dist/confluent/tools/base-tools.js.map +1 -1
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts +22 -1
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -1
- package/dist/confluent/tools/cluster-arg-resolvers.js +50 -4
- package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -1
- package/dist/confluent/tools/connection-predicates.d.ts +70 -7
- package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
- package/dist/confluent/tools/connection-predicates.js +69 -6
- package/dist/confluent/tools/connection-predicates.js.map +1 -1
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +9 -3
- 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 +77 -62
- 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 +5 -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 +9 -5
- 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 +5 -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 +9 -5
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +5 -5
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.js +9 -5
- 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 +14 -6
- package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +5 -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 +9 -5
- 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 +4 -3
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +8 -8
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +9 -10
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +1 -2
- 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 +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +2 -3
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +171 -100
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts +43 -0
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js +297 -0
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts +32 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js +116 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts +52 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.js +114 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.js.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +22 -44
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +95 -81
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts +28 -0
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js +93 -0
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +9 -3
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js +68 -46
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js +2 -2
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +12 -6
- 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 +3 -3
- 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 +24 -21
- 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 +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +3 -3
- 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 +24 -21
- 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 +3 -3
- 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 +9 -7
- 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 +3 -3
- 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 -12
- 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 +3 -3
- 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 -12
- 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 +3 -3
- 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 +27 -22
- 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 +3 -3
- 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 +20 -12
- 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 +3 -3
- 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 +20 -12
- 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 +3 -3
- 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 +203 -156
- 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 +12 -8
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js +346 -377
- 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 +3 -3
- 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 +374 -317
- 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 +4 -3
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -57
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +27 -6
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +37 -7
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +3 -3
- 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 +20 -12
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.js → get-flink-statement-results-handler.js} +30 -22
- package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts +11 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js +118 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +3 -3
- 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 +19 -17
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +1 -1
- 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 +21 -10
- 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 +136 -73
- 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 +4 -3
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +12 -3
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +1 -1
- 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 +4 -3
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +6 -41
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +6 -10
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +1 -1
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js +1 -1
- 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 +4 -3
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +1 -1
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +1 -1
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +12 -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 +140 -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 +5 -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 +105 -60
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +5 -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 +75 -57
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts +9 -0
- package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/metrics/telemetry-error.js +38 -0
- package/dist/confluent/tools/handlers/metrics/telemetry-error.js.map +1 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +2 -1
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts +11 -0
- package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/schema/create-schema-handler.js +76 -0
- package/dist/confluent/tools/handlers/schema/create-schema-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +1 -1
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +101 -72
- 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 +5 -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 +9 -5
- 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 +5 -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 +9 -5
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +1 -1
- 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 +3 -3
- 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 +1 -1
- 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 +15 -10
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +17 -14
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/pagination.d.ts +31 -0
- package/dist/confluent/tools/pagination.d.ts.map +1 -0
- package/dist/confluent/tools/pagination.js +40 -0
- package/dist/confluent/tools/pagination.js.map +1 -0
- package/dist/confluent/tools/tool-availability.d.ts +63 -32
- package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
- package/dist/confluent/tools/tool-availability.js +101 -69
- package/dist/confluent/tools/tool-availability.js.map +1 -1
- package/dist/confluent/tools/tool-input-error.d.ts +17 -0
- package/dist/confluent/tools/tool-input-error.d.ts.map +1 -0
- package/dist/confluent/tools/tool-input-error.js +23 -0
- package/dist/confluent/tools/tool-input-error.js.map +1 -0
- package/dist/confluent/tools/tool-metadata-handler.d.ts +52 -0
- package/dist/confluent/tools/tool-metadata-handler.d.ts.map +1 -0
- package/dist/confluent/tools/tool-metadata-handler.js +61 -0
- package/dist/confluent/tools/tool-metadata-handler.js.map +1 -0
- package/dist/confluent/tools/tool-name.d.ts +7 -2
- package/dist/confluent/tools/tool-name.d.ts.map +1 -1
- package/dist/confluent/tools/tool-name.js +6 -1
- package/dist/confluent/tools/tool-name.js.map +1 -1
- package/dist/confluent/tools/tool-registry.d.ts +1 -1
- package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
- package/dist/confluent/tools/tool-registry.js +24 -2
- package/dist/confluent/tools/tool-registry.js.map +1 -1
- package/dist/env-schema.d.ts +0 -1
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +0 -7
- package/dist/env-schema.js.map +1 -1
- package/dist/env.d.ts +1 -2
- package/dist/env.d.ts.map +1 -1
- package/dist/index.d.ts +54 -64
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +78 -324
- package/dist/index.js.map +1 -1
- package/dist/lazy.d.ts +4 -2
- package/dist/lazy.d.ts.map +1 -1
- package/dist/lazy.js +27 -12
- package/dist/lazy.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/mcp/server.d.ts +6 -4
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +19 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/transports/auth.d.ts +1 -1
- package/dist/mcp/transports/auth.d.ts.map +1 -1
- package/dist/mcp/transports/http.d.ts +3 -3
- package/dist/mcp/transports/http.d.ts.map +1 -1
- package/dist/mcp/transports/manager.d.ts +1 -1
- package/dist/mcp/transports/manager.d.ts.map +1 -1
- package/dist/mcp/transports/manager.js.map +1 -1
- package/dist/mcp/transports/ping.d.ts +1 -1
- package/dist/mcp/transports/ping.d.ts.map +1 -1
- package/dist/mcp/transports/server.d.ts +3 -3
- package/dist/mcp/transports/server.d.ts.map +1 -1
- package/dist/mcp/transports/server.js +1 -1
- package/dist/mcp/transports/server.js.map +1 -1
- package/dist/mcp/transports/sse.d.ts +3 -3
- package/dist/mcp/transports/sse.d.ts.map +1 -1
- package/dist/mcp/transports/stdio.d.ts +2 -2
- package/dist/mcp/transports/stdio.d.ts.map +1 -1
- package/dist/preflight.d.ts +33 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +68 -0
- package/dist/preflight.js.map +1 -0
- package/dist/print-md-schema.js +21 -18
- package/dist/print-md-schema.js.map +1 -1
- package/dist/server-main.d.ts +104 -0
- package/dist/server-main.d.ts.map +1 -0
- package/dist/server-main.js +410 -0
- package/dist/server-main.js.map +1 -0
- package/dist/server-runtime.d.ts +22 -7
- package/dist/server-runtime.d.ts.map +1 -1
- package/dist/server-runtime.js +45 -28
- package/dist/server-runtime.js.map +1 -1
- package/dist/utils/quote-join-ids.d.ts +9 -0
- package/dist/utils/quote-join-ids.d.ts.map +1 -0
- package/dist/utils/quote-join-ids.js +11 -0
- package/dist/utils/quote-join-ids.js.map +1 -0
- package/package.json +37 -35
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +0 -9
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +0 -1
- package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +0 -18
- package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/kafka/topic-metadata.js +0 -18
- package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +0 -1
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { DisplayedCommandLineUsageError, getFilteredToolNames, getPackageVersion, loadDotEnvFile, parseCliArgs, } from "./cli.js";
|
|
3
|
+
import { buildConfigFromEnvAndCli, loadConfigFromYaml, MCPServerConfiguration, } from "./config/index.js";
|
|
4
|
+
import { buildConfigTelemetry } from "./confluent/config-telemetry.js";
|
|
5
|
+
import { buildConfig, fs, path } from "./confluent/node-deps.js";
|
|
6
|
+
import { captureException, closeSentry, initSentry, resolveSentryDsn, } from "./confluent/sentry.js";
|
|
7
|
+
import { TelemetryEvent, TelemetryService } from "./confluent/telemetry.js";
|
|
8
|
+
import { groupDisabledToolsByReason } from "./confluent/tools/tool-availability.js";
|
|
9
|
+
import { ToolName } from "./confluent/tools/tool-name.js";
|
|
10
|
+
import { ToolHandlerRegistry } from "./confluent/tools/tool-registry.js";
|
|
11
|
+
import { initEnv } from "./env.js";
|
|
12
|
+
import { logger, setLogLevel } from "./logger.js";
|
|
13
|
+
import { generateApiKey, TransportManager } from "./mcp/transports/index.js";
|
|
14
|
+
import { ServerRuntime } from "./server-runtime.js";
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the operator's tool allow/block-list into the set `ServerRuntime`
|
|
17
|
+
* gates on — or `undefined` when neither list was configured, preserving the
|
|
18
|
+
* "no filter configured" sentinel rather than materializing an all-tools set
|
|
19
|
+
* that would mean the same thing while muddying the runtime's contract.
|
|
20
|
+
*/
|
|
21
|
+
export function resolveAllowedToolNames(allowTools, blockTools) {
|
|
22
|
+
if (allowTools.length === 0 && blockTools.length === 0) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return new Set(getFilteredToolNames(allowTools, blockTools));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Determine the subset of ToolHandlers to register: those left enabled by the
|
|
29
|
+
* runtime's operator allow/block-list (`runtime.isToolAllowed`) whose predicate
|
|
30
|
+
* is also satisfied (typically by at least one configured connection).
|
|
31
|
+
**/
|
|
32
|
+
export function getToolHandlersToRegister(runtime) {
|
|
33
|
+
const toolHandlersToRegister = new Map();
|
|
34
|
+
const knownIds = new Set(Object.keys(runtime.config.connections));
|
|
35
|
+
// Pass 1: drop tools excluded by the allow/block list (logged per-tool —
|
|
36
|
+
// the reason is config-driven, not predicate-driven, so it doesn't fold
|
|
37
|
+
// into the grouped warning emitted later). The filter lives on the runtime
|
|
38
|
+
// so registration and the list-configured-connections tool read one source of truth.
|
|
39
|
+
const candidates = [];
|
|
40
|
+
for (const toolName of Object.values(ToolName)) {
|
|
41
|
+
if (!runtime.isToolAllowed(toolName)) {
|
|
42
|
+
logger.warn(`Tool ${toolName} disabled due to allow/block list rules`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
candidates.push([toolName, ToolHandlerRegistry.getToolHandler(toolName)]);
|
|
46
|
+
}
|
|
47
|
+
// Pass 2: register tools that are enabled on at least one connection, plus
|
|
48
|
+
// connection-independent tools (docs, diagnostics), which carry no per-connection
|
|
49
|
+
// verdict and so stay available even on a zero-connection config.
|
|
50
|
+
for (const [toolName, handler] of candidates) {
|
|
51
|
+
const enabledIds = handler.enabledConnectionIds(runtime);
|
|
52
|
+
// Unreachable: enabledConnectionIds() is derived by iterating
|
|
53
|
+
// runtime.config.connections, so every id it yields is already a known key.
|
|
54
|
+
// A non-empty unknownIds means that derivation has broken.
|
|
55
|
+
const unknownIds = enabledIds.filter((id) => !knownIds.has(id));
|
|
56
|
+
if (unknownIds.length > 0) {
|
|
57
|
+
throw new Error(`Wacky -- Tool ${toolName}: enabledConnectionIds() returned unknown connection ID(s): ${unknownIds.join(", ")}`);
|
|
58
|
+
}
|
|
59
|
+
if (enabledIds.length > 0 || handler.isConnectionIndependent) {
|
|
60
|
+
toolHandlersToRegister.set(toolName, handler);
|
|
61
|
+
logger.info(`Tool ${toolName} enabled`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Pass 3: emit one grouped warning per (connectionId, reason) for tools
|
|
65
|
+
// that are fully disabled — readers see the missing config piece and the
|
|
66
|
+
// list of all tools blocked by it in a single line, rather than one
|
|
67
|
+
// line per tool.
|
|
68
|
+
for (const group of groupDisabledToolsByReason(candidates, runtime)) {
|
|
69
|
+
logger.warn(`Tools disabled on connection '${group.connectionId}' — ${group.reason}: ${group.toolNames.join(", ")}`);
|
|
70
|
+
}
|
|
71
|
+
// Raise an error if no tools are enabled, as the server would be non-functional without any tools.
|
|
72
|
+
if (toolHandlersToRegister.size === 0) {
|
|
73
|
+
throw new Error("No tools enabled. Please check your configuration and environment variables.");
|
|
74
|
+
}
|
|
75
|
+
return toolHandlersToRegister;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolve the Segment write key handed to `TelemetryService.initialize`.
|
|
79
|
+
*
|
|
80
|
+
* Precedence: an explicit YAML `server.analytics.write_key` wins; otherwise
|
|
81
|
+
* fall back to `buildConfig.TELEMETRY_WRITE_KEY` (the value `npm pack` injects
|
|
82
|
+
* at release time). On unpacked / dev builds the build-time value is empty,
|
|
83
|
+
* so an absent YAML field produces an empty-string fallback that
|
|
84
|
+
* `TelemetryService` treats as "no key supplied" — analytics stays off.
|
|
85
|
+
*
|
|
86
|
+
* Extracted from `main()` so the precedence is unit-testable without booting
|
|
87
|
+
* the full server.
|
|
88
|
+
*/
|
|
89
|
+
export function resolveTelemetryWriteKey(mcpConfig) {
|
|
90
|
+
return (mcpConfig.server.analytics?.write_key ?? buildConfig.TELEMETRY_WRITE_KEY);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* One opt-out for usage analytics and error reporting: either the
|
|
94
|
+
* `DO_NOT_TRACK` env var (consoledonottrack.com) or the YAML
|
|
95
|
+
* `server.do_not_track` field disables tracking.
|
|
96
|
+
*/
|
|
97
|
+
export function resolveDoNotTrack(serverDoNotTrack, envDoNotTrack) {
|
|
98
|
+
return serverDoNotTrack || envDoNotTrack;
|
|
99
|
+
}
|
|
100
|
+
export function outputApiKey() {
|
|
101
|
+
const apiKey = generateApiKey();
|
|
102
|
+
console.log("\nGenerated MCP API Key:");
|
|
103
|
+
console.log("=".repeat(64));
|
|
104
|
+
console.log(apiKey);
|
|
105
|
+
console.log("=".repeat(64));
|
|
106
|
+
console.log("\nAdd this to your .env file:");
|
|
107
|
+
console.log(`MCP_API_KEY=${apiKey}\n`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Bootstrap a starter `config.yaml` in the current working directory by
|
|
111
|
+
* copying one of the bundled example templates, then ensure the new file
|
|
112
|
+
* is listed in `<cwd>/.gitignore` so credentials filled in later don't
|
|
113
|
+
* slip into git.
|
|
114
|
+
*
|
|
115
|
+
* Resolved relative to `import.meta.url` (the compiled `dist/index.js`)
|
|
116
|
+
* so this keeps working when invoked via `npx`, where `process.cwd()`
|
|
117
|
+
* is the user's project but the example file lives next to the install.
|
|
118
|
+
*
|
|
119
|
+
* Refuses to overwrite an existing destination so an accidental rerun
|
|
120
|
+
* cannot wipe credentials the user already filled in. The write uses
|
|
121
|
+
* `wx` (exclusive create) so the existence check and the create happen
|
|
122
|
+
* as a single syscall — there is no TOCTOU window where another process
|
|
123
|
+
* could create the file between a precheck and the write.
|
|
124
|
+
*
|
|
125
|
+
* @param oauth When true, copy `config.oauth.example.yaml` (the minimal
|
|
126
|
+
* OAuth template); when false, copy `config.example.yaml` (the
|
|
127
|
+
* fully-annotated direct/api-key template). The CLI flag in the EEXIST
|
|
128
|
+
* error message is selected to match.
|
|
129
|
+
*/
|
|
130
|
+
export function outputInitConfig(oauth = false) {
|
|
131
|
+
const sourceFileName = oauth
|
|
132
|
+
? "config.oauth.example.yaml"
|
|
133
|
+
: "config.example.yaml";
|
|
134
|
+
const flagName = oauth ? "init-oauth-config" : "init-config";
|
|
135
|
+
const sourceUrl = new URL(`../${sourceFileName}`, import.meta.url);
|
|
136
|
+
const destPath = path.resolve("config.yaml");
|
|
137
|
+
const contents = fs.readFileSync(sourceUrl, "utf-8");
|
|
138
|
+
try {
|
|
139
|
+
fs.writeFileSync(destPath, contents, { flag: "wx" });
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
if (err.code === "EEXIST") {
|
|
143
|
+
throw new Error(`config.yaml already exists at ${destPath}. ` +
|
|
144
|
+
`Remove or rename it before running --${flagName}.`);
|
|
145
|
+
}
|
|
146
|
+
throw err;
|
|
147
|
+
}
|
|
148
|
+
const gitignoreNote = ensureGitignoreEntry(destPath);
|
|
149
|
+
console.log(`wrote ./config.yaml (${gitignoreNote})`);
|
|
150
|
+
// OAuth has no credentials to edit; the bundled template is already
|
|
151
|
+
// runnable as-is. The api-key template, by contrast, ships placeholder
|
|
152
|
+
// values the user must fill in before the server can connect.
|
|
153
|
+
console.log(oauth
|
|
154
|
+
? `Next: run with --config ./config.yaml`
|
|
155
|
+
: `Next: edit credentials in config.yaml and run with --config ./config.yaml`);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Ensure the basename of `filePath` is listed in `<dirname(filePath)>/.gitignore`.
|
|
159
|
+
* Creates the gitignore if missing; appends idempotently if present (matching
|
|
160
|
+
* trimmed lines verbatim — `*.yaml` globs or `/config.yaml` anchors are not
|
|
161
|
+
* recognized, so a user who already wrote either form will see a duplicate
|
|
162
|
+
* `config.yaml` entry, which is harmless).
|
|
163
|
+
*
|
|
164
|
+
* @returns A short note describing what happened, suitable for the success message.
|
|
165
|
+
*/
|
|
166
|
+
function ensureGitignoreEntry(filePath) {
|
|
167
|
+
const dir = path.dirname(filePath);
|
|
168
|
+
const fileName = path.basename(filePath);
|
|
169
|
+
const gitignorePath = path.join(dir, ".gitignore");
|
|
170
|
+
if (!fs.existsSync(gitignorePath)) {
|
|
171
|
+
fs.writeFileSync(gitignorePath, `${fileName}\n`);
|
|
172
|
+
return "added to .gitignore";
|
|
173
|
+
}
|
|
174
|
+
const existing = fs.readFileSync(gitignorePath, "utf-8");
|
|
175
|
+
const alreadyListed = existing
|
|
176
|
+
.split("\n")
|
|
177
|
+
.some((line) => line.trim() === fileName);
|
|
178
|
+
if (alreadyListed) {
|
|
179
|
+
return ".gitignore already excludes it";
|
|
180
|
+
}
|
|
181
|
+
const prefix = existing.length > 0 && !existing.endsWith("\n") ? "\n" : "";
|
|
182
|
+
fs.appendFileSync(gitignorePath, `${prefix}${fileName}\n`);
|
|
183
|
+
return "added to .gitignore";
|
|
184
|
+
}
|
|
185
|
+
export function outputToolList(filteredToolNames) {
|
|
186
|
+
const MAX_DESC_LENGTH = 120;
|
|
187
|
+
// Bucket by ToolCategory. Today's callers pass `filteredToolNames` in
|
|
188
|
+
// registry-declaration order, which already roughly groups same-category
|
|
189
|
+
// tools, but we re-bucket explicitly here so the rendered layout doesn't
|
|
190
|
+
// depend on that incidental ordering.
|
|
191
|
+
const byCategory = new Map();
|
|
192
|
+
// --list-tools runs before any config is loaded, so there is no real runtime.
|
|
193
|
+
// A zero-connection runtime makes getRegisteredToolConfig() return each tool's
|
|
194
|
+
// authored config verbatim (no connectionId augmentation), which is exactly
|
|
195
|
+
// the connection-independent catalog view this listing wants.
|
|
196
|
+
const runtime = new ServerRuntime(new MCPServerConfiguration({ connections: {} }), {});
|
|
197
|
+
for (const toolName of filteredToolNames) {
|
|
198
|
+
const handler = ToolHandlerRegistry.getToolHandler(toolName);
|
|
199
|
+
const config = handler.getRegisteredToolConfig(runtime);
|
|
200
|
+
let desc = config.description.replaceAll(/\s+/g, " ").trim();
|
|
201
|
+
if (desc.length > MAX_DESC_LENGTH) {
|
|
202
|
+
desc = desc.slice(0, MAX_DESC_LENGTH - 3) + "...";
|
|
203
|
+
}
|
|
204
|
+
let bucket = byCategory.get(handler.category);
|
|
205
|
+
bucket ??= [];
|
|
206
|
+
byCategory.set(handler.category, bucket);
|
|
207
|
+
bucket.push({ name: toolName, desc });
|
|
208
|
+
}
|
|
209
|
+
// Categories rendered lex-sorted (kebab-case enum values sort cleanly);
|
|
210
|
+
// within each category, tools preserve the order they appeared in
|
|
211
|
+
// `filteredToolNames` (today: registry-declaration order, as supplied
|
|
212
|
+
// by the caller).
|
|
213
|
+
const sortedCategories = Array.from(byCategory.keys()).sort((a, b) => a.localeCompare(b));
|
|
214
|
+
sortedCategories.forEach((category, idx) => {
|
|
215
|
+
console.log(`\x1b[1;36m${category}:\x1b[0m`);
|
|
216
|
+
for (const { name, desc } of byCategory.get(category)) {
|
|
217
|
+
console.log(` \x1b[32m${name}\x1b[0m: ${desc}`);
|
|
218
|
+
}
|
|
219
|
+
// Blank line between sections, but not after the last category.
|
|
220
|
+
if (idx < sortedCategories.length - 1)
|
|
221
|
+
console.log("");
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Dispatch the CLI's mutually-exclusive early-exit modes — generate-key,
|
|
226
|
+
* init-config, init-oauth-config, and list-tools — before the server
|
|
227
|
+
* bootstrap begins. Returns `{ handled: false }` when none apply, in
|
|
228
|
+
* which case the caller continues with normal startup.
|
|
229
|
+
*
|
|
230
|
+
* On init-config failure, the friendly error message is returned in
|
|
231
|
+
* `stderr` rather than written here, so the caller controls writing to
|
|
232
|
+
* stderr and exiting.
|
|
233
|
+
*/
|
|
234
|
+
export function handleEarlyExits(cliOptions) {
|
|
235
|
+
if (cliOptions.generateKey) {
|
|
236
|
+
outputApiKey();
|
|
237
|
+
return { handled: true, exitCode: 0 };
|
|
238
|
+
}
|
|
239
|
+
if (cliOptions.initConfig) {
|
|
240
|
+
return runOutputInitConfig(false);
|
|
241
|
+
}
|
|
242
|
+
if (cliOptions.initOauthConfig) {
|
|
243
|
+
return runOutputInitConfig(true);
|
|
244
|
+
}
|
|
245
|
+
if (cliOptions.listTools) {
|
|
246
|
+
outputToolList(getFilteredToolNames(cliOptions.allowTools ?? [], cliOptions.blockTools ?? []));
|
|
247
|
+
return { handled: true, exitCode: 0 };
|
|
248
|
+
}
|
|
249
|
+
return { handled: false };
|
|
250
|
+
}
|
|
251
|
+
function runOutputInitConfig(oauth) {
|
|
252
|
+
try {
|
|
253
|
+
outputInitConfig(oauth);
|
|
254
|
+
return { handled: true, exitCode: 0 };
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
258
|
+
const flag = oauth ? "--init-oauth-config" : "--init-config";
|
|
259
|
+
return { handled: true, exitCode: 1, stderr: `${flag} failed: ${msg}` };
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Tear the server down on a shutdown signal, then exit. Every step runs inside
|
|
264
|
+
* a try/finally so a rejection from any one — most plausibly a client manager
|
|
265
|
+
* failing to disconnect — is logged but never strands the process: the exit
|
|
266
|
+
* always fires. `exit` is injected (defaulting to `process.exit`) so this
|
|
267
|
+
* guarantee is unit-testable without stubbing the global.
|
|
268
|
+
*/
|
|
269
|
+
export async function performCleanup(deps, exit = (code) => process.exit(code)) {
|
|
270
|
+
logger.info("Shutting down...");
|
|
271
|
+
try {
|
|
272
|
+
await deps.telemetry.shutdown();
|
|
273
|
+
await deps.transportManager.stop();
|
|
274
|
+
// shutdown() is race-safe with an in-flight bootstrap.
|
|
275
|
+
deps.runtime.oauthHolder?.shutdown();
|
|
276
|
+
await deps.runtime.disconnectAll();
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
captureException(error);
|
|
280
|
+
logger.error({ err: error }, "Error during shutdown");
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
await closeSentry();
|
|
284
|
+
exit(0);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
async function main() {
|
|
288
|
+
try {
|
|
289
|
+
// Parse command line arguments.(NO LONGER LOADS ENV VARS FROM -e file!)
|
|
290
|
+
const cliOptions = parseCliArgs(process.argv);
|
|
291
|
+
const earlyExit = handleEarlyExits(cliOptions);
|
|
292
|
+
if (earlyExit.handled) {
|
|
293
|
+
if (earlyExit.exitCode === 1) {
|
|
294
|
+
console.error(earlyExit.stderr);
|
|
295
|
+
}
|
|
296
|
+
process.exit(earlyExit.exitCode);
|
|
297
|
+
}
|
|
298
|
+
const allowedToolNames = resolveAllowedToolNames(cliOptions.allowTools ?? [], cliOptions.blockTools ?? []);
|
|
299
|
+
if (cliOptions.envFile) {
|
|
300
|
+
loadDotEnvFile(cliOptions.envFile);
|
|
301
|
+
}
|
|
302
|
+
// Convert our known env vars into a typed Environment obj.
|
|
303
|
+
const env = initEnv();
|
|
304
|
+
let mcpConfig;
|
|
305
|
+
// Load and validate configuration — from YAML file if --config provided, else from env vars + CLI overrides.
|
|
306
|
+
if (cliOptions.config) {
|
|
307
|
+
mcpConfig = loadConfigFromYaml(cliOptions.config, process.env);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
mcpConfig = buildConfigFromEnvAndCli(env, {
|
|
311
|
+
disableAuth: cliOptions.disableAuth,
|
|
312
|
+
allowedHosts: cliOptions.allowedHosts,
|
|
313
|
+
kafkaConfig: cliOptions.kafkaConfig,
|
|
314
|
+
oauth: cliOptions.oauth,
|
|
315
|
+
ccloudEnv: cliOptions.ccloudEnv,
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
setLogLevel(mcpConfig.server.log_level);
|
|
319
|
+
// Transport selection: YAML config is authoritative when --config is used;
|
|
320
|
+
// CLI flag (or its default) is used on the env-var path.
|
|
321
|
+
const transports = cliOptions.config
|
|
322
|
+
? mcpConfig.server.transports
|
|
323
|
+
: cliOptions.transports;
|
|
324
|
+
// One consent switch gates usage analytics and error reporting alike.
|
|
325
|
+
const doNotTrack = resolveDoNotTrack(mcpConfig.server.do_not_track, env.DO_NOT_TRACK);
|
|
326
|
+
TelemetryService.initialize({
|
|
327
|
+
doNotTrack,
|
|
328
|
+
writeKey: resolveTelemetryWriteKey(mcpConfig),
|
|
329
|
+
});
|
|
330
|
+
// Distinct connection auth types (no ids/secrets) — helps triage which
|
|
331
|
+
// config path an error came from (e.g. oauth-only bugs).
|
|
332
|
+
const connectionTypes = [
|
|
333
|
+
...new Set(Object.values(mcpConfig.connections).map((c) => c.type)),
|
|
334
|
+
];
|
|
335
|
+
// Initialized here — once config + log level resolve so consent is known —
|
|
336
|
+
// to catch tool-handler, transport, and shutdown errors.
|
|
337
|
+
initSentry({
|
|
338
|
+
doNotTrack,
|
|
339
|
+
dsn: resolveSentryDsn(),
|
|
340
|
+
release: getPackageVersion(),
|
|
341
|
+
transports,
|
|
342
|
+
connectionTypes,
|
|
343
|
+
});
|
|
344
|
+
const telemetry = TelemetryService.getInstance();
|
|
345
|
+
logger.info(`${mcpConfig.getConnectionIds().length} connections loaded successfully`);
|
|
346
|
+
const runtime = ServerRuntime.fromConfig(mcpConfig, allowedToolNames);
|
|
347
|
+
const serverVersion = getPackageVersion();
|
|
348
|
+
telemetry.setCommonProperties({ serverVersion });
|
|
349
|
+
const toolHandlers = getToolHandlersToRegister(runtime);
|
|
350
|
+
logger.info({ enabledTools: [...toolHandlers.keys()] }, `${toolHandlers.size} tool(s) enabled`);
|
|
351
|
+
// Warn if auth is disabled
|
|
352
|
+
if (mcpConfig.server.auth.disabled) {
|
|
353
|
+
logger.warn("Authentication is DISABLED for HTTP/SSE transports. " +
|
|
354
|
+
"This should only be used in development environments.");
|
|
355
|
+
}
|
|
356
|
+
const transportManager = new TransportManager({
|
|
357
|
+
disableAuth: mcpConfig.server.auth.disabled,
|
|
358
|
+
allowedHosts: mcpConfig.server.auth.allowed_hosts,
|
|
359
|
+
apiKey: mcpConfig.server.auth.api_key,
|
|
360
|
+
});
|
|
361
|
+
const serverOptions = {
|
|
362
|
+
serverVersion,
|
|
363
|
+
toolHandlers,
|
|
364
|
+
runtime,
|
|
365
|
+
track: (props) => telemetry.track(TelemetryEvent.TOOL_CALL, {
|
|
366
|
+
...props,
|
|
367
|
+
}),
|
|
368
|
+
captureError: (error, toolName) => captureException(error, { tags: { toolName } }),
|
|
369
|
+
};
|
|
370
|
+
// Start all transports with a single call
|
|
371
|
+
logger.info(`Starting transports: ${transports.join(", ")}`);
|
|
372
|
+
await transportManager.start({
|
|
373
|
+
serverOptions,
|
|
374
|
+
types: transports,
|
|
375
|
+
http: {
|
|
376
|
+
port: mcpConfig.server.http.port,
|
|
377
|
+
host: mcpConfig.server.http.host,
|
|
378
|
+
mcpEndpointPath: mcpConfig.server.http.mcp_endpoint,
|
|
379
|
+
sseEndpointPath: mcpConfig.server.http.sse_endpoint,
|
|
380
|
+
sseMessageEndpointPath: mcpConfig.server.http.sse_message_endpoint,
|
|
381
|
+
},
|
|
382
|
+
});
|
|
383
|
+
// Boot-time invariants (config source, active transports, connection
|
|
384
|
+
// types) ride this one-shot event rather than every TOOL_CALL — they
|
|
385
|
+
// don't change after startup, so duplicating them per tool call buys
|
|
386
|
+
// nothing. Warehouse queries join SERVER_START to TOOL_CALL on
|
|
387
|
+
// `serverSessionId` (a common property) when slicing is needed.
|
|
388
|
+
telemetry.track(TelemetryEvent.SERVER_START, {
|
|
389
|
+
...buildConfigTelemetry(cliOptions, mcpConfig, transports),
|
|
390
|
+
});
|
|
391
|
+
// Set up cleanup handlers
|
|
392
|
+
const cleanup = () => performCleanup({ telemetry, transportManager, runtime });
|
|
393
|
+
process.on("SIGINT", cleanup);
|
|
394
|
+
process.on("SIGTERM", cleanup);
|
|
395
|
+
process.on("SIGQUIT", cleanup);
|
|
396
|
+
process.on("SIGUSR2", cleanup);
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
if (error instanceof DisplayedCommandLineUsageError) {
|
|
400
|
+
process.exit(0);
|
|
401
|
+
}
|
|
402
|
+
captureException(error);
|
|
403
|
+
logger.error({ err: error }, "Error starting server");
|
|
404
|
+
process.exit(1);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
if (process.env.NODE_ENV !== "test") {
|
|
408
|
+
await main();
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=server-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-main.js","sourceRoot":"","sources":["../src/server-main.ts"],"names":[],"mappings":"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"}
|
package/dist/server-runtime.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { MCPServerConfiguration } from "./config/index.js";
|
|
2
|
-
import { BaseClientManager } from "./confluent/base-client-manager.js";
|
|
1
|
+
import type { MCPServerConfiguration } from "./config/index.js";
|
|
2
|
+
import type { BaseClientManager } from "./confluent/base-client-manager.js";
|
|
3
3
|
import { OAuthHolder } from "./confluent/oauth/oauth-holder.js";
|
|
4
|
+
import type { ToolName } from "./confluent/tools/tool-name.js";
|
|
4
5
|
/**
|
|
5
6
|
* Aggregate of all runtime state threaded through the server.
|
|
6
7
|
*
|
|
@@ -17,12 +18,26 @@ export declare class ServerRuntime {
|
|
|
17
18
|
* before any handler that needs Confluent access.
|
|
18
19
|
*/
|
|
19
20
|
readonly oauthHolder: OAuthHolder | undefined;
|
|
20
|
-
constructor(config: MCPServerConfiguration, clientManagers: Record<string, BaseClientManager>, oauthHolder?: OAuthHolder | undefined);
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* Tool names the operator's allow/block-list left enabled, or `undefined`
|
|
23
|
+
* when no list was configured (all tools allowed — cli.ts's default-on
|
|
24
|
+
* behavior). The `undefined`-means-unfiltered sentinel is this class's own
|
|
25
|
+
* business: callers ask {@link isToolAllowed} rather than branching on it.
|
|
24
26
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
private readonly allowedToolNames;
|
|
28
|
+
constructor(config: MCPServerConfiguration, clientManagers: Record<string, BaseClientManager>, oauthHolder?: OAuthHolder | undefined, allowedToolNames?: ReadonlySet<ToolName> | undefined);
|
|
29
|
+
/**
|
|
30
|
+
* Whether the operator's allow/block-list leaves `name` invokable. Always
|
|
31
|
+
* `true` when no list was configured. The single source of truth for the
|
|
32
|
+
* operator filter, shared by tool registration and the `list-configured-connections`
|
|
33
|
+
* tool so the advertised set and the reported set can never diverge.
|
|
34
|
+
*/
|
|
35
|
+
isToolAllowed(name: ToolName): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Disconnect every per-connection client manager — the teardown counterpart
|
|
38
|
+
* to the per-connection construction in {@link fromConfig}.
|
|
39
|
+
*/
|
|
40
|
+
disconnectAll(): Promise<void>;
|
|
41
|
+
static fromConfig(config: MCPServerConfiguration, allowedToolNames?: ReadonlySet<ToolName> | undefined): ServerRuntime;
|
|
27
42
|
}
|
|
28
43
|
//# sourceMappingURL=server-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-runtime.d.ts","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"server-runtime.d.ts","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE;;;;GAIG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3D;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IAE9C;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoC;gBAGnE,MAAM,EAAE,sBAAsB,EAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACjD,WAAW,GAAE,WAAW,GAAG,SAAqB,EAChD,gBAAgB,GAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAqB;IAQjE;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAMtC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBpC,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,sBAAsB,EAC9B,gBAAgB,GAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAqB,GAC9D,aAAa;CAiDjB"}
|
package/dist/server-runtime.js
CHANGED
|
@@ -17,57 +17,74 @@ export class ServerRuntime {
|
|
|
17
17
|
* before any handler that needs Confluent access.
|
|
18
18
|
*/
|
|
19
19
|
oauthHolder;
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Tool names the operator's allow/block-list left enabled, or `undefined`
|
|
22
|
+
* when no list was configured (all tools allowed — cli.ts's default-on
|
|
23
|
+
* behavior). The `undefined`-means-unfiltered sentinel is this class's own
|
|
24
|
+
* business: callers ask {@link isToolAllowed} rather than branching on it.
|
|
25
|
+
*/
|
|
26
|
+
allowedToolNames;
|
|
27
|
+
constructor(config, clientManagers, oauthHolder = undefined, allowedToolNames = undefined) {
|
|
21
28
|
this.config = config;
|
|
22
29
|
this.clientManagers = clientManagers;
|
|
23
30
|
this.oauthHolder = oauthHolder;
|
|
31
|
+
this.allowedToolNames = allowedToolNames;
|
|
24
32
|
}
|
|
25
33
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
34
|
+
* Whether the operator's allow/block-list leaves `name` invokable. Always
|
|
35
|
+
* `true` when no list was configured. The single source of truth for the
|
|
36
|
+
* operator filter, shared by tool registration and the `list-configured-connections`
|
|
37
|
+
* tool so the advertised set and the reported set can never diverge.
|
|
28
38
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
isToolAllowed(name) {
|
|
40
|
+
return (this.allowedToolNames === undefined || this.allowedToolNames.has(name));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Disconnect every per-connection client manager — the teardown counterpart
|
|
44
|
+
* to the per-connection construction in {@link fromConfig}.
|
|
45
|
+
*/
|
|
46
|
+
async disconnectAll() {
|
|
47
|
+
// allSettled, not all: a single manager's disconnect() rejection must not
|
|
48
|
+
// abandon its siblings mid-shutdown. Wait for every disconnect, then raise
|
|
49
|
+
// an AggregateError carrying all failures so no error is silently dropped.
|
|
50
|
+
const results = await Promise.allSettled(Object.values(this.clientManagers).map((manager) => manager.disconnect()));
|
|
51
|
+
const failures = results
|
|
52
|
+
.filter((r) => r.status === "rejected")
|
|
53
|
+
.map((r) => r.reason);
|
|
54
|
+
if (failures.length > 0) {
|
|
55
|
+
throw new AggregateError(failures, `Failed to disconnect ${failures.length} of ${results.length} client manager(s)`);
|
|
38
56
|
}
|
|
39
|
-
return managers[0];
|
|
40
57
|
}
|
|
41
|
-
static fromConfig(config) {
|
|
58
|
+
static fromConfig(config, allowedToolNames = undefined) {
|
|
42
59
|
const oauthConns = Object.values(config.connections).filter((c) => c.type === "oauth");
|
|
43
60
|
if (oauthConns.length > 1) {
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
//
|
|
61
|
+
// Only one OAuth connection is supported (the shared OAuthHolder owns a
|
|
62
|
+
// single CCloud identity). Reject multi-OAuth explicitly rather than
|
|
63
|
+
// silently picking one.
|
|
47
64
|
throw new Error(`Multiple OAuth connections defined in configuration; only one is supported`);
|
|
48
65
|
}
|
|
49
66
|
const oauthConn = oauthConns[0];
|
|
50
67
|
const oauthHolder = oauthConn
|
|
51
68
|
? new OAuthHolder(oauthConn.ccloud_env)
|
|
52
69
|
: undefined;
|
|
53
|
-
// Construct a client manager
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
//
|
|
70
|
+
// Construct a client manager per connection, keyed on the connection's own
|
|
71
|
+
// type — a direct connection always gets a DirectClientManager even when a
|
|
72
|
+
// sibling OAuth connection exists, so the epic's "OAuth Confluent Cloud +
|
|
73
|
+
// local Apache Kafka broker side by side" config wires each connection to a
|
|
74
|
+
// manager that can actually reach it.
|
|
57
75
|
const clientManagers = Object.fromEntries(Object.entries(config.connections).map(([id, conn]) => {
|
|
58
|
-
if (
|
|
76
|
+
if (conn.type === "oauth") {
|
|
77
|
+
if (!oauthHolder) {
|
|
78
|
+
throw new Error(`Wacky -- connection ${id} is oauth but no OAuthHolder was constructed`);
|
|
79
|
+
}
|
|
59
80
|
return [
|
|
60
81
|
id,
|
|
61
|
-
new OAuthClientManager(oauthHolder,
|
|
82
|
+
new OAuthClientManager(oauthHolder, conn.ccloud_env, conn.kafka_debug),
|
|
62
83
|
];
|
|
63
84
|
}
|
|
64
|
-
// No OAuth connection found, so every connection is direct.
|
|
65
|
-
if (conn.type !== "direct") {
|
|
66
|
-
throw new Error(`Internal error: connection ${id} is not direct but no OAuth holder was constructed`);
|
|
67
|
-
}
|
|
68
85
|
return [id, constructDirectClientManager(conn)];
|
|
69
86
|
}));
|
|
70
|
-
return new ServerRuntime(config, clientManagers, oauthHolder);
|
|
87
|
+
return new ServerRuntime(config, clientManagers, oauthHolder, allowedToolNames);
|
|
71
88
|
}
|
|
72
89
|
}
|
|
73
90
|
//# sourceMappingURL=server-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-runtime.js","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"server-runtime.js","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render a list of ids as a double-quoted, comma-separated string for prose
|
|
3
|
+
* (tool descriptions, error messages). The quoting keeps the list unambiguous
|
|
4
|
+
* when an id contains a comma; contained double quotes are backslash-escaped so
|
|
5
|
+
* the wrapping itself stays unambiguous. Returns "" for an empty list, so a
|
|
6
|
+
* caller wanting a placeholder can write `quoteJoinIds(ids) || "none"`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function quoteJoinIds(ids: readonly string[]): string;
|
|
9
|
+
//# sourceMappingURL=quote-join-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-join-ids.d.ts","sourceRoot":"","sources":["../../src/utils/quote-join-ids.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE3D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render a list of ids as a double-quoted, comma-separated string for prose
|
|
3
|
+
* (tool descriptions, error messages). The quoting keeps the list unambiguous
|
|
4
|
+
* when an id contains a comma; contained double quotes are backslash-escaped so
|
|
5
|
+
* the wrapping itself stays unambiguous. Returns "" for an empty list, so a
|
|
6
|
+
* caller wanting a placeholder can write `quoteJoinIds(ids) || "none"`.
|
|
7
|
+
*/
|
|
8
|
+
export function quoteJoinIds(ids) {
|
|
9
|
+
return ids.map((id) => `"${id.replaceAll('"', '\\"')}"`).join(", ");
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=quote-join-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-join-ids.js","sourceRoot":"","sources":["../../src/utils/quote-join-ids.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,GAAsB;IACjD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC"}
|