@metorial/sdk 1.1.1 → 1.2.0

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
@@ -614,5 +614,5 @@ var Metorial = class {
614
614
  };
615
615
 
616
616
  exports.Metorial = Metorial;
617
- //# sourceMappingURL=out.js.map
617
+ //# sourceMappingURL=index.cjs.map
618
618
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/metorial.ts","../src/providers/openai.ts","../src/providers/anthropic.ts","../src/providers/deepseek.ts","../src/providers/google.ts","../src/providers/mistral.ts","../src/providers/xai.ts","../src/providers/togetherai.ts"],"names":[],"mappings":"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","sourcesContent":["import { MetorialCoreSDK, createMetorialCoreSDK } from '@metorial/core';\nimport {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nimport type OpenAI from 'openai';\nimport type Anthropic from '@anthropic-ai/sdk';\nimport type { GoogleGenAI } from '@google/genai';\nimport type { Mistral } from '@mistralai/mistralai';\n\nimport { runWithOpenAI } from './providers/openai';\nimport { runWithAnthropic } from './providers/anthropic';\nimport { runWithDeepSeek } from './providers/deepseek';\nimport { runWithGoogle } from './providers/google';\nimport { runWithMistral } from './providers/mistral';\nimport { runWithXAI } from './providers/xai';\nimport { runWithTogetherAI } from './providers/togetherai';\n\nimport { RunResult } from './providers/types';\n\nexport type { RunResult } from './providers/types';\nexport type {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nexport class Metorial implements MetorialCoreSDK {\n private readonly sdk: MetorialCoreSDK;\n\n constructor(init: Parameters<typeof createMetorialCoreSDK>[0]) {\n this.sdk = createMetorialCoreSDK(init);\n }\n\n get instance() {\n return this.sdk.instance;\n }\n\n get secrets() {\n return this.sdk.secrets;\n }\n\n get servers() {\n return this.sdk.servers;\n }\n\n get sessions() {\n return this.sdk.sessions;\n }\n\n get oauth(): typeof this.sdk.oauth & {\n waitForCompletion: (\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ) => Promise<void>;\n } {\n return {\n ...this.sdk.oauth,\n waitForCompletion: this.waitForOAuthCompletion.bind(this)\n };\n }\n\n get _config() {\n return this.sdk._config;\n }\n\n get mcp() {\n return {\n createSession: (init: MetorialMcpSessionInit) => new MetorialMcpSession(this.sdk, init),\n withSession: this.withSession.bind(this),\n withProviderSession: this.withProviderSession.bind(this),\n createConnection: this.createMcpConnection.bind(this)\n };\n }\n\n async createMcpConnection(init: MetorialMcpSessionInitServerDeployments[number]) {\n let session = new MetorialMcpSession(this.sdk, {\n serverDeployments: [init]\n });\n\n let deployments = await session.getServerDeployments();\n\n return await session.getClient({\n deploymentId: deployments[0].id\n });\n }\n\n async withSession<T>(\n init: MetorialMcpSessionInit,\n action: (session: MetorialMcpSession) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n try {\n return await action(session);\n } finally {\n await session.close();\n }\n }\n\n async withProviderSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit & { streaming?: boolean },\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n }\n ) => Promise<T>\n ): Promise<T> {\n if (init.streaming) {\n return this.withStreamingSession(provider, init, action);\n }\n\n return this.withSession(init, async session => {\n let providerData = await provider(session);\n\n return action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session)\n });\n });\n }\n\n private async withStreamingSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit,\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n closeSession: () => Promise<void>;\n }\n ) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n let sessionClosed = false;\n\n const closeSession = async () => {\n if (!sessionClosed) {\n sessionClosed = true;\n console.log('[Metorial] Closing streaming session');\n await session.close();\n }\n };\n\n try {\n let providerData = await provider(session);\n\n let result = await action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session),\n closeSession\n });\n\n setTimeout(async () => {\n if (!sessionClosed) {\n console.log('[Metorial] Streaming timeout reached - auto-closing session');\n await closeSession();\n }\n }, 60000); // 1 minute timeout\n\n return result;\n } catch (error) {\n await closeSession();\n throw error;\n }\n }\n\n private inferProvider(\n model: string\n ): 'openai' | 'anthropic' | 'deepseek' | 'google' | 'mistral' | 'xai' | 'togetherai' {\n let modelLower = model.toLowerCase();\n\n if (modelLower.startsWith('claude-')) {\n return 'anthropic';\n }\n\n if (modelLower.startsWith('gpt-') || modelLower.startsWith('o1-')) {\n return 'openai';\n }\n\n if (modelLower.includes('deepseek')) {\n return 'deepseek';\n }\n\n if (modelLower.startsWith('gemini-') || modelLower.includes('google')) {\n return 'google';\n }\n\n if (modelLower.startsWith('mistral-') || modelLower.includes('mistral')) {\n return 'mistral';\n }\n\n if (modelLower.startsWith('x-') || modelLower === 'grok-beta') {\n return 'xai';\n }\n\n if (\n modelLower.includes('together') ||\n modelLower.includes('llama') ||\n modelLower.includes('mixtral') ||\n modelLower.includes('qwen') ||\n modelLower.includes('/')\n ) {\n return 'togetherai';\n }\n\n throw new Error(`Unable to infer provider from model \"${model}\".`);\n }\n\n async waitForOAuthCompletion(\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ): Promise<void> {\n let pollInterval = Math.max(options?.pollInterval ?? 5000, 2000); // minimum 2 seconds\n let timeout = options?.timeout ?? 600000; // 10 minutes\n let startTime = Date.now();\n\n if (sessions.length === 0) {\n return;\n }\n\n while (true) {\n if (Date.now() - startTime > timeout) {\n throw new Error(`OAuth authentication timeout after ${timeout / 1000} seconds`);\n }\n\n try {\n let statuses = await Promise.all(\n sessions.map(session => this.oauth.sessions.get(session.id))\n );\n\n let allCompleted = statuses.every(status => status.status === 'completed');\n if (allCompleted) {\n return;\n }\n\n let failedSessions = statuses.filter(status => status.status === 'failed');\n if (failedSessions.length > 0) {\n throw new Error(\n `OAuth authentication failed for ${failedSessions.length} session(s)`\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n } catch (error) {\n if (\n error instanceof Error &&\n (error.message.includes('OAuth authentication failed') ||\n error.message.includes('OAuth authentication timeout'))\n ) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n }\n }\n\n async run(config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n model: string;\n maxSteps?: number;\n tools?: string[];\n [key: string]: any;\n }): Promise<RunResult> {\n let provider = this.inferProvider(config.model);\n\n switch (provider) {\n case 'openai':\n return runWithOpenAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'anthropic':\n return runWithAnthropic({\n ...config,\n client: config.client as Anthropic,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'deepseek':\n return runWithDeepSeek({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'google':\n return runWithGoogle({\n ...config,\n client: config.client as GoogleGenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'mistral':\n return runWithMistral({\n ...config,\n client: config.client as Mistral,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'xai':\n return runWithXAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'togetherai':\n return runWithTogetherAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n default:\n throw new Error(`Unsupported provider: ${provider}`);\n }\n }\n}\n","import type OpenAI from 'openai';\nimport { metorialOpenAI } from '@metorial/openai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithOpenAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...openaiOptions \n } = config;\n\n return withProviderSession(\n metorialOpenAI.chatCompletions,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...openaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithOpenAI };","import type Anthropic from '@anthropic-ai/sdk';\nimport { metorialAnthropic } from '@metorial/anthropic';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\ninterface ToolResultBlock {\n type: 'tool_result';\n tool_use_id: string;\n content: string;\n}\n\ninterface ToolResponseMessage {\n role: 'user';\n content: ToolResultBlock[];\n}\n\nlet runWithAnthropic = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Anthropic;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n max_tokens?: number;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n max_tokens = 4096,\n ...anthropicOptions \n } = config;\n\n return withProviderSession(\n metorialAnthropic,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools: Anthropic.Tool[] = requestedTools\n ? (session.tools as Anthropic.Tool[]).filter(t => requestedTools.includes(t.name))\n : session.tools as Anthropic.Tool[];\n\n let messages: Anthropic.Messages.MessageParam[] = [\n { role: 'user', content: message }\n ];\n\n let uniqueTools = Array.from(new Map(tools.map(t => [t.name, t])).values());\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.messages.create({\n model,\n max_tokens,\n messages,\n tools: uniqueTools,\n ...anthropicOptions\n });\n\n if (response.stop_reason !== 'tool_use') {\n let textContent = response.content.find(\n (block): block is Anthropic.Messages.TextBlock => block.type === 'text'\n );\n return {\n text: textContent?.text || '',\n steps: step + 1\n };\n }\n\n let toolUseBlocks = response.content.filter(\n (block): block is Anthropic.Messages.ToolUseBlock => block.type === 'tool_use'\n );\n let toolResponse = await session.callTools(toolUseBlocks) as ToolResponseMessage;\n\n let toolResponseMessage: Anthropic.Messages.MessageParam = {\n role: 'user',\n content: toolResponse.content.map(block => ({\n type: 'tool_result' as const,\n tool_use_id: block.tool_use_id,\n content: block.content\n } as Anthropic.Messages.ToolResultBlockParam))\n };\n\n messages.push(\n { role: 'assistant', content: response.content },\n toolResponseMessage\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithAnthropic };","import type OpenAI from 'openai';\nimport { metorialDeepseek } from '@metorial/deepseek';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithDeepSeek = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI; // DeepSeek uses OpenAI-compatible client\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...deepseekOptions \n } = config;\n\n return withProviderSession(\n metorialDeepseek,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function?.name || t.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...deepseekOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithDeepSeek };","import type { GoogleGenAI } from '@google/genai';\nimport { metorialGoogle } from '@metorial/google';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithGoogle = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: GoogleGenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...googleOptions \n } = config;\n\n return withProviderSession(\n metorialGoogle,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let response = await client.models.generateContent({\n model,\n contents: [\n {\n role: 'user',\n parts: [{ text: message }]\n }\n ],\n config: {\n tools,\n ...googleOptions\n }\n });\n\n let text = response.candidates?.[0]?.content?.parts?.[0]?.text;\n \n let functionCalls = response.candidates?.[0]?.content?.parts\n ?.filter((part: any) => part.functionCall)\n .map((part: any) => part.functionCall);\n\n if (functionCalls && functionCalls.length > 0) {\n let toolResponses = await session.callTools(functionCalls);\n \n return {\n text: text || '',\n toolResponses: toolResponses as any,\n steps: 1\n };\n }\n\n return {\n text: text || '',\n steps: 1\n };\n }\n );\n}\n\nexport { runWithGoogle };","import type { Mistral } from '@mistralai/mistralai';\nimport { metorialMistral } from '@metorial/mistral';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet extractTextFromContent = (content: unknown): string => {\n if (typeof content === 'string') {\n return content;\n }\n \n if (Array.isArray(content)) {\n return content\n .filter((chunk: any) => chunk && typeof chunk === 'object')\n .map((chunk: any) => chunk.text || chunk.content || JSON.stringify(chunk))\n .join('');\n }\n \n return '';\n}\n\nlet runWithMistral = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Mistral;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...mistralOptions \n } = config;\n\n return withProviderSession(\n metorialMistral,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n // Fix tools for Mistral compatibility: add additionalProperties: false\n let fixedTools = tools.map((tool: any) => {\n if (tool.function?.parameters) {\n let fixedParams = { ...tool.function.parameters };\n fixedParams.additionalProperties = false;\n\n // Also fix nested objects\n if (fixedParams.properties) {\n Object.values(fixedParams.properties).forEach((prop: any) => {\n if (prop && typeof prop === 'object' && prop.type === 'object') {\n prop.additionalProperties = false;\n }\n });\n }\n\n return {\n ...tool,\n function: {\n ...tool.function,\n parameters: fixedParams\n }\n };\n }\n return tool;\n });\n\n let messages: any[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.complete({\n model,\n messages,\n tools: fixedTools,\n ...mistralOptions\n });\n\n let choice = response.choices[0];\n let toolCalls = choice.message.toolCalls;\n \n if (!toolCalls || toolCalls.length === 0) {\n return {\n text: extractTextFromContent(choice.message.content),\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(toolCalls);\n\n messages.push(\n { role: 'assistant', toolCalls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithMistral };","import type OpenAI from 'openai';\nimport { metorialXai } from '@metorial/xai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithXAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...xaiOptions \n } = config;\n\n return withProviderSession(\n metorialXai,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...xaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithXAI };","import type OpenAI from 'openai';\nimport { metorialTogetherAi } from '@metorial/togetherai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithTogetherAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...togetheraiOptions \n } = config;\n\n return withProviderSession(\n metorialTogetherAi,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...togetheraiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithTogetherAI };"]}
1
+ {"version":3,"sources":["../src/providers/openai.ts","../src/providers/anthropic.ts","../src/providers/deepseek.ts","../src/providers/google.ts","../src/providers/mistral.ts","../src/providers/xai.ts","../src/providers/togetherai.ts","../src/metorial.ts"],"names":["metorialOpenAI","metorialAnthropic","metorialDeepseek","metorialGoogle","metorialMistral","metorialXai","metorialTogetherAi","createMetorialCoreSDK","MetorialMcpSession"],"mappings":"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","file":"index.cjs","sourcesContent":["import type OpenAI from 'openai';\nimport { metorialOpenAI } from '@metorial/openai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithOpenAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...openaiOptions \n } = config;\n\n return withProviderSession(\n metorialOpenAI.chatCompletions,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...openaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithOpenAI };","import type Anthropic from '@anthropic-ai/sdk';\nimport { metorialAnthropic } from '@metorial/anthropic';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\ninterface ToolResultBlock {\n type: 'tool_result';\n tool_use_id: string;\n content: string;\n}\n\ninterface ToolResponseMessage {\n role: 'user';\n content: ToolResultBlock[];\n}\n\nlet runWithAnthropic = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Anthropic;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n max_tokens?: number;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n max_tokens = 4096,\n ...anthropicOptions \n } = config;\n\n return withProviderSession(\n metorialAnthropic,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools: Anthropic.Tool[] = requestedTools\n ? (session.tools as Anthropic.Tool[]).filter(t => requestedTools.includes(t.name))\n : session.tools as Anthropic.Tool[];\n\n let messages: Anthropic.Messages.MessageParam[] = [\n { role: 'user', content: message }\n ];\n\n let uniqueTools = Array.from(new Map(tools.map(t => [t.name, t])).values());\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.messages.create({\n model,\n max_tokens,\n messages,\n tools: uniqueTools,\n ...anthropicOptions\n });\n\n if (response.stop_reason !== 'tool_use') {\n let textContent = response.content.find(\n (block): block is Anthropic.Messages.TextBlock => block.type === 'text'\n );\n return {\n text: textContent?.text || '',\n steps: step + 1\n };\n }\n\n let toolUseBlocks = response.content.filter(\n (block): block is Anthropic.Messages.ToolUseBlock => block.type === 'tool_use'\n );\n let toolResponse = await session.callTools(toolUseBlocks) as ToolResponseMessage;\n\n let toolResponseMessage: Anthropic.Messages.MessageParam = {\n role: 'user',\n content: toolResponse.content.map(block => ({\n type: 'tool_result' as const,\n tool_use_id: block.tool_use_id,\n content: block.content\n } as Anthropic.Messages.ToolResultBlockParam))\n };\n\n messages.push(\n { role: 'assistant', content: response.content },\n toolResponseMessage\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithAnthropic };","import type OpenAI from 'openai';\nimport { metorialDeepseek } from '@metorial/deepseek';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithDeepSeek = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI; // DeepSeek uses OpenAI-compatible client\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...deepseekOptions \n } = config;\n\n return withProviderSession(\n metorialDeepseek,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function?.name || t.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...deepseekOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithDeepSeek };","import type { GoogleGenAI } from '@google/genai';\nimport { metorialGoogle } from '@metorial/google';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithGoogle = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: GoogleGenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...googleOptions \n } = config;\n\n return withProviderSession(\n metorialGoogle,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let response = await client.models.generateContent({\n model,\n contents: [\n {\n role: 'user',\n parts: [{ text: message }]\n }\n ],\n config: {\n tools,\n ...googleOptions\n }\n });\n\n let text = response.candidates?.[0]?.content?.parts?.[0]?.text;\n \n let functionCalls = response.candidates?.[0]?.content?.parts\n ?.filter((part: any) => part.functionCall)\n .map((part: any) => part.functionCall);\n\n if (functionCalls && functionCalls.length > 0) {\n let toolResponses = await session.callTools(functionCalls);\n \n return {\n text: text || '',\n toolResponses: toolResponses as any,\n steps: 1\n };\n }\n\n return {\n text: text || '',\n steps: 1\n };\n }\n );\n}\n\nexport { runWithGoogle };","import type { Mistral } from '@mistralai/mistralai';\nimport { metorialMistral } from '@metorial/mistral';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet extractTextFromContent = (content: unknown): string => {\n if (typeof content === 'string') {\n return content;\n }\n \n if (Array.isArray(content)) {\n return content\n .filter((chunk: any) => chunk && typeof chunk === 'object')\n .map((chunk: any) => chunk.text || chunk.content || JSON.stringify(chunk))\n .join('');\n }\n \n return '';\n}\n\nlet runWithMistral = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Mistral;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...mistralOptions \n } = config;\n\n return withProviderSession(\n metorialMistral,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n // Fix tools for Mistral compatibility: add additionalProperties: false\n let fixedTools = tools.map((tool: any) => {\n if (tool.function?.parameters) {\n let fixedParams = { ...tool.function.parameters };\n fixedParams.additionalProperties = false;\n\n // Also fix nested objects\n if (fixedParams.properties) {\n Object.values(fixedParams.properties).forEach((prop: any) => {\n if (prop && typeof prop === 'object' && prop.type === 'object') {\n prop.additionalProperties = false;\n }\n });\n }\n\n return {\n ...tool,\n function: {\n ...tool.function,\n parameters: fixedParams\n }\n };\n }\n return tool;\n });\n\n let messages: any[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.complete({\n model,\n messages,\n tools: fixedTools,\n ...mistralOptions\n });\n\n let choice = response.choices[0];\n let toolCalls = choice.message.toolCalls;\n \n if (!toolCalls || toolCalls.length === 0) {\n return {\n text: extractTextFromContent(choice.message.content),\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(toolCalls);\n\n messages.push(\n { role: 'assistant', toolCalls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithMistral };","import type OpenAI from 'openai';\nimport { metorialXai } from '@metorial/xai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithXAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...xaiOptions \n } = config;\n\n return withProviderSession(\n metorialXai,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...xaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithXAI };","import type OpenAI from 'openai';\nimport { metorialTogetherAi } from '@metorial/togetherai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithTogetherAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...togetheraiOptions \n } = config;\n\n return withProviderSession(\n metorialTogetherAi,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...togetheraiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithTogetherAI };","import { MetorialCoreSDK, createMetorialCoreSDK } from '@metorial/core';\nimport {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nimport type OpenAI from 'openai';\nimport type Anthropic from '@anthropic-ai/sdk';\nimport type { GoogleGenAI } from '@google/genai';\nimport type { Mistral } from '@mistralai/mistralai';\n\nimport { runWithOpenAI } from './providers/openai';\nimport { runWithAnthropic } from './providers/anthropic';\nimport { runWithDeepSeek } from './providers/deepseek';\nimport { runWithGoogle } from './providers/google';\nimport { runWithMistral } from './providers/mistral';\nimport { runWithXAI } from './providers/xai';\nimport { runWithTogetherAI } from './providers/togetherai';\n\nimport { RunResult } from './providers/types';\n\nexport type { RunResult } from './providers/types';\nexport type {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nexport class Metorial implements MetorialCoreSDK {\n private readonly sdk: MetorialCoreSDK;\n\n constructor(init: Parameters<typeof createMetorialCoreSDK>[0]) {\n this.sdk = createMetorialCoreSDK(init);\n }\n\n get instance() {\n return this.sdk.instance;\n }\n\n get secrets() {\n return this.sdk.secrets;\n }\n\n get servers() {\n return this.sdk.servers;\n }\n\n get sessions() {\n return this.sdk.sessions;\n }\n\n get oauth(): typeof this.sdk.oauth & {\n waitForCompletion: (\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ) => Promise<void>;\n } {\n return {\n ...this.sdk.oauth,\n waitForCompletion: this.waitForOAuthCompletion.bind(this)\n };\n }\n\n get _config() {\n return this.sdk._config;\n }\n\n get mcp() {\n return {\n createSession: (init: MetorialMcpSessionInit) => new MetorialMcpSession(this.sdk, init),\n withSession: this.withSession.bind(this),\n withProviderSession: this.withProviderSession.bind(this),\n createConnection: this.createMcpConnection.bind(this)\n };\n }\n\n async createMcpConnection(init: MetorialMcpSessionInitServerDeployments[number]) {\n let session = new MetorialMcpSession(this.sdk, {\n serverDeployments: [init]\n });\n\n let deployments = await session.getServerDeployments();\n\n return await session.getClient({\n deploymentId: deployments[0].id\n });\n }\n\n async withSession<T>(\n init: MetorialMcpSessionInit,\n action: (session: MetorialMcpSession) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n try {\n return await action(session);\n } finally {\n await session.close();\n }\n }\n\n async withProviderSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit & { streaming?: boolean },\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n }\n ) => Promise<T>\n ): Promise<T> {\n if (init.streaming) {\n return this.withStreamingSession(provider, init, action);\n }\n\n return this.withSession(init, async session => {\n let providerData = await provider(session);\n\n return action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session)\n });\n });\n }\n\n private async withStreamingSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit,\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n closeSession: () => Promise<void>;\n }\n ) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n let sessionClosed = false;\n\n const closeSession = async () => {\n if (!sessionClosed) {\n sessionClosed = true;\n console.log('[Metorial] Closing streaming session');\n await session.close();\n }\n };\n\n try {\n let providerData = await provider(session);\n\n let result = await action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session),\n closeSession\n });\n\n setTimeout(async () => {\n if (!sessionClosed) {\n console.log('[Metorial] Streaming timeout reached - auto-closing session');\n await closeSession();\n }\n }, 60000); // 1 minute timeout\n\n return result;\n } catch (error) {\n await closeSession();\n throw error;\n }\n }\n\n private inferProvider(\n model: string\n ): 'openai' | 'anthropic' | 'deepseek' | 'google' | 'mistral' | 'xai' | 'togetherai' {\n let modelLower = model.toLowerCase();\n\n if (modelLower.startsWith('claude-')) {\n return 'anthropic';\n }\n\n if (modelLower.startsWith('gpt-') || modelLower.startsWith('o1-')) {\n return 'openai';\n }\n\n if (modelLower.includes('deepseek')) {\n return 'deepseek';\n }\n\n if (modelLower.startsWith('gemini-') || modelLower.includes('google')) {\n return 'google';\n }\n\n if (modelLower.startsWith('mistral-') || modelLower.includes('mistral')) {\n return 'mistral';\n }\n\n if (modelLower.startsWith('x-') || modelLower === 'grok-beta') {\n return 'xai';\n }\n\n if (\n modelLower.includes('together') ||\n modelLower.includes('llama') ||\n modelLower.includes('mixtral') ||\n modelLower.includes('qwen') ||\n modelLower.includes('/')\n ) {\n return 'togetherai';\n }\n\n throw new Error(`Unable to infer provider from model \"${model}\".`);\n }\n\n async waitForOAuthCompletion(\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ): Promise<void> {\n let pollInterval = Math.max(options?.pollInterval ?? 5000, 2000); // minimum 2 seconds\n let timeout = options?.timeout ?? 600000; // 10 minutes\n let startTime = Date.now();\n\n if (sessions.length === 0) {\n return;\n }\n\n while (true) {\n if (Date.now() - startTime > timeout) {\n throw new Error(`OAuth authentication timeout after ${timeout / 1000} seconds`);\n }\n\n try {\n let statuses = await Promise.all(\n sessions.map(session => this.oauth.sessions.get(session.id))\n );\n\n let allCompleted = statuses.every(status => status.status === 'completed');\n if (allCompleted) {\n return;\n }\n\n let failedSessions = statuses.filter(status => status.status === 'failed');\n if (failedSessions.length > 0) {\n throw new Error(\n `OAuth authentication failed for ${failedSessions.length} session(s)`\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n } catch (error) {\n if (\n error instanceof Error &&\n (error.message.includes('OAuth authentication failed') ||\n error.message.includes('OAuth authentication timeout'))\n ) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n }\n }\n\n async run(config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n model: string;\n maxSteps?: number;\n tools?: string[];\n [key: string]: any;\n }): Promise<RunResult> {\n let provider = this.inferProvider(config.model);\n\n switch (provider) {\n case 'openai':\n return runWithOpenAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'anthropic':\n return runWithAnthropic({\n ...config,\n client: config.client as Anthropic,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'deepseek':\n return runWithDeepSeek({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'google':\n return runWithGoogle({\n ...config,\n client: config.client as GoogleGenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'mistral':\n return runWithMistral({\n ...config,\n client: config.client as Mistral,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'xai':\n return runWithXAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'togetherai':\n return runWithTogetherAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n default:\n throw new Error(`Unsupported provider: ${provider}`);\n }\n }\n}\n"]}
package/dist/index.js CHANGED
@@ -612,5 +612,5 @@ var Metorial = class {
612
612
  };
