@mcp-ts/sdk 2.4.2 → 2.4.3

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.
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CWs-AE78.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B6hsYO8V.mjs';
2
2
  import { d as ToolRouter } from '../tool-router-CbG4Tum6.mjs';
3
3
  import '../types-CjczQwNX.mjs';
4
4
  import '@modelcontextprotocol/sdk/types.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BluyCPo9.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DOBvtaQV.js';
2
2
  import { d as ToolRouter } from '../tool-router-ChIhPwgP.js';
3
3
  import '../types-CjczQwNX.js';
4
4
  import '@modelcontextprotocol/sdk/types.js';
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs';
2
2
  import { Middleware, RunAgentInput, AbstractAgent, BaseEvent } from '@ag-ui/client';
3
3
  export { AbstractAgent, BaseEvent, EventType, Middleware, RunAgentInput, Tool, ToolCallEndEvent } from '@ag-ui/client';
4
4
  import { AguiTool } from './agui-adapter.mjs';
5
- import '../multi-session-client-CWs-AE78.mjs';
5
+ import '../multi-session-client-B6hsYO8V.mjs';
6
6
  import '../types-CjczQwNX.mjs';
7
7
  import '@modelcontextprotocol/sdk/types.js';
8
8
  import '@modelcontextprotocol/sdk/client/auth.js';
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs';
2
2
  import { Middleware, RunAgentInput, AbstractAgent, BaseEvent } from '@ag-ui/client';
3
3
  export { AbstractAgent, BaseEvent, EventType, Middleware, RunAgentInput, Tool, ToolCallEndEvent } from '@ag-ui/client';
4
4
  import { AguiTool } from './agui-adapter.js';
5
- import '../multi-session-client-BluyCPo9.js';
5
+ import '../multi-session-client-DOBvtaQV.js';
6
6
  import '../types-CjczQwNX.js';
7
7
  import '@modelcontextprotocol/sdk/types.js';
8
8
  import '@modelcontextprotocol/sdk/client/auth.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CWs-AE78.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B6hsYO8V.mjs';
2
2
  import { ToolSet } from 'ai';
3
3
  import { d as ToolRouter } from '../tool-router-CbG4Tum6.mjs';
4
4
  import '../types-CjczQwNX.mjs';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BluyCPo9.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DOBvtaQV.js';
2
2
  import { ToolSet } from 'ai';
3
3
  import { d as ToolRouter } from '../tool-router-ChIhPwgP.js';
4
4
  import '../types-CjczQwNX.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CWs-AE78.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B6hsYO8V.mjs';
2
2
  import { StructuredTool } from '@langchain/core/tools';
3
3
  import { d as ToolRouter } from '../tool-router-CbG4Tum6.mjs';
4
4
  import '../types-CjczQwNX.mjs';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BluyCPo9.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DOBvtaQV.js';
2
2
  import { StructuredTool } from '@langchain/core/tools';
3
3
  import { d as ToolRouter } from '../tool-router-ChIhPwgP.js';
4
4
  import '../types-CjczQwNX.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-CWs-AE78.mjs';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-B6hsYO8V.mjs';
2
2
  import { z } from 'zod';
3
3
  import '../types-CjczQwNX.mjs';
4
4
  import '@modelcontextprotocol/sdk/types.js';
@@ -1,4 +1,4 @@
1
- import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-BluyCPo9.js';
1
+ import { M as MCPClient, a as MultiSessionClient } from '../multi-session-client-DOBvtaQV.js';
2
2
  import { z } from 'zod';
3
3
  import '../types-CjczQwNX.js';
4
4
  import '@modelcontextprotocol/sdk/types.js';
