@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 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 && (error.message.includes("setup session") && (error.message.includes("failed") || error.message.includes("timed out")))) {
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));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/metorial.ts"],"names":["createMetorialCoreSDK","MetorialMcpSession"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n MetorialCoreSDK,\n createMetorialCoreSDK\n} 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);\n return action({ ...adapterResult, 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"]}
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 && (error.message.includes("setup session") && (error.message.includes("failed") || error.message.includes("timed out")))) {
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":"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","file":"index.js","sourcesContent":["import {\n MetorialCoreSDK,\n createMetorialCoreSDK\n} 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);\n return action({ ...adapterResult, 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"]}
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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metorial/sdk",
3
- "version": "2.1.1",
3
+ "version": "2.1.2",
4
4
  "author": "Metorial Inc.",
5
5
  "license": "MIT",
6
6
  "type": "module",