613
613
 
614
614
  export { Metorial };
615
- //# sourceMappingURL=out.js.map
615
+ //# sourceMappingURL=index.js.map
616
616
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/metorial.ts","../src/providers/openai.ts","../src/providers/anthropic.ts","../src/providers/deepseek.ts","../src/providers/google.ts","../src/providers/mistral.ts","../src/providers/xai.ts","../src/providers/togetherai.ts"],"names":[],"mappings":"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","sourcesContent":["import { MetorialCoreSDK, createMetorialCoreSDK } from '@metorial/core';\nimport {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nimport type OpenAI from 'openai';\nimport type Anthropic from '@anthropic-ai/sdk';\nimport type { GoogleGenAI } from '@google/genai';\nimport type { Mistral } from '@mistralai/mistralai';\n\nimport { runWithOpenAI } from './providers/openai';\nimport { runWithAnthropic } from './providers/anthropic';\nimport { runWithDeepSeek } from './providers/deepseek';\nimport { runWithGoogle } from './providers/google';\nimport { runWithMistral } from './providers/mistral';\nimport { runWithXAI } from './providers/xai';\nimport { runWithTogetherAI } from './providers/togetherai';\n\nimport { RunResult } from './providers/types';\n\nexport type { RunResult } from './providers/types';\nexport type {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nexport class Metorial implements MetorialCoreSDK {\n private readonly sdk: MetorialCoreSDK;\n\n constructor(init: Parameters<typeof createMetorialCoreSDK>[0]) {\n this.sdk = createMetorialCoreSDK(init);\n }\n\n get instance() {\n return this.sdk.instance;\n }\n\n get secrets() {\n return this.sdk.secrets;\n }\n\n get servers() {\n return this.sdk.servers;\n }\n\n get sessions() {\n return this.sdk.sessions;\n }\n\n get oauth(): typeof this.sdk.oauth & {\n waitForCompletion: (\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ) => Promise<void>;\n } {\n return {\n ...this.sdk.oauth,\n waitForCompletion: this.waitForOAuthCompletion.bind(this)\n };\n }\n\n get _config() {\n return this.sdk._config;\n }\n\n get mcp() {\n return {\n createSession: (init: MetorialMcpSessionInit) => new MetorialMcpSession(this.sdk, init),\n withSession: this.withSession.bind(this),\n withProviderSession: this.withProviderSession.bind(this),\n createConnection: this.createMcpConnection.bind(this)\n };\n }\n\n async createMcpConnection(init: MetorialMcpSessionInitServerDeployments[number]) {\n let session = new MetorialMcpSession(this.sdk, {\n serverDeployments: [init]\n });\n\n let deployments = await session.getServerDeployments();\n\n return await session.getClient({\n deploymentId: deployments[0].id\n });\n }\n\n async withSession<T>(\n init: MetorialMcpSessionInit,\n action: (session: MetorialMcpSession) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n try {\n return await action(session);\n } finally {\n await session.close();\n }\n }\n\n async withProviderSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit & { streaming?: boolean },\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n }\n ) => Promise<T>\n ): Promise<T> {\n if (init.streaming) {\n return this.withStreamingSession(provider, init, action);\n }\n\n return this.withSession(init, async session => {\n let providerData = await provider(session);\n\n return action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session)\n });\n });\n }\n\n private async withStreamingSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit,\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n closeSession: () => Promise<void>;\n }\n ) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n let sessionClosed = false;\n\n const closeSession = async () => {\n if (!sessionClosed) {\n sessionClosed = true;\n console.log('[Metorial] Closing streaming session');\n await session.close();\n }\n };\n\n try {\n let providerData = await provider(session);\n\n let result = await action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session),\n closeSession\n });\n\n setTimeout(async () => {\n if (!sessionClosed) {\n console.log('[Metorial] Streaming timeout reached - auto-closing session');\n await closeSession();\n }\n }, 60000); // 1 minute timeout\n\n return result;\n } catch (error) {\n await closeSession();\n throw error;\n }\n }\n\n private inferProvider(\n model: string\n ): 'openai' | 'anthropic' | 'deepseek' | 'google' | 'mistral' | 'xai' | 'togetherai' {\n let modelLower = model.toLowerCase();\n\n if (modelLower.startsWith('claude-')) {\n return 'anthropic';\n }\n\n if (modelLower.startsWith('gpt-') || modelLower.startsWith('o1-')) {\n return 'openai';\n }\n\n if (modelLower.includes('deepseek')) {\n return 'deepseek';\n }\n\n if (modelLower.startsWith('gemini-') || modelLower.includes('google')) {\n return 'google';\n }\n\n if (modelLower.startsWith('mistral-') || modelLower.includes('mistral')) {\n return 'mistral';\n }\n\n if (modelLower.startsWith('x-') || modelLower === 'grok-beta') {\n return 'xai';\n }\n\n if (\n modelLower.includes('together') ||\n modelLower.includes('llama') ||\n modelLower.includes('mixtral') ||\n modelLower.includes('qwen') ||\n modelLower.includes('/')\n ) {\n return 'togetherai';\n }\n\n throw new Error(`Unable to infer provider from model \"${model}\".`);\n }\n\n async waitForOAuthCompletion(\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ): Promise<void> {\n let pollInterval = Math.max(options?.pollInterval ?? 5000, 2000); // minimum 2 seconds\n let timeout = options?.timeout ?? 600000; // 10 minutes\n let startTime = Date.now();\n\n if (sessions.length === 0) {\n return;\n }\n\n while (true) {\n if (Date.now() - startTime > timeout) {\n throw new Error(`OAuth authentication timeout after ${timeout / 1000} seconds`);\n }\n\n try {\n let statuses = await Promise.all(\n sessions.map(session => this.oauth.sessions.get(session.id))\n );\n\n let allCompleted = statuses.every(status => status.status === 'completed');\n if (allCompleted) {\n return;\n }\n\n let failedSessions = statuses.filter(status => status.status === 'failed');\n if (failedSessions.length > 0) {\n throw new Error(\n `OAuth authentication failed for ${failedSessions.length} session(s)`\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n } catch (error) {\n if (\n error instanceof Error &&\n (error.message.includes('OAuth authentication failed') ||\n error.message.includes('OAuth authentication timeout'))\n ) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n }\n }\n\n async run(config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n model: string;\n maxSteps?: number;\n tools?: string[];\n [key: string]: any;\n }): Promise<RunResult> {\n let provider = this.inferProvider(config.model);\n\n switch (provider) {\n case 'openai':\n return runWithOpenAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'anthropic':\n return runWithAnthropic({\n ...config,\n client: config.client as Anthropic,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'deepseek':\n return runWithDeepSeek({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'google':\n return runWithGoogle({\n ...config,\n client: config.client as GoogleGenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'mistral':\n return runWithMistral({\n ...config,\n client: config.client as Mistral,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'xai':\n return runWithXAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'togetherai':\n return runWithTogetherAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n default:\n throw new Error(`Unsupported provider: ${provider}`);\n }\n }\n}\n","import type OpenAI from 'openai';\nimport { metorialOpenAI } from '@metorial/openai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithOpenAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...openaiOptions \n } = config;\n\n return withProviderSession(\n metorialOpenAI.chatCompletions,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...openaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithOpenAI };","import type Anthropic from '@anthropic-ai/sdk';\nimport { metorialAnthropic } from '@metorial/anthropic';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\ninterface ToolResultBlock {\n type: 'tool_result';\n tool_use_id: string;\n content: string;\n}\n\ninterface ToolResponseMessage {\n role: 'user';\n content: ToolResultBlock[];\n}\n\nlet runWithAnthropic = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Anthropic;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n max_tokens?: number;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n max_tokens = 4096,\n ...anthropicOptions \n } = config;\n\n return withProviderSession(\n metorialAnthropic,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools: Anthropic.Tool[] = requestedTools\n ? (session.tools as Anthropic.Tool[]).filter(t => requestedTools.includes(t.name))\n : session.tools as Anthropic.Tool[];\n\n let messages: Anthropic.Messages.MessageParam[] = [\n { role: 'user', content: message }\n ];\n\n let uniqueTools = Array.from(new Map(tools.map(t => [t.name, t])).values());\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.messages.create({\n model,\n max_tokens,\n messages,\n tools: uniqueTools,\n ...anthropicOptions\n });\n\n if (response.stop_reason !== 'tool_use') {\n let textContent = response.content.find(\n (block): block is Anthropic.Messages.TextBlock => block.type === 'text'\n );\n return {\n text: textContent?.text || '',\n steps: step + 1\n };\n }\n\n let toolUseBlocks = response.content.filter(\n (block): block is Anthropic.Messages.ToolUseBlock => block.type === 'tool_use'\n );\n let toolResponse = await session.callTools(toolUseBlocks) as ToolResponseMessage;\n\n let toolResponseMessage: Anthropic.Messages.MessageParam = {\n role: 'user',\n content: toolResponse.content.map(block => ({\n type: 'tool_result' as const,\n tool_use_id: block.tool_use_id,\n content: block.content\n } as Anthropic.Messages.ToolResultBlockParam))\n };\n\n messages.push(\n { role: 'assistant', content: response.content },\n toolResponseMessage\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithAnthropic };","import type OpenAI from 'openai';\nimport { metorialDeepseek } from '@metorial/deepseek';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithDeepSeek = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI; // DeepSeek uses OpenAI-compatible client\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...deepseekOptions \n } = config;\n\n return withProviderSession(\n metorialDeepseek,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function?.name || t.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...deepseekOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithDeepSeek };","import type { GoogleGenAI } from '@google/genai';\nimport { metorialGoogle } from '@metorial/google';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithGoogle = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: GoogleGenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...googleOptions \n } = config;\n\n return withProviderSession(\n metorialGoogle,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let response = await client.models.generateContent({\n model,\n contents: [\n {\n role: 'user',\n parts: [{ text: message }]\n }\n ],\n config: {\n tools,\n ...googleOptions\n }\n });\n\n let text = response.candidates?.[0]?.content?.parts?.[0]?.text;\n \n let functionCalls = response.candidates?.[0]?.content?.parts\n ?.filter((part: any) => part.functionCall)\n .map((part: any) => part.functionCall);\n\n if (functionCalls && functionCalls.length > 0) {\n let toolResponses = await session.callTools(functionCalls);\n \n return {\n text: text || '',\n toolResponses: toolResponses as any,\n steps: 1\n };\n }\n\n return {\n text: text || '',\n steps: 1\n };\n }\n );\n}\n\nexport { runWithGoogle };","import type { Mistral } from '@mistralai/mistralai';\nimport { metorialMistral } from '@metorial/mistral';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet extractTextFromContent = (content: unknown): string => {\n if (typeof content === 'string') {\n return content;\n }\n \n if (Array.isArray(content)) {\n return content\n .filter((chunk: any) => chunk && typeof chunk === 'object')\n .map((chunk: any) => chunk.text || chunk.content || JSON.stringify(chunk))\n .join('');\n }\n \n return '';\n}\n\nlet runWithMistral = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Mistral;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...mistralOptions \n } = config;\n\n return withProviderSession(\n metorialMistral,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n // Fix tools for Mistral compatibility: add additionalProperties: false\n let fixedTools = tools.map((tool: any) => {\n if (tool.function?.parameters) {\n let fixedParams = { ...tool.function.parameters };\n fixedParams.additionalProperties = false;\n\n // Also fix nested objects\n if (fixedParams.properties) {\n Object.values(fixedParams.properties).forEach((prop: any) => {\n if (prop && typeof prop === 'object' && prop.type === 'object') {\n prop.additionalProperties = false;\n }\n });\n }\n\n return {\n ...tool,\n function: {\n ...tool.function,\n parameters: fixedParams\n }\n };\n }\n return tool;\n });\n\n let messages: any[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.complete({\n model,\n messages,\n tools: fixedTools,\n ...mistralOptions\n });\n\n let choice = response.choices[0];\n let toolCalls = choice.message.toolCalls;\n \n if (!toolCalls || toolCalls.length === 0) {\n return {\n text: extractTextFromContent(choice.message.content),\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(toolCalls);\n\n messages.push(\n { role: 'assistant', toolCalls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithMistral };","import type OpenAI from 'openai';\nimport { metorialXai } from '@metorial/xai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithXAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...xaiOptions \n } = config;\n\n return withProviderSession(\n metorialXai,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...xaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithXAI };","import type OpenAI from 'openai';\nimport { metorialTogetherAi } from '@metorial/togetherai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithTogetherAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...togetheraiOptions \n } = config;\n\n return withProviderSession(\n metorialTogetherAi,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...togetheraiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithTogetherAI };"]}
1
+ {"version":3,"sources":["../src/providers/openai.ts","../src/providers/anthropic.ts","../src/providers/deepseek.ts","../src/providers/google.ts","../src/providers/mistral.ts","../src/providers/xai.ts","../src/providers/togetherai.ts","../src/metorial.ts"],"names":[],"mappings":";;;;;;;;;;;AAKA,IAAI,aAAA,GAAgB,OAAO,MAAA,KASD;AACxB,EAAA,IAAI;AAAA,IACF,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,EAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,mBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,MAAA;AAEJ,EAAA,OAAO,mBAAA;AAAA,IACL,cAAA,CAAe,eAAA;AAAA,IACf;AAAA,MACE,mBAAmB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,GAAI,iBAAA,GAAoB,CAAC,iBAAiB;AAAA,KAC9F;AAAA,IACA,OAAM,OAAA,KAAW;AACf,MAAA,IAAI,KAAA,GAAQ,cAAA,GACR,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAW,cAAA,CAAe,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,IAChE,OAAA,CAAQ,KAAA;AAEZ,MAAA,IAAI,QAAA,GAAiE;AAAA,QACnE,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,OAAA;AAAQ,OACnC;AAEA,MAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,QAAA,EAAU,IAAA,EAAA,EAAQ;AAC1C,QAAA,IAAI,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,YAAY,MAAA,CAAO;AAAA,UAClD,KAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AAED,QAAA,IAAI,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAE/B,QAAA,IAAI,CAAC,MAAA,CAAO,OAAA,CAAQ,UAAA,EAAY;AAC9B,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,MAAA,CAAO,OAAA,CAAQ,OAAA,IAAW,EAAA;AAAA,YAChC,OAAO,IAAA,GAAO;AAAA,WAChB;AAAA,QACF;AAEA,QAAA,IAAI,gBAAgB,MAAM,OAAA,CAAQ,SAAA,CAAU,MAAA,CAAO,QAAQ,UAAU,CAAA;AAErE,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,EAAE,IAAA,EAAM,WAAA,EAAa,UAAA,EAAY,MAAA,CAAO,QAAQ,UAAA,EAAW;AAAA,UAC3D,GAAG;AAAA,SACL;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,QAAQ,CAAA,gCAAA,CAAkC,CAAA;AAAA,IAC1E;AAAA,GACF;AACF,CAAA;ACpDA,IAAI,gBAAA,GAAmB,OAAO,MAAA,KAUJ;AACxB,EAAA,IAAI;AAAA,IACF,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,EAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,mBAAA;AAAA,IACA,UAAA,GAAa,IAAA;AAAA,IACb,GAAG;AAAA,GACL,GAAI,MAAA;AAEJ,EAAA,OAAO,mBAAA;AAAA,IACL,iBAAA;AAAA,IACA;AAAA,MACE,mBAAmB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,GAAI,iBAAA,GAAoB,CAAC,iBAAiB;AAAA,KAC9F;AAAA,IACA,OAAM,OAAA,KAAW;AACf,MAAA,IAAI,KAAA,GAA0B,cAAA,GACzB,OAAA,CAAQ,KAAA,CAA2B,MAAA,CAAO,CAAA,CAAA,KAAK,cAAA,CAAe,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA,GAC/E,OAAA,CAAQ,KAAA;AAEZ,MAAA,IAAI,QAAA,GAA8C;AAAA,QAChD,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,OAAA;AAAQ,OACnC;AAEA,MAAA,IAAI,cAAc,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,MAAM,GAAA,CAAI,CAAA,CAAA,KAAK,CAAC,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAA,CAAE,QAAQ,CAAA;AAE1E,MAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,QAAA,EAAU,IAAA,EAAA,EAAQ;AAC1C,QAAA,IAAI,QAAA,GAAW,MAAM,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO;AAAA,UAC1C,KAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA,EAAO,WAAA;AAAA,UACP,GAAG;AAAA,SACJ,CAAA;AAED,QAAA,IAAI,QAAA,CAAS,gBAAgB,UAAA,EAAY;AACvC,UAAA,IAAI,WAAA,GAAc,SAAS,OAAA,CAAQ,IAAA;AAAA,YACjC,CAAC,KAAA,KAAiD,KAAA,CAAM,IAAA,KAAS;AAAA,WACnE;AACA,UAAA,OAAO;AAAA,YACL,IAAA,EAAA,CAAM,2CAAa,IAAA,KAAQ,EAAA;AAAA,YAC3B,OAAO,IAAA,GAAO;AAAA,WAChB;AAAA,QACF;AAEA,QAAA,IAAI,aAAA,GAAgB,SAAS,OAAA,CAAQ,MAAA;AAAA,UACnC,CAAC,KAAA,KAAoD,KAAA,CAAM,IAAA,KAAS;AAAA,SACtE;AACA,QAAA,IAAI,YAAA,GAAe,MAAM,OAAA,CAAQ,SAAA,CAAU,aAAa,CAAA;AAExD,QAAA,IAAI,mBAAA,GAAuD;AAAA,UACzD,IAAA,EAAM,MAAA;AAAA,UACN,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,MAAU;AAAA,YAC1C,IAAA,EAAM,aAAA;AAAA,YACN,aAAa,KAAA,CAAM,WAAA;AAAA,YACnB,SAAS,KAAA,CAAM;AAAA,WACjB,CAA6C;AAAA,SAC/C;AAEA,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,SAAS,OAAA,EAAQ;AAAA,UAC/C;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,QAAQ,CAAA,gCAAA,CAAkC,CAAA;AAAA,IAC1E;AAAA,GACF;AACF,CAAA;AC5FA,IAAI,eAAA,GAAkB,OAAO,MAAA,KASH;AACxB,EAAA,IAAI;AAAA,IACF,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,EAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,mBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,MAAA;AAEJ,EAAA,OAAO,mBAAA;AAAA,IACL,gBAAA;AAAA,IACA;AAAA,MACE,mBAAmB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,GAAI,iBAAA,GAAoB,CAAC,iBAAiB;AAAA,KAC9F;AAAA,IACA,OAAM,OAAA,KAAW;AACf,MAAA,IAAI,QAAQ,cAAA,GACR,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAQ;AAjCxC,QAAA,IAAA,EAAA;AAiC2C,QAAA,OAAA,cAAA,CAAe,WAAS,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,IAAA,KAAQ,EAAE,IAAI,CAAA;AAAA,MAAA,CAAC,IACpF,OAAA,CAAQ,KAAA;AAEZ,MAAA,IAAI,cAAc,KAAA,CAAM,IAAA;AAAA,QACtB,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAQ;AArCnC,UAAA,IAAA,EAAA;AAqCsC,UAAA,OAAA,CAAA,CAAA,CAAC,OAAE,QAAA,KAAF,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,IAAA,KAAQ,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,QAAA,CAAC,CAAC,EAAE,MAAA;AAAO,OACzE;AAEA,MAAA,IAAI,QAAA,GAAiE;AAAA,QACnE,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,OAAA;AAAQ,OACnC;AAEA,MAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,QAAA,EAAU,IAAA,EAAA,EAAQ;AAC1C,QAAA,IAAI,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,YAAY,MAAA,CAAO;AAAA,UAClD,KAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA,EAAO,WAAA;AAAA,UACP,GAAG;AAAA,SACJ,CAAA;AAED,QAAA,IAAI,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAE/B,QAAA,IAAI,CAAC,OAAO,OAAA,CAAQ,UAAA,IAAc,OAAO,OAAA,CAAQ,UAAA,CAAW,WAAW,CAAA,EAAG;AACxE,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,MAAA,CAAO,OAAA,CAAQ,OAAA,IAAW,EAAA;AAAA,YAChC,OAAO,IAAA,GAAO;AAAA,WAChB;AAAA,QACF;AAEA,QAAA,IAAI,gBAAgB,MAAM,OAAA,CAAQ,SAAA,CAAU,MAAA,CAAO,QAAQ,UAAU,CAAA;AAErE,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,EAAE,IAAA,EAAM,WAAA,EAAa,UAAA,EAAY,MAAA,CAAO,QAAQ,UAAA,EAAW;AAAA,UAC3D,GAAG;AAAA,SACL;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,QAAQ,CAAA,gCAAA,CAAkC,CAAA;AAAA,IAC1E;AAAA,GACF;AACF,CAAA;ACnEA,IAAI,aAAA,GAAgB,OAAO,MAAA,KASD;AACxB,EAAA,IAAI;AAAA,IACF,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,EAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,mBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,MAAA;AAEJ,EAAA,OAAO,mBAAA;AAAA,IACL,cAAA;AAAA,IACA;AAAA,MACE,mBAAmB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,GAAI,iBAAA,GAAoB,CAAC,iBAAiB;AAAA,KAC9F;AAAA,IACA,OAAM,OAAA,KAAW;AA/BrB,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAgCM,MAAA,IAAI,KAAA,GAAQ,cAAA,GACR,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAW,cAAA,CAAe,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,IAChE,OAAA,CAAQ,KAAA;AAEZ,MAAA,IAAI,QAAA,GAAW,MAAM,MAAA,CAAO,MAAA,CAAO,eAAA,CAAgB;AAAA,QACjD,KAAA;AAAA,QACA,QAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,SAAS;AAAA;AAC3B,SACF;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,KAAA;AAAA,UACA,GAAG;AAAA;AACL,OACD,CAAA;AAED,MAAA,IAAI,IAAA,GAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAA,CAAS,UAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,CAAA,CAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,OAAA,KAA1B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmC,KAAA,KAAnC,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2C,CAAA,CAAA,KAA3C,IAAA,GAAA,MAAA,GAAA,EAAA,CAA+C,IAAA;AAE1D,MAAA,IAAI,iBAAgB,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAA,CAAS,UAAA,KAAT,mBAAsB,CAAA,CAAA,KAAtB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,YAA1B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmC,KAAA,KAAnC,IAAA,GAAA,MAAA,GAAA,EAAA,CAChB,MAAA,CAAO,CAAC,IAAA,KAAc,IAAA,CAAK,cAC5B,GAAA,CAAI,CAAC,SAAc,IAAA,CAAK,YAAA,CAAA;AAE3B,MAAA,IAAI,aAAA,IAAiB,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AAC7C,QAAA,IAAI,aAAA,GAAgB,MAAM,OAAA,CAAQ,SAAA,CAAU,aAAa,CAAA;AAEzD,QAAA,OAAO;AAAA,UACL,MAAM,IAAA,IAAQ,EAAA;AAAA,UACd,aAAA;AAAA,UACA,KAAA,EAAO;AAAA,SACT;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACL,MAAM,IAAA,IAAQ,EAAA;AAAA,QACd,KAAA,EAAO;AAAA,OACT;AAAA,IACF;AAAA,GACF;AACF,CAAA;ACnEA,IAAI,sBAAA,GAAyB,CAAC,OAAA,KAA6B;AACzD,EAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC1B,IAAA,OAAO,OAAA,CACJ,OAAO,CAAC,KAAA,KAAe,SAAS,OAAO,KAAA,KAAU,QAAQ,CAAA,CACzD,GAAA,CAAI,CAAC,UAAe,KAAA,CAAM,IAAA,IAAQ,MAAM,OAAA,IAAW,IAAA,CAAK,UAAU,KAAK,CAAC,CAAA,CACxE,IAAA,CAAK,EAAE,CAAA;AAAA,EACZ;AAEA,EAAA,OAAO,EAAA;AACT,CAAA;AAEA,IAAI,cAAA,GAAiB,OAAO,MAAA,KASF;AACxB,EAAA,IAAI;AAAA,IACF,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,EAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,mBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,MAAA;AAEJ,EAAA,OAAO,mBAAA;AAAA,IACL,eAAA;AAAA,IACA;AAAA,MACE,mBAAmB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,GAAI,iBAAA,GAAoB,CAAC,iBAAiB;AAAA,KAC9F;AAAA,IACA,OAAM,OAAA,KAAW;AACf,MAAA,IAAI,QAAQ,cAAA,GACR,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAQ;AAhDxC,QAAA,IAAA,EAAA;AAgD2C,QAAA,OAAA,cAAA,CAAe,WAAS,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,IAAA,KAAQ,EAAE,IAAI,CAAA;AAAA,MAAA,CAAC,IACpF,OAAA,CAAQ,KAAA;AAGZ,MAAA,IAAI,UAAA,GAAa,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAc;AApDhD,QAAA,IAAA,EAAA;AAqDQ,QAAA,IAAA,CAAI,EAAA,GAAA,IAAA,CAAK,QAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,UAAA,EAAY;AAC7B,UAAA,IAAI,WAAA,GAAc,EAAE,GAAG,IAAA,CAAK,SAAS,UAAA,EAAW;AAChD,UAAA,WAAA,CAAY,oBAAA,GAAuB,KAAA;AAGnC,UAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,YAAA,MAAA,CAAO,OAAO,WAAA,CAAY,UAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAc;AAC3D,cAAA,IAAI,QAAQ,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,SAAS,QAAA,EAAU;AAC9D,gBAAA,IAAA,CAAK,oBAAA,GAAuB,KAAA;AAAA,cAC9B;AAAA,YACF,CAAC,CAAA;AAAA,UACH;AAEA,UAAA,OAAO;AAAA,YACL,GAAG,IAAA;AAAA,YACH,QAAA,EAAU;AAAA,cACR,GAAG,IAAA,CAAK,QAAA;AAAA,cACR,UAAA,EAAY;AAAA;AACd,WACF;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AAED,MAAA,IAAI,QAAA,GAAkB;AAAA,QACpB,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,OAAA;AAAQ,OACnC;AAEA,MAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,QAAA,EAAU,IAAA,EAAA,EAAQ;AAC1C,QAAA,IAAI,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS;AAAA,UACxC,KAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA,EAAO,UAAA;AAAA,UACP,GAAG;AAAA,SACJ,CAAA;AAED,QAAA,IAAI,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAC/B,QAAA,IAAI,SAAA,GAAY,OAAO,OAAA,CAAQ,SAAA;AAE/B,QAAA,IAAI,CAAC,SAAA,IAAa,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AACxC,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,sBAAA,CAAuB,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA;AAAA,YACnD,OAAO,IAAA,GAAO;AAAA,WAChB;AAAA,QACF;AAEA,QAAA,IAAI,aAAA,GAAgB,MAAM,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AAErD,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,EAAE,IAAA,EAAM,WAAA,EAAa,SAAA,EAAU;AAAA,UAC/B,GAAG;AAAA,SACL;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,QAAQ,CAAA,gCAAA,CAAkC,CAAA;AAAA,IAC1E;AAAA,GACF;AACF,CAAA;ACzGA,IAAI,UAAA,GAAa,OAAO,MAAA,KASE;AACxB,EAAA,IAAI;AAAA,IACF,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,EAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,mBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,MAAA;AAEJ,EAAA,OAAO,mBAAA;AAAA,IACL,WAAA;AAAA,IACA;AAAA,MACE,mBAAmB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,GAAI,iBAAA,GAAoB,CAAC,iBAAiB;AAAA,KAC9F;AAAA,IACA,OAAM,OAAA,KAAW;AACf,MAAA,IAAI,QAAQ,cAAA,GACR,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAQ;AAjCxC,QAAA,IAAA,EAAA;AAiC2C,QAAA,OAAA,cAAA,CAAe,WAAS,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,IAAA,KAAQ,EAAE,IAAI,CAAA;AAAA,MAAA,CAAC,IACpF,OAAA,CAAQ,KAAA;AAEZ,MAAA,IAAI,cAAc,KAAA,CAAM,IAAA;AAAA,QACtB,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAW,CAAC,CAAA,CAAE,QAAA,CAAS,IAAA,EAAM,CAAC,CAAC,CAAC,EAAE,MAAA;AAAO,OAC9D;AAEA,MAAA,IAAI,QAAA,GAAiE;AAAA,QACnE,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,OAAA;AAAQ,OACnC;AAEA,MAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,QAAA,EAAU,IAAA,EAAA,EAAQ;AAC1C,QAAA,IAAI,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,YAAY,MAAA,CAAO;AAAA,UAClD,KAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA,EAAO,WAAA;AAAA,UACP,GAAG;AAAA,SACJ,CAAA;AAED,QAAA,IAAI,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAE/B,QAAA,IAAI,CAAC,OAAO,OAAA,CAAQ,UAAA,IAAc,OAAO,OAAA,CAAQ,UAAA,CAAW,WAAW,CAAA,EAAG;AACxE,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,MAAA,CAAO,OAAA,CAAQ,OAAA,IAAW,EAAA;AAAA,YAChC,OAAO,IAAA,GAAO;AAAA,WAChB;AAAA,QACF;AAEA,QAAA,IAAI,gBAAgB,MAAM,OAAA,CAAQ,SAAA,CAAU,MAAA,CAAO,QAAQ,UAAU,CAAA;AAErE,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,EAAE,IAAA,EAAM,WAAA,EAAa,UAAA,EAAY,MAAA,CAAO,QAAQ,UAAA,EAAW;AAAA,UAC3D,GAAG;AAAA,SACL;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,QAAQ,CAAA,gCAAA,CAAkC,CAAA;AAAA,IAC1E;AAAA,GACF;AACF,CAAA;ACnEA,IAAI,iBAAA,GAAoB,OAAO,MAAA,KASL;AACxB,EAAA,IAAI;AAAA,IACF,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,EAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,mBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,MAAA;AAEJ,EAAA,OAAO,mBAAA;AAAA,IACL,kBAAA;AAAA,IACA;AAAA,MACE,mBAAmB,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,GAAI,iBAAA,GAAoB,CAAC,iBAAiB;AAAA,KAC9F;AAAA,IACA,OAAM,OAAA,KAAW;AACf,MAAA,IAAI,QAAQ,cAAA,GACR,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAQ;AAjCxC,QAAA,IAAA,EAAA;AAiC2C,QAAA,OAAA,cAAA,CAAe,WAAS,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,IAAA,KAAQ,EAAE,IAAI,CAAA;AAAA,MAAA,CAAC,IACpF,OAAA,CAAQ,KAAA;AAEZ,MAAA,IAAI,QAAA,GAAiE;AAAA,QACnE,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,OAAA;AAAQ,OACnC;AAEA,MAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,QAAA,EAAU,IAAA,EAAA,EAAQ;AAC1C,QAAA,IAAI,QAAA,GAAW,MAAM,MAAA,CAAO,IAAA,CAAK,YAAY,MAAA,CAAO;AAAA,UAClD,KAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AAED,QAAA,IAAI,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAE/B,QAAA,IAAI,CAAC,OAAO,OAAA,CAAQ,UAAA,IAAc,OAAO,OAAA,CAAQ,UAAA,CAAW,WAAW,CAAA,EAAG;AACxE,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,MAAA,CAAO,OAAA,CAAQ,OAAA,IAAW,EAAA;AAAA,YAChC,OAAO,IAAA,GAAO;AAAA,WAChB;AAAA,QACF;AAEA,QAAA,IAAI,gBAAgB,MAAM,OAAA,CAAQ,SAAA,CAAU,MAAA,CAAO,QAAQ,UAAU,CAAA;AAErE,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,EAAE,IAAA,EAAM,WAAA,EAAa,UAAA,EAAY,MAAA,CAAO,QAAQ,UAAA,EAAW;AAAA,UAC3D,GAAG;AAAA,SACL;AAAA,MACF;AAEA,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,QAAQ,CAAA,gCAAA,CAAkC,CAAA;AAAA,IAC1E;AAAA,GACF;AACF,CAAA;;;ACvCO,IAAM,WAAN,MAA0C;AAAA,EAG/C,YAAY,IAAA,EAAmD;AAC7D,IAAA,IAAA,CAAK,GAAA,GAAM,sBAAsB,IAAI,CAAA;AAAA,EACvC;AAAA,EAEA,IAAI,QAAA,GAAW;AACb,IAAA,OAAO,KAAK,GAAA,CAAI,QAAA;AAAA,EAClB;AAAA,EAEA,IAAI,OAAA,GAAU;AACZ,IAAA,OAAO,KAAK,GAAA,CAAI,OAAA;AAAA,EAClB;AAAA,EAEA,IAAI,OAAA,GAAU;AACZ,IAAA,OAAO,KAAK,GAAA,CAAI,OAAA;AAAA,EAClB;AAAA,EAEA,IAAI,QAAA,GAAW;AACb,IAAA,OAAO,KAAK,GAAA,CAAI,QAAA;AAAA,EAClB;AAAA,EAEA,IAAI,KAAA,GAQF;AACA,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,GAAA,CAAI,KAAA;AAAA,MACZ,iBAAA,EAAmB,IAAA,CAAK,sBAAA,CAAuB,IAAA,CAAK,IAAI;AAAA,KAC1D;AAAA,EACF;AAAA,EAEA,IAAI,OAAA,GAAU;AACZ,IAAA,OAAO,KAAK,GAAA,CAAI,OAAA;AAAA,EAClB;AAAA,EAEA,IAAI,GAAA,GAAM;AACR,IAAA,OAAO;AAAA,MACL,eAAe,CAAC,IAAA,KAAiC,IAAI,kBAAA,CAAmB,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,MACtF,WAAA,EAAa,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA;AAAA,MACvC,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI,CAAA;AAAA,MACvD,gBAAA,EAAkB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,KACtD;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB,IAAA,EAAuD;AAC/E,IAAA,IAAI,OAAA,GAAU,IAAI,kBAAA,CAAmB,IAAA,CAAK,GAAA,EAAK;AAAA,MAC7C,iBAAA,EAAmB,CAAC,IAAI;AAAA,KACzB,CAAA;AAED,IAAA,IAAI,WAAA,GAAc,MAAM,OAAA,CAAQ,oBAAA,EAAqB;AAErD,IAAA,OAAO,MAAM,QAAQ,SAAA,CAAU;AAAA,MAC7B,YAAA,EAAc,WAAA,CAAY,CAAC,CAAA,CAAE;AAAA,KAC9B,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,WAAA,CACJ,IAAA,EACA,MAAA,EACY;AACZ,IAAA,IAAI,OAAA,GAAU,IAAI,kBAAA,CAAmB,IAAA,CAAK,KAAK,IAAI,CAAA;AACnD,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,OAAO,OAAO,CAAA;AAAA,IAC7B,CAAA,SAAE;AACA,MAAA,MAAM,QAAQ,KAAA,EAAM;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,MAAM,mBAAA,CACJ,QAAA,EACA,IAAA,EACA,MAAA,EAUY;AACZ,IAAA,IAAI,KAAK,SAAA,EAAW;AAClB,MAAA,OAAO,IAAA,CAAK,oBAAA,CAAqB,QAAA,EAAU,IAAA,EAAM,MAAM,CAAA;AAAA,IACzD;AAEA,IAAA,OAAO,IAAA,CAAK,WAAA,CAAY,IAAA,EAAM,OAAM,OAAA,KAAW;AAC7C,MAAA,IAAI,YAAA,GAAe,MAAM,QAAA,CAAS,OAAO,CAAA;AAEzC,MAAA,OAAO,MAAA,CAAO;AAAA,QACZ,GAAG,YAAA;AAAA,QACH,OAAA;AAAA,QACA,UAAA,EAAY,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA;AAAA,QAC3C,eAAA,EAAiB,OAAA,CAAQ,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA;AAAA,QACrD,SAAA,EAAW,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA;AAAA,QACzC,oBAAA,EAAsB,OAAA,CAAQ,oBAAA,CAAqB,IAAA,CAAK,OAAO,CAAA;AAAA,QAC/D,cAAA,EAAgB,OAAA,CAAQ,cAAA,CAAe,IAAA,CAAK,OAAO;AAAA,OACpD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAc,oBAAA,CACZ,QAAA,EACA,IAAA,EACA,MAAA,EAWY;AACZ,IAAA,IAAI,OAAA,GAAU,IAAI,kBAAA,CAAmB,IAAA,CAAK,KAAK,IAAI,CAAA;AACnD,IAAA,IAAI,aAAA,GAAgB,KAAA;AAEpB,IAAA,MAAM,eAAe,YAAY;AAC/B,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,aAAA,GAAgB,IAAA;AAChB,QAAA,OAAA,CAAQ,IAAI,sCAAsC,CAAA;AAClD,QAAA,MAAM,QAAQ,KAAA,EAAM;AAAA,MACtB;AAAA,IACF,CAAA;AAEA,IAAA,IAAI;AACF,MAAA,IAAI,YAAA,GAAe,MAAM,QAAA,CAAS,OAAO,CAAA;AAEzC,MAAA,IAAI,MAAA,GAAS,MAAM,MAAA,CAAO;AAAA,QACxB,GAAG,YAAA;AAAA,QACH,OAAA;AAAA,QACA,UAAA,EAAY,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA;AAAA,QAC3C,eAAA,EAAiB,OAAA,CAAQ,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA;AAAA,QACrD,SAAA,EAAW,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA;AAAA,QACzC,oBAAA,EAAsB,OAAA,CAAQ,oBAAA,CAAqB,IAAA,CAAK,OAAO,CAAA;AAAA,QAC/D,cAAA,EAAgB,OAAA,CAAQ,cAAA,CAAe,IAAA,CAAK,OAAO,CAAA;AAAA,QACnD;AAAA,OACD,CAAA;AAED,MAAA,UAAA,CAAW,YAAY;AACrB,QAAA,IAAI,CAAC,aAAA,EAAe;AAClB,UAAA,OAAA,CAAQ,IAAI,6DAA6D,CAAA;AACzE,UAAA,MAAM,YAAA,EAAa;AAAA,QACrB;AAAA,MACF,GAAG,GAAK,CAAA;AAER,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,YAAA,EAAa;AACnB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEQ,cACN,KAAA,EACmF;AACnF,IAAA,IAAI,UAAA,GAAa,MAAM,WAAA,EAAY;AAEnC,IAAA,IAAI,UAAA,CAAW,UAAA,CAAW,SAAS,CAAA,EAAG;AACpC,MAAA,OAAO,WAAA;AAAA,IACT;AAEA,IAAA,IAAI,WAAW,UAAA,CAAW,MAAM,KAAK,UAAA,CAAW,UAAA,CAAW,KAAK,CAAA,EAAG;AACjE,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,IAAI,UAAA,CAAW,QAAA,CAAS,UAAU,CAAA,EAAG;AACnC,MAAA,OAAO,UAAA;AAAA,IACT;AAEA,IAAA,IAAI,WAAW,UAAA,CAAW,SAAS,KAAK,UAAA,CAAW,QAAA,CAAS,QAAQ,CAAA,EAAG;AACrE,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,IAAI,WAAW,UAAA,CAAW,UAAU,KAAK,UAAA,CAAW,QAAA,CAAS,SAAS,CAAA,EAAG;AACvE,MAAA,OAAO,SAAA;AAAA,IACT;AAEA,IAAA,IAAI,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA,IAAK,eAAe,WAAA,EAAa;AAC7D,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IACE,WAAW,QAAA,CAAS,UAAU,KAC9B,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,IAC3B,UAAA,CAAW,SAAS,SAAS,CAAA,IAC7B,WAAW,QAAA,CAAS,MAAM,KAC1B,UAAA,CAAW,QAAA,CAAS,GAAG,CAAA,EACvB;AACA,MAAA,OAAO,YAAA;AAAA,IACT;AAEA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qCAAA,EAAwC,KAAK,CAAA,EAAA,CAAI,CAAA;AAAA,EACnE;AAAA,EAEA,MAAM,sBAAA,CACJ,QAAA,EACA,OAAA,EAIe;AA/OnB,IAAA,IAAA,EAAA,EAAA,EAAA;AAgPI,IAAA,IAAI,eAAe,IAAA,CAAK,GAAA,CAAA,CAAI,wCAAS,YAAA,KAAT,IAAA,GAAA,EAAA,GAAyB,KAAM,GAAI,CAAA;AAC/D,IAAA,IAAI,OAAA,GAAA,CAAU,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,OAAA,KAAT,IAAA,GAAA,EAAA,GAAoB,GAAA;AAClC,IAAA,IAAI,SAAA,GAAY,KAAK,GAAA,EAAI;AAEzB,IAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,MAAA;AAAA,IACF;AAEA,IAAA,OAAO,IAAA,EAAM;AACX,MAAA,IAAI,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA,GAAY,OAAA,EAAS;AACpC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mCAAA,EAAsC,OAAA,GAAU,GAAI,CAAA,QAAA,CAAU,CAAA;AAAA,MAChF;AAEA,MAAA,IAAI;AACF,QAAA,IAAI,QAAA,GAAW,MAAM,OAAA,CAAQ,GAAA;AAAA,UAC3B,QAAA,CAAS,IAAI,CAAA,OAAA,KAAW,IAAA,CAAK,MAAM,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAC;AAAA,SAC7D;AAEA,QAAA,IAAI,eAAe,QAAA,CAAS,KAAA,CAAM,CAAA,MAAA,KAAU,MAAA,CAAO,WAAW,WAAW,CAAA;AACzE,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,iBAAiB,QAAA,CAAS,MAAA,CAAO,CAAA,MAAA,KAAU,MAAA,CAAO,WAAW,QAAQ,CAAA;AACzE,QAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,CAAA,gCAAA,EAAmC,eAAe,MAAM,CAAA,WAAA;AAAA,WAC1D;AAAA,QACF;AAEA,QAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,UAAA,CAAW,OAAA,EAAS,YAAY,CAAC,CAAA;AAAA,MAChE,SAAS,KAAA,EAAO;AACd,QAAA,IACE,KAAA,YAAiB,KAAA,KAChB,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,6BAA6B,CAAA,IACnD,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,8BAA8B,CAAA,CAAA,EACvD;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAEA,QAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,UAAA,CAAW,OAAA,EAAS,YAAY,CAAC,CAAA;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,MAAA,EAOa;AACrB,IAAA,IAAI,QAAA,GAAW,IAAA,CAAK,aAAA,CAAc,MAAA,CAAO,KAAK,CAAA;AAE9C,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,QAAA;AACH,QAAA,OAAO,aAAA,CAAc;AAAA,UACnB,GAAG,MAAA;AAAA,UACH,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,SACxD,CAAA;AAAA,MAEH,KAAK,WAAA;AACH,QAAA,OAAO,gBAAA,CAAiB;AAAA,UACtB,GAAG,MAAA;AAAA,UACH,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,SACxD,CAAA;AAAA,MAEH,KAAK,UAAA;AACH,QAAA,OAAO,eAAA,CAAgB;AAAA,UACrB,GAAG,MAAA;AAAA,UACH,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,SACxD,CAAA;AAAA,MAEH,KAAK,QAAA;AACH,QAAA,OAAO,aAAA,CAAc;AAAA,UACnB,GAAG,MAAA;AAAA,UACH,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,SACxD,CAAA;AAAA,MAEH,KAAK,SAAA;AACH,QAAA,OAAO,cAAA,CAAe;AAAA,UACpB,GAAG,MAAA;AAAA,UACH,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,SACxD,CAAA;AAAA,MAEH,KAAK,KAAA;AACH,QAAA,OAAO,UAAA,CAAW;AAAA,UAChB,GAAG,MAAA;AAAA,UACH,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,SACxD,CAAA;AAAA,MAEH,KAAK,YAAA;AACH,QAAA,OAAO,iBAAA,CAAkB;AAAA,UACvB,GAAG,MAAA;AAAA,UACH,QAAQ,MAAA,CAAO,MAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAI;AAAA,SACxD,CAAA;AAAA,MAEH;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,QAAQ,CAAA,CAAE,CAAA;AAAA;AACvD,EACF;AACF","file":"index.js","sourcesContent":["import type OpenAI from 'openai';\nimport { metorialOpenAI } from '@metorial/openai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithOpenAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...openaiOptions \n } = config;\n\n return withProviderSession(\n metorialOpenAI.chatCompletions,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...openaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithOpenAI };","import type Anthropic from '@anthropic-ai/sdk';\nimport { metorialAnthropic } from '@metorial/anthropic';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\ninterface ToolResultBlock {\n type: 'tool_result';\n tool_use_id: string;\n content: string;\n}\n\ninterface ToolResponseMessage {\n role: 'user';\n content: ToolResultBlock[];\n}\n\nlet runWithAnthropic = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Anthropic;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n max_tokens?: number;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n max_tokens = 4096,\n ...anthropicOptions \n } = config;\n\n return withProviderSession(\n metorialAnthropic,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools: Anthropic.Tool[] = requestedTools\n ? (session.tools as Anthropic.Tool[]).filter(t => requestedTools.includes(t.name))\n : session.tools as Anthropic.Tool[];\n\n let messages: Anthropic.Messages.MessageParam[] = [\n { role: 'user', content: message }\n ];\n\n let uniqueTools = Array.from(new Map(tools.map(t => [t.name, t])).values());\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.messages.create({\n model,\n max_tokens,\n messages,\n tools: uniqueTools,\n ...anthropicOptions\n });\n\n if (response.stop_reason !== 'tool_use') {\n let textContent = response.content.find(\n (block): block is Anthropic.Messages.TextBlock => block.type === 'text'\n );\n return {\n text: textContent?.text || '',\n steps: step + 1\n };\n }\n\n let toolUseBlocks = response.content.filter(\n (block): block is Anthropic.Messages.ToolUseBlock => block.type === 'tool_use'\n );\n let toolResponse = await session.callTools(toolUseBlocks) as ToolResponseMessage;\n\n let toolResponseMessage: Anthropic.Messages.MessageParam = {\n role: 'user',\n content: toolResponse.content.map(block => ({\n type: 'tool_result' as const,\n tool_use_id: block.tool_use_id,\n content: block.content\n } as Anthropic.Messages.ToolResultBlockParam))\n };\n\n messages.push(\n { role: 'assistant', content: response.content },\n toolResponseMessage\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithAnthropic };","import type OpenAI from 'openai';\nimport { metorialDeepseek } from '@metorial/deepseek';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithDeepSeek = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI; // DeepSeek uses OpenAI-compatible client\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...deepseekOptions \n } = config;\n\n return withProviderSession(\n metorialDeepseek,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function?.name || t.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...deepseekOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithDeepSeek };","import type { GoogleGenAI } from '@google/genai';\nimport { metorialGoogle } from '@metorial/google';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithGoogle = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: GoogleGenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...googleOptions \n } = config;\n\n return withProviderSession(\n metorialGoogle,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.name))\n : session.tools;\n\n let response = await client.models.generateContent({\n model,\n contents: [\n {\n role: 'user',\n parts: [{ text: message }]\n }\n ],\n config: {\n tools,\n ...googleOptions\n }\n });\n\n let text = response.candidates?.[0]?.content?.parts?.[0]?.text;\n \n let functionCalls = response.candidates?.[0]?.content?.parts\n ?.filter((part: any) => part.functionCall)\n .map((part: any) => part.functionCall);\n\n if (functionCalls && functionCalls.length > 0) {\n let toolResponses = await session.callTools(functionCalls);\n \n return {\n text: text || '',\n toolResponses: toolResponses as any,\n steps: 1\n };\n }\n\n return {\n text: text || '',\n steps: 1\n };\n }\n );\n}\n\nexport { runWithGoogle };","import type { Mistral } from '@mistralai/mistralai';\nimport { metorialMistral } from '@metorial/mistral';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet extractTextFromContent = (content: unknown): string => {\n if (typeof content === 'string') {\n return content;\n }\n \n if (Array.isArray(content)) {\n return content\n .filter((chunk: any) => chunk && typeof chunk === 'object')\n .map((chunk: any) => chunk.text || chunk.content || JSON.stringify(chunk))\n .join('');\n }\n \n return '';\n}\n\nlet runWithMistral = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: Mistral;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...mistralOptions \n } = config;\n\n return withProviderSession(\n metorialMistral,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n // Fix tools for Mistral compatibility: add additionalProperties: false\n let fixedTools = tools.map((tool: any) => {\n if (tool.function?.parameters) {\n let fixedParams = { ...tool.function.parameters };\n fixedParams.additionalProperties = false;\n\n // Also fix nested objects\n if (fixedParams.properties) {\n Object.values(fixedParams.properties).forEach((prop: any) => {\n if (prop && typeof prop === 'object' && prop.type === 'object') {\n prop.additionalProperties = false;\n }\n });\n }\n\n return {\n ...tool,\n function: {\n ...tool.function,\n parameters: fixedParams\n }\n };\n }\n return tool;\n });\n\n let messages: any[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.complete({\n model,\n messages,\n tools: fixedTools,\n ...mistralOptions\n });\n\n let choice = response.choices[0];\n let toolCalls = choice.message.toolCalls;\n \n if (!toolCalls || toolCalls.length === 0) {\n return {\n text: extractTextFromContent(choice.message.content),\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(toolCalls);\n\n messages.push(\n { role: 'assistant', toolCalls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithMistral };","import type OpenAI from 'openai';\nimport { metorialXai } from '@metorial/xai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithXAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...xaiOptions \n } = config;\n\n return withProviderSession(\n metorialXai,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let uniqueTools = Array.from(\n new Map(tools.map((t: any) => [t.function.name, t])).values()\n );\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools: uniqueTools,\n ...xaiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithXAI };","import type OpenAI from 'openai';\nimport { metorialTogetherAi } from '@metorial/togetherai';\nimport type { MetorialMcpSessionInitServerDeployments } from '@metorial/mcp-session';\nimport type { WithProviderSessionFunction, RunResult } from './types';\n\nlet runWithTogetherAI = async (config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n client: OpenAI;\n model: string;\n maxSteps?: number;\n tools?: string[];\n withProviderSession: WithProviderSessionFunction;\n [key: string]: any;\n}): Promise<RunResult> => {\n let { \n message, \n serverDeployments, \n client, \n model, \n maxSteps = 25, \n tools: requestedTools,\n withProviderSession,\n ...togetheraiOptions \n } = config;\n\n return withProviderSession(\n metorialTogetherAi,\n {\n serverDeployments: Array.isArray(serverDeployments) ? serverDeployments : [serverDeployments]\n },\n async session => {\n let tools = requestedTools\n ? session.tools.filter((t: any) => requestedTools.includes(t.function?.name || t.name))\n : session.tools;\n\n let messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [\n { role: 'user', content: message }\n ];\n\n for (let step = 0; step < maxSteps; step++) {\n let response = await client.chat.completions.create({\n model,\n messages,\n tools,\n ...togetheraiOptions\n });\n\n let choice = response.choices[0];\n \n if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {\n return {\n text: choice.message.content || '',\n steps: step + 1\n };\n }\n\n let toolResponses = await session.callTools(choice.message.tool_calls);\n\n messages.push(\n { role: 'assistant', tool_calls: choice.message.tool_calls },\n ...toolResponses\n );\n }\n\n throw new Error(`Max steps (${maxSteps}) reached without final response`);\n }\n );\n}\n\nexport { runWithTogetherAI };","import { MetorialCoreSDK, createMetorialCoreSDK } from '@metorial/core';\nimport {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nimport type OpenAI from 'openai';\nimport type Anthropic from '@anthropic-ai/sdk';\nimport type { GoogleGenAI } from '@google/genai';\nimport type { Mistral } from '@mistralai/mistralai';\n\nimport { runWithOpenAI } from './providers/openai';\nimport { runWithAnthropic } from './providers/anthropic';\nimport { runWithDeepSeek } from './providers/deepseek';\nimport { runWithGoogle } from './providers/google';\nimport { runWithMistral } from './providers/mistral';\nimport { runWithXAI } from './providers/xai';\nimport { runWithTogetherAI } from './providers/togetherai';\n\nimport { RunResult } from './providers/types';\n\nexport type { RunResult } from './providers/types';\nexport type {\n MetorialMcpSession,\n MetorialMcpSessionInit,\n MetorialMcpSessionInitServerDeployments\n} from '@metorial/mcp-session';\n\nexport class Metorial implements MetorialCoreSDK {\n private readonly sdk: MetorialCoreSDK;\n\n constructor(init: Parameters<typeof createMetorialCoreSDK>[0]) {\n this.sdk = createMetorialCoreSDK(init);\n }\n\n get instance() {\n return this.sdk.instance;\n }\n\n get secrets() {\n return this.sdk.secrets;\n }\n\n get servers() {\n return this.sdk.servers;\n }\n\n get sessions() {\n return this.sdk.sessions;\n }\n\n get oauth(): typeof this.sdk.oauth & {\n waitForCompletion: (\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ) => Promise<void>;\n } {\n return {\n ...this.sdk.oauth,\n waitForCompletion: this.waitForOAuthCompletion.bind(this)\n };\n }\n\n get _config() {\n return this.sdk._config;\n }\n\n get mcp() {\n return {\n createSession: (init: MetorialMcpSessionInit) => new MetorialMcpSession(this.sdk, init),\n withSession: this.withSession.bind(this),\n withProviderSession: this.withProviderSession.bind(this),\n createConnection: this.createMcpConnection.bind(this)\n };\n }\n\n async createMcpConnection(init: MetorialMcpSessionInitServerDeployments[number]) {\n let session = new MetorialMcpSession(this.sdk, {\n serverDeployments: [init]\n });\n\n let deployments = await session.getServerDeployments();\n\n return await session.getClient({\n deploymentId: deployments[0].id\n });\n }\n\n async withSession<T>(\n init: MetorialMcpSessionInit,\n action: (session: MetorialMcpSession) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n try {\n return await action(session);\n } finally {\n await session.close();\n }\n }\n\n async withProviderSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit & { streaming?: boolean },\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n }\n ) => Promise<T>\n ): Promise<T> {\n if (init.streaming) {\n return this.withStreamingSession(provider, init, action);\n }\n\n return this.withSession(init, async session => {\n let providerData = await provider(session);\n\n return action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session)\n });\n });\n }\n\n private async withStreamingSession<P, T>(\n provider: (session: MetorialMcpSession) => Promise<P>,\n init: MetorialMcpSessionInit,\n action: (\n input: P & {\n session: MetorialMcpSession;\n getSession: MetorialMcpSession['getSession'];\n getCapabilities: MetorialMcpSession['getCapabilities'];\n getClient: MetorialMcpSession['getClient'];\n getServerDeployments: MetorialMcpSession['getServerDeployments'];\n getToolManager: MetorialMcpSession['getToolManager'];\n closeSession: () => Promise<void>;\n }\n ) => Promise<T>\n ): Promise<T> {\n let session = new MetorialMcpSession(this.sdk, init);\n let sessionClosed = false;\n\n const closeSession = async () => {\n if (!sessionClosed) {\n sessionClosed = true;\n console.log('[Metorial] Closing streaming session');\n await session.close();\n }\n };\n\n try {\n let providerData = await provider(session);\n\n let result = await action({\n ...providerData,\n session,\n getSession: session.getSession.bind(session),\n getCapabilities: session.getCapabilities.bind(session),\n getClient: session.getClient.bind(session),\n getServerDeployments: session.getServerDeployments.bind(session),\n getToolManager: session.getToolManager.bind(session),\n closeSession\n });\n\n setTimeout(async () => {\n if (!sessionClosed) {\n console.log('[Metorial] Streaming timeout reached - auto-closing session');\n await closeSession();\n }\n }, 60000); // 1 minute timeout\n\n return result;\n } catch (error) {\n await closeSession();\n throw error;\n }\n }\n\n private inferProvider(\n model: string\n ): 'openai' | 'anthropic' | 'deepseek' | 'google' | 'mistral' | 'xai' | 'togetherai' {\n let modelLower = model.toLowerCase();\n\n if (modelLower.startsWith('claude-')) {\n return 'anthropic';\n }\n\n if (modelLower.startsWith('gpt-') || modelLower.startsWith('o1-')) {\n return 'openai';\n }\n\n if (modelLower.includes('deepseek')) {\n return 'deepseek';\n }\n\n if (modelLower.startsWith('gemini-') || modelLower.includes('google')) {\n return 'google';\n }\n\n if (modelLower.startsWith('mistral-') || modelLower.includes('mistral')) {\n return 'mistral';\n }\n\n if (modelLower.startsWith('x-') || modelLower === 'grok-beta') {\n return 'xai';\n }\n\n if (\n modelLower.includes('together') ||\n modelLower.includes('llama') ||\n modelLower.includes('mixtral') ||\n modelLower.includes('qwen') ||\n modelLower.includes('/')\n ) {\n return 'togetherai';\n }\n\n throw new Error(`Unable to infer provider from model \"${model}\".`);\n }\n\n async waitForOAuthCompletion(\n sessions: Array<{ id: string }>,\n options?: {\n pollInterval?: number;\n timeout?: number;\n }\n ): Promise<void> {\n let pollInterval = Math.max(options?.pollInterval ?? 5000, 2000); // minimum 2 seconds\n let timeout = options?.timeout ?? 600000; // 10 minutes\n let startTime = Date.now();\n\n if (sessions.length === 0) {\n return;\n }\n\n while (true) {\n if (Date.now() - startTime > timeout) {\n throw new Error(`OAuth authentication timeout after ${timeout / 1000} seconds`);\n }\n\n try {\n let statuses = await Promise.all(\n sessions.map(session => this.oauth.sessions.get(session.id))\n );\n\n let allCompleted = statuses.every(status => status.status === 'completed');\n if (allCompleted) {\n return;\n }\n\n let failedSessions = statuses.filter(status => status.status === 'failed');\n if (failedSessions.length > 0) {\n throw new Error(\n `OAuth authentication failed for ${failedSessions.length} session(s)`\n );\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n } catch (error) {\n if (\n error instanceof Error &&\n (error.message.includes('OAuth authentication failed') ||\n error.message.includes('OAuth authentication timeout'))\n ) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n }\n }\n\n async run(config: {\n message: string;\n serverDeployments: string | MetorialMcpSessionInitServerDeployments;\n model: string;\n maxSteps?: number;\n tools?: string[];\n [key: string]: any;\n }): Promise<RunResult> {\n let provider = this.inferProvider(config.model);\n\n switch (provider) {\n case 'openai':\n return runWithOpenAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'anthropic':\n return runWithAnthropic({\n ...config,\n client: config.client as Anthropic,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'deepseek':\n return runWithDeepSeek({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'google':\n return runWithGoogle({\n ...config,\n client: config.client as GoogleGenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'mistral':\n return runWithMistral({\n ...config,\n client: config.client as Mistral,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'xai':\n return runWithXAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n case 'togetherai':\n return runWithTogetherAI({\n ...config,\n client: config.client as OpenAI,\n withProviderSession: this.withProviderSession.bind(this)\n });\n\n default:\n throw new Error(`Unsupported provider: ${provider}`);\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metorial/sdk",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "author": "Metorial Inc.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,9 +27,7 @@
27
27
  "dependencies": {
28
28
  "@metorial/core": "^1.0.0",
29
29
  "@metorial/mcp-session": "^1.0.1",
30
- "@metorial/util-endpoint": "^1.0.0"
31
- },
32
- "peerDependencies": {
30
+ "@metorial/util-endpoint": "^1.0.0",
33
31
  "@metorial/anthropic": "^1.0.1",
34
32
  "@metorial/deepseek": "^1.0.1",
35
33
  "@metorial/google": "^1.0.1",
@@ -39,32 +37,6 @@
39
37
  "@metorial/togetherai": "^1.0.1",
40
38
  "@metorial/xai": "^1.0.1"
41
39
  },
42
- "peerDependenciesMeta": {
43
- "@metorial/anthropic": {
44
- "optional": true
45
- },
46
- "@metorial/deepseek": {
47
- "optional": true
48
- },
49
- "@metorial/google": {
50
- "optional": true
51
- },
52
- "@metorial/mistral": {
53
- "optional": true
54
- },
55
- "@metorial/openai": {
56
- "optional": true
57
- },
58
- "@metorial/openai-compatible": {
59
- "optional": true
60
- },
61
- "@metorial/togetherai": {
62
- "optional": true
63
- },
64
- "@metorial/xai": {
65
- "optional": true
66
- }
67
- },
68
40
  "devDependencies": {
69
41
  "@anthropic-ai/sdk": "^0.30.0",
70
42
  "@google/genai": "^0.8.0",
@@ -72,7 +44,7 @@
72
44
  "@types/isomorphic-fetch": "^0.0.39",
73
45
  "@types/ws": "^8.5.13",
74
46
  "openai": "^4.75.0",
75
- "tsup": "^7.1.0",
47
+ "tsup": "^8.5.0",
76
48
  "typescript": "^5.1.6",
77
49
  "vitest": "^0.34.6"
78
50
  }