@@ -85,13 +85,13 @@ async function initSupabase() {
85
85
  console.log(" npx supabase db push");
86
86
  console.log("\n3. Add your Supabase credentials to .env:");
87
87
  console.log(" SUPABASE_URL=https://<your-project-id>.supabase.co");
88
- console.log(" SUPABASE_SERVICE_ROLE_KEY=<your-service-role-key>");
89
- console.log("\n\u26A0\uFE0F Important: Use the service_role key (not the anon key) for server-side storage.");
90
- console.log(" The service_role key bypasses RLS policies and is required for mcp-ts to work correctly.");
91
- console.log(" Find it in: Supabase Dashboard -> Project Settings -> API -> service_role");
88
+ console.log(" SUPABASE_SECRET_KEY=<your-secret-key>");
89
+ console.log("\n\u26A0\uFE0F Important: Use the secret key (not the anon key) for server-side storage.");
90
+ console.log(" The secret key bypasses RLS policies and is required for mcp-ts to work correctly.");
91
+ console.log(" Find it in: Supabase Dashboard -> Project Settings -> API -> Secret key");
92
92
  } else if (files.length > 0) {
93
93
  console.log("\n\u{1F44D} All migration files are already present in your project.");
94
- console.log(" Ensure SUPABASE_SERVICE_ROLE_KEY (not SUPABASE_ANON_KEY) is set in your .env");
94
+ console.log(" Ensure SUPABASE_SECRET_KEY (not SUPABASE_ANON_KEY) is set in your .env");
95
95
  } else {
96
96
  console.log("\u26A0\uFE0F No migration files found to copy.");
97
97
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/mcp-ts.ts"],"names":["path","fs"],"mappings":"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","file":"mcp-ts.js","sourcesContent":["#!/usr/bin/env node\nimport * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * MCP-TS CLI Utility\n * \n * Provides helper commands for users of the @mcp-ts/sdk library.\n */\nasync function run() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (command === 'supabase-init') {\n await initSupabase();\n } else {\n showHelp();\n }\n}\n\nfunction showHelp() {\n console.log(`\n🚀 MCP-TS CLI Utility\nUsage: npx mcp-ts <command>\n\nCommands:\n supabase-init Initialize Supabase migrations in your project\n `);\n}\n\nasync function initSupabase() {\n console.log('🚀 Initializing Supabase storage for MCP-TS...');\n\n // When running from dist/bin/mcp-ts.js (compiled), __dirname is dist/bin.\n // The supabase/ migrations are at the root of the package.\n // We need to look up two levels to find 'supabase' folder in the package.\n const pkgRoot = path.resolve(__dirname, '../..');\n const sourceDir = resolveFirstExistingPath([\n path.join(pkgRoot, 'migrations', 'supabase'),\n path.join(pkgRoot, 'supabase', 'migrations'),\n ]);\n \n if (!fs.existsSync(sourceDir)) {\n console.error(`❌ Error: Could not find migration files in package at: ${sourceDir}`);\n console.log('Please ensure you are running this from a project where @mcp-ts/sdk is installed.');\n process.exit(1);\n }\n\n const targetDir = path.join(process.cwd(), 'supabase', 'migrations');\n\n try {\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n console.log(`📁 Created directory: ${targetDir}`);\n }\n\n const files = fs.readdirSync(sourceDir);\n let copiedCount = 0;\n\n for (const file of files) {\n if (file.endsWith('.sql')) {\n const srcPath = path.join(sourceDir, file);\n const destPath = path.join(targetDir, file);\n \n if (fs.existsSync(destPath)) {\n console.log(`⏭️ Skipping existing migration: ${file}`);\n continue;\n }\n\n fs.copyFileSync(srcPath, destPath);\n console.log(`✅ Copied: ${file}`);\n copiedCount++;\n }\n }\n\n if (copiedCount > 0) {\n console.log('\\n✨ Database migrations successfully initialized!');\n console.log('\\nNext steps:');\n console.log('1. Link your Supabase project:');\n console.log(' npx supabase link --project-ref <your-project-id>');\n console.log('\\n2. Push the migrations to your remote database:');\n console.log(' npx supabase db push');\n console.log('\\n3. Add your Supabase credentials to .env:');\n console.log(' SUPABASE_URL=https://<your-project-id>.supabase.co');\n console.log(' SUPABASE_SERVICE_ROLE_KEY=<your-service-role-key>');\n console.log('\\n⚠️ Important: Use the service_role key (not the anon key) for server-side storage.');\n console.log(' The service_role key bypasses RLS policies and is required for mcp-ts to work correctly.');\n console.log(' Find it in: Supabase Dashboard -> Project Settings -> API -> service_role');\n } else if (files.length > 0) {\n console.log('\\n👍 All migration files are already present in your project.');\n console.log(' Ensure SUPABASE_SERVICE_ROLE_KEY (not SUPABASE_ANON_KEY) is set in your .env');\n } else {\n console.log('⚠️ No migration files found to copy.');\n }\n\n } catch (error: any) {\n console.error(`❌ Error initializing Supabase: ${error.message}`);\n process.exit(1);\n }\n}\n\nfunction resolveFirstExistingPath(paths: string[]): string {\n return paths.find(candidate => fs.existsSync(candidate)) || paths[0];\n}\n\nrun().catch(err => {\n console.error(err);\n process.exit(1);\n});\n"]}
1
+ {"version":3,"sources":["../../src/bin/mcp-ts.ts"],"names":["path","fs"],"mappings":"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","file":"mcp-ts.js","sourcesContent":["#!/usr/bin/env node\nimport * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * MCP-TS CLI Utility\n * \n * Provides helper commands for users of the @mcp-ts/sdk library.\n */\nasync function run() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (command === 'supabase-init') {\n await initSupabase();\n } else {\n showHelp();\n }\n}\n\nfunction showHelp() {\n console.log(`\n🚀 MCP-TS CLI Utility\nUsage: npx mcp-ts <command>\n\nCommands:\n supabase-init Initialize Supabase migrations in your project\n `);\n}\n\nasync function initSupabase() {\n console.log('🚀 Initializing Supabase storage for MCP-TS...');\n\n // When running from dist/bin/mcp-ts.js (compiled), __dirname is dist/bin.\n // The supabase/ migrations are at the root of the package.\n // We need to look up two levels to find 'supabase' folder in the package.\n const pkgRoot = path.resolve(__dirname, '../..');\n const sourceDir = resolveFirstExistingPath([\n path.join(pkgRoot, 'migrations', 'supabase'),\n path.join(pkgRoot, 'supabase', 'migrations'),\n ]);\n \n if (!fs.existsSync(sourceDir)) {\n console.error(`❌ Error: Could not find migration files in package at: ${sourceDir}`);\n console.log('Please ensure you are running this from a project where @mcp-ts/sdk is installed.');\n process.exit(1);\n }\n\n const targetDir = path.join(process.cwd(), 'supabase', 'migrations');\n\n try {\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n console.log(`📁 Created directory: ${targetDir}`);\n }\n\n const files = fs.readdirSync(sourceDir);\n let copiedCount = 0;\n\n for (const file of files) {\n if (file.endsWith('.sql')) {\n const srcPath = path.join(sourceDir, file);\n const destPath = path.join(targetDir, file);\n \n if (fs.existsSync(destPath)) {\n console.log(`⏭️ Skipping existing migration: ${file}`);\n continue;\n }\n\n fs.copyFileSync(srcPath, destPath);\n console.log(`✅ Copied: ${file}`);\n copiedCount++;\n }\n }\n\n if (copiedCount > 0) {\n console.log('\\n✨ Database migrations successfully initialized!');\n console.log('\\nNext steps:');\n console.log('1. Link your Supabase project:');\n console.log(' npx supabase link --project-ref <your-project-id>');\n console.log('\\n2. Push the migrations to your remote database:');\n console.log(' npx supabase db push');\n console.log('\\n3. Add your Supabase credentials to .env:');\n console.log(' SUPABASE_URL=https://<your-project-id>.supabase.co');\n console.log(' SUPABASE_SECRET_KEY=<your-secret-key>');\n console.log('\\n⚠️ Important: Use the secret key (not the anon key) for server-side storage.');\n console.log(' The secret key bypasses RLS policies and is required for mcp-ts to work correctly.');\n console.log(' Find it in: Supabase Dashboard -> Project Settings -> API -> Secret key');\n } else if (files.length > 0) {\n console.log('\\n👍 All migration files are already present in your project.');\n console.log(' Ensure SUPABASE_SECRET_KEY (not SUPABASE_ANON_KEY) is set in your .env');\n } else {\n console.log('⚠️ No migration files found to copy.');\n }\n\n } catch (error: any) {\n console.error(`❌ Error initializing Supabase: ${error.message}`);\n process.exit(1);\n }\n}\n\nfunction resolveFirstExistingPath(paths: string[]): string {\n return paths.find(candidate => fs.existsSync(candidate)) || paths[0];\n}\n\nrun().catch(err => {\n console.error(err);\n process.exit(1);\n});\n"]}
@@ -62,13 +62,13 @@ async function initSupabase() {
62
62
  console.log(" npx supabase db push");
63
63
  console.log("\n3. Add your Supabase credentials to .env:");
64
64
  console.log(" SUPABASE_URL=https://<your-project-id>.supabase.co");
65
- console.log(" SUPABASE_SERVICE_ROLE_KEY=<your-service-role-key>");
66
- console.log("\n\u26A0\uFE0F Important: Use the service_role key (not the anon key) for server-side storage.");
67
- console.log(" The service_role key bypasses RLS policies and is required for mcp-ts to work correctly.");
68
- console.log(" Find it in: Supabase Dashboard -> Project Settings -> API -> service_role");
65
+ console.log(" SUPABASE_SECRET_KEY=<your-secret-key>");
66
+ console.log("\n\u26A0\uFE0F Important: Use the secret key (not the anon key) for server-side storage.");
67
+ console.log(" The secret key bypasses RLS policies and is required for mcp-ts to work correctly.");
68
+ console.log(" Find it in: Supabase Dashboard -> Project Settings -> API -> Secret key");
69
69
  } else if (files.length > 0) {
70
70
  console.log("\n\u{1F44D} All migration files are already present in your project.");
71
- console.log(" Ensure SUPABASE_SERVICE_ROLE_KEY (not SUPABASE_ANON_KEY) is set in your .env");
71
+ console.log(" Ensure SUPABASE_SECRET_KEY (not SUPABASE_ANON_KEY) is set in your .env");
72
72
  } else {
73
73
  console.log("\u26A0\uFE0F No migration files found to copy.");
74
74
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/mcp-ts.ts"],"names":[],"mappings":"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","file":"mcp-ts.mjs","sourcesContent":["#!/usr/bin/env node\nimport * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * MCP-TS CLI Utility\n * \n * Provides helper commands for users of the @mcp-ts/sdk library.\n */\nasync function run() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (command === 'supabase-init') {\n await initSupabase();\n } else {\n showHelp();\n }\n}\n\nfunction showHelp() {\n console.log(`\n🚀 MCP-TS CLI Utility\nUsage: npx mcp-ts <command>\n\nCommands:\n supabase-init Initialize Supabase migrations in your project\n `);\n}\n\nasync function initSupabase() {\n console.log('🚀 Initializing Supabase storage for MCP-TS...');\n\n // When running from dist/bin/mcp-ts.js (compiled), __dirname is dist/bin.\n // The supabase/ migrations are at the root of the package.\n // We need to look up two levels to find 'supabase' folder in the package.\n const pkgRoot = path.resolve(__dirname, '../..');\n const sourceDir = resolveFirstExistingPath([\n path.join(pkgRoot, 'migrations', 'supabase'),\n path.join(pkgRoot, 'supabase', 'migrations'),\n ]);\n \n if (!fs.existsSync(sourceDir)) {\n console.error(`❌ Error: Could not find migration files in package at: ${sourceDir}`);\n console.log('Please ensure you are running this from a project where @mcp-ts/sdk is installed.');\n process.exit(1);\n }\n\n const targetDir = path.join(process.cwd(), 'supabase', 'migrations');\n\n try {\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n console.log(`📁 Created directory: ${targetDir}`);\n }\n\n const files = fs.readdirSync(sourceDir);\n let copiedCount = 0;\n\n for (const file of files) {\n if (file.endsWith('.sql')) {\n const srcPath = path.join(sourceDir, file);\n const destPath = path.join(targetDir, file);\n \n if (fs.existsSync(destPath)) {\n console.log(`⏭️ Skipping existing migration: ${file}`);\n continue;\n }\n\n fs.copyFileSync(srcPath, destPath);\n console.log(`✅ Copied: ${file}`);\n copiedCount++;\n }\n }\n\n if (copiedCount > 0) {\n console.log('\\n✨ Database migrations successfully initialized!');\n console.log('\\nNext steps:');\n console.log('1. Link your Supabase project:');\n console.log(' npx supabase link --project-ref <your-project-id>');\n console.log('\\n2. Push the migrations to your remote database:');\n console.log(' npx supabase db push');\n console.log('\\n3. Add your Supabase credentials to .env:');\n console.log(' SUPABASE_URL=https://<your-project-id>.supabase.co');\n console.log(' SUPABASE_SERVICE_ROLE_KEY=<your-service-role-key>');\n console.log('\\n⚠️ Important: Use the service_role key (not the anon key) for server-side storage.');\n console.log(' The service_role key bypasses RLS policies and is required for mcp-ts to work correctly.');\n console.log(' Find it in: Supabase Dashboard -> Project Settings -> API -> service_role');\n } else if (files.length > 0) {\n console.log('\\n👍 All migration files are already present in your project.');\n console.log(' Ensure SUPABASE_SERVICE_ROLE_KEY (not SUPABASE_ANON_KEY) is set in your .env');\n } else {\n console.log('⚠️ No migration files found to copy.');\n }\n\n } catch (error: any) {\n console.error(`❌ Error initializing Supabase: ${error.message}`);\n process.exit(1);\n }\n}\n\nfunction resolveFirstExistingPath(paths: string[]): string {\n return paths.find(candidate => fs.existsSync(candidate)) || paths[0];\n}\n\nrun().catch(err => {\n console.error(err);\n process.exit(1);\n});\n"]}
1
+ {"version":3,"sources":["../../src/bin/mcp-ts.ts"],"names":[],"mappings":"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","file":"mcp-ts.mjs","sourcesContent":["#!/usr/bin/env node\nimport * as fs from 'fs';\nimport * as path from 'path';\n\n/**\n * MCP-TS CLI Utility\n * \n * Provides helper commands for users of the @mcp-ts/sdk library.\n */\nasync function run() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (command === 'supabase-init') {\n await initSupabase();\n } else {\n showHelp();\n }\n}\n\nfunction showHelp() {\n console.log(`\n🚀 MCP-TS CLI Utility\nUsage: npx mcp-ts <command>\n\nCommands:\n supabase-init Initialize Supabase migrations in your project\n `);\n}\n\nasync function initSupabase() {\n console.log('🚀 Initializing Supabase storage for MCP-TS...');\n\n // When running from dist/bin/mcp-ts.js (compiled), __dirname is dist/bin.\n // The supabase/ migrations are at the root of the package.\n // We need to look up two levels to find 'supabase' folder in the package.\n const pkgRoot = path.resolve(__dirname, '../..');\n const sourceDir = resolveFirstExistingPath([\n path.join(pkgRoot, 'migrations', 'supabase'),\n path.join(pkgRoot, 'supabase', 'migrations'),\n ]);\n \n if (!fs.existsSync(sourceDir)) {\n console.error(`❌ Error: Could not find migration files in package at: ${sourceDir}`);\n console.log('Please ensure you are running this from a project where @mcp-ts/sdk is installed.');\n process.exit(1);\n }\n\n const targetDir = path.join(process.cwd(), 'supabase', 'migrations');\n\n try {\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n console.log(`📁 Created directory: ${targetDir}`);\n }\n\n const files = fs.readdirSync(sourceDir);\n let copiedCount = 0;\n\n for (const file of files) {\n if (file.endsWith('.sql')) {\n const srcPath = path.join(sourceDir, file);\n const destPath = path.join(targetDir, file);\n \n if (fs.existsSync(destPath)) {\n console.log(`⏭️ Skipping existing migration: ${file}`);\n continue;\n }\n\n fs.copyFileSync(srcPath, destPath);\n console.log(`✅ Copied: ${file}`);\n copiedCount++;\n }\n }\n\n if (copiedCount > 0) {\n console.log('\\n✨ Database migrations successfully initialized!');\n console.log('\\nNext steps:');\n console.log('1. Link your Supabase project:');\n console.log(' npx supabase link --project-ref <your-project-id>');\n console.log('\\n2. Push the migrations to your remote database:');\n console.log(' npx supabase db push');\n console.log('\\n3. Add your Supabase credentials to .env:');\n console.log(' SUPABASE_URL=https://<your-project-id>.supabase.co');\n console.log(' SUPABASE_SECRET_KEY=<your-secret-key>');\n console.log('\\n⚠️ Important: Use the secret key (not the anon key) for server-side storage.');\n console.log(' The secret key bypasses RLS policies and is required for mcp-ts to work correctly.');\n console.log(' Find it in: Supabase Dashboard -> Project Settings -> API -> Secret key');\n } else if (files.length > 0) {\n console.log('\\n👍 All migration files are already present in your project.');\n console.log(' Ensure SUPABASE_SECRET_KEY (not SUPABASE_ANON_KEY) is set in your .env');\n } else {\n console.log('⚠️ No migration files found to copy.');\n }\n\n } catch (error: any) {\n console.error(`❌ Error initializing Supabase: ${error.message}`);\n process.exit(1);\n }\n}\n\nfunction resolveFirstExistingPath(paths: string[]): string {\n return paths.find(candidate => fs.existsSync(candidate)) || paths[0];\n}\n\nrun().catch(err => {\n console.error(err);\n process.exit(1);\n});\n"]}
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, c as SessionMutationListener, d as SessionMutationType, e as SessionStore, f as StorageOAuthClientProvider } from './multi-session-client-CWs-AE78.mjs';
1
+ export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, c as SessionMutationListener, d as SessionMutationType, e as SessionStore, f as StorageOAuthClientProvider } from './multi-session-client-B6hsYO8V.mjs';
2
2
  export { A as AuthenticationError, C as ConfigurationError, a as ConnectionError, I as InvalidStateError, M as McpError, N as NotConnectedError, R as RpcErrorCode, b as RpcErrorCodes, S as SessionNotFoundError, c as SessionValidationError, T as ToolExecutionError, U as UnauthorizedError, s as sanitizeServerLabel } from './utils-DELRKQPU.mjs';
