@metorial/sdk 2.1.0 → 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
@@ -71,7 +71,11 @@ var Metorial = class {
71
71
  /** @deprecated Use `metorial.connect()` instead. */
72
72
  async withProviderSession(adapter, init, action) {
73
73
  let session = await mcpSession.MetorialMcpSession.create(this.sdk, init);
74
- let adapterResult = await adapter.__resolve(session);
74
+ let resolved = typeof adapter === "function" ? adapter() : adapter;
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
+ }
75
79
  return action({ ...adapterResult, closeSession: async () => {
76
80
  } });
77
81
  }
@@ -102,7 +106,7 @@ var Metorial = class {
102
106
  }
103
107
  await new Promise((resolve) => setTimeout(resolve, pollInterval));
104
108
  } catch (error) {
105
- 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"))) {
106
110
  throw error;
107
111
  }
108
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>,\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 adapterResult = await adapter.__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.d.cts CHANGED
@@ -65,7 +65,7 @@ declare class Metorial {
65
65
  };
66
66
  }): Promise<T>;
67
67
  /** @deprecated Use `metorial.connect()` instead. */
68
- withProviderSession<P, T>(adapter: MetorialAdapter<P>, init: MetorialMcpSessionInit & {
68
+ withProviderSession<P, T>(adapter: MetorialAdapter<P> | (() => MetorialAdapter<P>), init: MetorialMcpSessionInit & {
69
69
  streaming?: boolean;
70
70
  }, action: (input: P & {
71
71
  closeSession: () => Promise<void>;
package/dist/index.d.ts CHANGED
@@ -65,7 +65,7 @@ declare class Metorial {
65
65
  };
66
66
  }): Promise<T>;
67
67
  /** @deprecated Use `metorial.connect()` instead. */
68
- withProviderSession<P, T>(adapter: MetorialAdapter<P>, init: MetorialMcpSessionInit & {
68
+ withProviderSession<P, T>(adapter: MetorialAdapter<P> | (() => MetorialAdapter<P>), init: MetorialMcpSessionInit & {
69
69
  streaming?: boolean;
70
70
  }, action: (input: P & {
71
71
  closeSession: () => Promise<void>;
package/dist/index.js CHANGED
@@ -67,7 +67,11 @@ var Metorial = class {
67
67
  /** @deprecated Use `metorial.connect()` instead. */
68
68
  async withProviderSession(adapter, init, action) {
69
69
  let session = await MetorialMcpSession.create(this.sdk, init);
70
- let adapterResult = await adapter.__resolve(session);
70
+ let resolved = typeof adapter === "function" ? adapter() : adapter;
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
+ }
71
75
  return action({ ...adapterResult, closeSession: async () => {
72
76
  } });
73
77
  }
@@ -98,7 +102,7 @@ var Metorial = class {
98
102
  }
99
103
  await new Promise((resolve) => setTimeout(resolve, pollInterval));
100
104
  } catch (error) {
101
- 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"))) {
102
106
  throw error;
103
107
  }
104
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>,\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 adapterResult = await adapter.__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.0",
3
+ "version": "2.1.2",
4
4
  "author": "Metorial Inc.",
5
5
  "license": "MIT",
6
6
  "type": "module",