@metorial/sdk 2.1.1 → 2.1.2
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/index.cjs +4 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -73,6 +73,9 @@ var Metorial = class {
|
|
|
73
73
|
let session = await mcpSession.MetorialMcpSession.create(this.sdk, init);
|
|
74
74
|
let resolved = typeof adapter === "function" ? adapter() : adapter;
|
|
75
75
|
let adapterResult = await resolved.__resolve(session);
|
|
76
|
+
if (adapterResult && typeof adapterResult === "object" && "tools" in adapterResult && typeof adapterResult.tools === "function") {
|
|
77
|
+
adapterResult.tools = adapterResult.tools();
|
|
78
|
+
}
|
|
76
79
|
return action({ ...adapterResult, closeSession: async () => {
|
|
77
80
|
} });
|
|
78
81
|
}
|
|
@@ -103,7 +106,7 @@ var Metorial = class {
|
|
|
103
106
|
}
|
|
104
107
|
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
105
108
|
} catch (error) {
|
|
106
|
-
if (error instanceof Error &&
|
|
109
|
+
if (error instanceof Error && error.message.includes("setup session") && (error.message.includes("failed") || error.message.includes("timed out"))) {
|
|
107
110
|
throw error;
|
|
108
111
|
}
|
|
109
112
|
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/metorial.ts"],"names":["createMetorialCoreSDK","MetorialMcpSession"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/metorial.ts"],"names":["createMetorialCoreSDK","MetorialMcpSession"],"mappings":"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","file":"index.cjs","sourcesContent":["import { MetorialCoreSDK, createMetorialCoreSDK } from '@metorial/core';\nimport {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitProviders,\n MetorialMcpToolManager\n} from '@metorial/mcp-session';\n\nexport type {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitProviders\n} from '@metorial/mcp-session';\n\ntype MetorialSession = { getToolManager(): Promise<MetorialMcpToolManager> };\n\nexport interface MetorialAdapter<T> {\n __resolve(session: MetorialSession): Promise<T>;\n}\n\nexport class Metorial {\n private readonly sdk: MetorialCoreSDK;\n\n constructor(init: Omit<Parameters<typeof createMetorialCoreSDK>[0], 'apiVersion'>) {\n let apiHost = init.apiHost;\n let mcpHost = init.mcpHost;\n\n if (mcpHost && !apiHost) {\n apiHost = mcpHost.replace('://connect.', '://api.');\n }\n\n this.sdk = createMetorialCoreSDK({ ...init, apiHost, mcpHost });\n }\n\n get providers() {\n return this.sdk.providers;\n }\n\n get providerDeployments() {\n let deployments = this.sdk.providerDeployments;\n Object.assign(deployments.setupSessions, {\n waitForCompletion: this.waitForSetupSession.bind(this)\n });\n return deployments;\n }\n\n get sessions() {\n return this.sdk.sessions;\n }\n\n get sessionTemplates() {\n return this.sdk.sessionTemplates;\n }\n\n get providerRuns() {\n return this.sdk.providerRuns;\n }\n\n get instance() {\n return this.sdk.instance;\n }\n\n get publishers() {\n return this.sdk.publishers;\n }\n\n get providerCategories() {\n return this.sdk.providerCategories;\n }\n\n get providerCollections() {\n return this.sdk.providerCollections;\n }\n\n get providerGroups() {\n return this.sdk.providerGroups;\n }\n\n get providerListings() {\n return this.sdk.providerListings;\n }\n\n get providerSetupSessions() {\n return this.sdk.providerSetupSessions;\n }\n\n get toolCalls() {\n return this.sdk.toolCalls;\n }\n\n get customProviders() {\n return this.sdk.customProviders;\n }\n\n async connect<T>(options: {\n adapter: MetorialAdapter<T>;\n providers: MetorialMcpSessionInitProviders;\n client?: { name?: string; version?: string };\n }): Promise<T> {\n let session = await MetorialMcpSession.create(this.sdk, {\n providers: options.providers,\n client: options.client\n });\n\n return options.adapter.__resolve(session);\n }\n\n /** @deprecated Use `metorial.connect()` instead. */\n async withProviderSession<P, T>(\n adapter: MetorialAdapter<P> | (() => MetorialAdapter<P>),\n init: MetorialMcpSessionInit & { streaming?: boolean },\n action: (input: P & { closeSession: () => Promise<void> }) => Promise<T>\n ): Promise<T> {\n let session = await MetorialMcpSession.create(this.sdk, init);\n let resolved = typeof adapter === 'function' ? adapter() : adapter;\n let adapterResult = await resolved.__resolve(session) as Record<string, unknown>;\n\n if (\n adapterResult &&\n typeof adapterResult === 'object' &&\n 'tools' in adapterResult &&\n typeof adapterResult.tools === 'function'\n ) {\n adapterResult.tools = (adapterResult.tools as () => unknown)();\n }\n\n return action({ ...adapterResult as P, closeSession: async () => {} });\n }\n\n async waitForSetupSession(\n sessions: { id: string } | Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ) {\n let sessionList = Array.isArray(sessions) ? sessions : [sessions];\n let pollInterval = Math.max(options?.pollInterval ?? 5000, 2000);\n let timeout = options?.timeout ?? 600000;\n let startTime = Date.now();\n\n if (sessionList.length === 0) {\n return [];\n }\n\n while (true) {\n if (Date.now() - startTime > timeout) {\n throw new Error(`Setup session timed out after ${timeout / 1000} seconds`);\n }\n\n try {\n let statuses = await Promise.all(\n sessionList.map(s => this.sdk.providerDeployments.setupSessions.get(s.id))\n );\n\n let failed = statuses.filter(s => s.status === 'failed');\n if (failed.length > 0) {\n throw new Error(`${failed.length} setup session(s) failed`);\n }\n\n let allCompleted = statuses.every(s => s.status === 'completed');\n if (allCompleted) {\n return statuses;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes('setup session') &&\n (error.message.includes('failed') || error.message.includes('timed out'))\n ) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n }\n }\n}\n\nexport default Metorial;\n"]}
|
package/dist/index.js
CHANGED
|
@@ -69,6 +69,9 @@ var Metorial = class {
|
|
|
69
69
|
let session = await MetorialMcpSession.create(this.sdk, init);
|
|
70
70
|
let resolved = typeof adapter === "function" ? adapter() : adapter;
|
|
71
71
|
let adapterResult = await resolved.__resolve(session);
|
|
72
|
+
if (adapterResult && typeof adapterResult === "object" && "tools" in adapterResult && typeof adapterResult.tools === "function") {
|
|
73
|
+
adapterResult.tools = adapterResult.tools();
|
|
74
|
+
}
|
|
72
75
|
return action({ ...adapterResult, closeSession: async () => {
|
|
73
76
|
} });
|
|
74
77
|
}
|
|
@@ -99,7 +102,7 @@ var Metorial = class {
|
|
|
99
102
|
}
|
|
100
103
|
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
101
104
|
} catch (error) {
|
|
102
|
-
if (error instanceof Error &&
|
|
105
|
+
if (error instanceof Error && error.message.includes("setup session") && (error.message.includes("failed") || error.message.includes("timed out"))) {
|
|
103
106
|
throw error;
|
|
104
107
|
}
|
|
105
108
|
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/metorial.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"sources":["../src/metorial.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { MetorialCoreSDK, createMetorialCoreSDK } from '@metorial/core';\nimport {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitProviders,\n MetorialMcpToolManager\n} from '@metorial/mcp-session';\n\nexport type {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitProviders\n} from '@metorial/mcp-session';\n\ntype MetorialSession = { getToolManager(): Promise<MetorialMcpToolManager> };\n\nexport interface MetorialAdapter<T> {\n __resolve(session: MetorialSession): Promise<T>;\n}\n\nexport class Metorial {\n private readonly sdk: MetorialCoreSDK;\n\n constructor(init: Omit<Parameters<typeof createMetorialCoreSDK>[0], 'apiVersion'>) {\n let apiHost = init.apiHost;\n let mcpHost = init.mcpHost;\n\n if (mcpHost && !apiHost) {\n apiHost = mcpHost.replace('://connect.', '://api.');\n }\n\n this.sdk = createMetorialCoreSDK({ ...init, apiHost, mcpHost });\n }\n\n get providers() {\n return this.sdk.providers;\n }\n\n get providerDeployments() {\n let deployments = this.sdk.providerDeployments;\n Object.assign(deployments.setupSessions, {\n waitForCompletion: this.waitForSetupSession.bind(this)\n });\n return deployments;\n }\n\n get sessions() {\n return this.sdk.sessions;\n }\n\n get sessionTemplates() {\n return this.sdk.sessionTemplates;\n }\n\n get providerRuns() {\n return this.sdk.providerRuns;\n }\n\n get instance() {\n return this.sdk.instance;\n }\n\n get publishers() {\n return this.sdk.publishers;\n }\n\n get providerCategories() {\n return this.sdk.providerCategories;\n }\n\n get providerCollections() {\n return this.sdk.providerCollections;\n }\n\n get providerGroups() {\n return this.sdk.providerGroups;\n }\n\n get providerListings() {\n return this.sdk.providerListings;\n }\n\n get providerSetupSessions() {\n return this.sdk.providerSetupSessions;\n }\n\n get toolCalls() {\n return this.sdk.toolCalls;\n }\n\n get customProviders() {\n return this.sdk.customProviders;\n }\n\n async connect<T>(options: {\n adapter: MetorialAdapter<T>;\n providers: MetorialMcpSessionInitProviders;\n client?: { name?: string; version?: string };\n }): Promise<T> {\n let session = await MetorialMcpSession.create(this.sdk, {\n providers: options.providers,\n client: options.client\n });\n\n return options.adapter.__resolve(session);\n }\n\n /** @deprecated Use `metorial.connect()` instead. */\n async withProviderSession<P, T>(\n adapter: MetorialAdapter<P> | (() => MetorialAdapter<P>),\n init: MetorialMcpSessionInit & { streaming?: boolean },\n action: (input: P & { closeSession: () => Promise<void> }) => Promise<T>\n ): Promise<T> {\n let session = await MetorialMcpSession.create(this.sdk, init);\n let resolved = typeof adapter === 'function' ? adapter() : adapter;\n let adapterResult = await resolved.__resolve(session) as Record<string, unknown>;\n\n if (\n adapterResult &&\n typeof adapterResult === 'object' &&\n 'tools' in adapterResult &&\n typeof adapterResult.tools === 'function'\n ) {\n adapterResult.tools = (adapterResult.tools as () => unknown)();\n }\n\n return action({ ...adapterResult as P, closeSession: async () => {} });\n }\n\n async waitForSetupSession(\n sessions: { id: string } | Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ) {\n let sessionList = Array.isArray(sessions) ? sessions : [sessions];\n let pollInterval = Math.max(options?.pollInterval ?? 5000, 2000);\n let timeout = options?.timeout ?? 600000;\n let startTime = Date.now();\n\n if (sessionList.length === 0) {\n return [];\n }\n\n while (true) {\n if (Date.now() - startTime > timeout) {\n throw new Error(`Setup session timed out after ${timeout / 1000} seconds`);\n }\n\n try {\n let statuses = await Promise.all(\n sessionList.map(s => this.sdk.providerDeployments.setupSessions.get(s.id))\n );\n\n let failed = statuses.filter(s => s.status === 'failed');\n if (failed.length > 0) {\n throw new Error(`${failed.length} setup session(s) failed`);\n }\n\n let allCompleted = statuses.every(s => s.status === 'completed');\n if (allCompleted) {\n return statuses;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes('setup session') &&\n (error.message.includes('failed') || error.message.includes('timed out'))\n ) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n }\n }\n}\n\nexport default Metorial;\n"]}
|