3
3
  export { ClientMetadata, NextMcpHandlerOptions, SSEConnectionManager, SSEHandlerOptions, createNextMcpHandler, createSSEHandler, onSessionMutation, sessions } from './server/index.mjs';
4
4
  export { C as CallToolParams, a as CallToolRequest, b as CallToolResponse, c as ConnectAuthRequiredResponse, d as ConnectErrorResponse, e as ConnectParams, f as ConnectRequest, g as ConnectResponse, h as ConnectResult, i as ConnectSuccessResponse, D as DisconnectParams, j as DisconnectResult, k as Disposable, l as DisposableStore, E as Emitter, m as Event, F as FinishAuthParams, n as FinishAuthResult, G as GetPromptParams, o as GetSessionResult, L as ListPromptsResult, p as ListResourcesResult, q as ListToolsResponse, r as ListToolsRpcResult, M as McpConnectionEvent, s as McpConnectionState, t as McpObservabilityEvent, u as McpRpcMethod, v as McpRpcParams, w as McpRpcRequest, x as McpRpcResponse, R as ReadResourceParams, S as SessionInfo, y as SessionListResult, z as SessionParams, T as ToolClient, A as ToolClientProvider, B as ToolInfo, H as TransportType, I as isCallToolSuccess, J as isConnectAuthRequired, K as isConnectError, N as isConnectSuccess, O as isListToolsSuccess } from './types-CjczQwNX.mjs';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, c as SessionMutationListener, d as SessionMutationType, e as SessionStore, f as StorageOAuthClientProvider } from './multi-session-client-BluyCPo9.js';
