@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,68 @@
|
|
|
1
|
+
import { buildConfig, sentry } from "../confluent/node-deps.js";
|
|
2
|
+
import { redactEvent } from "../confluent/sentry-redact.js";
|
|
3
|
+
import { logger } from "../logger.js";
|
|
4
|
+
let initialized = false;
|
|
5
|
+
/** DSN baked at pack time; empty (-> disabled) on dev/unpacked builds. */
|
|
6
|
+
export function resolveSentryDsn() {
|
|
7
|
+
return buildConfig.SENTRY_DSN || undefined;
|
|
8
|
+
}
|
|
9
|
+
function joinSorted(values) {
|
|
10
|
+
return values.length
|
|
11
|
+
? [...values].sort((a, b) => a.localeCompare(b)).join(",")
|
|
12
|
+
: "none";
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Initialize crash reporting. Short-circuits — no DSN registered, no transport,
|
|
16
|
+
* no global handlers — when the user has opted out or no DSN was baked in. Uses
|
|
17
|
+
* the same resolved `doNotTrack` value as usage analytics, so one switch
|
|
18
|
+
* disables both.
|
|
19
|
+
*/
|
|
20
|
+
export function initSentry(opts) {
|
|
21
|
+
if (initialized)
|
|
22
|
+
return; // idempotent: never register the client twice
|
|
23
|
+
if (opts.doNotTrack || !opts.dsn) {
|
|
24
|
+
logger.info("Error reporting disabled");
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
sentry.init({
|
|
28
|
+
dsn: opts.dsn,
|
|
29
|
+
release: opts.release,
|
|
30
|
+
debug: false,
|
|
31
|
+
attachStacktrace: true,
|
|
32
|
+
includeLocalVariables: false,
|
|
33
|
+
tracesSampleRate: 0,
|
|
34
|
+
profilesSampleRate: 0,
|
|
35
|
+
// Defense in depth on top of `beforeSend`: this server handles credentials,
|
|
36
|
+
// so never attach HTTP bodies (may carry secrets) and don't set user.* fields.
|
|
37
|
+
dataCollection: {
|
|
38
|
+
userInfo: false,
|
|
39
|
+
httpBodies: [],
|
|
40
|
+
},
|
|
41
|
+
initialScope: {
|
|
42
|
+
tags: {
|
|
43
|
+
transport: joinSorted(opts.transports),
|
|
44
|
+
connections: joinSorted(opts.connectionTypes),
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
integrations: (defaults) => [
|
|
48
|
+
...defaults,
|
|
49
|
+
sentry.rewriteFramesIntegration(),
|
|
50
|
+
],
|
|
51
|
+
beforeSend: (event) => redactEvent(event),
|
|
52
|
+
});
|
|
53
|
+
initialized = true;
|
|
54
|
+
logger.info("Error reporting enabled");
|
|
55
|
+
}
|
|
56
|
+
/** Report an error. No-op until {@link initSentry} has registered a client. */
|
|
57
|
+
export function captureException(error, context) {
|
|
58
|
+
if (!initialized)
|
|
59
|
+
return;
|
|
60
|
+
sentry.captureException(error, context);
|
|
61
|
+
}
|
|
62
|
+
export async function closeSentry(timeoutMs = 2000) {
|
|
63
|
+
if (!initialized)
|
|
64
|
+
return true;
|
|
65
|
+
initialized = false;
|
|
66
|
+
return sentry.close(timeoutMs);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=sentry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../src/confluent/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,WAAW,CAAC,UAAU,IAAI,SAAS,CAAC;AAC7C,CAAC;AAWD,SAAS,UAAU,CAAC,MAAyB;IAC3C,OAAO,MAAM,CAAC,MAAM;QAClB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1D,CAAC,CAAC,MAAM,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,IAAI,WAAW;QAAE,OAAO,CAAC,8CAA8C;IACvE,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,KAAK;QAC5B,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,CAAC;QACrB,4EAA4E;QAC5E,+EAA+E;QAC/E,cAAc,EAAE;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;SACf;QACD,YAAY,EAAE;YACZ,IAAI,EAAE;gBACJ,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBACtC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;aAC9C;SACF;QACD,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1B,GAAG,QAAQ;YACX,MAAM,CAAC,wBAAwB,EAAE;SAClC;QACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;KAC1C,CAAC,CAAC;IACH,WAAW,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAC9B,KAAc,EACd,OAA2C;IAE3C,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAS,GAAG,IAAI;IAChD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
-
import type { ConnectionConfig } from "../../config/models.js";
|
|
2
|
+
import type { ConnectionConfig, DirectConnectionConfig } from "../../config/models.js";
|
|
3
3
|
import type { BaseClientManager } from "../../confluent/base-client-manager.js";
|
|
4
|
-
import { CallToolResult } from "../../confluent/schema.js";
|
|
5
|
-
import { ConnectionPredicate, PredicateResult } from "../../confluent/tools/connection-predicates.js";
|
|
4
|
+
import type { CallToolResult } from "../../confluent/schema.js";
|
|
5
|
+
import type { ConnectionPredicate, PredicateResult } from "../../confluent/tools/connection-predicates.js";
|
|
6
6
|
import { ToolName } from "../../confluent/tools/tool-name.js";
|
|
7
|
-
import { ServerRuntime } from "../../server-runtime.js";
|
|
8
|
-
import { ZodRawShape } from "zod";
|
|
7
|
+
import type { ServerRuntime } from "../../server-runtime.js";
|
|
8
|
+
import type { ZodRawShape } from "zod";
|
|
9
|
+
import { z } from "zod";
|
|
9
10
|
/**
|
|
10
11
|
* Standard MCP tool annotations.
|
|
11
12
|
* Tools should reference these constants rather than creating ad-hoc instances.
|
|
@@ -13,6 +14,18 @@ import { ZodRawShape } from "zod";
|
|
|
13
14
|
export declare const READ_ONLY: ToolAnnotations;
|
|
14
15
|
export declare const CREATE_UPDATE: ToolAnnotations;
|
|
15
16
|
export declare const DESTRUCTIVE: ToolAnnotations;
|
|
17
|
+
/**
|
|
18
|
+
* Opening clause of the injected `connectionId` parameter description, before the
|
|
19
|
+
* quoted, comma-separated list of viable connection ids (see
|
|
20
|
+
* {@linkcode quoteJoinIds}) is appended.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CONNECTION_ID_DESCRIPTION_PREFIX = "Which configured connection to target. One of: ";
|
|
23
|
+
/**
|
|
24
|
+
* Sentence appended to the `connectionId` description that steers the agent at the
|
|
25
|
+
* discovery tool. Emitted only when that tool is itself reachable; the joining space
|
|
26
|
+
* is added at the call site so a blocked tool leaves no dangling trailing space.
|
|
27
|
+
*/
|
|
28
|
+
export declare const LIST_CONFIGURED_CONNECTIONS_POINTER = "Discover connections and learn what tools are supported by each connection by invoking 'list-configured-connections'.";
|
|
16
29
|
/**
|
|
17
30
|
* Operator-facing taxonomy of tool kinds.
|
|
18
31
|
*
|
|
@@ -34,8 +47,18 @@ export declare enum ToolCategory {
|
|
|
34
47
|
Tableflow = "tableflow"
|
|
35
48
|
}
|
|
36
49
|
export interface ToolHandler {
|
|
50
|
+
/** Handle a tool invocation. */
|
|
37
51
|
handle(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined, sessionId?: string): Promise<CallToolResult> | CallToolResult;
|
|
38
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Produce the actual config registered with MCP for this tool, injecting a
|
|
54
|
+
* required `connectionId` parameter when the server holds more than one
|
|
55
|
+
* connection. See {@linkcode BaseToolHandler.getRegisteredToolConfig} for the
|
|
56
|
+
* rules.
|
|
57
|
+
*
|
|
58
|
+
* This method is called when setting up the MCP server, and we ourselves make
|
|
59
|
+
* the downcall to the handler-authored `getToolConfig()`.
|
|
60
|
+
*/
|
|
61
|
+
getRegisteredToolConfig(runtime: ServerRuntime): RegisteredToolConfig;
|
|
39
62
|
/**
|
|
40
63
|
* The connection predicate that gates this tool's enablement. Lifted onto
|
|
41
64
|
* the interface so the MCP tool-call wrapper can compare it against
|
|
@@ -68,6 +91,16 @@ export interface ToolHandler {
|
|
|
68
91
|
* `describe-tool-availability` diagnostic tool.
|
|
69
92
|
*/
|
|
70
93
|
connectionVerdicts(runtime: ServerRuntime): Map<string, PredicateResult>;
|
|
94
|
+
/**
|
|
95
|
+
* Whether this tool is enabled irrespective of the configured connections.
|
|
96
|
+
* See {@linkcode BaseToolHandler.isConnectionIndependent}.
|
|
97
|
+
*/
|
|
98
|
+
readonly isConnectionIndependent: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* The connection id this invocation routes to, or `undefined` when it routes
|
|
101
|
+
* to none. See {@linkcode BaseToolHandler.resolvedTargetConnectionId}.
|
|
102
|
+
*/
|
|
103
|
+
resolvedTargetConnectionId(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): string | undefined;
|
|
71
104
|
}
|
|
72
105
|
export interface ToolConfig {
|
|
73
106
|
name: ToolName;
|
|
@@ -75,9 +108,65 @@ export interface ToolConfig {
|
|
|
75
108
|
inputSchema: ZodRawShape;
|
|
76
109
|
annotations: ToolAnnotations;
|
|
77
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* The config actually registered with MCP, produced by
|
|
113
|
+
* {@linkcode BaseToolHandler.getRegisteredToolConfig}. Differs from the
|
|
114
|
+
* handler-authored {@linkcode ToolConfig} in that `inputSchema` is a resolved,
|
|
115
|
+
* strict Zod object rather than a bare shape: strict so unknown parameters are
|
|
116
|
+
* rejected (not silently stripped) before `handle()` runs, and resolved because
|
|
117
|
+
* a multi-connection server injects the required `connectionId` enum into it.
|
|
118
|
+
*/
|
|
119
|
+
export interface RegisteredToolConfig extends Omit<ToolConfig, "inputSchema"> {
|
|
120
|
+
inputSchema: z.ZodObject;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* What the connection-resolution helpers hand back: the chosen connection id,
|
|
124
|
+
* its resolved config, and the client manager bound to it.
|
|
125
|
+
*
|
|
126
|
+
* Generic over the connection arm so the type-neutral resolvers
|
|
127
|
+
* ({@linkcode BaseToolHandler.resolveConnection}) and the direct-narrowing one
|
|
128
|
+
* ({@linkcode BaseToolHandler.resolveDirectConnection}) share a single name —
|
|
129
|
+
* the latter instantiates it via the {@link ResolvedDirectConnection} alias.
|
|
130
|
+
*/
|
|
131
|
+
export interface ResolvedConnection<C extends ConnectionConfig = ConnectionConfig> {
|
|
132
|
+
connId: string;
|
|
133
|
+
conn: C;
|
|
134
|
+
clientManager: BaseClientManager;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A {@link ResolvedConnection} pre-narrowed to the direct arm — the return type
|
|
138
|
+
* of {@linkcode BaseToolHandler.resolveDirectConnection}.
|
|
139
|
+
*/
|
|
140
|
+
export type ResolvedDirectConnection = ResolvedConnection<DirectConnectionConfig>;
|
|
78
141
|
export declare abstract class BaseToolHandler implements ToolHandler {
|
|
79
142
|
abstract handle(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined, sessionId?: string): Promise<CallToolResult> | CallToolResult;
|
|
80
|
-
abstract getToolConfig(): ToolConfig;
|
|
143
|
+
protected abstract getToolConfig(): ToolConfig;
|
|
144
|
+
/**
|
|
145
|
+
* Produce the actual config registered with MCP for this tool.
|
|
146
|
+
*
|
|
147
|
+
* * If the tool is connection-oriented and the server is configured
|
|
148
|
+
* with multiple connections, injects a required `connectionId` parameter
|
|
149
|
+
* indicating which connection the tool call should route to.
|
|
150
|
+
* See {@linkcode registeredInputShape} for more details.
|
|
151
|
+
*
|
|
152
|
+
* * Wrap the input schema in `z.object(...).strict()` to uniformly reject
|
|
153
|
+
* unknown parameters before `handle()` runs.
|
|
154
|
+
*
|
|
155
|
+
* This method is called for each active tool when setting up the MCP server.
|
|
156
|
+
*
|
|
157
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
158
|
+
*/
|
|
159
|
+
getRegisteredToolConfig(runtime: ServerRuntime): RegisteredToolConfig;
|
|
160
|
+
/**
|
|
161
|
+
* The input shape to register, before strict-wrapping: the authored shape,
|
|
162
|
+
* plus a required `connectionId` enum when the server holds more than one
|
|
163
|
+
* connection AND this tool is connection-oriented. A single-element enum (when
|
|
164
|
+
* only one connection is viable) is still injected on a multi-connection server,
|
|
165
|
+
* so that an explicit request for a non-viable connection (e.g. to a disabled
|
|
166
|
+
* tool because it is read_only) is rejected by the enum rather than silently
|
|
167
|
+
* auto-routed.
|
|
168
|
+
*/
|
|
169
|
+
private registeredInputShape;
|
|
81
170
|
/**
|
|
82
171
|
* The connection predicate that gates this tool. The single customization
|
|
83
172
|
* seam for tool enablement — declared as a one-line readonly property:
|
|
@@ -117,8 +206,10 @@ export declare abstract class BaseToolHandler implements ToolHandler {
|
|
|
117
206
|
*/
|
|
118
207
|
abstract readonly category: ToolCategory;
|
|
119
208
|
/**
|
|
120
|
-
* IDs of connections that satisfy this tool's {@linkcode predicate}
|
|
121
|
-
* non-empty result enables the tool;
|
|
209
|
+
* IDs of connections that satisfy this tool's {@linkcode predicate} and are
|
|
210
|
+
* not blocked by the read-only overlay. A non-empty result enables the tool;
|
|
211
|
+
* an empty result disables it. Derived from {@linkcode connectionVerdicts} so
|
|
212
|
+
* the two stay in lockstep.
|
|
122
213
|
*
|
|
123
214
|
* Customize tool gating by declaring {@linkcode predicate}, never by
|
|
124
215
|
* replacing this derivation.
|
|
@@ -127,9 +218,40 @@ export declare abstract class BaseToolHandler implements ToolHandler {
|
|
|
127
218
|
*/
|
|
128
219
|
enabledConnectionIds(runtime: ServerRuntime): string[];
|
|
129
220
|
/**
|
|
130
|
-
*
|
|
131
|
-
* {@linkcode predicate}
|
|
132
|
-
*
|
|
221
|
+
* Whether this tool is enabled regardless of the configured connections —
|
|
222
|
+
* true exactly when its {@linkcode predicate} is `alwaysEnabled`, the only
|
|
223
|
+
* predicate that returns enabled without inspecting a connection. Such tools
|
|
224
|
+
* (docs lookup, server diagnostics) never route to a connection, so they
|
|
225
|
+
* register even on a zero-connection config, where the per-connection verdict
|
|
226
|
+
* map driving {@linkcode enabledConnectionIds} is empty.
|
|
227
|
+
*/
|
|
228
|
+
get isConnectionIndependent(): boolean;
|
|
229
|
+
/**
|
|
230
|
+
* The connection id this invocation routes to — the OAuth-login gate uses it
|
|
231
|
+
* to launch the browser flow only when a call actually targets the OAuth
|
|
232
|
+
* connection, not merely because one exists somewhere in the config.
|
|
233
|
+
*
|
|
234
|
+
* Returns `undefined` for a connection-independent tool — it routes to no
|
|
235
|
+
* connection, so there is nothing to pre-launch a login for.
|
|
236
|
+
*
|
|
237
|
+
* Otherwise delegates to {@linkcode resolveConnection} so routing is decided
|
|
238
|
+
* in one place rather than duplicated in the gate, and propagates its throw.
|
|
239
|
+
* Every throw path there is a `"Wacky --"` invariant violation: the injected
|
|
240
|
+
* schema (see {@linkcode getRegisteredToolConfig}) makes `connectionId`
|
|
241
|
+
* required for multi-connection tools and strips it for single-connection
|
|
242
|
+
* ones, so a call that can't resolve means that contract broke. Surfacing the
|
|
243
|
+
* error rather than swallowing it to `undefined` lets the broken invariant
|
|
244
|
+
* reach the caller instead of being silently re-discovered inside `handle()`.
|
|
245
|
+
*
|
|
246
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
247
|
+
*/
|
|
248
|
+
resolvedTargetConnectionId(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): string | undefined;
|
|
249
|
+
/**
|
|
250
|
+
* Per-connection verdict map for this tool — the single source of truth for
|
|
251
|
+
* enablement. Each verdict composes the {@linkcode predicate} with the
|
|
252
|
+
* read-only overlay (see {@linkcode connectionVerdict}). Powers grouped
|
|
253
|
+
* startup logging, the diagnostic-tool surface, and
|
|
254
|
+
* {@linkcode enabledConnectionIds}.
|
|
133
255
|
*
|
|
134
256
|
* Customize tool gating by declaring {@linkcode predicate}, never by
|
|
135
257
|
* replacing this derivation.
|
|
@@ -138,20 +260,43 @@ export declare abstract class BaseToolHandler implements ToolHandler {
|
|
|
138
260
|
*/
|
|
139
261
|
connectionVerdicts(runtime: ServerRuntime): Map<string, PredicateResult>;
|
|
140
262
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
* connection
|
|
263
|
+
* Single-connection verdict composing the two gating layers: the
|
|
264
|
+
* {@linkcode predicate} (service reachability) and the read-only overlay.
|
|
265
|
+
*
|
|
266
|
+
* A connection the predicate already disables keeps that verdict unchanged —
|
|
267
|
+
* service reachability is the more fundamental reason and wins, so a
|
|
268
|
+
* connection missing the service block is never reported as "read-only
|
|
269
|
+
* blocked". Otherwise, a `read_only` connection disables any tool that
|
|
270
|
+
* mutates state (`annotations.readOnlyHint !== true`).
|
|
271
|
+
*/
|
|
272
|
+
private connectionVerdict;
|
|
273
|
+
/**
|
|
274
|
+
* Resolves which connection a tool call targets: the explicit `connectionId`
|
|
275
|
+
* argument when present, else the sole connection enabled for this tool.
|
|
276
|
+
* Throws a listing error when the id is unknown/not-enabled, when it is
|
|
277
|
+
* present but not a string, or when omitted while two or more connections are
|
|
278
|
+
* candidates (the augmented schema makes all three unreachable in normal MCP
|
|
279
|
+
* flow — these are defensive backstops against internal call sites).
|
|
280
|
+
*
|
|
281
|
+
* Reads `connectionId` off the **raw** `toolArguments` rather than off the
|
|
282
|
+
* handler's locally-parsed object: the framework already validated it against
|
|
283
|
+
* the registered schema (see {@linkcode getRegisteredToolConfig}), and a
|
|
284
|
+
* handler's own `z.object` re-`parse()` would strip the key it never declared.
|
|
145
285
|
*
|
|
146
|
-
*
|
|
147
|
-
|
|
148
|
-
|
|
286
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
287
|
+
*/
|
|
288
|
+
protected resolveConnection(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): ResolvedConnection;
|
|
289
|
+
/**
|
|
290
|
+
* Like {@linkcode resolveConnection}, but narrows the resolved connection to
|
|
291
|
+
* a {@link DirectConnectionConfig} — throwing if the addressed connection is
|
|
292
|
+
* OAuth-typed. The throw is a defensive backstop: a tool's `connectionId`
|
|
293
|
+
* enum only offers connections its predicate enables, and the direct-block
|
|
294
|
+
* predicates exclude OAuth, so an OAuth connection is unreachable here via
|
|
295
|
+
* normal MCP flow.
|
|
296
|
+
*
|
|
297
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
149
298
|
*/
|
|
150
|
-
protected
|
|
151
|
-
connId: string;
|
|
152
|
-
conn: ConnectionConfig;
|
|
153
|
-
clientManager: BaseClientManager;
|
|
154
|
-
};
|
|
299
|
+
protected resolveDirectConnection(runtime: ServerRuntime, toolArguments: Record<string, unknown> | undefined): ResolvedDirectConnection;
|
|
155
300
|
/**
|
|
156
301
|
* Resolves a required string from an explicit tool argument, falling back to
|
|
157
302
|
* a connection-config value. Throws if neither is present.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tools.d.ts","sourceRoot":"","sources":["../../../src/confluent/tools/base-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"base-tools.d.ts","sourceRoot":"","sources":["../../../src/confluent/tools/base-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { alwaysEnabled, ENABLED, ToolDisabledReason, } from "../../confluent/tools/connection-predicates.js";
|
|
2
|
+
import { ToolInputError } from "../../confluent/tools/tool-input-error.js";
|
|
3
|
+
import { ToolName } from "../../confluent/tools/tool-name.js";
|
|
4
|
+
import { quoteJoinIds } from "../../utils/quote-join-ids.js";
|
|
5
|
+
import { z } from "zod";
|
|
1
6
|
/**
|
|
2
7
|
* Standard MCP tool annotations.
|
|
3
8
|
* Tools should reference these constants rather than creating ad-hoc instances.
|
|
@@ -13,6 +18,18 @@ export const DESTRUCTIVE = {
|
|
|
13
18
|
destructiveHint: true,
|
|
14
19
|
readOnlyHint: false,
|
|
15
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Opening clause of the injected `connectionId` parameter description, before the
|
|
23
|
+
* quoted, comma-separated list of viable connection ids (see
|
|
24
|
+
* {@linkcode quoteJoinIds}) is appended.
|
|
25
|
+
*/
|
|
26
|
+
export const CONNECTION_ID_DESCRIPTION_PREFIX = "Which configured connection to target. One of: ";
|
|
27
|
+
/**
|
|
28
|
+
* Sentence appended to the `connectionId` description that steers the agent at the
|
|
29
|
+
* discovery tool. Emitted only when that tool is itself reachable; the joining space
|
|
30
|
+
* is added at the call site so a blocked tool leaves no dangling trailing space.
|
|
31
|
+
*/
|
|
32
|
+
export const LIST_CONFIGURED_CONNECTIONS_POINTER = `Discover connections and learn what tools are supported by each connection by invoking '${ToolName.LIST_CONFIGURED_CONNECTIONS}'.`;
|
|
16
33
|
/**
|
|
17
34
|
* Operator-facing taxonomy of tool kinds.
|
|
18
35
|
*
|
|
@@ -36,8 +53,77 @@ export var ToolCategory;
|
|
|
36
53
|
})(ToolCategory || (ToolCategory = {}));
|
|
37
54
|
export class BaseToolHandler {
|
|
38
55
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
56
|
+
* Produce the actual config registered with MCP for this tool.
|
|
57
|
+
*
|
|
58
|
+
* * If the tool is connection-oriented and the server is configured
|
|
59
|
+
* with multiple connections, injects a required `connectionId` parameter
|
|
60
|
+
* indicating which connection the tool call should route to.
|
|
61
|
+
* See {@linkcode registeredInputShape} for more details.
|
|
62
|
+
*
|
|
63
|
+
* * Wrap the input schema in `z.object(...).strict()` to uniformly reject
|
|
64
|
+
* unknown parameters before `handle()` runs.
|
|
65
|
+
*
|
|
66
|
+
* This method is called for each active tool when setting up the MCP server.
|
|
67
|
+
*
|
|
68
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
69
|
+
*/
|
|
70
|
+
getRegisteredToolConfig(runtime) {
|
|
71
|
+
const config = this.getToolConfig();
|
|
72
|
+
return {
|
|
73
|
+
...config,
|
|
74
|
+
inputSchema: z
|
|
75
|
+
.object(this.registeredInputShape(config, runtime))
|
|
76
|
+
.strict(),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The input shape to register, before strict-wrapping: the authored shape,
|
|
81
|
+
* plus a required `connectionId` enum when the server holds more than one
|
|
82
|
+
* connection AND this tool is connection-oriented. A single-element enum (when
|
|
83
|
+
* only one connection is viable) is still injected on a multi-connection server,
|
|
84
|
+
* so that an explicit request for a non-viable connection (e.g. to a disabled
|
|
85
|
+
* tool because it is read_only) is rejected by the enum rather than silently
|
|
86
|
+
* auto-routed.
|
|
87
|
+
*/
|
|
88
|
+
registeredInputShape(config, runtime) {
|
|
89
|
+
// Connection-independent tools (docs, diagnostics) never route to a
|
|
90
|
+
// connection and so never need a connectionId parameter.
|
|
91
|
+
if (this.isConnectionIndependent)
|
|
92
|
+
return config.inputSchema;
|
|
93
|
+
// A single-connection (or zero-connection) server has no ambiguity as to
|
|
94
|
+
// which connection a call routes to, so the call auto-routes with no extra
|
|
95
|
+
// argument. The zero-connection case also covers the `--list-tools` runtime,
|
|
96
|
+
// which wants the unaugmented view.
|
|
97
|
+
if (runtime.config.getConnectionIds().length <= 1)
|
|
98
|
+
return config.inputSchema;
|
|
99
|
+
const ids = this.enabledConnectionIds(runtime);
|
|
100
|
+
// A tool viable on no connection is never registered (the enablement filter
|
|
101
|
+
// in index.ts drops it), so this method is never called for one. Reaching
|
|
102
|
+
// here means the wiring is broken; bail loudly rather than build an illegal
|
|
103
|
+
// `z.enum([])`.
|
|
104
|
+
if (ids.length === 0) {
|
|
105
|
+
throw new Error(`Wacky -- tool ${config.name} resolved to zero enabled connections on a multi-connection server; it should never have been registered`);
|
|
106
|
+
}
|
|
107
|
+
// Point the agent at list-configured-connections so it can learn which
|
|
108
|
+
// tools each connection supports — but only when that tool is itself
|
|
109
|
+
// reachable; naming a tool the operator blocked would send the agent
|
|
110
|
+
// chasing a ghost. The leading space rides with the pointer (not the
|
|
111
|
+
// template) so the blocked, empty-pointer case ends cleanly at the period.
|
|
112
|
+
const listConfiguredConnectionsPointer = runtime.isToolAllowed(ToolName.LIST_CONFIGURED_CONNECTIONS)
|
|
113
|
+
? ` ${LIST_CONFIGURED_CONNECTIONS_POINTER}`
|
|
114
|
+
: "";
|
|
115
|
+
return {
|
|
116
|
+
...config.inputSchema,
|
|
117
|
+
connectionId: z
|
|
118
|
+
.enum(ids)
|
|
119
|
+
.describe(`${CONNECTION_ID_DESCRIPTION_PREFIX}${quoteJoinIds(ids)}.${listConfiguredConnectionsPointer}`),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* IDs of connections that satisfy this tool's {@linkcode predicate} and are
|
|
124
|
+
* not blocked by the read-only overlay. A non-empty result enables the tool;
|
|
125
|
+
* an empty result disables it. Derived from {@linkcode connectionVerdicts} so
|
|
126
|
+
* the two stay in lockstep.
|
|
41
127
|
*
|
|
42
128
|
* Customize tool gating by declaring {@linkcode predicate}, never by
|
|
43
129
|
* replacing this derivation.
|
|
@@ -45,14 +131,51 @@ export class BaseToolHandler {
|
|
|
45
131
|
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
46
132
|
*/
|
|
47
133
|
enabledConnectionIds(runtime) {
|
|
48
|
-
return
|
|
49
|
-
.filter(([,
|
|
134
|
+
return [...this.connectionVerdicts(runtime)]
|
|
135
|
+
.filter(([, verdict]) => verdict.enabled)
|
|
50
136
|
.map(([id]) => id);
|
|
51
137
|
}
|
|
52
138
|
/**
|
|
53
|
-
*
|
|
54
|
-
* {@linkcode predicate}
|
|
55
|
-
*
|
|
139
|
+
* Whether this tool is enabled regardless of the configured connections —
|
|
140
|
+
* true exactly when its {@linkcode predicate} is `alwaysEnabled`, the only
|
|
141
|
+
* predicate that returns enabled without inspecting a connection. Such tools
|
|
142
|
+
* (docs lookup, server diagnostics) never route to a connection, so they
|
|
143
|
+
* register even on a zero-connection config, where the per-connection verdict
|
|
144
|
+
* map driving {@linkcode enabledConnectionIds} is empty.
|
|
145
|
+
*/
|
|
146
|
+
get isConnectionIndependent() {
|
|
147
|
+
return this.predicate === alwaysEnabled;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The connection id this invocation routes to — the OAuth-login gate uses it
|
|
151
|
+
* to launch the browser flow only when a call actually targets the OAuth
|
|
152
|
+
* connection, not merely because one exists somewhere in the config.
|
|
153
|
+
*
|
|
154
|
+
* Returns `undefined` for a connection-independent tool — it routes to no
|
|
155
|
+
* connection, so there is nothing to pre-launch a login for.
|
|
156
|
+
*
|
|
157
|
+
* Otherwise delegates to {@linkcode resolveConnection} so routing is decided
|
|
158
|
+
* in one place rather than duplicated in the gate, and propagates its throw.
|
|
159
|
+
* Every throw path there is a `"Wacky --"` invariant violation: the injected
|
|
160
|
+
* schema (see {@linkcode getRegisteredToolConfig}) makes `connectionId`
|
|
161
|
+
* required for multi-connection tools and strips it for single-connection
|
|
162
|
+
* ones, so a call that can't resolve means that contract broke. Surfacing the
|
|
163
|
+
* error rather than swallowing it to `undefined` lets the broken invariant
|
|
164
|
+
* reach the caller instead of being silently re-discovered inside `handle()`.
|
|
165
|
+
*
|
|
166
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
167
|
+
*/
|
|
168
|
+
resolvedTargetConnectionId(runtime, toolArguments) {
|
|
169
|
+
if (this.isConnectionIndependent)
|
|
170
|
+
return undefined;
|
|
171
|
+
return this.resolveConnection(runtime, toolArguments).connId;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Per-connection verdict map for this tool — the single source of truth for
|
|
175
|
+
* enablement. Each verdict composes the {@linkcode predicate} with the
|
|
176
|
+
* read-only overlay (see {@linkcode connectionVerdict}). Powers grouped
|
|
177
|
+
* startup logging, the diagnostic-tool surface, and
|
|
178
|
+
* {@linkcode enabledConnectionIds}.
|
|
56
179
|
*
|
|
57
180
|
* Customize tool gating by declaring {@linkcode predicate}, never by
|
|
58
181
|
* replacing this derivation.
|
|
@@ -62,27 +185,108 @@ export class BaseToolHandler {
|
|
|
62
185
|
connectionVerdicts(runtime) {
|
|
63
186
|
return new Map(Object.entries(runtime.config.connections).map(([id, conn]) => [
|
|
64
187
|
id,
|
|
65
|
-
this.
|
|
188
|
+
this.connectionVerdict(conn),
|
|
66
189
|
]));
|
|
67
190
|
}
|
|
68
191
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* connection
|
|
192
|
+
* Single-connection verdict composing the two gating layers: the
|
|
193
|
+
* {@linkcode predicate} (service reachability) and the read-only overlay.
|
|
194
|
+
*
|
|
195
|
+
* A connection the predicate already disables keeps that verdict unchanged —
|
|
196
|
+
* service reachability is the more fundamental reason and wins, so a
|
|
197
|
+
* connection missing the service block is never reported as "read-only
|
|
198
|
+
* blocked". Otherwise, a `read_only` connection disables any tool that
|
|
199
|
+
* mutates state (`annotations.readOnlyHint !== true`).
|
|
200
|
+
*/
|
|
201
|
+
connectionVerdict(conn) {
|
|
202
|
+
const verdict = this.predicate(conn);
|
|
203
|
+
if (!verdict.enabled)
|
|
204
|
+
return verdict;
|
|
205
|
+
if (conn.read_only === true &&
|
|
206
|
+
this.getToolConfig().annotations.readOnlyHint !== true) {
|
|
207
|
+
return { enabled: false, reason: ToolDisabledReason.ReadOnlyConnection };
|
|
208
|
+
}
|
|
209
|
+
return ENABLED;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Resolves which connection a tool call targets: the explicit `connectionId`
|
|
213
|
+
* argument when present, else the sole connection enabled for this tool.
|
|
214
|
+
* Throws a listing error when the id is unknown/not-enabled, when it is
|
|
215
|
+
* present but not a string, or when omitted while two or more connections are
|
|
216
|
+
* candidates (the augmented schema makes all three unreachable in normal MCP
|
|
217
|
+
* flow — these are defensive backstops against internal call sites).
|
|
73
218
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
219
|
+
* Reads `connectionId` off the **raw** `toolArguments` rather than off the
|
|
220
|
+
* handler's locally-parsed object: the framework already validated it against
|
|
221
|
+
* the registered schema (see {@linkcode getRegisteredToolConfig}), and a
|
|
222
|
+
* handler's own `z.object` re-`parse()` would strip the key it never declared.
|
|
223
|
+
*
|
|
224
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
77
225
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
226
|
+
resolveConnection(runtime, toolArguments) {
|
|
227
|
+
// The connection this tool call should route to.
|
|
228
|
+
let determinedId;
|
|
229
|
+
// What connection ids this tool possibly supports.
|
|
230
|
+
const enabledIds = this.enabledConnectionIds(runtime);
|
|
231
|
+
// The requested connection id, if the caller provided one. Per the Zod schema injected by
|
|
232
|
+
// `getRegisteredToolConfig()` it should be a string that is one of the enabled ids; both
|
|
233
|
+
// expectations are enforced below rather than assumed.
|
|
234
|
+
const requestedId = toolArguments?.connectionId;
|
|
235
|
+
if (typeof requestedId === "string") {
|
|
236
|
+
if (!enabledIds.includes(requestedId)) {
|
|
237
|
+
throw new Error(`Wacky -- connection "${requestedId}" is not an enabled connection for this tool; enabled: ${enabledIds.join(", ")}`);
|
|
238
|
+
}
|
|
239
|
+
// Explicit requested ID must be valid based on the injected schema enum already having validated it, so can
|
|
240
|
+
// at this point trust fully.
|
|
241
|
+
determinedId = requestedId;
|
|
242
|
+
}
|
|
243
|
+
else if (requestedId !== undefined) {
|
|
244
|
+
// Unreachable in normal operation: Zod has already validated `args`
|
|
245
|
+
// against the registered schema before `handle()` runs, and that schema
|
|
246
|
+
// either declares `connectionId` as a string enum (multi-connection
|
|
247
|
+
// servers — a non-string fails parsing) or omits it entirely (single-
|
|
248
|
+
// connection servers — the strict schema rejects the unknown key). Either
|
|
249
|
+
// way a non-string can't survive to reach this branch. It exists purely as a symmetric
|
|
250
|
+
// peer to the two backstops below, so a malformed value can never quietly
|
|
251
|
+
// masquerade as an omission and auto-route.
|
|
252
|
+
throw new Error(`Wacky -- connectionId present but not a string (got ${typeof requestedId}); the injected schema should have rejected this`);
|
|
253
|
+
}
|
|
254
|
+
else if (enabledIds.length === 1) {
|
|
255
|
+
// No requested ID, but only one enabled connection — unambiguous, so route there.
|
|
256
|
+
determinedId = enabledIds[0];
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
// Not a string and not a sole enabled connection. Should have been blocked by the injected schema.
|
|
260
|
+
throw new Error(`Wacky -- connectionId omitted but this tool is enabled for ${enabledIds.length} connections (${enabledIds.join(", ") || "none"}); cannot auto-route`);
|
|
261
|
+
}
|
|
80
262
|
return {
|
|
81
|
-
connId,
|
|
82
|
-
conn: runtime.config.connections[
|
|
83
|
-
clientManager: runtime.clientManagers[
|
|
263
|
+
connId: determinedId,
|
|
264
|
+
conn: runtime.config.connections[determinedId],
|
|
265
|
+
clientManager: runtime.clientManagers[determinedId],
|
|
84
266
|
};
|
|
85
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Like {@linkcode resolveConnection}, but narrows the resolved connection to
|
|
270
|
+
* a {@link DirectConnectionConfig} — throwing if the addressed connection is
|
|
271
|
+
* OAuth-typed. The throw is a defensive backstop: a tool's `connectionId`
|
|
272
|
+
* enum only offers connections its predicate enables, and the direct-block
|
|
273
|
+
* predicates exclude OAuth, so an OAuth connection is unreachable here via
|
|
274
|
+
* normal MCP flow.
|
|
275
|
+
*
|
|
276
|
+
* @final — concrete on `BaseToolHandler`; subclasses must not override.
|
|
277
|
+
*/
|
|
278
|
+
resolveDirectConnection(runtime, toolArguments) {
|
|
279
|
+
// Reuse resolveConnection for id selection + validation; this method only
|
|
280
|
+
// adds the direct-vs-oauth narrowing on top of its type-neutral result.
|
|
281
|
+
const { connId, conn, clientManager } = this.resolveConnection(runtime, toolArguments);
|
|
282
|
+
// A resolved OAuth connection means the wiring is broken (a non-oauth tool
|
|
283
|
+
// somehow offered an oauth id), not that a caller legitimately asked for one.
|
|
284
|
+
if (conn.type !== "direct") {
|
|
285
|
+
throw new Error(`Wacky -- connection "${connId}" is ${conn.type}-typed; this tool requires a direct connection`);
|
|
286
|
+
}
|
|
287
|
+
// conn is narrowed to DirectConnectionConfig by the guard above.
|
|
288
|
+
return { connId, conn, clientManager };
|
|
289
|
+
}
|
|
86
290
|
/**
|
|
87
291
|
* Resolves a required string from an explicit tool argument, falling back to
|
|
88
292
|
* a connection-config value. Throws if neither is present.
|
|
@@ -93,7 +297,7 @@ export class BaseToolHandler {
|
|
|
93
297
|
resolveParam(argValue, configValue, label) {
|
|
94
298
|
const resolved = argValue?.trim() || configValue?.trim();
|
|
95
299
|
if (!resolved)
|
|
96
|
-
throw new
|
|
300
|
+
throw new ToolInputError(`${label} is required`);
|
|
97
301
|
return resolved;
|
|
98
302
|
}
|
|
99
303
|
/** Like resolveParam but returns undefined instead of throwing when both are absent or blank. The returned value is always trimmed. */
|