@confluentinc/mcp-confluent 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +507 -342
  2. package/dist/build-config.d.ts +2 -0
  3. package/dist/build-config.d.ts.map +1 -0
  4. package/dist/build-config.js +2 -0
  5. package/dist/build-config.js.map +1 -0
  6. package/dist/cli.d.ts +3 -0
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +10 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/confluent/client-manager.d.ts +9 -0
  11. package/dist/confluent/client-manager.d.ts.map +1 -1
  12. package/dist/confluent/client-manager.js +35 -4
  13. package/dist/confluent/client-manager.js.map +1 -1
  14. package/dist/confluent/middleware.d.ts +3 -2
  15. package/dist/confluent/middleware.d.ts.map +1 -1
  16. package/dist/confluent/middleware.js +9 -2
  17. package/dist/confluent/middleware.js.map +1 -1
  18. package/dist/confluent/node-deps.d.ts +63 -0
  19. package/dist/confluent/node-deps.d.ts.map +1 -0
  20. package/dist/confluent/node-deps.js +14 -0
  21. package/dist/confluent/node-deps.js.map +1 -0
  22. package/dist/confluent/telemetry.d.ts +18 -0
  23. package/dist/confluent/telemetry.d.ts.map +1 -0
  24. package/dist/confluent/telemetry.js +101 -0
  25. package/dist/confluent/telemetry.js.map +1 -0
  26. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +11 -0
  27. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -0
  28. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +174 -0
  29. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -0
  30. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +77 -0
  31. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -0
  32. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +136 -0
  33. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -0
  34. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +11 -0
  35. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -0
  36. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +111 -0
  37. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -0
  38. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +11 -0
  39. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -0
  40. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +110 -0
  41. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -0
  42. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +11 -0
  43. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -0
  44. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +74 -0
  45. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -0
  46. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +11 -0
  47. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -0
  48. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +81 -0
  49. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -0
  50. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +11 -0
  51. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -0
  52. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +90 -0
  53. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -0
  54. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +11 -0
  55. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -0
  56. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +131 -0
  57. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -0
  58. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +11 -0
  59. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -0
  60. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +248 -0
  61. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -0
  62. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +88 -0
  63. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -0
  64. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js +443 -0
  65. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -0
  66. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +11 -0
  67. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -0
  68. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +398 -0
  69. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -0
  70. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +23 -0
  71. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -0
  72. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -0
  73. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -0
  74. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +11 -0
  75. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -0
  76. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +72 -0
  77. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -0
  78. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  79. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +20 -3
  80. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  81. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +1 -1
  82. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  83. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +1 -1
  84. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  85. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +1 -1
  86. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  87. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +1 -1
  88. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  89. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +1 -1
  90. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  91. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +11 -0
  92. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -0
  93. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +193 -0
  94. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -0
  95. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +11 -0
  96. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -0
  97. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +224 -0
  98. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -0
  99. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +10 -0
  100. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -0
  101. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +71 -0
  102. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -0
  103. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  104. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +1 -5
  105. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  106. package/dist/confluent/tools/tool-factory.d.ts.map +1 -1
  107. package/dist/confluent/tools/tool-factory.js +26 -0
  108. package/dist/confluent/tools/tool-factory.js.map +1 -1
  109. package/dist/confluent/tools/tool-name.d.ts +14 -1
  110. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  111. package/dist/confluent/tools/tool-name.js +13 -0
  112. package/dist/confluent/tools/tool-name.js.map +1 -1
  113. package/dist/env-schema.d.ts +7 -0
  114. package/dist/env-schema.d.ts.map +1 -1
  115. package/dist/env-schema.js +37 -2
  116. package/dist/env-schema.js.map +1 -1
  117. package/dist/env.d.ts +7 -0
  118. package/dist/env.d.ts.map +1 -1
  119. package/dist/index.js +67 -5
  120. package/dist/index.js.map +1 -1
  121. package/dist/mcp/transports/auth.d.ts +55 -0
  122. package/dist/mcp/transports/auth.d.ts.map +1 -0
  123. package/dist/mcp/transports/auth.js +127 -0
  124. package/dist/mcp/transports/auth.js.map +1 -0
  125. package/dist/mcp/transports/index.d.ts +1 -0
  126. package/dist/mcp/transports/index.d.ts.map +1 -1
  127. package/dist/mcp/transports/index.js +1 -0
  128. package/dist/mcp/transports/index.js.map +1 -1
  129. package/dist/mcp/transports/manager.d.ts +13 -1
  130. package/dist/mcp/transports/manager.d.ts.map +1 -1
  131. package/dist/mcp/transports/manager.js +20 -2
  132. package/dist/mcp/transports/manager.js.map +1 -1
  133. package/dist/mcp/transports/server.d.ts +10 -1
  134. package/dist/mcp/transports/server.d.ts.map +1 -1
  135. package/dist/mcp/transports/server.js +12 -2
  136. package/dist/mcp/transports/server.js.map +1 -1
  137. package/package.json +16 -7