1
+ export { M as MCPClient, a as MultiSessionClient, S as Session, b as SessionMutationEvent, c as SessionMutationListener, d as SessionMutationType, e as SessionStore, f as StorageOAuthClientProvider } from './multi-session-client-DOBvtaQV.js';
2
2
  export { A as AuthenticationError, C as ConfigurationError, a as ConnectionError, I as InvalidStateError, M as McpError, N as NotConnectedError, R as RpcErrorCode, b as RpcErrorCodes, S as SessionNotFoundError, c as SessionValidationError, T as ToolExecutionError, U as UnauthorizedError, s as sanitizeServerLabel } from './utils-DELRKQPU.js';
3
3
  export { ClientMetadata, NextMcpHandlerOptions, SSEConnectionManager, SSEHandlerOptions, createNextMcpHandler, createSSEHandler, onSessionMutation, sessions } from './server/index.js';
4
4
  export { C as CallToolParams, a as CallToolRequest, b as CallToolResponse, c as ConnectAuthRequiredResponse, d as ConnectErrorResponse, e as ConnectParams, f as ConnectRequest, g as ConnectResponse, h as ConnectResult, i as ConnectSuccessResponse, D as DisconnectParams, j as DisconnectResult, k as Disposable, l as DisposableStore, E as Emitter, m as Event, F as FinishAuthParams, n as FinishAuthResult, G as GetPromptParams, o as GetSessionResult, L as ListPromptsResult, p as ListResourcesResult, q as ListToolsResponse, r as ListToolsRpcResult, M as McpConnectionEvent, s as McpConnectionState, t as McpObservabilityEvent, u as McpRpcMethod, v as McpRpcParams, w as McpRpcRequest, x as McpRpcResponse, R as ReadResourceParams, S as SessionInfo, y as SessionListResult, z as SessionParams, T as ToolClient, A as ToolClientProvider, B as ToolInfo, H as TransportType, I as isCallToolSuccess, J as isConnectAuthRequired, K as isConnectError, N as isConnectSuccess, O as isListToolsSuccess } from './types-CjczQwNX.js';
