@mcp-ts/sdk 2.2.0 → 2.3.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.
- package/dist/adapters/agui-adapter.d.mts +1 -1
- package/dist/adapters/agui-adapter.d.ts +1 -1
- package/dist/adapters/agui-adapter.js +9 -5
- package/dist/adapters/agui-adapter.js.map +1 -1
- package/dist/adapters/agui-adapter.mjs +9 -5
- package/dist/adapters/agui-adapter.mjs.map +1 -1
- package/dist/adapters/agui-middleware.d.mts +1 -1
- package/dist/adapters/agui-middleware.d.ts +1 -1
- package/dist/adapters/ai-adapter.d.mts +1 -1
- package/dist/adapters/ai-adapter.d.ts +1 -1
- package/dist/adapters/ai-adapter.js +9 -5
- package/dist/adapters/ai-adapter.js.map +1 -1
- package/dist/adapters/ai-adapter.mjs +9 -5
- package/dist/adapters/ai-adapter.mjs.map +1 -1
- package/dist/adapters/langchain-adapter.d.mts +1 -1
- package/dist/adapters/langchain-adapter.d.ts +1 -1
- package/dist/adapters/langchain-adapter.js +9 -5
- package/dist/adapters/langchain-adapter.js.map +1 -1
- package/dist/adapters/langchain-adapter.mjs +9 -5
- package/dist/adapters/langchain-adapter.mjs.map +1 -1
- package/dist/client/react.js.map +1 -1
- package/dist/client/react.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +83 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +83 -7
- package/dist/index.mjs.map +1 -1
- package/dist/server/index.d.mts +13 -1
- package/dist/server/index.d.ts +13 -1
- package/dist/server/index.js +66 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +66 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/shared/index.d.mts +2 -2
- package/dist/shared/index.d.ts +2 -2
- package/dist/shared/index.js +17 -5
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +17 -5
- package/dist/shared/index.mjs.map +1 -1
- package/dist/{tool-router-C8hIA-tg.d.mts → tool-router-BfE_9tay.d.mts} +5 -0
- package/dist/{tool-router-CdX8e9bk.d.ts → tool-router-CP7qLk1J.d.ts} +5 -0
- package/package.json +1 -1
- package/src/server/index.ts +8 -1
- package/src/server/storage/index.ts +77 -2
- package/src/server/storage/types.ts +14 -0
- package/src/shared/meta-tools.ts +16 -7
- package/src/shared/tool-router.ts +13 -0
package/dist/index.mjs
CHANGED
|
@@ -1174,6 +1174,59 @@ function warnIfNeonConnectionStringIsInsecure(connectionString) {
|
|
|
1174
1174
|
}
|
|
1175
1175
|
var storageInstance = null;
|
|
1176
1176
|
var storagePromise = null;
|
|
1177
|
+
var sessionMutationListeners = /* @__PURE__ */ new Set();
|
|
1178
|
+
function emitSessionMutation(event) {
|
|
1179
|
+
for (const listener of sessionMutationListeners) {
|
|
1180
|
+
try {
|
|
1181
|
+
const result = listener(event);
|
|
1182
|
+
if (result && typeof result.catch === "function") {
|
|
1183
|
+
void result.catch((error) => {
|
|
1184
|
+
console.error("[mcp-ts][Storage] Session mutation listener failed:", error);
|
|
1185
|
+
});
|
|
1186
|
+
}
|
|
1187
|
+
} catch (error) {
|
|
1188
|
+
console.error("[mcp-ts][Storage] Session mutation listener failed:", error);
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
function createSessionMutationEvent(prop, args) {
|
|
1193
|
+
const timestamp = Date.now();
|
|
1194
|
+
if (prop === "create") {
|
|
1195
|
+
const [session, ttl] = args;
|
|
1196
|
+
if (!session?.userId || !session?.sessionId) return null;
|
|
1197
|
+
return {
|
|
1198
|
+
type: "create",
|
|
1199
|
+
userId: session.userId,
|
|
1200
|
+
sessionId: session.sessionId,
|
|
1201
|
+
session,
|
|
1202
|
+
ttl,
|
|
1203
|
+
timestamp
|
|
1204
|
+
};
|
|
1205
|
+
}
|
|
1206
|
+
if (prop === "update") {
|
|
1207
|
+
const [userId, sessionId, patch, ttl] = args;
|
|
1208
|
+
if (!userId || !sessionId) return null;
|
|
1209
|
+
return {
|
|
1210
|
+
type: "update",
|
|
1211
|
+
userId,
|
|
1212
|
+
sessionId,
|
|
1213
|
+
patch,
|
|
1214
|
+
ttl,
|
|
1215
|
+
timestamp
|
|
1216
|
+
};
|
|
1217
|
+
}
|
|
1218
|
+
if (prop === "delete") {
|
|
1219
|
+
const [userId, sessionId] = args;
|
|
1220
|
+
if (!userId || !sessionId) return null;
|
|
1221
|
+
return {
|
|
1222
|
+
type: "delete",
|
|
1223
|
+
userId,
|
|
1224
|
+
sessionId,
|
|
1225
|
+
timestamp
|
|
1226
|
+
};
|
|
1227
|
+
}
|
|
1228
|
+
return null;
|
|
1229
|
+
}
|
|
1177
1230
|
async function initializeStorage(store) {
|
|
1178
1231
|
if (typeof store.init === "function") {
|
|
1179
1232
|
await store.init();
|
|
@@ -1311,13 +1364,24 @@ async function getStorage() {
|
|
|
1311
1364
|
storageInstance = await storagePromise;
|
|
1312
1365
|
return storageInstance;
|
|
1313
1366
|
}
|
|
1367
|
+
function onSessionMutation(listener) {
|
|
1368
|
+
sessionMutationListeners.add(listener);
|
|
1369
|
+
return () => {
|
|
1370
|
+
sessionMutationListeners.delete(listener);
|
|
1371
|
+
};
|
|
1372
|
+
}
|
|
1314
1373
|
var sessions = new Proxy({}, {
|
|
1315
1374
|
get(_target, prop) {
|
|
1316
1375
|
return async (...args) => {
|
|
1317
1376
|
const instance = await getStorage();
|
|
1318
1377
|
const value = instance[prop];
|
|
1319
1378
|
if (typeof value === "function") {
|
|
1320
|
-
|
|
1379
|
+
const result = await value.apply(instance, args);
|
|
1380
|
+
const event = createSessionMutationEvent(prop, args);
|
|
1381
|
+
if (event) {
|
|
1382
|
+
emitSessionMutation(event);
|
|
1383
|
+
}
|
|
1384
|
+
return result;
|
|
1321
1385
|
}
|
|
1322
1386
|
return value;
|
|
1323
1387
|
};
|
|
@@ -4690,8 +4754,13 @@ function createExecuteToolDefinition() {
|
|
|
4690
4754
|
};
|
|
4691
4755
|
}
|
|
4692
4756
|
async function executeMetaTool(toolName, args, router, callToolFn) {
|
|
4693
|
-
const resolveToolSchema = (name, namespace, options) => {
|
|
4757
|
+
const resolveToolSchema = async (name, namespace, options) => {
|
|
4694
4758
|
try {
|
|
4759
|
+
if (typeof router.resolveToolSchema === "function") {
|
|
4760
|
+
return {
|
|
4761
|
+
tool: await router.resolveToolSchema(name, namespace, options)
|
|
4762
|
+
};
|
|
4763
|
+
}
|
|
4695
4764
|
return { tool: router.getToolSchema(name, namespace, options) };
|
|
4696
4765
|
} catch (err) {
|
|
4697
4766
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
@@ -4743,13 +4812,12 @@ async function executeMetaTool(toolName, args, router, callToolFn) {
|
|
|
4743
4812
|
const searchOptions = { serverId, serverName };
|
|
4744
4813
|
const selectMatch = query.match(/^select:(.+)$/i);
|
|
4745
4814
|
if (selectMatch) {
|
|
4746
|
-
await router.listTools({ serverId, serverName, limit: 1 });
|
|
4747
4815
|
const requested = selectMatch[1].split(",").map((s) => s.trim()).filter(Boolean);
|
|
4748
4816
|
const found = [];
|
|
4749
4817
|
const errors = [];
|
|
4750
4818
|
const namespace = serverId ?? serverName;
|
|
4751
4819
|
for (const requestedToolName of requested) {
|
|
4752
|
-
const { tool, error } = resolveToolSchema(requestedToolName, namespace, {
|
|
4820
|
+
const { tool, error } = await resolveToolSchema(requestedToolName, namespace, {
|
|
4753
4821
|
allowServerNameFragment: Boolean(serverName && !serverId)
|
|
4754
4822
|
});
|
|
4755
4823
|
if (error) {
|
|
@@ -4813,7 +4881,7 @@ async function executeMetaTool(toolName, args, router, callToolFn) {
|
|
|
4813
4881
|
case "mcp_get_tool_schema": {
|
|
4814
4882
|
const name = String(args.toolName ?? "");
|
|
4815
4883
|
const namespace = String(args.serverId ?? "") || void 0;
|
|
4816
|
-
const { tool, error } = resolveToolSchema(name, namespace);
|
|
4884
|
+
const { tool, error } = await resolveToolSchema(name, namespace);
|
|
4817
4885
|
if (error) {
|
|
4818
4886
|
return error;
|
|
4819
4887
|
}
|
|
@@ -4855,7 +4923,7 @@ async function executeMetaTool(toolName, args, router, callToolFn) {
|
|
|
4855
4923
|
isError: true
|
|
4856
4924
|
};
|
|
4857
4925
|
}
|
|
4858
|
-
const { tool, error } = resolveToolSchema(targetToolName, namespace);
|
|
4926
|
+
const { tool, error } = await resolveToolSchema(targetToolName, namespace);
|
|
4859
4927
|
if (error) {
|
|
4860
4928
|
return error;
|
|
4861
4929
|
}
|
|
@@ -5032,6 +5100,14 @@ var ToolRouter = class {
|
|
|
5032
5100
|
}
|
|
5033
5101
|
return matches[0];
|
|
5034
5102
|
}
|
|
5103
|
+
/**
|
|
5104
|
+
* Resolve the full tool definition by name, ensuring the router index has
|
|
5105
|
+
* been initialized first.
|
|
5106
|
+
*/
|
|
5107
|
+
async resolveToolSchema(toolName, namespace, options = {}) {
|
|
5108
|
+
await this.ensureInitialized();
|
|
5109
|
+
return this.getToolSchema(toolName, namespace, options);
|
|
5110
|
+
}
|
|
5035
5111
|
/**
|
|
5036
5112
|
* Get compact (schema-less) summaries for all tools.
|
|
5037
5113
|
*/
|
|
@@ -5228,6 +5304,6 @@ function globToRegExp(pattern) {
|
|
|
5228
5304
|
return new RegExp(regexPattern);
|
|
5229
5305
|
}
|
|
5230
5306
|
|
|
5231
|
-
export { APP_HOST_DEFAULTS, AppHost, AuthenticationError, ConfigurationError, ConnectionError, DEFAULT_CLIENT_NAME, DEFAULT_CLIENT_URI, DEFAULT_HEARTBEAT_INTERVAL_MS, DEFAULT_LOGO_URI, DEFAULT_MCP_APP_CSP, DEFAULT_POLICY_URI, DisposableStore, Emitter, InvalidStateError, MCPClient, MCP_CLIENT_NAME, MCP_CLIENT_VERSION, McpError, MultiSessionClient, NotConnectedError, REDIS_KEY_PREFIX, RpcErrorCodes, SANDBOX_PROXY_READY_METHOD, SANDBOX_RESOURCE_READY_METHOD, SESSION_TTL_SECONDS, SOFTWARE_ID, SOFTWARE_VERSION, SSEClient, SSEConnectionManager, STATE_EXPIRATION_MS, SchemaCompressor, SessionNotFoundError, SessionValidationError, StorageOAuthClientProvider, TOKEN_EXPIRY_BUFFER_MS, ToolExecutionError, ToolIndex, ToolRouter, UnauthorizedError, createExecuteToolDefinition, createGetSchemaToolDefinition, createListServersToolDefinition, createNextMcpHandler, createRegexSearchToolDefinition, createSSEHandler, createSearchToolDefinition, executeMetaTool, findToolByName, getToolUiResourceUri, isCallToolSuccess, isConnectAuthRequired, isConnectError, isConnectSuccess, isListToolsSuccess, isMetaTool, resolveMetaToolProxy, sanitizeServerLabel, sessions };
|
|
5307
|
+
export { APP_HOST_DEFAULTS, AppHost, AuthenticationError, ConfigurationError, ConnectionError, DEFAULT_CLIENT_NAME, DEFAULT_CLIENT_URI, DEFAULT_HEARTBEAT_INTERVAL_MS, DEFAULT_LOGO_URI, DEFAULT_MCP_APP_CSP, DEFAULT_POLICY_URI, DisposableStore, Emitter, InvalidStateError, MCPClient, MCP_CLIENT_NAME, MCP_CLIENT_VERSION, McpError, MultiSessionClient, NotConnectedError, REDIS_KEY_PREFIX, RpcErrorCodes, SANDBOX_PROXY_READY_METHOD, SANDBOX_RESOURCE_READY_METHOD, SESSION_TTL_SECONDS, SOFTWARE_ID, SOFTWARE_VERSION, SSEClient, SSEConnectionManager, STATE_EXPIRATION_MS, SchemaCompressor, SessionNotFoundError, SessionValidationError, StorageOAuthClientProvider, TOKEN_EXPIRY_BUFFER_MS, ToolExecutionError, ToolIndex, ToolRouter, UnauthorizedError, createExecuteToolDefinition, createGetSchemaToolDefinition, createListServersToolDefinition, createNextMcpHandler, createRegexSearchToolDefinition, createSSEHandler, createSearchToolDefinition, executeMetaTool, findToolByName, getToolUiResourceUri, isCallToolSuccess, isConnectAuthRequired, isConnectError, isConnectSuccess, isListToolsSuccess, isMetaTool, onSessionMutation, resolveMetaToolProxy, sanitizeServerLabel, sessions };
|
|
5232
5308
|
//# sourceMappingURL=index.mjs.map
|
|
5233
5309
|
//# sourceMappingURL=index.mjs.map
|