@@ -0,0 +1,110 @@
1
+ import { getEnsuredParam } from "../../../../../confluent/helpers.js";
2
+ import { BaseToolHandler, } from "../../../../../confluent/tools/base-tools.js";
3
+ import { resolveCatalogName, resolveDatabaseName, getSchemaMapping, resolveToSchemaName, } from "../../../../../confluent/tools/handlers/flink/catalog/catalog-resolver.js";
4
+ import { executeFlinkSql } from "../../../../../confluent/tools/handlers/flink/flink-sql-helper.js";
5
+ import { ToolName } from "../../../../../confluent/tools/tool-name.js";
6
+ import env from "../../../../../env.js";
7
+ import { z } from "zod";
8
+ const getTableInfoArguments = z.object({
9
+ baseUrl: z
10
+ .string()
11
+ .describe("The base URL of the Flink REST API.")
12
+ .url()
13
+ .default(() => env.FLINK_REST_ENDPOINT ?? "")
14
+ .optional(),
15
+ organizationId: z
16
+ .string()
17
+ .trim()
18
+ .optional()
19
+ .describe("The unique identifier for the organization."),
20
+ environmentId: z
21
+ .string()
22
+ .trim()
23
+ .optional()
24
+ .describe("The unique identifier for the environment."),
25
+ computePoolId: z
26
+ .string()
27
+ .trim()
28
+ .optional()
29
+ .describe("The id associated with the compute pool in context."),
30
+ catalogName: z
31
+ .string()
32
+ .trim()
33
+ .optional()
34
+ .describe("The Flink catalog name (environment ID, e.g., env-xxxxx). Omit to use defaults."),
35
+ databaseName: z
36
+ .string()
37
+ .trim()
38
+ .optional()
39
+ .describe("The database/schema name. Can be cluster ID (lkc-xxxxx) or friendly name. Optional."),
40
+ tableName: z
41
+ .string()
42
+ .trim()
43
+ .nonempty()
44
+ .describe("The name of the table to get info for."),
45
+ });
46
+ export class GetTableInfoHandler extends BaseToolHandler {
47
+ async handle(clientManager, toolArguments) {
48
+ const { organizationId, environmentId, computePoolId, catalogName, databaseName, tableName, baseUrl, } = getTableInfoArguments.parse(toolArguments);
49
+ const organization_id = getEnsuredParam("FLINK_ORG_ID", "Organization ID is required", organizationId);
50
+ const environment_id = getEnsuredParam("FLINK_ENV_ID", "Environment ID is required", environmentId);
51
+ const compute_pool_id = getEnsuredParam("FLINK_COMPUTE_POOL_ID", "Compute Pool ID is required", computePoolId);
52
+ // Smart resolution: only accept env-* format, otherwise fall back to FLINK_ENV_ID
53
+ const catalog_name = resolveCatalogName(catalogName);
54
+ if (!catalog_name) {
55
+ return this.createResponse("Catalog name could not be resolved. Set FLINK_ENV_ID or provide a valid environment ID (env-xxxxx).", true);
56
+ }
57
+ // Database name is optional - if provided, resolve it to friendly SCHEMA_NAME
58
+ const database_input = resolveDatabaseName(databaseName);
59
+ if (baseUrl !== undefined && baseUrl !== "") {
60
+ clientManager.setConfluentCloudFlinkEndpoint(baseUrl);
61
+ }
62
+ // If a database was specified, resolve cluster ID to friendly name
63
+ let schema_name;
64
+ if (database_input) {
65
+ const mappings = await getSchemaMapping(clientManager, catalog_name, {
66
+ organizationId: organization_id,
67
+ environmentId: environment_id,
68
+ computePoolId: compute_pool_id,
69
+ });
70
+ schema_name = resolveToSchemaName(database_input, mappings);
71
+ }
72
+ // Query INFORMATION_SCHEMA.TABLES for table metadata including watermarks
73
+ // Must fully qualify with catalog and use backticks per Confluent Cloud requirements
74
+ // If schema_name is provided, filter by it; otherwise search all databases for the table
75
+ const schemaFilter = schema_name
76
+ ? ` AND \`TABLE_SCHEMA\` = '${schema_name}'`
77
+ : "";
78
+ const sql = `SELECT \`TABLE_CATALOG\`, \`TABLE_SCHEMA\`, \`TABLE_NAME\`, \`TABLE_TYPE\`, \`IS_DISTRIBUTED\`, \`DISTRIBUTION_ALGORITHM\`, \`DISTRIBUTION_BUCKETS\`, \`IS_WATERMARKED\`, \`WATERMARK_COLUMN\`, \`WATERMARK_EXPRESSION\`, \`WATERMARK_IS_HIDDEN\`, \`COMMENT\` FROM \`${catalog_name}\`.\`INFORMATION_SCHEMA\`.\`TABLES\` WHERE \`TABLE_NAME\` = '${tableName}'${schemaFilter}`;
79
+ const result = await executeFlinkSql(clientManager, sql, {
80
+ organizationId: organization_id,
81
+ environmentId: environment_id,
82
+ computePoolId: compute_pool_id,
83
+ });
84
+ if (!result.success) {
85
+ return this.createResponse(`Failed to get table info: ${result.error}`, true);
86
+ }
87
+ const tables = result.data ?? [];
88
+ if (tables.length === 0) {
89
+ const scope = schema_name
90
+ ? `'${catalog_name}.${schema_name}.${tableName}'`
91
+ : `'${tableName}' in catalog '${catalog_name}'`;
92
+ return this.createResponse(`Table ${scope} not found.`, true);
93
+ }
94
+ return this.createResponse(`Table info for '${tableName}':\n${JSON.stringify(tables[0], null, 2)}`);
95
+ }
96
+ getToolConfig() {
97
+ return {
98
+ name: ToolName.GET_FLINK_TABLE_INFO,
99
+ description: "Get table metadata via INFORMATION_SCHEMA.TABLES. Returns watermark configuration, distribution info, and table type.",
100
+ inputSchema: getTableInfoArguments.shape,
101
+ };
102
+ }
103
+ getRequiredEnvVars() {
104
+ return ["FLINK_API_KEY", "FLINK_API_SECRET"];
105
+ }
106
+ isConfluentCloudOnly() {
107
+ return true;
108
+ }
109
+ }
110
+ //# sourceMappingURL=get-table-info-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-table-info-handler.js","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/catalog/get-table-info-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ClientManager } from "../../../../../confluent/client-manager.js";
2
+ import { CallToolResult } from "../../../../../confluent/schema.js";
3
+ import { BaseToolHandler, ToolConfig } from "../../../../../confluent/tools/base-tools.js";
4
+ import { EnvVar } from "../../../../../env-schema.js";
5
+ export declare class ListCatalogsHandler extends BaseToolHandler {
6
+ handle(clientManager: ClientManager, toolArguments: Record<string, unknown> | undefined): Promise<CallToolResult>;
7
+ getToolConfig(): ToolConfig;
8
+ getRequiredEnvVars(): EnvVar[];
9
+ isConfluentCloudOnly(): boolean;
10
+ }
11
+ //# sourceMappingURL=list-catalogs-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-catalogs-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/catalog/list-catalogs-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA0B5C,qBAAa,mBAAoB,SAAQ,eAAe;IAChD,MAAM,CACV,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,OAAO,CAAC,cAAc,CAAC;IA2D1B,aAAa,IAAI,UAAU;IAS3B,kBAAkB,IAAI,MAAM,EAAE;IAI9B,oBAAoB,IAAI,OAAO;CAGhC"}
@@ -0,0 +1,74 @@
1
+ import { getEnsuredParam } from "../../../../../confluent/helpers.js";
2
+ import { BaseToolHandler, } from "../../../../../confluent/tools/base-tools.js";
3
+ import { resolveCatalogName } from "../../../../../confluent/tools/handlers/flink/catalog/catalog-resolver.js";
4
+ import { executeFlinkSql } from "../../../../../confluent/tools/handlers/flink/flink-sql-helper.js";
5
+ import { ToolName } from "../../../../../confluent/tools/tool-name.js";
6
+ import { z } from "zod";
7
+ const listCatalogsArguments = z.object({
8
+ baseUrl: z
9
+ .string()
10
+ .describe("The base URL of the Flink REST API.")
11
+ .url()
12
+ .optional(),
13
+ organizationId: z
14
+ .string()
15
+ .trim()
16
+ .optional()
17
+ .describe("The unique identifier for the organization."),
18
+ environmentId: z
19
+ .string()
20
+ .trim()
21
+ .optional()
22
+ .describe("The unique identifier for the environment."),
23
+ computePoolId: z
24
+ .string()
25
+ .trim()
26
+ .optional()
27
+ .describe("The id associated with the compute pool in context."),
28
+ });
29
+ export class ListCatalogsHandler extends BaseToolHandler {
30
+ async handle(clientManager, toolArguments) {
31
+ const { organizationId, environmentId, computePoolId, baseUrl } = listCatalogsArguments.parse(toolArguments);
32
+ const organization_id = getEnsuredParam("FLINK_ORG_ID", "Organization ID is required", organizationId);
33
+ const environment_id = getEnsuredParam("FLINK_ENV_ID", "Environment ID is required", environmentId);
34
+ const compute_pool_id = getEnsuredParam("FLINK_COMPUTE_POOL_ID", "Compute Pool ID is required", computePoolId);
35
+ // Smart resolution: use FLINK_ENV_ID as the catalog name
36
+ const catalog_name = resolveCatalogName();
37
+ if (!catalog_name) {
38
+ return this.createResponse("Catalog name could not be resolved. Set FLINK_ENV_ID.", true);
39
+ }
40
+ if (baseUrl !== undefined && baseUrl !== "") {
41
+ clientManager.setConfluentCloudFlinkEndpoint(baseUrl);
42
+ }
43
+ // Query INFORMATION_SCHEMA.CATALOGS for all available catalogs
44
+ // Must fully qualify with catalog and use backticks per Confluent Cloud requirements
45
+ const sql = `SELECT \`CATALOG_NAME\` FROM \`${catalog_name}\`.\`INFORMATION_SCHEMA\`.\`CATALOGS\``;
46
+ const result = await executeFlinkSql(clientManager, sql, {
47
+ organizationId: organization_id,
48
+ environmentId: environment_id,
49
+ computePoolId: compute_pool_id,
50
+ });
51
+ if (!result.success) {
52
+ return this.createResponse(`Failed to list catalogs: ${result.error}`, true);
53
+ }
54
+ const catalogs = result.data ?? [];
55
+ if (catalogs.length === 0) {
56
+ return this.createResponse("No catalogs found.");
57
+ }
58
+ return this.createResponse(`Catalogs:\n${JSON.stringify(catalogs, null, 2)}`);
59
+ }
60
+ getToolConfig() {
61
+ return {
62
+ name: ToolName.LIST_FLINK_CATALOGS,
63
+ description: "List all catalogs available in the Flink environment via INFORMATION_SCHEMA.CATALOGS.",
64
+ inputSchema: listCatalogsArguments.shape,
65
+ };
66
+ }
67
+ getRequiredEnvVars() {
68
+ return ["FLINK_API_KEY", "FLINK_API_SECRET"];
69
+ }
70
+ isConfluentCloudOnly() {
71
+ return true;
72
+ }
73
+ }
74
+ //# sourceMappingURL=list-catalogs-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-catalogs-handler.js","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/catalog/list-catalogs-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ClientManager } from "../../../../../confluent/client-manager.js";
2
+ import { CallToolResult } from "../../../../../confluent/schema.js";
3
+ import { BaseToolHandler, ToolConfig } from "../../../../../confluent/tools/base-tools.js";
4
+ import { EnvVar } from "../../../../../env-schema.js";
5
+ export declare class ListDatabasesHandler extends BaseToolHandler {
6
+ handle(clientManager: ClientManager, toolArguments: Record<string, unknown> | undefined): Promise<CallToolResult>;
7
+ getToolConfig(): ToolConfig;
8
+ getRequiredEnvVars(): EnvVar[];
9
+ isConfluentCloudOnly(): boolean;
10
+ }
11
+ //# sourceMappingURL=list-databases-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-databases-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/catalog/list-databases-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmC5C,qBAAa,oBAAqB,SAAQ,eAAe;IACjD,MAAM,CACV,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,OAAO,CAAC,cAAc,CAAC;IAgE1B,aAAa,IAAI,UAAU;IAS3B,kBAAkB,IAAI,MAAM,EAAE;IAI9B,oBAAoB,IAAI,OAAO;CAGhC"}
@@ -0,0 +1,81 @@
1
+ import { getEnsuredParam } from "../../../../../confluent/helpers.js";
2
+ import { BaseToolHandler, } from "../../../../../confluent/tools/base-tools.js";
3
+ import { resolveCatalogName } from "../../../../../confluent/tools/handlers/flink/catalog/catalog-resolver.js";
4
+ import { executeFlinkSql } from "../../../../../confluent/tools/handlers/flink/flink-sql-helper.js";
5
+ import { ToolName } from "../../../../../confluent/tools/tool-name.js";
6
+ import env from "../../../../../env.js";
7
+ import { z } from "zod";
8
+ const listDatabasesArguments = z.object({
9
+ baseUrl: z
10
+ .string()
11
+ .describe("The base URL of the Flink REST API.")
12
+ .url()
13
+ .default(() => env.FLINK_REST_ENDPOINT ?? "")
14
+ .optional(),
15
+ organizationId: z
16
+ .string()
17
+ .trim()
18
+ .optional()
19
+ .describe("The unique identifier for the organization."),
20
+ environmentId: z
21
+ .string()
22
+ .trim()
23
+ .optional()
24
+ .describe("The unique identifier for the environment."),
25
+ computePoolId: z
26
+ .string()
27
+ .trim()
28
+ .optional()
29
+ .describe("The id associated with the compute pool in context."),
30
+ catalogName: z
31
+ .string()
32
+ .trim()
33
+ .optional()
34
+ .describe("The Flink catalog name (environment ID, e.g., env-xxxxx). Omit to use defaults."),
35
+ });
36
+ export class ListDatabasesHandler extends BaseToolHandler {
37
+ async handle(clientManager, toolArguments) {
38
+ const { organizationId, environmentId, computePoolId, catalogName, baseUrl, } = listDatabasesArguments.parse(toolArguments);
39
+ const organization_id = getEnsuredParam("FLINK_ORG_ID", "Organization ID is required", organizationId);
40
+ const environment_id = getEnsuredParam("FLINK_ENV_ID", "Environment ID is required", environmentId);
41
+ const compute_pool_id = getEnsuredParam("FLINK_COMPUTE_POOL_ID", "Compute Pool ID is required", computePoolId);
42
+ // Smart resolution: only accept env-* format, otherwise fall back to FLINK_ENV_ID
43
+ const catalog_name = resolveCatalogName(catalogName);
44
+ if (!catalog_name) {
45
+ return this.createResponse("Catalog name could not be resolved. Set FLINK_ENV_ID or provide a valid environment ID (env-xxxxx).", true);
46
+ }
47
+ if (baseUrl !== undefined && baseUrl !== "") {
48
+ clientManager.setConfluentCloudFlinkEndpoint(baseUrl);
49
+ }
50
+ // Build SQL query for INFORMATION_SCHEMA.SCHEMATA
51
+ // Must fully qualify with catalog and use backticks per Confluent Cloud requirements
52
+ const sql = `SELECT \`SCHEMA_ID\`, \`SCHEMA_NAME\` FROM \`${catalog_name}\`.\`INFORMATION_SCHEMA\`.\`SCHEMATA\` WHERE \`SCHEMA_NAME\` <> 'INFORMATION_SCHEMA'`;
53
+ const result = await executeFlinkSql(clientManager, sql, {
54
+ organizationId: organization_id,
55
+ environmentId: environment_id,
56
+ computePoolId: compute_pool_id,
57
+ });
58
+ if (!result.success) {
59
+ return this.createResponse(`Failed to list databases: ${result.error}`, true);
60
+ }
61
+ const databases = result.data ?? [];
62
+ if (databases.length === 0) {
63
+ return this.createResponse("No databases found.");
64
+ }
65
+ return this.createResponse(`Databases:\n${JSON.stringify(databases, null, 2)}`);
66
+ }
67
+ getToolConfig() {
68
+ return {
69
+ name: ToolName.LIST_FLINK_DATABASES,
70
+ description: "List all databases (schemas) in a Flink catalog via INFORMATION_SCHEMA.SCHEMATA. Returns catalog and database names.",
71
+ inputSchema: listDatabasesArguments.shape,
72
+ };
73
+ }
74
+ getRequiredEnvVars() {
75
+ return ["FLINK_API_KEY", "FLINK_API_SECRET"];
76
+ }
77
+ isConfluentCloudOnly() {
78
+ return true;
79
+ }
80
+ }
81
+ //# sourceMappingURL=list-databases-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-databases-handler.js","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/catalog/list-databases-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ClientManager } from "../../../../../confluent/client-manager.js";
2
+ import { CallToolResult } from "../../../../../confluent/schema.js";
3
+ import { BaseToolHandler, ToolConfig } from "../../../../../confluent/tools/base-tools.js";
4
+ import { EnvVar } from "../../../../../env-schema.js";
5
+ export declare class ListTablesHandler extends BaseToolHandler {
6
+ handle(clientManager: ClientManager, toolArguments: Record<string, unknown> | undefined): Promise<CallToolResult>;
7
+ getToolConfig(): ToolConfig;
8
+ getRequiredEnvVars(): EnvVar[];
9
+ isConfluentCloudOnly(): boolean;
10
+ }
11
+ //# sourceMappingURL=list-tables-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tables-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/catalog/list-tables-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA0C5C,qBAAa,iBAAkB,SAAQ,eAAe;IAC9C,MAAM,CACV,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,OAAO,CAAC,cAAc,CAAC;IAuE1B,aAAa,IAAI,UAAU;IAS3B,kBAAkB,IAAI,MAAM,EAAE;IAI9B,oBAAoB,IAAI,OAAO;CAGhC"}
@@ -0,0 +1,90 @@
1
+ import { getEnsuredParam } from "../../../../../confluent/helpers.js";
2
+ import { BaseToolHandler, } from "../../../../../confluent/tools/base-tools.js";
3
+ import { resolveCatalogName } from "../../../../../confluent/tools/handlers/flink/catalog/catalog-resolver.js";
4
+ import { executeFlinkSql } from "../../../../../confluent/tools/handlers/flink/flink-sql-helper.js";
5
+ import { ToolName } from "../../../../../confluent/tools/tool-name.js";
6
+ import env from "../../../../../env.js";
7
+ import { z } from "zod";
8
+ const listTablesArguments = z.object({
9
+ baseUrl: z
10
+ .string()
11
+ .describe("The base URL of the Flink REST API.")
12
+ .url()
13
+ .default(() => env.FLINK_REST_ENDPOINT ?? "")
14
+ .optional(),
15
+ organizationId: z
16
+ .string()
17
+ .trim()
18
+ .optional()
19
+ .describe("The unique identifier for the organization."),
20
+ environmentId: z
21
+ .string()
22
+ .trim()
23
+ .optional()
24
+ .describe("The unique identifier for the environment."),
25
+ computePoolId: z
26
+ .string()
27
+ .trim()
28
+ .optional()
29
+ .describe("The id associated with the compute pool in context."),
30
+ catalogName: z
31
+ .string()
32
+ .trim()
33
+ .optional()
34
+ .describe("The Flink catalog name (environment ID, e.g., env-xxxxx). Omit to use defaults."),
35
+ databaseName: z
36
+ .string()
37
+ .trim()
38
+ .optional()
39
+ .describe("The database/schema name (Kafka cluster ID, e.g., lkc-xxxxx). Omit to list all tables across the catalog."),
40
+ });
41
+ export class ListTablesHandler extends BaseToolHandler {
42
+ async handle(clientManager, toolArguments) {
43
+ const { organizationId, environmentId, computePoolId, catalogName, databaseName, baseUrl, } = listTablesArguments.parse(toolArguments);
44
+ const organization_id = getEnsuredParam("FLINK_ORG_ID", "Organization ID is required", organizationId);
45
+ const environment_id = getEnsuredParam("FLINK_ENV_ID", "Environment ID is required", environmentId);
46
+ const compute_pool_id = getEnsuredParam("FLINK_COMPUTE_POOL_ID", "Compute Pool ID is required", computePoolId);
47
+ // Smart resolution: only accept env-* format, otherwise fall back to FLINK_ENV_ID
48
+ const catalog_name = resolveCatalogName(catalogName);
49
+ if (!catalog_name) {
50
+ return this.createResponse("Catalog name could not be resolved. Set FLINK_ENV_ID or provide a valid environment ID (env-xxxxx).", true);
51
+ }
52
+ // Note: databaseName parameter is currently unused - we fetch all tables and let the client filter
53
+ // This is because TABLE_SCHEMA may contain friendly names, not cluster IDs
54
+ void databaseName;
55
+ if (baseUrl !== undefined && baseUrl !== "") {
56
+ clientManager.setConfluentCloudFlinkEndpoint(baseUrl);
57
+ }
58
+ // Query INFORMATION_SCHEMA.TABLES for all tables
59
+ // Must fully qualify with catalog and use backticks per Confluent Cloud requirements
60
+ // Return all tables (excluding INFORMATION_SCHEMA) - client can filter by TABLE_SCHEMA as needed
61
+ const sql = `SELECT \`TABLE_CATALOG\`, \`TABLE_SCHEMA\`, \`TABLE_NAME\`, \`TABLE_TYPE\` FROM \`${catalog_name}\`.\`INFORMATION_SCHEMA\`.\`TABLES\` WHERE \`TABLE_SCHEMA\` <> 'INFORMATION_SCHEMA'`;
62
+ const result = await executeFlinkSql(clientManager, sql, {
63
+ organizationId: organization_id,
64
+ environmentId: environment_id,
65
+ computePoolId: compute_pool_id,
66
+ });
67
+ if (!result.success) {
68
+ return this.createResponse(`Failed to list tables: ${result.error}`, true);
69
+ }
70
+ const tables = result.data ?? [];
71
+ if (tables.length === 0) {
72
+ return this.createResponse(`No tables found in catalog '${catalog_name}'.`);
73
+ }
74
+ return this.createResponse(`Tables in catalog '${catalog_name}':\n${JSON.stringify(tables, null, 2)}`);
75
+ }
76
+ getToolConfig() {
77
+ return {
78
+ name: ToolName.LIST_FLINK_TABLES,
79
+ description: "List all tables in a Flink database via INFORMATION_SCHEMA.TABLES. Returns table names and types.",
80
+ inputSchema: listTablesArguments.shape,
81
+ };
82
+ }
83
+ getRequiredEnvVars() {
84
+ return ["FLINK_API_KEY", "FLINK_API_SECRET"];
85
+ }
86
+ isConfluentCloudOnly() {
87
+ return true;
88
+ }
89
+ }
90
+ //# sourceMappingURL=list-tables-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tables-handler.js","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/catalog/list-tables-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ClientManager } from "../../../../../confluent/client-manager.js";
2
+ import { CallToolResult } from "../../../../../confluent/schema.js";
3
+ import { BaseToolHandler, ToolConfig } from "../../../../../confluent/tools/base-tools.js";
4
+ import { EnvVar } from "../../../../../env-schema.js";
5
+ export declare class CheckHealthHandler extends BaseToolHandler {
6
+ handle(clientManager: ClientManager, toolArguments: Record<string, unknown> | undefined): Promise<CallToolResult>;
7
+ getToolConfig(): ToolConfig;
8
+ getRequiredEnvVars(): EnvVar[];
9
+ isConfluentCloudOnly(): boolean;
10
+ }
11
+ //# sourceMappingURL=check-health-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-health-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/diagnostics/check-health-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA+C5C,qBAAa,kBAAmB,SAAQ,eAAe;IAC/C,MAAM,CACV,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,OAAO,CAAC,cAAc,CAAC;IAyH1B,aAAa,IAAI,UAAU;IAS3B,kBAAkB,IAAI,MAAM,EAAE;IAI9B,oBAAoB,IAAI,OAAO;CAGhC"}
@@ -0,0 +1,131 @@
1
+ import { getEnsuredParam } from "../../../../../confluent/helpers.js";
2
+ import { BaseToolHandler, } from "../../../../../confluent/tools/base-tools.js";
3
+ import { ToolName } from "../../../../../confluent/tools/tool-name.js";
4
+ import env from "../../../../../env.js";
5
+ import { wrapAsPathBasedClient } from "openapi-fetch";
6
+ import { z } from "zod";
7
+ const checkHealthArguments = z.object({
8
+ baseUrl: z
9
+ .string()
10
+ .describe("The base URL of the Flink REST API.")
11
+ .url()
12
+ .default(() => env.FLINK_REST_ENDPOINT ?? "")
13
+ .optional(),
14
+ organizationId: z
15
+ .string()
16
+ .trim()
17
+ .optional()
18
+ .describe("The unique identifier for the organization."),
19
+ environmentId: z
20
+ .string()
21
+ .trim()
22
+ .optional()
23
+ .describe("The unique identifier for the environment."),
24
+ statementName: z
25
+ .string()
26
+ .regex(new RegExp("[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*"))
27
+ .nonempty()
28
+ .max(100)
29
+ .describe("The name of the Flink SQL statement to check health for."),
30
+ });
31
+ export class CheckHealthHandler extends BaseToolHandler {
32
+ async handle(clientManager, toolArguments) {
33
+ const { statementName, environmentId, organizationId, baseUrl } = checkHealthArguments.parse(toolArguments);
34
+ const organization_id = getEnsuredParam("FLINK_ORG_ID", "Organization ID is required", organizationId);
35
+ const environment_id = getEnsuredParam("FLINK_ENV_ID", "Environment ID is required", environmentId);
36
+ if (baseUrl !== undefined && baseUrl !== "") {
37
+ clientManager.setConfluentCloudFlinkEndpoint(baseUrl);
38
+ }
39
+ const pathBasedClient = wrapAsPathBasedClient(clientManager.getConfluentCloudFlinkRestClient());
40
+ // Get statement status
41
+ const { data: statementData, error: statusError } = await pathBasedClient["/sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{statement_name}"].GET({
42
+ params: {
43
+ path: {
44
+ organization_id: organization_id,
45
+ environment_id: environment_id,
46
+ statement_name: statementName,
47
+ },
48
+ },
49
+ });
50
+ if (statusError) {
51
+ return this.createResponse(`Failed to get statement status: ${JSON.stringify(statusError)}`, true);
52
+ }
53
+ // Get exceptions
54
+ const { data: exceptionsData } = await pathBasedClient["/sql/v1/organizations/{organization_id}/environments/{environment_id}/statements/{statement_name}/exceptions"].GET({
55
+ params: {
56
+ path: {
57
+ organization_id: organization_id,
58
+ environment_id: environment_id,
59
+ statement_name: statementName,
60
+ },
61
+ },
62
+ });
63
+ const phase = statementData?.status?.phase || "UNKNOWN";
64
+ const exceptions = exceptionsData?.data || [];
65
+ const latestException = exceptions[0];
66
+ // Determine health status
67
+ const health = {
68
+ status: "unknown",
69
+ phase,
70
+ message: "",
71
+ details: {
72
+ hasExceptions: exceptions.length > 0,
73
+ exceptionCount: exceptions.length,
74
+ latestException: latestException?.message,
75
+ statementSql: statementData?.spec?.statement,
76
+ computePoolId: statementData?.spec?.compute_pool_id,
77
+ },
78
+ };
79
+ switch (phase) {
80
+ case "RUNNING":
81
+ if (exceptions.length > 0) {
82
+ health.status = "warning";
83
+ health.message = `Statement is running but has ${exceptions.length} recent exception(s). Latest: ${latestException?.message}`;
84
+ }
85
+ else {
86
+ health.status = "healthy";
87
+ health.message =
88
+ "Statement is running normally with no recent exceptions.";
89
+ }
90
+ break;
91
+ case "COMPLETED":
92
+ health.status = "healthy";
93
+ health.message = "Statement completed successfully.";
94
+ break;
95
+ case "FAILED":
96
+ health.status = "critical";
97
+ health.message = `Statement failed. ${statementData?.status?.detail || latestException?.message || "Check exceptions for details."}`;
98
+ break;
99
+ case "FAILING":
100
+ health.status = "critical";
101
+ health.message = `Statement is failing. ${latestException?.message || "Check exceptions for details."}`;
102
+ break;
103
+ case "STOPPED":
104
+ health.status = "warning";
105
+ health.message = "Statement has been stopped.";
106
+ break;
107
+ case "PENDING":
108
+ health.status = "warning";
109
+ health.message = "Statement is pending execution.";
110
+ break;
111
+ default:
112
+ health.status = "unknown";
113
+ health.message = `Statement is in ${phase} state.`;
114
+ }
115
+ return this.createResponse(`Health check for '${statementName}':\n${JSON.stringify(health, null, 2)}`);
116
+ }
117
+ getToolConfig() {
118
+ return {
119
+ name: ToolName.CHECK_FLINK_STATEMENT_HEALTH,
120
+ description: "Perform an aggregate health check for a Flink SQL statement. Returns status (healthy/warning/critical), current phase, recent exceptions, and diagnostic details.",
121
+ inputSchema: checkHealthArguments.shape,
122
+ };
123
+ }
124
+ getRequiredEnvVars() {
125
+ return ["FLINK_API_KEY", "FLINK_API_SECRET"];
126
+ }
127
+ isConfluentCloudOnly() {
128
+ return true;
129
+ }
130
+ }
131
+ //# sourceMappingURL=check-health-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-health-handler.js","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/diagnostics/check-health-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ClientManager } from "../../../../../confluent/client-manager.js";
2
+ import { CallToolResult } from "../../../../../confluent/schema.js";
3
+ import { BaseToolHandler, ToolConfig } from "../../../../../confluent/tools/base-tools.js";
4
+ import { EnvVar } from "../../../../../env-schema.js";
5
+ export declare class DetectIssuesHandler extends BaseToolHandler {
6
+ handle(clientManager: ClientManager, toolArguments: Record<string, unknown> | undefined): Promise<CallToolResult>;
7
+ getToolConfig(): ToolConfig;
8
+ getRequiredEnvVars(): EnvVar[];
9
+ isConfluentCloudOnly(): boolean;
10
+ }
11
+ //# sourceMappingURL=detect-issues-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-issues-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAoD5C,qBAAa,mBAAoB,SAAQ,eAAe;IAChD,MAAM,CACV,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,OAAO,CAAC,cAAc,CAAC;IAyQ1B,aAAa,IAAI,UAAU;IAS3B,kBAAkB,IAAI,MAAM,EAAE;IAI9B,oBAAoB,IAAI,OAAO;CAGhC"}