package/dist/index.js CHANGED
@@ -1741,12 +1741,12 @@ async function createStorage() {
1741
1741
  }
1742
1742
  if (type === "supabase") {
1743
1743
  const url = process.env.SUPABASE_URL;
1744
- const key = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_ANON_KEY;
1744
+ const key = process.env.SUPABASE_SECRET_KEY || process.env.SUPABASE_ANON_KEY;
1745
1745
  if (!url || !key) {
1746
- console.warn('[mcp-ts][Storage] Explicit selection "supabase" requires SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY.');
1746
+ console.warn('[mcp-ts][Storage] Explicit selection "supabase" requires SUPABASE_URL and SUPABASE_SECRET_KEY.');
1747
1747
  } else {
1748
- if (!process.env.SUPABASE_SERVICE_ROLE_KEY) {
1749
- console.warn('[mcp-ts][Storage] \u26A0\uFE0F Warning: Using "SUPABASE_ANON_KEY" for server-side storage. You may encounter RLS policy violations. "SUPABASE_SERVICE_ROLE_KEY" is recommended.');
1748
+ if (!process.env.SUPABASE_SECRET_KEY) {
1749
+ console.warn('[mcp-ts][Storage] \u26A0\uFE0F Warning: Using "SUPABASE_ANON_KEY" for server-side storage. You may encounter RLS policy violations. "SUPABASE_SECRET_KEY" is recommended.');
1750
1750
  }
1751
1751
  try {
1752
1752
  const { createClient } = await import('@supabase/supabase-js');
@@ -1801,13 +1801,13 @@ async function createStorage() {
1801
1801
  console.log(`[mcp-ts][Storage] Auto-detection: "sqlite" (${process.env.MCP_TS_STORAGE_SQLITE_PATH})`);
1802
1802
  return await initializeStorage(new SqliteStorage({ path: process.env.MCP_TS_STORAGE_SQLITE_PATH }));
1803
1803
  }
1804
- if (process.env.SUPABASE_URL && (process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_ANON_KEY)) {
1804
+ if (process.env.SUPABASE_URL && (process.env.SUPABASE_SECRET_KEY || process.env.SUPABASE_ANON_KEY)) {
1805
1805
  try {
1806
1806
  const { createClient } = await import('@supabase/supabase-js');
1807
1807
  const url = process.env.SUPABASE_URL;
1808
- const key = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_ANON_KEY;
1809
- if (!process.env.SUPABASE_SERVICE_ROLE_KEY) {
1810
- console.warn('[mcp-ts][Storage] \u26A0\uFE0F Warning: Using "SUPABASE_ANON_KEY" for server-side storage. You may encounter RLS policy violations. "SUPABASE_SERVICE_ROLE_KEY" is recommended.');
1808
+ const key = process.env.SUPABASE_SECRET_KEY || process.env.SUPABASE_ANON_KEY;
1809
+ if (!process.env.SUPABASE_SECRET_KEY) {
1810
+ console.warn('[mcp-ts][Storage] \u26A0\uFE0F Warning: Using "SUPABASE_ANON_KEY" for server-side storage. You may encounter RLS policy violations. "SUPABASE_SECRET_KEY" is recommended.');
1811
1811
  }
1812
1812
  const client = createClient(url, key);
1813
1813
  console.log('[mcp-ts][Storage] Auto-detection: "supabase" (via SUPABASE_URL)');
@@ -2375,7 +2375,6 @@ var MCPClient = class {
2375
2375
  const response = await fetch(url, { ...init, signal });
2376
2376
  const hasSessionHeader = init?.headers && new Headers(init.headers).has("mcp-session-id");
2377
2377
  if (response.status === 404 && hasSessionHeader) {
2378
- this.client = null;
2379
2378
  throw new Error("MCP_SESSION_EXPIRED: Downstream session was not found on the server.");
2380
2379
  }
2381
2380
  return response;
@@ -2756,7 +2755,9 @@ var MCPClient = class {
2756
2755
  method: "tools/list",
2757
2756
  params: {}
2758
2757
  };
2759
- const result = await this.client.request(request, types_js.ListToolsResultSchema);
2758
+ const result = await this.withRetry(
2759
+ () => this.client.request(request, types_js.ListToolsResultSchema)
2760
+ );
2760
2761
  if (this.serverId) {
2761
2762
  this._onConnectionEvent.fire({
2762
2763
  type: "tools_discovered",
@@ -2796,7 +2797,9 @@ var MCPClient = class {
2796
2797
  }
2797
2798
  };
2798
2799
  try {
2799
- const result = await this.client.request(request, types_js.CallToolResultSchema);
2800
+ const result = await this.withRetry(
2801
+ () => this.client.request(request, types_js.CallToolResultSchema)
2802
+ );
2800
2803
  this._onObservabilityEvent.fire({
2801
2804
  type: "mcp:client:tool_call",
2802
2805
  level: "info",
@@ -2848,7 +2851,9 @@ var MCPClient = class {
2848
2851
  method: "prompts/list",
2849
2852
  params: {}
2850
2853
  };
2851
- const result = await this.client.request(request, types_js.ListPromptsResultSchema);
2854
+ const result = await this.withRetry(
2855
+ () => this.client.request(request, types_js.ListPromptsResultSchema)
2856
+ );
2852
2857
  this.emitStateChange("READY");
2853
2858
  this.emitProgress(`Discovered ${result.prompts.length} prompts`);
2854
2859
  return result;
@@ -2877,7 +2882,9 @@ var MCPClient = class {
2877
2882
  arguments: args
2878
2883
  }
2879
2884
  };
2880
- return await this.client.request(request, types_js.GetPromptResultSchema);
2885
+ return await this.withRetry(
2886
+ () => this.client.request(request, types_js.GetPromptResultSchema)
2887
+ );
2881
2888
  }
2882
2889
  /**
2883
2890
  * Lists all available resources from the connected MCP server
@@ -2894,7 +2901,9 @@ var MCPClient = class {
2894
2901
  method: "resources/list",
2895
2902
  params: {}
2896
2903
  };
2897
- const result = await this.client.request(request, types_js.ListResourcesResultSchema);
2904
+ const result = await this.withRetry(
2905
+ () => this.client.request(request, types_js.ListResourcesResultSchema)
2906
+ );
2898
2907
  this.emitStateChange("READY");
2899
2908
  this.emitProgress(`Discovered ${result.resources.length} resources`);
2900
2909
  return result;
@@ -2921,7 +2930,36 @@ var MCPClient = class {
2921
2930
  uri
2922
2931
  }
2923
2932
  };
2924
- return await this.client.request(request, types_js.ReadResourceResultSchema);
2933
+ return await this.withRetry(
2934
+ () => this.client.request(request, types_js.ReadResourceResultSchema)
2935
+ );
2936
+ }
2937
+ /**
2938
+ * Wraps an MCP request with automatic transport-session recovery.
2939
+ *
2940
+ * When the downstream MCP server rejects the request with a 404 indicating
2941
+ * the transport session has expired, this method tears down the stale SDK
2942
+ * client and transport, calls {@link reconnect} to negotiate a fresh session,
2943
+ * and retries the request once.
2944
+ *
2945
+ * Non-transient errors (network failures, auth errors, etc.) propagate as-is.
2946
+ */
2947
+ async withRetry(fn) {
2948
+ try {
2949
+ return await fn();
2950
+ } catch (error) {
2951
+ if (!(error instanceof Error && error.message.includes("MCP_SESSION_EXPIRED"))) throw error;
2952
+ if (this.client) {
2953
+ try {
2954
+ await this.client.close();
2955
+ } catch {
2956
+ }
2957
+ this.transport = null;
2958
+ this.client = null;
2959
+ }
2960
+ await this.reconnect();
2961
+ return await fn();
2962
+ }
2925
2963
  }
2926
2964
  /**
2927
2965
  * Reconnects to MCP server using existing OAuth provider from Redis
@@ -2934,6 +2972,12 @@ var MCPClient = class {
2934
2972
  if (!this.oauthProvider) {
2935
2973
  throw new Error("OAuth provider not initialized");
2936
2974
  }
2975
+ if (this.client) {
2976
+ try {
2977
+ await this.client.close();
2978
+ } catch {
2979
+ }
2980
+ }
2937
2981
  this.client = new index_js.Client(
2938
2982
  {
2939
2983
  name: MCP_CLIENT_NAME,
@@ -3130,6 +3174,18 @@ var MultiSessionClient = class {
3130
3174
  getClients() {
3131
3175
  return this.clients;
3132
3176
  }
3177
+ /**
3178
+ * Removes and disconnects a single session by ID.
3179
+ *
3180
+ * @returns `true` if the session was found and removed, `false` if not found.
3181
+ */
3182
+ async removeSession(sessionId) {
3183
+ const idx = this.clients.findIndex((c) => c.getSessionId() === sessionId);
3184
+ if (idx === -1) return false;
3185
+ const [client] = this.clients.splice(idx, 1);
3186
+ await client.disconnect();
3187
+ return true;
3188
+ }
3133
3189
  /**
3134
3190
  * Gracefully disconnects all active MCP clients and clears the internal list.
3135
3191
  *