@mastra/server 1.63.1-alpha.0 → 1.63.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/LICENSE.md +6 -4
- package/dist/{a2a-BtXFFv-0.cjs → a2a-C7OgMND3.cjs} +2 -2
- package/dist/{a2a-BtXFFv-0.cjs.map → a2a-C7OgMND3.cjs.map} +1 -1
- package/dist/{a2a-DZhtQeFL.js → a2a-CMi5AZNR.js} +2 -2
- package/dist/{a2a-DZhtQeFL.js.map → a2a-CMi5AZNR.js.map} +1 -1
- package/dist/{api-schema-manifest-DrTLp1Fv.cjs → api-schema-manifest-BC-yts9Q.cjs} +3 -3
- package/dist/{api-schema-manifest-DrTLp1Fv.cjs.map → api-schema-manifest-BC-yts9Q.cjs.map} +1 -1
- package/dist/{api-schema-manifest-BVgosvca.js → api-schema-manifest-C0fowe3V.js} +3 -3
- package/dist/{api-schema-manifest-BVgosvca.js.map → api-schema-manifest-C0fowe3V.js.map} +1 -1
- package/dist/{background-tasks-8M9W_27g.cjs → background-tasks-BJhziawt.cjs} +2 -2
- package/dist/{background-tasks-8M9W_27g.cjs.map → background-tasks-BJhziawt.cjs.map} +1 -1
- package/dist/{background-tasks-BtWM0sZs.js → background-tasks-Bl7Hn8h9.js} +2 -2
- package/dist/{background-tasks-BtWM0sZs.js.map → background-tasks-Bl7Hn8h9.js.map} +1 -1
- package/dist/{builder-registry-Dcd_ApmT.cjs → builder-registry-BINitddV.cjs} +2 -2
- package/dist/{builder-registry-Dcd_ApmT.cjs.map → builder-registry-BINitddV.cjs.map} +1 -1
- package/dist/{builder-registry-DnEa4qnF.js → builder-registry-Bcpr74BB.js} +2 -2
- package/dist/{builder-registry-DnEa4qnF.js.map → builder-registry-Bcpr74BB.js.map} +1 -1
- package/dist/{channels-BO3Zd38V.js → channels-CnEljW9e.js} +2 -2
- package/dist/{channels-BO3Zd38V.js.map → channels-CnEljW9e.js.map} +1 -1
- package/dist/{channels-D9WRnKzU.cjs → channels-D8e5YDTn.cjs} +2 -2
- package/dist/{channels-D9WRnKzU.cjs.map → channels-D8e5YDTn.cjs.map} +1 -1
- package/dist/{dist-CJKQBH69.cjs → dist-B6qmZNb0.cjs} +4 -4
- package/dist/dist-B6qmZNb0.cjs.map +1 -0
- package/dist/{dist-D4NzuG3G.cjs → dist-C76EmJsT.cjs} +3 -3
- package/dist/{dist-D4NzuG3G.cjs.map → dist-C76EmJsT.cjs.map} +1 -1
- package/dist/{dist-8-Z5v77M.cjs → dist-C9yKk16g.cjs} +3 -3
- package/dist/{dist-8-Z5v77M.cjs.map → dist-C9yKk16g.cjs.map} +1 -1
- package/dist/{dist-2zVeGGHi.cjs → dist-CLQt62Pi.cjs} +3 -3
- package/dist/{dist-2zVeGGHi.cjs.map → dist-CLQt62Pi.cjs.map} +1 -1
- package/dist/{dist-F_Ql1co6.js → dist-Chgswf37.js} +4 -4
- package/dist/dist-Chgswf37.js.map +1 -0
- package/dist/{dist-Be7Caz3Z.cjs → dist-D6F_HzDS.cjs} +4 -4
- package/dist/{dist-Be7Caz3Z.cjs.map → dist-D6F_HzDS.cjs.map} +1 -1
- package/dist/{dist-Jn3uXsoB.js → dist-Da8AufS5.js} +4 -4
- package/dist/{dist-Jn3uXsoB.js.map → dist-Da8AufS5.js.map} +1 -1
- package/dist/{dist-L0EogwX_.js → dist-DmVdNrSg.js} +79 -19
- package/dist/dist-DmVdNrSg.js.map +1 -0
- package/dist/{dist-bAFqx06T.js → dist-DoTDZ7wF.js} +3 -3
- package/dist/{dist-bAFqx06T.js.map → dist-DoTDZ7wF.js.map} +1 -1
- package/dist/{dist-BfVTO0pC.cjs → dist-DpM-6UBk.cjs} +3 -3
- package/dist/{dist-BfVTO0pC.cjs.map → dist-DpM-6UBk.cjs.map} +1 -1
- package/dist/{dist-CRgxcDTg.js → dist-Wjq6PT76.js} +3 -3
- package/dist/{dist-CRgxcDTg.js.map → dist-Wjq6PT76.js.map} +1 -1
- package/dist/{dist-CHJcZQdS.js → dist-XnA2Lowr.js} +3 -3
- package/dist/{dist-CHJcZQdS.js.map → dist-XnA2Lowr.js.map} +1 -1
- package/dist/{dist-Xj9TvH1A.cjs → dist-fQ5zEP_z.cjs} +78 -18
- package/dist/dist-fQ5zEP_z.cjs.map +1 -0
- package/dist/{dist-CscF1cF8.js → dist-k6UeNFHu.js} +3 -3
- package/dist/{dist-CscF1cF8.js.map → dist-k6UeNFHu.js.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{dynamic-workflows-BZ5ru36x.cjs → dynamic-workflows-BT_ryQUl.cjs} +2 -2
- package/dist/{dynamic-workflows-BZ5ru36x.cjs.map → dynamic-workflows-BT_ryQUl.cjs.map} +1 -1
- package/dist/{dynamic-workflows-C6U0Rdoc.js → dynamic-workflows-CzkrhMwZ.js} +2 -2
- package/dist/{dynamic-workflows-C6U0Rdoc.js.map → dynamic-workflows-CzkrhMwZ.js.map} +1 -1
- package/dist/{editor-builder-BmRQift0.cjs → editor-builder-B-KatZ10.cjs} +2 -2
- package/dist/{editor-builder-BmRQift0.cjs.map → editor-builder-B-KatZ10.cjs.map} +1 -1
- package/dist/{editor-builder-EP9FAtQm.js → editor-builder-c7QiLUV9.js} +2 -2
- package/dist/{editor-builder-EP9FAtQm.js.map → editor-builder-c7QiLUV9.js.map} +1 -1
- package/dist/{observability-new-endpoints-4GcBP0uJ.cjs → observability-new-endpoints-BGXu1TX-.cjs} +2 -2
- package/dist/{observability-new-endpoints-4GcBP0uJ.cjs.map → observability-new-endpoints-BGXu1TX-.cjs.map} +1 -1
- package/dist/{observability-new-endpoints-0RLfcyw6.js → observability-new-endpoints-CsXPhgyd.js} +2 -2
- package/dist/{observability-new-endpoints-0RLfcyw6.js.map → observability-new-endpoints-CsXPhgyd.js.map} +1 -1
- package/dist/{route-builder-YQ_gLIvW.js → route-builder-BveLN9LU.js} +2 -2
- package/dist/route-builder-BveLN9LU.js.map +1 -0
- package/dist/{route-builder-CWsok5ci.cjs → route-builder-C8n4ugUf.cjs} +2 -2
- package/dist/route-builder-C8n4ugUf.cjs.map +1 -0
- package/dist/{routes-CDsvr7BB.cjs → routes-BAnhbh9P.cjs} +10 -10
- package/dist/{routes-CDsvr7BB.cjs.map → routes-BAnhbh9P.cjs.map} +1 -1
- package/dist/{routes-DCEudTA7.js → routes-D9HqtkO2.js} +10 -10
- package/dist/{routes-DCEudTA7.js.map → routes-D9HqtkO2.js.map} +1 -1
- package/dist/{schedules-RjPcNOmY.js → schedules-BcEUUuX_.js} +2 -2
- package/dist/{schedules-RjPcNOmY.js.map → schedules-BcEUUuX_.js.map} +1 -1
- package/dist/{schedules-7YUg_TRM.cjs → schedules-fj9U0_tA.cjs} +2 -2
- package/dist/{schedules-7YUg_TRM.cjs.map → schedules-fj9U0_tA.cjs.map} +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +2 -2
- package/dist/server/handlers/agent-builder.js +2 -2
- package/dist/server/handlers/agent-controller.cjs +1 -1
- package/dist/server/handlers/agent-controller.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +1 -1
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +1 -1
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +1 -1
- package/dist/server/handlers/builder-registry.js +1 -1
- package/dist/server/handlers/channels.cjs +1 -1
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/dynamic-workflows.cjs +1 -1
- package/dist/server/handlers/dynamic-workflows.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/logs.cjs +1 -1
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +1 -1
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/mcp.cjs +1 -1
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability-shared.cjs +1 -1
- package/dist/server/handlers/observability-shared.js +1 -1
- package/dist/server/handlers/observability.cjs +2 -2
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/processor-providers.cjs +1 -1
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +1 -1
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +1 -1
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/schedules.cjs +1 -1
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +1 -1
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +2 -2
- package/dist/server/handlers/stored-agent-favorites.js +2 -2
- package/dist/server/handlers/stored-agents.cjs +2 -2
- package/dist/server/handlers/stored-agents.js +2 -2
- package/dist/server/handlers/stored-mcp-clients.cjs +1 -1
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +1 -1
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +1 -1
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skill-favorites.cjs +2 -2
- package/dist/server/handlers/stored-skill-favorites.js +2 -2
- package/dist/server/handlers/stored-skills.cjs +2 -2
- package/dist/server/handlers/stored-skills.js +2 -2
- package/dist/server/handlers/stored-workspaces.cjs +1 -1
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.js +2 -2
- package/dist/server/handlers/tool-providers.cjs +1 -1
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/vector.cjs +1 -1
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/workflows.cjs +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +1 -1
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +2 -2
- package/dist/server/handlers.js +2 -2
- package/dist/server/server-adapter/index.cjs +2 -2
- package/dist/server/server-adapter/index.js +2 -2
- package/package.json +5 -5
- package/dist/dist-CJKQBH69.cjs.map +0 -1
- package/dist/dist-F_Ql1co6.js.map +0 -1
- package/dist/dist-L0EogwX_.js.map +0 -1
- package/dist/dist-Xj9TvH1A.cjs.map +0 -1
- package/dist/route-builder-CWsok5ci.cjs.map +0 -1
- package/dist/route-builder-YQ_gLIvW.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels-BO3Zd38V.js","names":[],"sources":["../src/server/schemas/channels.ts","../src/server/handlers/channels.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const channelPlatformPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n});\n\nexport const channelAgentPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n agentId: z.string().describe('Agent identifier'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nexport const connectChannelBodySchema = z.object({\n agentId: z.string().describe('Agent identifier to connect'),\n options: z.record(z.string(), z.unknown()).optional().describe('Platform-specific connection options'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst channelPlatformInfoSchema = z.object({\n id: z.string().describe('Platform identifier'),\n name: z.string().describe('Human-readable platform name'),\n isConfigured: z.boolean().describe('Whether the platform is ready to connect agents'),\n connectOptionsSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for connect options'),\n});\n\nconst channelInstallationInfoSchema = z.object({\n id: z.string().describe('Installation identifier'),\n platform: z.string().describe('Platform identifier'),\n agentId: z.string().describe('Connected agent identifier'),\n status: z.enum(['active', 'pending']).describe('Installation status'),\n displayName: z.string().optional().describe('Platform-specific display name'),\n installedAt: z.coerce.date().optional().describe('Installation timestamp'),\n});\n\nconst channelConnectOAuthSchema = z.object({\n type: z.literal('oauth').describe('OAuth-based connection requiring browser redirect'),\n authorizationUrl: z.string().describe('OAuth authorization URL for user redirect'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectDeepLinkSchema = z.object({\n type: z.literal('deep_link').describe('Deep-link connection requiring native app interaction'),\n url: z.string().describe('Deep link URL to open in platform app'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectImmediateSchema = z.object({\n type: z.literal('immediate').describe('Immediate connection with no user interaction needed'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectResultSchema = z.discriminatedUnion('type', [\n channelConnectOAuthSchema,\n channelConnectDeepLinkSchema,\n channelConnectImmediateSchema,\n]);\n\nexport const listChannelPlatformsResponseSchema = z.array(channelPlatformInfoSchema);\n\nexport const listChannelInstallationsResponseSchema = z.array(channelInstallationInfoSchema);\n\nexport const connectChannelResponseSchema = channelConnectResultSchema;\n\nexport const disconnectChannelResponseSchema = z.object({\n success: z.boolean(),\n});\n","import type { Mastra } from '@mastra/core';\nimport type { ChannelProvider } from '@mastra/core/channels';\nimport type { RequestContext } from '@mastra/core/di';\nimport { coreFeatures } from '@mastra/core/features';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n channelPlatformPathParams,\n channelAgentPathParams,\n connectChannelBodySchema,\n listChannelPlatformsResponseSchema,\n listChannelInstallationsResponseSchema,\n connectChannelResponseSchema,\n disconnectChannelResponseSchema,\n} from '../schemas/channels';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { assertWriteAccess, getCallerAuthorId, hasAdminBypass, hasScopedPermission } from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Feature gate + helpers\n// ============================================================================\n\nfunction assertChannelsAvailable(): void {\n if (!coreFeatures.has('channels')) {\n throw new HTTPException(501, { message: 'Channels require a newer version of @mastra/core' });\n }\n}\n\nfunction getChannelOrThrow(mastra: Mastra, platform: string): ChannelProvider {\n const channels = Object.values(mastra.channels ?? {});\n const channel = channels.find(c => c.id === platform);\n if (!channel) {\n const available = channels.map(c => c.id).join(', ');\n throw new HTTPException(404, {\n message: `Channel \"${platform}\" is not registered. Available: ${available || 'none'}`,\n });\n }\n return channel;\n}\n\n/**\n * Unified connect/disconnect authorization.\n *\n * - Stored agent exists → same write access as editing the agent record.\n * - Code-defined agent (no stored record) → route's `requiresAuth` is the gate.\n * - Agent doesn't exist anywhere:\n * - connect → 404 (can't connect a channel to a non-existent agent)\n * - disconnect → orphan cleanup, gated on `channels:write`\n */\nasync function assertChannelAgentWriteAccess(\n mastra: Mastra,\n requestContext: RequestContext,\n agentId: string,\n action: 'connect' | 'disconnect',\n): Promise<void> {\n const storage = mastra.getStorage();\n const agentsStore = storage ? await storage.getStore('agents') : null;\n const stored = agentsStore ? await agentsStore.getById(agentId) : null;\n\n if (stored) {\n assertWriteAccess({\n requestContext,\n resource: 'agents',\n resourceId: agentId,\n action: 'edit',\n record: stored,\n });\n return;\n }\n\n // Not in stored-agents (or storage doesn't support it). Check the runtime\n // registry for a code-defined agent.\n const codeDefined = mastra.getAgentById(agentId);\n if (codeDefined) {\n // Code-defined agents have no owner/ACL — route's requiresAuth /\n // requiresPermission is the gate. Pass-through.\n return;\n }\n\n if (action === 'connect') {\n throw new HTTPException(404, { message: `Agent \"${agentId}\" not found` });\n }\n\n // Disconnect against an unknown agentId = orphan cleanup (stored agent was\n // deleted but the channel installation row is still around). Allow it, but\n // gate on channels:write so this isn't an \"any authenticated user\" backdoor.\n // Follow the same no-auth-configured pass-through as assertWriteAccess.\n const callerAuthorId = getCallerAuthorId(requestContext);\n if (!callerAuthorId && !requestContext.get(MASTRA_USER_KEY)) return;\n if (hasAdminBypass(requestContext, 'channels')) return;\n if (hasScopedPermission({ requestContext, resource: 'channels', action: 'write' })) return;\n\n throw new HTTPException(404, { message: 'Not found' });\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /channels/platforms - List available channel platforms\n */\nexport const LIST_CHANNEL_PLATFORMS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/platforms',\n responseType: 'json',\n responseSchema: listChannelPlatformsResponseSchema,\n summary: 'List channel platforms',\n description: 'Returns available channel platforms and their configuration status',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n assertChannelsAvailable();\n try {\n const channels = Object.values(mastra.channels ?? {});\n return channels.map(channel => {\n if (channel.getInfo) {\n return channel.getInfo();\n }\n return {\n id: channel.id,\n name: channel.id.charAt(0).toUpperCase() + channel.id.slice(1),\n isConfigured: true,\n };\n });\n } catch (error) {\n return handleError(error, 'Error listing channel platforms');\n }\n },\n});\n\n/**\n * GET /channels/:platform/installations - List installations for a platform\n */\nexport const LIST_CHANNEL_INSTALLATIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/:platform/installations',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n responseSchema: listChannelInstallationsResponseSchema,\n summary: 'List channel installations',\n description: 'Returns all active and pending installations for a channel platform',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, platform }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.listInstallations) {\n return [];\n }\n\n return await channel.listInstallations();\n } catch (error) {\n return handleError(error, 'Error listing channel installations');\n }\n },\n});\n\n/**\n * POST /channels/:platform/connect - Connect an agent to a platform\n */\nexport const CONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/connect',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n bodySchema: connectChannelBodySchema,\n responseSchema: connectChannelResponseSchema,\n summary: 'Connect agent to channel',\n description: 'Creates a platform app for the agent and returns an OAuth authorization URL',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId, options }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.connect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic connection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n return await channel.connect(agentId, options);\n } catch (error) {\n return handleError(error, 'Error connecting agent to channel');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/disconnect - Disconnect an agent from a platform\n */\nexport const DISCONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/disconnect',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: disconnectChannelResponseSchema,\n summary: 'Disconnect agent from channel',\n description: 'Deletes the platform app and cleans up the installation',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.disconnect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic disconnection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'disconnect');\n\n await channel.disconnect(agentId);\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error disconnecting agent from channel');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channels-CnEljW9e.js","names":[],"sources":["../src/server/schemas/channels.ts","../src/server/handlers/channels.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const channelPlatformPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n});\n\nexport const channelAgentPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n agentId: z.string().describe('Agent identifier'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nexport const connectChannelBodySchema = z.object({\n agentId: z.string().describe('Agent identifier to connect'),\n options: z.record(z.string(), z.unknown()).optional().describe('Platform-specific connection options'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst channelPlatformInfoSchema = z.object({\n id: z.string().describe('Platform identifier'),\n name: z.string().describe('Human-readable platform name'),\n isConfigured: z.boolean().describe('Whether the platform is ready to connect agents'),\n connectOptionsSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for connect options'),\n});\n\nconst channelInstallationInfoSchema = z.object({\n id: z.string().describe('Installation identifier'),\n platform: z.string().describe('Platform identifier'),\n agentId: z.string().describe('Connected agent identifier'),\n status: z.enum(['active', 'pending']).describe('Installation status'),\n displayName: z.string().optional().describe('Platform-specific display name'),\n installedAt: z.coerce.date().optional().describe('Installation timestamp'),\n});\n\nconst channelConnectOAuthSchema = z.object({\n type: z.literal('oauth').describe('OAuth-based connection requiring browser redirect'),\n authorizationUrl: z.string().describe('OAuth authorization URL for user redirect'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectDeepLinkSchema = z.object({\n type: z.literal('deep_link').describe('Deep-link connection requiring native app interaction'),\n url: z.string().describe('Deep link URL to open in platform app'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectImmediateSchema = z.object({\n type: z.literal('immediate').describe('Immediate connection with no user interaction needed'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectResultSchema = z.discriminatedUnion('type', [\n channelConnectOAuthSchema,\n channelConnectDeepLinkSchema,\n channelConnectImmediateSchema,\n]);\n\nexport const listChannelPlatformsResponseSchema = z.array(channelPlatformInfoSchema);\n\nexport const listChannelInstallationsResponseSchema = z.array(channelInstallationInfoSchema);\n\nexport const connectChannelResponseSchema = channelConnectResultSchema;\n\nexport const disconnectChannelResponseSchema = z.object({\n success: z.boolean(),\n});\n","import type { Mastra } from '@mastra/core';\nimport type { ChannelProvider } from '@mastra/core/channels';\nimport type { RequestContext } from '@mastra/core/di';\nimport { coreFeatures } from '@mastra/core/features';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n channelPlatformPathParams,\n channelAgentPathParams,\n connectChannelBodySchema,\n listChannelPlatformsResponseSchema,\n listChannelInstallationsResponseSchema,\n connectChannelResponseSchema,\n disconnectChannelResponseSchema,\n} from '../schemas/channels';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { assertWriteAccess, getCallerAuthorId, hasAdminBypass, hasScopedPermission } from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Feature gate + helpers\n// ============================================================================\n\nfunction assertChannelsAvailable(): void {\n if (!coreFeatures.has('channels')) {\n throw new HTTPException(501, { message: 'Channels require a newer version of @mastra/core' });\n }\n}\n\nfunction getChannelOrThrow(mastra: Mastra, platform: string): ChannelProvider {\n const channels = Object.values(mastra.channels ?? {});\n const channel = channels.find(c => c.id === platform);\n if (!channel) {\n const available = channels.map(c => c.id).join(', ');\n throw new HTTPException(404, {\n message: `Channel \"${platform}\" is not registered. Available: ${available || 'none'}`,\n });\n }\n return channel;\n}\n\n/**\n * Unified connect/disconnect authorization.\n *\n * - Stored agent exists → same write access as editing the agent record.\n * - Code-defined agent (no stored record) → route's `requiresAuth` is the gate.\n * - Agent doesn't exist anywhere:\n * - connect → 404 (can't connect a channel to a non-existent agent)\n * - disconnect → orphan cleanup, gated on `channels:write`\n */\nasync function assertChannelAgentWriteAccess(\n mastra: Mastra,\n requestContext: RequestContext,\n agentId: string,\n action: 'connect' | 'disconnect',\n): Promise<void> {\n const storage = mastra.getStorage();\n const agentsStore = storage ? await storage.getStore('agents') : null;\n const stored = agentsStore ? await agentsStore.getById(agentId) : null;\n\n if (stored) {\n assertWriteAccess({\n requestContext,\n resource: 'agents',\n resourceId: agentId,\n action: 'edit',\n record: stored,\n });\n return;\n }\n\n // Not in stored-agents (or storage doesn't support it). Check the runtime\n // registry for a code-defined agent.\n const codeDefined = mastra.getAgentById(agentId);\n if (codeDefined) {\n // Code-defined agents have no owner/ACL — route's requiresAuth /\n // requiresPermission is the gate. Pass-through.\n return;\n }\n\n if (action === 'connect') {\n throw new HTTPException(404, { message: `Agent \"${agentId}\" not found` });\n }\n\n // Disconnect against an unknown agentId = orphan cleanup (stored agent was\n // deleted but the channel installation row is still around). Allow it, but\n // gate on channels:write so this isn't an \"any authenticated user\" backdoor.\n // Follow the same no-auth-configured pass-through as assertWriteAccess.\n const callerAuthorId = getCallerAuthorId(requestContext);\n if (!callerAuthorId && !requestContext.get(MASTRA_USER_KEY)) return;\n if (hasAdminBypass(requestContext, 'channels')) return;\n if (hasScopedPermission({ requestContext, resource: 'channels', action: 'write' })) return;\n\n throw new HTTPException(404, { message: 'Not found' });\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /channels/platforms - List available channel platforms\n */\nexport const LIST_CHANNEL_PLATFORMS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/platforms',\n responseType: 'json',\n responseSchema: listChannelPlatformsResponseSchema,\n summary: 'List channel platforms',\n description: 'Returns available channel platforms and their configuration status',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n assertChannelsAvailable();\n try {\n const channels = Object.values(mastra.channels ?? {});\n return channels.map(channel => {\n if (channel.getInfo) {\n return channel.getInfo();\n }\n return {\n id: channel.id,\n name: channel.id.charAt(0).toUpperCase() + channel.id.slice(1),\n isConfigured: true,\n };\n });\n } catch (error) {\n return handleError(error, 'Error listing channel platforms');\n }\n },\n});\n\n/**\n * GET /channels/:platform/installations - List installations for a platform\n */\nexport const LIST_CHANNEL_INSTALLATIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/:platform/installations',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n responseSchema: listChannelInstallationsResponseSchema,\n summary: 'List channel installations',\n description: 'Returns all active and pending installations for a channel platform',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, platform }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.listInstallations) {\n return [];\n }\n\n return await channel.listInstallations();\n } catch (error) {\n return handleError(error, 'Error listing channel installations');\n }\n },\n});\n\n/**\n * POST /channels/:platform/connect - Connect an agent to a platform\n */\nexport const CONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/connect',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n bodySchema: connectChannelBodySchema,\n responseSchema: connectChannelResponseSchema,\n summary: 'Connect agent to channel',\n description: 'Creates a platform app for the agent and returns an OAuth authorization URL',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId, options }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.connect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic connection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n return await channel.connect(agentId, options);\n } catch (error) {\n return handleError(error, 'Error connecting agent to channel');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/disconnect - Disconnect an agent from a platform\n */\nexport const DISCONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/disconnect',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: disconnectChannelResponseSchema,\n summary: 'Disconnect agent from channel',\n description: 'Deletes the platform app and cleans up the installation',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.disconnect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic disconnection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'disconnect');\n\n await channel.disconnect(agentId);\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error disconnecting agent from channel');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_http_exception = require("./http-exception-CKDHupKw.cjs");
|
|
2
|
-
const require_route_builder = require("./route-builder-
|
|
2
|
+
const require_route_builder = require("./route-builder-C8n4ugUf.cjs");
|
|
3
3
|
require("./constants-4IJp_uzj.cjs");
|
|
4
4
|
const require_server_handlers_error = require("./server/handlers/error.cjs");
|
|
5
5
|
const require_server_handlers_authorship = require("./server/handlers/authorship.cjs");
|
|
@@ -227,4 +227,4 @@ Object.defineProperty(exports, "LIST_CHANNEL_PLATFORMS_ROUTE", {
|
|
|
227
227
|
}
|
|
228
228
|
});
|
|
229
229
|
|
|
230
|
-
//# sourceMappingURL=channels-
|
|
230
|
+
//# sourceMappingURL=channels-D8e5YDTn.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels-D9WRnKzU.cjs","names":["z","coreFeatures","HTTPException","getCallerAuthorId","hasAdminBypass","hasScopedPermission","createRoute","handleError"],"sources":["../src/server/schemas/channels.ts","../src/server/handlers/channels.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const channelPlatformPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n});\n\nexport const channelAgentPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n agentId: z.string().describe('Agent identifier'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nexport const connectChannelBodySchema = z.object({\n agentId: z.string().describe('Agent identifier to connect'),\n options: z.record(z.string(), z.unknown()).optional().describe('Platform-specific connection options'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst channelPlatformInfoSchema = z.object({\n id: z.string().describe('Platform identifier'),\n name: z.string().describe('Human-readable platform name'),\n isConfigured: z.boolean().describe('Whether the platform is ready to connect agents'),\n connectOptionsSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for connect options'),\n});\n\nconst channelInstallationInfoSchema = z.object({\n id: z.string().describe('Installation identifier'),\n platform: z.string().describe('Platform identifier'),\n agentId: z.string().describe('Connected agent identifier'),\n status: z.enum(['active', 'pending']).describe('Installation status'),\n displayName: z.string().optional().describe('Platform-specific display name'),\n installedAt: z.coerce.date().optional().describe('Installation timestamp'),\n});\n\nconst channelConnectOAuthSchema = z.object({\n type: z.literal('oauth').describe('OAuth-based connection requiring browser redirect'),\n authorizationUrl: z.string().describe('OAuth authorization URL for user redirect'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectDeepLinkSchema = z.object({\n type: z.literal('deep_link').describe('Deep-link connection requiring native app interaction'),\n url: z.string().describe('Deep link URL to open in platform app'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectImmediateSchema = z.object({\n type: z.literal('immediate').describe('Immediate connection with no user interaction needed'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectResultSchema = z.discriminatedUnion('type', [\n channelConnectOAuthSchema,\n channelConnectDeepLinkSchema,\n channelConnectImmediateSchema,\n]);\n\nexport const listChannelPlatformsResponseSchema = z.array(channelPlatformInfoSchema);\n\nexport const listChannelInstallationsResponseSchema = z.array(channelInstallationInfoSchema);\n\nexport const connectChannelResponseSchema = channelConnectResultSchema;\n\nexport const disconnectChannelResponseSchema = z.object({\n success: z.boolean(),\n});\n","import type { Mastra } from '@mastra/core';\nimport type { ChannelProvider } from '@mastra/core/channels';\nimport type { RequestContext } from '@mastra/core/di';\nimport { coreFeatures } from '@mastra/core/features';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n channelPlatformPathParams,\n channelAgentPathParams,\n connectChannelBodySchema,\n listChannelPlatformsResponseSchema,\n listChannelInstallationsResponseSchema,\n connectChannelResponseSchema,\n disconnectChannelResponseSchema,\n} from '../schemas/channels';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { assertWriteAccess, getCallerAuthorId, hasAdminBypass, hasScopedPermission } from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Feature gate + helpers\n// ============================================================================\n\nfunction assertChannelsAvailable(): void {\n if (!coreFeatures.has('channels')) {\n throw new HTTPException(501, { message: 'Channels require a newer version of @mastra/core' });\n }\n}\n\nfunction getChannelOrThrow(mastra: Mastra, platform: string): ChannelProvider {\n const channels = Object.values(mastra.channels ?? {});\n const channel = channels.find(c => c.id === platform);\n if (!channel) {\n const available = channels.map(c => c.id).join(', ');\n throw new HTTPException(404, {\n message: `Channel \"${platform}\" is not registered. Available: ${available || 'none'}`,\n });\n }\n return channel;\n}\n\n/**\n * Unified connect/disconnect authorization.\n *\n * - Stored agent exists → same write access as editing the agent record.\n * - Code-defined agent (no stored record) → route's `requiresAuth` is the gate.\n * - Agent doesn't exist anywhere:\n * - connect → 404 (can't connect a channel to a non-existent agent)\n * - disconnect → orphan cleanup, gated on `channels:write`\n */\nasync function assertChannelAgentWriteAccess(\n mastra: Mastra,\n requestContext: RequestContext,\n agentId: string,\n action: 'connect' | 'disconnect',\n): Promise<void> {\n const storage = mastra.getStorage();\n const agentsStore = storage ? await storage.getStore('agents') : null;\n const stored = agentsStore ? await agentsStore.getById(agentId) : null;\n\n if (stored) {\n assertWriteAccess({\n requestContext,\n resource: 'agents',\n resourceId: agentId,\n action: 'edit',\n record: stored,\n });\n return;\n }\n\n // Not in stored-agents (or storage doesn't support it). Check the runtime\n // registry for a code-defined agent.\n const codeDefined = mastra.getAgentById(agentId);\n if (codeDefined) {\n // Code-defined agents have no owner/ACL — route's requiresAuth /\n // requiresPermission is the gate. Pass-through.\n return;\n }\n\n if (action === 'connect') {\n throw new HTTPException(404, { message: `Agent \"${agentId}\" not found` });\n }\n\n // Disconnect against an unknown agentId = orphan cleanup (stored agent was\n // deleted but the channel installation row is still around). Allow it, but\n // gate on channels:write so this isn't an \"any authenticated user\" backdoor.\n // Follow the same no-auth-configured pass-through as assertWriteAccess.\n const callerAuthorId = getCallerAuthorId(requestContext);\n if (!callerAuthorId && !requestContext.get(MASTRA_USER_KEY)) return;\n if (hasAdminBypass(requestContext, 'channels')) return;\n if (hasScopedPermission({ requestContext, resource: 'channels', action: 'write' })) return;\n\n throw new HTTPException(404, { message: 'Not found' });\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /channels/platforms - List available channel platforms\n */\nexport const LIST_CHANNEL_PLATFORMS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/platforms',\n responseType: 'json',\n responseSchema: listChannelPlatformsResponseSchema,\n summary: 'List channel platforms',\n description: 'Returns available channel platforms and their configuration status',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n assertChannelsAvailable();\n try {\n const channels = Object.values(mastra.channels ?? {});\n return channels.map(channel => {\n if (channel.getInfo) {\n return channel.getInfo();\n }\n return {\n id: channel.id,\n name: channel.id.charAt(0).toUpperCase() + channel.id.slice(1),\n isConfigured: true,\n };\n });\n } catch (error) {\n return handleError(error, 'Error listing channel platforms');\n }\n },\n});\n\n/**\n * GET /channels/:platform/installations - List installations for a platform\n */\nexport const LIST_CHANNEL_INSTALLATIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/:platform/installations',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n responseSchema: listChannelInstallationsResponseSchema,\n summary: 'List channel installations',\n description: 'Returns all active and pending installations for a channel platform',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, platform }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.listInstallations) {\n return [];\n }\n\n return await channel.listInstallations();\n } catch (error) {\n return handleError(error, 'Error listing channel installations');\n }\n },\n});\n\n/**\n * POST /channels/:platform/connect - Connect an agent to a platform\n */\nexport const CONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/connect',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n bodySchema: connectChannelBodySchema,\n responseSchema: connectChannelResponseSchema,\n summary: 'Connect agent to channel',\n description: 'Creates a platform app for the agent and returns an OAuth authorization URL',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId, options }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.connect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic connection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n return await channel.connect(agentId, options);\n } catch (error) {\n return handleError(error, 'Error connecting agent to channel');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/disconnect - Disconnect an agent from a platform\n */\nexport const DISCONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/disconnect',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: disconnectChannelResponseSchema,\n summary: 'Disconnect agent from channel',\n description: 'Deletes the platform app and cleans up the installation',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.disconnect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic disconnection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'disconnect');\n\n await channel.disconnect(agentId);\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error disconnecting agent from channel');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channels-D8e5YDTn.cjs","names":["z","coreFeatures","HTTPException","getCallerAuthorId","hasAdminBypass","hasScopedPermission","createRoute","handleError"],"sources":["../src/server/schemas/channels.ts","../src/server/handlers/channels.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const channelPlatformPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n});\n\nexport const channelAgentPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n agentId: z.string().describe('Agent identifier'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nexport const connectChannelBodySchema = z.object({\n agentId: z.string().describe('Agent identifier to connect'),\n options: z.record(z.string(), z.unknown()).optional().describe('Platform-specific connection options'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst channelPlatformInfoSchema = z.object({\n id: z.string().describe('Platform identifier'),\n name: z.string().describe('Human-readable platform name'),\n isConfigured: z.boolean().describe('Whether the platform is ready to connect agents'),\n connectOptionsSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for connect options'),\n});\n\nconst channelInstallationInfoSchema = z.object({\n id: z.string().describe('Installation identifier'),\n platform: z.string().describe('Platform identifier'),\n agentId: z.string().describe('Connected agent identifier'),\n status: z.enum(['active', 'pending']).describe('Installation status'),\n displayName: z.string().optional().describe('Platform-specific display name'),\n installedAt: z.coerce.date().optional().describe('Installation timestamp'),\n});\n\nconst channelConnectOAuthSchema = z.object({\n type: z.literal('oauth').describe('OAuth-based connection requiring browser redirect'),\n authorizationUrl: z.string().describe('OAuth authorization URL for user redirect'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectDeepLinkSchema = z.object({\n type: z.literal('deep_link').describe('Deep-link connection requiring native app interaction'),\n url: z.string().describe('Deep link URL to open in platform app'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectImmediateSchema = z.object({\n type: z.literal('immediate').describe('Immediate connection with no user interaction needed'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectResultSchema = z.discriminatedUnion('type', [\n channelConnectOAuthSchema,\n channelConnectDeepLinkSchema,\n channelConnectImmediateSchema,\n]);\n\nexport const listChannelPlatformsResponseSchema = z.array(channelPlatformInfoSchema);\n\nexport const listChannelInstallationsResponseSchema = z.array(channelInstallationInfoSchema);\n\nexport const connectChannelResponseSchema = channelConnectResultSchema;\n\nexport const disconnectChannelResponseSchema = z.object({\n success: z.boolean(),\n});\n","import type { Mastra } from '@mastra/core';\nimport type { ChannelProvider } from '@mastra/core/channels';\nimport type { RequestContext } from '@mastra/core/di';\nimport { coreFeatures } from '@mastra/core/features';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n channelPlatformPathParams,\n channelAgentPathParams,\n connectChannelBodySchema,\n listChannelPlatformsResponseSchema,\n listChannelInstallationsResponseSchema,\n connectChannelResponseSchema,\n disconnectChannelResponseSchema,\n} from '../schemas/channels';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { assertWriteAccess, getCallerAuthorId, hasAdminBypass, hasScopedPermission } from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Feature gate + helpers\n// ============================================================================\n\nfunction assertChannelsAvailable(): void {\n if (!coreFeatures.has('channels')) {\n throw new HTTPException(501, { message: 'Channels require a newer version of @mastra/core' });\n }\n}\n\nfunction getChannelOrThrow(mastra: Mastra, platform: string): ChannelProvider {\n const channels = Object.values(mastra.channels ?? {});\n const channel = channels.find(c => c.id === platform);\n if (!channel) {\n const available = channels.map(c => c.id).join(', ');\n throw new HTTPException(404, {\n message: `Channel \"${platform}\" is not registered. Available: ${available || 'none'}`,\n });\n }\n return channel;\n}\n\n/**\n * Unified connect/disconnect authorization.\n *\n * - Stored agent exists → same write access as editing the agent record.\n * - Code-defined agent (no stored record) → route's `requiresAuth` is the gate.\n * - Agent doesn't exist anywhere:\n * - connect → 404 (can't connect a channel to a non-existent agent)\n * - disconnect → orphan cleanup, gated on `channels:write`\n */\nasync function assertChannelAgentWriteAccess(\n mastra: Mastra,\n requestContext: RequestContext,\n agentId: string,\n action: 'connect' | 'disconnect',\n): Promise<void> {\n const storage = mastra.getStorage();\n const agentsStore = storage ? await storage.getStore('agents') : null;\n const stored = agentsStore ? await agentsStore.getById(agentId) : null;\n\n if (stored) {\n assertWriteAccess({\n requestContext,\n resource: 'agents',\n resourceId: agentId,\n action: 'edit',\n record: stored,\n });\n return;\n }\n\n // Not in stored-agents (or storage doesn't support it). Check the runtime\n // registry for a code-defined agent.\n const codeDefined = mastra.getAgentById(agentId);\n if (codeDefined) {\n // Code-defined agents have no owner/ACL — route's requiresAuth /\n // requiresPermission is the gate. Pass-through.\n return;\n }\n\n if (action === 'connect') {\n throw new HTTPException(404, { message: `Agent \"${agentId}\" not found` });\n }\n\n // Disconnect against an unknown agentId = orphan cleanup (stored agent was\n // deleted but the channel installation row is still around). Allow it, but\n // gate on channels:write so this isn't an \"any authenticated user\" backdoor.\n // Follow the same no-auth-configured pass-through as assertWriteAccess.\n const callerAuthorId = getCallerAuthorId(requestContext);\n if (!callerAuthorId && !requestContext.get(MASTRA_USER_KEY)) return;\n if (hasAdminBypass(requestContext, 'channels')) return;\n if (hasScopedPermission({ requestContext, resource: 'channels', action: 'write' })) return;\n\n throw new HTTPException(404, { message: 'Not found' });\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /channels/platforms - List available channel platforms\n */\nexport const LIST_CHANNEL_PLATFORMS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/platforms',\n responseType: 'json',\n responseSchema: listChannelPlatformsResponseSchema,\n summary: 'List channel platforms',\n description: 'Returns available channel platforms and their configuration status',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n assertChannelsAvailable();\n try {\n const channels = Object.values(mastra.channels ?? {});\n return channels.map(channel => {\n if (channel.getInfo) {\n return channel.getInfo();\n }\n return {\n id: channel.id,\n name: channel.id.charAt(0).toUpperCase() + channel.id.slice(1),\n isConfigured: true,\n };\n });\n } catch (error) {\n return handleError(error, 'Error listing channel platforms');\n }\n },\n});\n\n/**\n * GET /channels/:platform/installations - List installations for a platform\n */\nexport const LIST_CHANNEL_INSTALLATIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/:platform/installations',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n responseSchema: listChannelInstallationsResponseSchema,\n summary: 'List channel installations',\n description: 'Returns all active and pending installations for a channel platform',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, platform }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.listInstallations) {\n return [];\n }\n\n return await channel.listInstallations();\n } catch (error) {\n return handleError(error, 'Error listing channel installations');\n }\n },\n});\n\n/**\n * POST /channels/:platform/connect - Connect an agent to a platform\n */\nexport const CONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/connect',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n bodySchema: connectChannelBodySchema,\n responseSchema: connectChannelResponseSchema,\n summary: 'Connect agent to channel',\n description: 'Creates a platform app for the agent and returns an OAuth authorization URL',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId, options }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.connect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic connection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n return await channel.connect(agentId, options);\n } catch (error) {\n return handleError(error, 'Error connecting agent to channel');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/disconnect - Disconnect an agent from a platform\n */\nexport const DISCONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/disconnect',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: disconnectChannelResponseSchema,\n summary: 'Disconnect agent from channel',\n description: 'Deletes the platform app and cleans up the installation',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = getChannelOrThrow(mastra, platform);\n\n if (!channel.disconnect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic disconnection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'disconnect');\n\n await channel.disconnect(agentId);\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error disconnecting agent from channel');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -270,12 +270,12 @@ var UnsupportedFunctionalityError = class extends AISDKError {
|
|
|
270
270
|
};
|
|
271
271
|
_a14 = symbol14;
|
|
272
272
|
//#endregion
|
|
273
|
-
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/nanoid/3.3.
|
|
273
|
+
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/nanoid/3.3.18/fb72e1626e5628a379f6208d9d4fdeeb492660655d3f13fa886c4b3be9c48e59/node_modules/nanoid/non-secure/index.js
|
|
274
274
|
let customAlphabet = (alphabet, defaultSize = 21) => {
|
|
275
275
|
return (size = defaultSize) => {
|
|
276
276
|
let id = "";
|
|
277
277
|
let i = size | 0;
|
|
278
|
-
while (i--) id += alphabet[Math.random() * alphabet.length | 0];
|
|
278
|
+
while (i-- > 0) id += alphabet[Math.random() * alphabet.length | 0];
|
|
279
279
|
return id;
|
|
280
280
|
};
|
|
281
281
|
};
|
|
@@ -361,7 +361,7 @@ var require_secure_json_parse = /* @__PURE__ */ require_rolldown_runtime.__commo
|
|
|
361
361
|
module.exports.scan = filter;
|
|
362
362
|
}));
|
|
363
363
|
//#endregion
|
|
364
|
-
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/
|
|
364
|
+
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/0289608026c229870c5c6167dc772feaac06745c9b590063cf43d9a3bb49f1b9/node_modules/@ai-sdk/provider-utils/dist/index.mjs
|
|
365
365
|
var import_secure_json_parse = /* @__PURE__ */ require_rolldown_runtime.__toESM(require_secure_json_parse(), 1);
|
|
366
366
|
function combineHeaders(...headers) {
|
|
367
367
|
return headers.reduce((combinedHeaders, currentHeaders) => ({
|
|
@@ -957,4 +957,4 @@ Object.defineProperty(exports, "withoutTrailingSlash", {
|
|
|
957
957
|
}
|
|
958
958
|
});
|
|
959
959
|
|
|
960
|
-
//# sourceMappingURL=dist-
|
|
960
|
+
//# sourceMappingURL=dist-B6qmZNb0.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dist-B6qmZNb0.cjs","names":["SecureJSON","TypeValidationError2","InvalidArgumentError2","APICallError2","APICallError3"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider/1.1.3/7d8eaddb7973e5820d04ac18a887c85cc63f173732e3c66432ceefbff819b4ac/node_modules/@ai-sdk/provider/dist/index.mjs","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/nanoid/3.3.18/fb72e1626e5628a379f6208d9d4fdeeb492660655d3f13fa886c4b3be9c48e59/node_modules/nanoid/non-secure/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/secure-json-parse/2.7.0/1f65efb0c6ff2d0f745ac6dfe22202b559993ceecd896afead5fc2c075b2d349/node_modules/secure-json-parse/index.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/provider-utils/2.2.8/0289608026c229870c5c6167dc772feaac06745c9b590063cf43d9a3bb49f1b9/node_modules/@ai-sdk/provider-utils/dist/index.mjs"],"sourcesContent":["// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a;\nvar _AISDKError = class _AISDKError extends Error {\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name: name14,\n message,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.name = name14;\n this.cause = cause;\n }\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error) {\n return _AISDKError.hasMarker(error, marker);\n }\n static hasMarker(error, marker15) {\n const markerSymbol = Symbol.for(marker15);\n return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n }\n};\n_a = symbol;\nvar AISDKError = _AISDKError;\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar APICallError = class extends AISDKError {\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500),\n // server error\n data\n }) {\n super({ name, message, cause });\n this[_a2] = true;\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker2);\n }\n};\n_a2 = symbol2;\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar EmptyResponseBodyError = class extends AISDKError {\n // used in isInstance\n constructor({ message = \"Empty response body\" } = {}) {\n super({ name: name2, message });\n this[_a3] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker3);\n }\n};\n_a3 = symbol3;\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar InvalidArgumentError = class extends AISDKError {\n constructor({\n message,\n cause,\n argument\n }) {\n super({ name: name3, message, cause });\n this[_a4] = true;\n this.argument = argument;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker4);\n }\n};\n_a4 = symbol4;\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar InvalidPromptError = class extends AISDKError {\n constructor({\n prompt,\n message,\n cause\n }) {\n super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n this[_a5] = true;\n this.prompt = prompt;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker5);\n }\n};\n_a5 = symbol5;\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar InvalidResponseDataError = class extends AISDKError {\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`\n }) {\n super({ name: name5, message });\n this[_a6] = true;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker6);\n }\n};\n_a6 = symbol6;\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar JSONParseError = class extends AISDKError {\n constructor({ text, cause }) {\n super({\n name: name6,\n message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a7] = true;\n this.text = text;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker7);\n }\n};\n_a7 = symbol7;\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar LoadAPIKeyError = class extends AISDKError {\n // used in isInstance\n constructor({ message }) {\n super({ name: name7, message });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker8);\n }\n};\n_a8 = symbol8;\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9;\nvar LoadSettingError = class extends AISDKError {\n // used in isInstance\n constructor({ message }) {\n super({ name: name8, message });\n this[_a9] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker9);\n }\n};\n_a9 = symbol9;\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar NoContentGeneratedError = class extends AISDKError {\n // used in isInstance\n constructor({\n message = \"No content generated.\"\n } = {}) {\n super({ name: name9, message });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker10);\n }\n};\n_a10 = symbol10;\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar NoSuchModelError = class extends AISDKError {\n constructor({\n errorName = name10,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`\n }) {\n super({ name: errorName, message });\n this[_a11] = true;\n this.modelId = modelId;\n this.modelType = modelType;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker11);\n }\n};\n_a11 = symbol11;\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name11 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12;\nvar TooManyEmbeddingValuesForCallError = class extends AISDKError {\n constructor(options) {\n super({\n name: name11,\n message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n });\n this[_a12] = true;\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker12);\n }\n};\n_a12 = symbol12;\n\n// src/errors/type-validation-error.ts\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar _TypeValidationError = class _TypeValidationError extends AISDKError {\n constructor({ value, cause }) {\n super({\n name: name12,\n message: `Type validation failed: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a13] = true;\n this.value = value;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker13);\n }\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause\n }) {\n return _TypeValidationError.isInstance(cause) && cause.value === value ? cause : new _TypeValidationError({ value, cause });\n }\n};\n_a13 = symbol13;\nvar TypeValidationError = _TypeValidationError;\n\n// src/errors/unsupported-functionality-error.ts\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar UnsupportedFunctionalityError = class extends AISDKError {\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`\n }) {\n super({ name: name13, message });\n this[_a14] = true;\n this.functionality = functionality;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker14);\n }\n};\n_a14 = symbol14;\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(isJSONValue);\n }\n if (typeof value === \"object\") {\n return Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && isJSONValue(val)\n );\n }\n return false;\n}\nfunction isJSONArray(value) {\n return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n return value != null && typeof value === \"object\" && Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && isJSONValue(val)\n );\n}\nexport {\n AISDKError,\n APICallError,\n EmptyResponseBodyError,\n InvalidArgumentError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError,\n getErrorMessage,\n isJSONArray,\n isJSONObject,\n isJSONValue\n};\n//# sourceMappingURL=index.mjs.map","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nexport { nanoid, customAlphabet }\n","'use strict'\n\nconst hasBuffer = typeof Buffer !== 'undefined'\nconst suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/\nconst suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/\n\nfunction _parse (text, reviver, options) {\n // Normalize arguments\n if (options == null) {\n if (reviver !== null && typeof reviver === 'object') {\n options = reviver\n reviver = undefined\n }\n }\n\n if (hasBuffer && Buffer.isBuffer(text)) {\n text = text.toString()\n }\n\n // BOM checker\n if (text && text.charCodeAt(0) === 0xFEFF) {\n text = text.slice(1)\n }\n\n // Parse normally, allowing exceptions\n const obj = JSON.parse(text, reviver)\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n const protoAction = (options && options.protoAction) || 'error'\n const constructorAction = (options && options.constructorAction) || 'error'\n\n // options: 'error' (default) / 'remove' / 'ignore'\n if (protoAction === 'ignore' && constructorAction === 'ignore') {\n return obj\n }\n\n if (protoAction !== 'ignore' && constructorAction !== 'ignore') {\n if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n return obj\n }\n } else if (protoAction !== 'ignore' && constructorAction === 'ignore') {\n if (suspectProtoRx.test(text) === false) {\n return obj\n }\n } else {\n if (suspectConstructorRx.test(text) === false) {\n return obj\n }\n }\n\n // Scan result for proto keys\n return filter(obj, { protoAction, constructorAction, safe: options && options.safe })\n}\n\nfunction filter (obj, { protoAction = 'error', constructorAction = 'error', safe } = {}) {\n let next = [obj]\n\n while (next.length) {\n const nodes = next\n next = []\n\n for (const node of nodes) {\n if (protoAction !== 'ignore' && Object.prototype.hasOwnProperty.call(node, '__proto__')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (protoAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.__proto__ // eslint-disable-line no-proto\n }\n\n if (constructorAction !== 'ignore' &&\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (constructorAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.constructor\n }\n\n for (const key in node) {\n const value = node[key]\n if (value && typeof value === 'object') {\n next.push(value)\n }\n }\n }\n }\n return obj\n}\n\nfunction parse (text, reviver, options) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, options)\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\nfunction safeParse (text, reviver) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, { safe: true })\n } catch (_e) {\n return null\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\nmodule.exports = parse\nmodule.exports.default = parse\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.scan = filter\n","// src/combine-headers.ts\nfunction combineHeaders(...headers) {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...currentHeaders != null ? currentHeaders : {}\n }),\n {}\n );\n}\n\n// src/convert-async-iterator-to-readable-stream.ts\nfunction convertAsyncIteratorToReadableStream(iterator) {\n return new ReadableStream({\n /**\n * Called when the consumer wants to pull more data from the stream.\n *\n * @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.\n * @returns {Promise<void>}\n */\n async pull(controller) {\n try {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n },\n /**\n * Called when the consumer cancels the stream.\n */\n cancel() {\n }\n });\n}\n\n// src/delay.ts\nasync function delay(delayInMs) {\n return delayInMs == null ? Promise.resolve() : new Promise((resolve2) => setTimeout(resolve2, delayInMs));\n}\n\n// src/event-source-parser-stream.ts\nfunction createEventSourceParserStream() {\n let buffer = \"\";\n let event = void 0;\n let data = [];\n let lastEventId = void 0;\n let retry = void 0;\n function parseLine(line, controller) {\n if (line === \"\") {\n dispatchEvent(controller);\n return;\n }\n if (line.startsWith(\":\")) {\n return;\n }\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1) {\n handleField(line, \"\");\n return;\n }\n const field = line.slice(0, colonIndex);\n const valueStart = colonIndex + 1;\n const value = valueStart < line.length && line[valueStart] === \" \" ? line.slice(valueStart + 1) : line.slice(valueStart);\n handleField(field, value);\n }\n function dispatchEvent(controller) {\n if (data.length > 0) {\n controller.enqueue({\n event,\n data: data.join(\"\\n\"),\n id: lastEventId,\n retry\n });\n data = [];\n event = void 0;\n retry = void 0;\n }\n }\n function handleField(field, value) {\n switch (field) {\n case \"event\":\n event = value;\n break;\n case \"data\":\n data.push(value);\n break;\n case \"id\":\n lastEventId = value;\n break;\n case \"retry\":\n const parsedRetry = parseInt(value, 10);\n if (!isNaN(parsedRetry)) {\n retry = parsedRetry;\n }\n break;\n }\n }\n return new TransformStream({\n transform(chunk, controller) {\n const { lines, incompleteLine } = splitLines(buffer, chunk);\n buffer = incompleteLine;\n for (let i = 0; i < lines.length; i++) {\n parseLine(lines[i], controller);\n }\n },\n flush(controller) {\n parseLine(buffer, controller);\n dispatchEvent(controller);\n }\n });\n}\nfunction splitLines(buffer, chunk) {\n const lines = [];\n let currentLine = buffer;\n for (let i = 0; i < chunk.length; ) {\n const char = chunk[i++];\n if (char === \"\\n\") {\n lines.push(currentLine);\n currentLine = \"\";\n } else if (char === \"\\r\") {\n lines.push(currentLine);\n currentLine = \"\";\n if (chunk[i] === \"\\n\") {\n i++;\n }\n } else {\n currentLine += char;\n }\n }\n return { lines, incompleteLine: currentLine };\n}\n\n// src/extract-response-headers.ts\nfunction extractResponseHeaders(response) {\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return headers;\n}\n\n// src/generate-id.ts\nimport { InvalidArgumentError } from \"@ai-sdk/provider\";\nimport { customAlphabet } from \"nanoid/non-secure\";\nvar createIdGenerator = ({\n prefix,\n size: defaultSize = 16,\n alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\n separator = \"-\"\n} = {}) => {\n const generator = customAlphabet(alphabet, defaultSize);\n if (prefix == null) {\n return generator;\n }\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: \"separator\",\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`\n });\n }\n return (size) => `${prefix}${separator}${generator(size)}`;\n};\nvar generateId = createIdGenerator();\n\n// src/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/get-from-api.ts\nimport { APICallError } from \"@ai-sdk/provider\";\n\n// src/remove-undefined-entries.ts\nfunction removeUndefinedEntries(record) {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null)\n );\n}\n\n// src/is-abort-error.ts\nfunction isAbortError(error) {\n return error instanceof Error && (error.name === \"AbortError\" || error.name === \"TimeoutError\");\n}\n\n// src/get-from-api.ts\nvar getOriginalFetch = () => globalThis.fetch;\nvar getFromApi = async ({\n url,\n headers = {},\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch()\n}) => {\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: removeUndefinedEntries(headers),\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n throw new APICallError({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n throw errorInformation.value;\n }\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n if (error instanceof TypeError && error.message === \"fetch failed\") {\n const cause = error.cause;\n if (cause != null) {\n throw new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n isRetryable: true,\n requestBodyValues: {}\n });\n }\n }\n throw error;\n }\n};\n\n// src/load-api-key.ts\nimport { LoadAPIKeyError } from \"@ai-sdk/provider\";\nfunction loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = \"apiKey\",\n description\n}) {\n if (typeof apiKey === \"string\") {\n return apiKey;\n }\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`\n });\n }\n if (typeof process === \"undefined\") {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`\n });\n }\n apiKey = process.env[environmentVariableName];\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`\n });\n }\n if (typeof apiKey !== \"string\") {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return apiKey;\n}\n\n// src/load-optional-setting.ts\nfunction loadOptionalSetting({\n settingValue,\n environmentVariableName\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null || typeof process === \"undefined\") {\n return void 0;\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null || typeof settingValue !== \"string\") {\n return void 0;\n }\n return settingValue;\n}\n\n// src/load-setting.ts\nimport { LoadSettingError } from \"@ai-sdk/provider\";\nfunction loadSetting({\n settingValue,\n environmentVariableName,\n settingName,\n description\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null) {\n throw new LoadSettingError({\n message: `${description} setting must be a string.`\n });\n }\n if (typeof process === \"undefined\") {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables is not supported in this environment.`\n });\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null) {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`\n });\n }\n if (typeof settingValue !== \"string\") {\n throw new LoadSettingError({\n message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return settingValue;\n}\n\n// src/parse-json.ts\nimport {\n JSONParseError,\n TypeValidationError as TypeValidationError2\n} from \"@ai-sdk/provider\";\nimport SecureJSON from \"secure-json-parse\";\n\n// src/validate-types.ts\nimport { TypeValidationError } from \"@ai-sdk/provider\";\n\n// src/validator.ts\nvar validatorSymbol = Symbol.for(\"vercel.ai.validator\");\nfunction validator(validate) {\n return { [validatorSymbol]: true, validate };\n}\nfunction isValidator(value) {\n return typeof value === \"object\" && value !== null && validatorSymbol in value && value[validatorSymbol] === true && \"validate\" in value;\n}\nfunction asValidator(value) {\n return isValidator(value) ? value : zodValidator(value);\n}\nfunction zodValidator(zodSchema) {\n return validator((value) => {\n const result = zodSchema.safeParse(value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n });\n}\n\n// src/validate-types.ts\nfunction validateTypes({\n value,\n schema: inputSchema\n}) {\n const result = safeValidateTypes({ value, schema: inputSchema });\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n return result.value;\n}\nfunction safeValidateTypes({\n value,\n schema\n}) {\n const validator2 = asValidator(schema);\n try {\n if (validator2.validate == null) {\n return { success: true, value };\n }\n const result = validator2.validate(value);\n if (result.success) {\n return result;\n }\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error })\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error })\n };\n }\n}\n\n// src/parse-json.ts\nfunction parseJSON({\n text,\n schema\n}) {\n try {\n const value = SecureJSON.parse(text);\n if (schema == null) {\n return value;\n }\n return validateTypes({ value, schema });\n } catch (error) {\n if (JSONParseError.isInstance(error) || TypeValidationError2.isInstance(error)) {\n throw error;\n }\n throw new JSONParseError({ text, cause: error });\n }\n}\nfunction safeParseJSON({\n text,\n schema\n}) {\n try {\n const value = SecureJSON.parse(text);\n if (schema == null) {\n return { success: true, value, rawValue: value };\n }\n const validationResult = safeValidateTypes({ value, schema });\n return validationResult.success ? { ...validationResult, rawValue: value } : validationResult;\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error })\n };\n }\n}\nfunction isParsableJson(input) {\n try {\n SecureJSON.parse(input);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// src/parse-provider-options.ts\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nfunction parseProviderOptions({\n provider,\n providerOptions,\n schema\n}) {\n if ((providerOptions == null ? void 0 : providerOptions[provider]) == null) {\n return void 0;\n }\n const parsedProviderOptions = safeValidateTypes({\n value: providerOptions[provider],\n schema\n });\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError2({\n argument: \"providerOptions\",\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error\n });\n }\n return parsedProviderOptions.value;\n}\n\n// src/post-to-api.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\nvar getOriginalFetch2 = () => globalThis.fetch;\nvar postJsonToApi = async ({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n}) => postToApi({\n url,\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n body: {\n content: JSON.stringify(body),\n values: body\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n});\nvar postFormDataToApi = async ({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n}) => postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries(formData.entries())\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n});\nvar postToApi = async ({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch2()\n}) => {\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: removeUndefinedEntries(headers),\n body: body.content,\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values\n });\n } catch (error) {\n if (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n throw new APICallError2({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n throw errorInformation.value;\n }\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError2({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n if (error instanceof TypeError && error.message === \"fetch failed\") {\n const cause = error.cause;\n if (cause != null) {\n throw new APICallError2({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues: body.values,\n isRetryable: true\n // retry when network error\n });\n }\n }\n throw error;\n }\n};\n\n// src/resolve.ts\nasync function resolve(value) {\n if (typeof value === \"function\") {\n value = value();\n }\n return Promise.resolve(value);\n}\n\n// src/response-handler.ts\nimport { APICallError as APICallError3, EmptyResponseBodyError } from \"@ai-sdk/provider\";\nvar createJsonErrorResponseHandler = ({\n errorSchema,\n errorToMessage,\n isRetryable\n}) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n if (responseBody.trim() === \"\") {\n return {\n responseHeaders,\n value: new APICallError3({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n try {\n const parsedError = parseJSON({\n text: responseBody,\n schema: errorSchema\n });\n return {\n responseHeaders,\n value: new APICallError3({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)\n })\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError3({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n};\nvar createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(createEventSourceParserStream()).pipeThrough(\n new TransformStream({\n transform({ data }, controller) {\n if (data === \"[DONE]\") {\n return;\n }\n controller.enqueue(\n safeParseJSON({\n text: data,\n schema: chunkSchema\n })\n );\n }\n })\n )\n };\n};\nvar createJsonStreamResponseHandler = (chunkSchema) => async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n let buffer = \"\";\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream({\n transform(chunkText, controller) {\n if (chunkText.endsWith(\"\\n\")) {\n controller.enqueue(\n safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema\n })\n );\n buffer = \"\";\n } else {\n buffer += chunkText;\n }\n }\n })\n )\n };\n};\nvar createJsonResponseHandler = (responseSchema) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const parsedResult = safeParseJSON({\n text: responseBody,\n schema: responseSchema\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!parsedResult.success) {\n throw new APICallError3({\n message: \"Invalid JSON response\",\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues\n });\n }\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue\n };\n};\nvar createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (!response.body) {\n throw new APICallError3({\n message: \"Response body is empty\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0\n });\n }\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer)\n };\n } catch (error) {\n throw new APICallError3({\n message: \"Failed to read response as array buffer\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0,\n cause: error\n });\n }\n};\nvar createStatusCodeErrorResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n return {\n responseHeaders,\n value: new APICallError3({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody\n })\n };\n};\n\n// src/uint8-utils.ts\nvar { btoa, atob } = globalThis;\nfunction convertBase64ToUint8Array(base64String) {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));\n}\nfunction convertUint8ArrayToBase64(array) {\n let latin1string = \"\";\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n return btoa(latin1string);\n}\n\n// src/without-trailing-slash.ts\nfunction withoutTrailingSlash(url) {\n return url == null ? void 0 : url.replace(/\\/$/, \"\");\n}\nexport {\n asValidator,\n combineHeaders,\n convertAsyncIteratorToReadableStream,\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64,\n createBinaryResponseHandler,\n createEventSourceParserStream,\n createEventSourceResponseHandler,\n createIdGenerator,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n createStatusCodeErrorResponseHandler,\n delay,\n extractResponseHeaders,\n generateId,\n getErrorMessage,\n getFromApi,\n isAbortError,\n isParsableJson,\n isValidator,\n loadApiKey,\n loadOptionalSetting,\n loadSetting,\n parseJSON,\n parseProviderOptions,\n postFormDataToApi,\n postJsonToApi,\n postToApi,\n removeUndefinedEntries,\n resolve,\n safeParseJSON,\n safeValidateTypes,\n validateTypes,\n validator,\n validatorSymbol,\n withoutTrailingSlash,\n zodValidator\n};\n//# sourceMappingURL=index.mjs.map"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require("./rolldown-runtime-Bd6kNlEP.cjs");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-B6qmZNb0.cjs");
|
|
3
3
|
let zod = require("zod");
|
|
4
|
-
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/groq/1.2.9/
|
|
4
|
+
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/groq/1.2.9/e3431418f0b05e29bcd1dbebc5ff794d46e0ff523c7eb715c0866034219da83c/node_modules/@ai-sdk/groq/dist/index.mjs
|
|
5
5
|
function convertToGroqChatMessages(prompt) {
|
|
6
6
|
const messages = [];
|
|
7
7
|
for (const { role, content } of prompt) switch (role) {
|
|
@@ -652,4 +652,4 @@ var groq = createGroq();
|
|
|
652
652
|
//#endregion
|
|
653
653
|
exports.groq = groq;
|
|
654
654
|
|
|
655
|
-
//# sourceMappingURL=dist-
|
|
655
|
+
//# sourceMappingURL=dist-C76EmJsT.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dist-D4NzuG3G.cjs","names":["convertUint8ArrayToBase64","UnsupportedFunctionalityError","_exhaustiveCheck","z","createJsonErrorResponseHandler","UnsupportedFunctionalityError2","parseProviderOptions","z2","postJsonToApi","combineHeaders","createJsonResponseHandler","generateId","createEventSourceResponseHandler","InvalidResponseDataError","isParsableJson","z3","parseProviderOptions2","convertBase64ToUint8Array","postFormDataToApi","combineHeaders2","createJsonResponseHandler2","withoutTrailingSlash","loadApiKey","NoSuchModelError"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/groq/1.2.9/a584ecba404ecd8e40b1fb618803a6e886611f03cdd465111db627679f529f6a/node_modules/@ai-sdk/groq/dist/index.mjs"],"sourcesContent":["// src/groq-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash\n} from \"@ai-sdk/provider-utils\";\n\n// src/groq-chat-language-model.ts\nimport {\n InvalidResponseDataError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod\";\n\n// src/convert-to-groq-chat-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertUint8ArrayToBase64 } from \"@ai-sdk/provider-utils\";\nfunction convertToGroqChatMessages(prompt) {\n const messages = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n if (content.length === 1 && content[0].type === \"text\") {\n messages.push({ role: \"user\", content: content[0].text });\n break;\n }\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n var _a;\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"image\": {\n return {\n type: \"image_url\",\n image_url: {\n url: part.image instanceof URL ? part.image.toString() : `data:${(_a = part.mimeType) != null ? _a : \"image/jpeg\"};base64,${convertUint8ArrayToBase64(part.image)}`\n }\n };\n }\n case \"file\": {\n throw new UnsupportedFunctionalityError({\n functionality: \"File content parts in user messages\"\n });\n }\n }\n })\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.args)\n }\n });\n break;\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : void 0\n });\n break;\n }\n case \"tool\": {\n for (const toolResponse of content) {\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result)\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/get-response-metadata.ts\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id: id != null ? id : void 0,\n modelId: model != null ? model : void 0,\n timestamp: created != null ? new Date(created * 1e3) : void 0\n };\n}\n\n// src/groq-error.ts\nimport { z } from \"zod\";\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nvar groqErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string()\n })\n});\nvar groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: (data) => data.error.message\n});\n\n// src/groq-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nfunction prepareTools({\n mode\n}) {\n var _a;\n const tools = ((_a = mode.tools) == null ? void 0 : _a.length) ? mode.tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, tool_choice: void 0, toolWarnings };\n }\n const toolChoice = mode.toolChoice;\n const groqTools = [];\n for (const tool of tools) {\n if (tool.type === \"provider-defined\") {\n toolWarnings.push({ type: \"unsupported-tool\", tool });\n } else {\n groqTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: groqTools, tool_choice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: groqTools, tool_choice: type, toolWarnings };\n case \"tool\":\n return {\n tools: groqTools,\n tool_choice: {\n type: \"function\",\n function: {\n name: toolChoice.toolName\n }\n },\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError2({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/map-groq-finish-reason.ts\nfunction mapGroqFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n return \"length\";\n case \"content_filter\":\n return \"content-filter\";\n case \"function_call\":\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"unknown\";\n }\n}\n\n// src/groq-chat-language-model.ts\nvar GroqChatLanguageModel = class {\n constructor(modelId, settings, config) {\n this.specificationVersion = \"v1\";\n this.supportsStructuredOutputs = false;\n this.defaultObjectGenerationMode = \"json\";\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n get supportsImageUrls() {\n return !this.settings.downloadImages;\n }\n getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n providerMetadata\n }) {\n const type = mode.type;\n const warnings = [];\n if (topK != null) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"topK\"\n });\n }\n if (responseFormat != null && responseFormat.type === \"json\" && responseFormat.schema != null) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"responseFormat\",\n details: \"JSON response format schema is not supported\"\n });\n }\n const groqOptions = parseProviderOptions({\n provider: \"groq\",\n providerOptions: providerMetadata,\n schema: z2.object({\n reasoningFormat: z2.enum([\"parsed\", \"raw\", \"hidden\"]).nullish()\n })\n });\n const baseArgs = {\n // model id:\n model: this.modelId,\n // model specific settings:\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n // response format:\n response_format: (\n // json object response format is not supported for streaming:\n stream === false && (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? { type: \"json_object\" } : void 0\n ),\n // provider options:\n reasoning_format: groqOptions == null ? void 0 : groqOptions.reasoningFormat,\n // messages:\n messages: convertToGroqChatMessages(prompt)\n };\n switch (type) {\n case \"regular\": {\n const { tools, tool_choice, toolWarnings } = prepareTools({ mode });\n return {\n args: {\n ...baseArgs,\n tools,\n tool_choice\n },\n warnings: [...warnings, ...toolWarnings]\n };\n }\n case \"object-json\": {\n return {\n args: {\n ...baseArgs,\n response_format: (\n // json object response format is not supported for streaming:\n stream === false ? { type: \"json_object\" } : void 0\n )\n },\n warnings\n };\n }\n case \"object-tool\": {\n return {\n args: {\n ...baseArgs,\n tool_choice: {\n type: \"function\",\n function: { name: mode.tool.name }\n },\n tools: [\n {\n type: \"function\",\n function: {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters\n }\n }\n ]\n },\n warnings\n };\n }\n default: {\n const _exhaustiveCheck = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const { args, warnings } = this.getArgs({ ...options, stream: false });\n const body = JSON.stringify(args);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const { messages: rawPrompt, ...rawSettings } = args;\n const choice = response.choices[0];\n return {\n text: (_a = choice.message.content) != null ? _a : void 0,\n reasoning: (_b = choice.message.reasoning) != null ? _b : void 0,\n toolCalls: (_c = choice.message.tool_calls) == null ? void 0 : _c.map((toolCall) => {\n var _a2;\n return {\n toolCallType: \"function\",\n toolCallId: (_a2 = toolCall.id) != null ? _a2 : generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments\n };\n }),\n finishReason: mapGroqFinishReason(choice.finish_reason),\n usage: {\n promptTokens: (_e = (_d = response.usage) == null ? void 0 : _d.prompt_tokens) != null ? _e : NaN,\n completionTokens: (_g = (_f = response.usage) == null ? void 0 : _f.completion_tokens) != null ? _g : NaN\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(response),\n warnings,\n request: { body }\n };\n }\n async doStream(options) {\n const { args, warnings } = this.getArgs({ ...options, stream: true });\n const body = JSON.stringify({ ...args, stream: true });\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const { messages: rawPrompt, ...rawSettings } = args;\n const toolCalls = [];\n let finishReason = \"unknown\";\n let usage = {\n promptTokens: void 0,\n completionTokens: void 0\n };\n let isFirstChunk = true;\n let providerMetadata;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;\n if (!chunk.success) {\n finishReason = \"error\";\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (\"error\" in value) {\n finishReason = \"error\";\n controller.enqueue({ type: \"error\", error: value.error });\n return;\n }\n if (isFirstChunk) {\n isFirstChunk = false;\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n }\n if (((_a = value.x_groq) == null ? void 0 : _a.usage) != null) {\n usage = {\n promptTokens: (_b = value.x_groq.usage.prompt_tokens) != null ? _b : void 0,\n completionTokens: (_c = value.x_groq.usage.completion_tokens) != null ? _c : void 0\n };\n }\n const choice = value.choices[0];\n if ((choice == null ? void 0 : choice.finish_reason) != null) {\n finishReason = mapGroqFinishReason(choice.finish_reason);\n }\n if ((choice == null ? void 0 : choice.delta) == null) {\n return;\n }\n const delta = choice.delta;\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n controller.enqueue({\n type: \"reasoning\",\n textDelta: delta.reasoning\n });\n }\n if (delta.content != null && delta.content.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: delta.content\n });\n }\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`\n });\n }\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`\n });\n }\n if (((_d = toolCallDelta.function) == null ? void 0 : _d.name) == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`\n });\n }\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: (_e = toolCallDelta.function.arguments) != null ? _e : \"\"\n },\n hasFinished: false\n };\n const toolCall2 = toolCalls[index];\n if (((_f = toolCall2.function) == null ? void 0 : _f.name) != null && ((_g = toolCall2.function) == null ? void 0 : _g.arguments) != null) {\n if (toolCall2.function.arguments.length > 0) {\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall2.id,\n toolName: toolCall2.function.name,\n argsTextDelta: toolCall2.function.arguments\n });\n }\n if (isParsableJson(toolCall2.function.arguments)) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: (_h = toolCall2.id) != null ? _h : generateId(),\n toolName: toolCall2.function.name,\n args: toolCall2.function.arguments\n });\n toolCall2.hasFinished = true;\n }\n }\n continue;\n }\n const toolCall = toolCalls[index];\n if (toolCall.hasFinished) {\n continue;\n }\n if (((_i = toolCallDelta.function) == null ? void 0 : _i.arguments) != null) {\n toolCall.function.arguments += (_k = (_j = toolCallDelta.function) == null ? void 0 : _j.arguments) != null ? _k : \"\";\n }\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: (_l = toolCallDelta.function.arguments) != null ? _l : \"\"\n });\n if (((_m = toolCall.function) == null ? void 0 : _m.name) != null && ((_n = toolCall.function) == null ? void 0 : _n.arguments) != null && isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: (_o = toolCall.id) != null ? _o : generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n flush(controller) {\n var _a, _b;\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: {\n promptTokens: (_a = usage.promptTokens) != null ? _a : NaN,\n completionTokens: (_b = usage.completionTokens) != null ? _b : NaN\n },\n ...providerMetadata != null ? { providerMetadata } : {}\n });\n }\n })\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body }\n };\n }\n};\nvar groqChatResponseSchema = z2.object({\n id: z2.string().nullish(),\n created: z2.number().nullish(),\n model: z2.string().nullish(),\n choices: z2.array(\n z2.object({\n message: z2.object({\n content: z2.string().nullish(),\n reasoning: z2.string().nullish(),\n tool_calls: z2.array(\n z2.object({\n id: z2.string().nullish(),\n type: z2.literal(\"function\"),\n function: z2.object({\n name: z2.string(),\n arguments: z2.string()\n })\n })\n ).nullish()\n }),\n index: z2.number(),\n finish_reason: z2.string().nullish()\n })\n ),\n usage: z2.object({\n prompt_tokens: z2.number().nullish(),\n completion_tokens: z2.number().nullish()\n }).nullish()\n});\nvar groqChatChunkSchema = z2.union([\n z2.object({\n id: z2.string().nullish(),\n created: z2.number().nullish(),\n model: z2.string().nullish(),\n choices: z2.array(\n z2.object({\n delta: z2.object({\n content: z2.string().nullish(),\n reasoning: z2.string().nullish(),\n tool_calls: z2.array(\n z2.object({\n index: z2.number(),\n id: z2.string().nullish(),\n type: z2.literal(\"function\").optional(),\n function: z2.object({\n name: z2.string().nullish(),\n arguments: z2.string().nullish()\n })\n })\n ).nullish()\n }).nullish(),\n finish_reason: z2.string().nullable().optional(),\n index: z2.number()\n })\n ),\n x_groq: z2.object({\n usage: z2.object({\n prompt_tokens: z2.number().nullish(),\n completion_tokens: z2.number().nullish()\n }).nullish()\n }).nullish()\n }),\n groqErrorDataSchema\n]);\n\n// src/groq-transcription-model.ts\nimport {\n combineHeaders as combineHeaders2,\n convertBase64ToUint8Array,\n createJsonResponseHandler as createJsonResponseHandler2,\n parseProviderOptions as parseProviderOptions2,\n postFormDataToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod\";\nvar groqProviderOptionsSchema = z3.object({\n language: z3.string().nullish(),\n prompt: z3.string().nullish(),\n responseFormat: z3.string().nullish(),\n temperature: z3.number().min(0).max(1).nullish(),\n timestampGranularities: z3.array(z3.string()).nullish()\n});\nvar GroqTranscriptionModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v1\";\n }\n get provider() {\n return this.config.provider;\n }\n getArgs({\n audio,\n mediaType,\n providerOptions\n }) {\n var _a, _b, _c, _d, _e;\n const warnings = [];\n const groqOptions = parseProviderOptions2({\n provider: \"groq\",\n providerOptions,\n schema: groqProviderOptionsSchema\n });\n const formData = new FormData();\n const blob = audio instanceof Uint8Array ? new Blob([audio]) : new Blob([convertBase64ToUint8Array(audio)]);\n formData.append(\"model\", this.modelId);\n formData.append(\"file\", new File([blob], \"audio\", { type: mediaType }));\n if (groqOptions) {\n const transcriptionModelOptions = {\n language: (_a = groqOptions.language) != null ? _a : void 0,\n prompt: (_b = groqOptions.prompt) != null ? _b : void 0,\n response_format: (_c = groqOptions.responseFormat) != null ? _c : void 0,\n temperature: (_d = groqOptions.temperature) != null ? _d : void 0,\n timestamp_granularities: (_e = groqOptions.timestampGranularities) != null ? _e : void 0\n };\n for (const key in transcriptionModelOptions) {\n const value = transcriptionModelOptions[key];\n if (value !== void 0) {\n formData.append(key, String(value));\n }\n }\n }\n return {\n formData,\n warnings\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e;\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const { formData, warnings } = this.getArgs(options);\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse\n } = await postFormDataToApi({\n url: this.config.url({\n path: \"/audio/transcriptions\",\n modelId: this.modelId\n }),\n headers: combineHeaders2(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n groqTranscriptionResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n return {\n text: response.text,\n segments: (_e = (_d = response.segments) == null ? void 0 : _d.map((segment) => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end\n }))) != null ? _e : [],\n language: response.language,\n durationInSeconds: response.duration,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse\n }\n };\n }\n};\nvar groqTranscriptionResponseSchema = z3.object({\n task: z3.string(),\n language: z3.string(),\n duration: z3.number(),\n text: z3.string(),\n segments: z3.array(\n z3.object({\n id: z3.number(),\n seek: z3.number(),\n start: z3.number(),\n end: z3.number(),\n text: z3.string(),\n tokens: z3.array(z3.number()),\n temperature: z3.number(),\n avg_logprob: z3.number(),\n compression_ratio: z3.number(),\n no_speech_prob: z3.number()\n })\n ),\n x_groq: z3.object({\n id: z3.string()\n })\n});\n\n// src/groq-provider.ts\nfunction createGroq(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.groq.com/openai/v1\";\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"GROQ_API_KEY\",\n description: \"Groq\"\n })}`,\n ...options.headers\n });\n const createChatModel = (modelId, settings = {}) => new GroqChatLanguageModel(modelId, settings, {\n provider: \"groq.chat\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createLanguageModel = (modelId, settings) => {\n if (new.target) {\n throw new Error(\n \"The Groq model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId, settings);\n };\n const createTranscriptionModel = (modelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: \"groq.transcription\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n };\n const provider = function(modelId, settings) {\n return createLanguageModel(modelId, settings);\n };\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.textEmbeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"textEmbeddingModel\" });\n };\n provider.transcription = createTranscriptionModel;\n return provider;\n}\nvar groq = createGroq();\nexport {\n createGroq,\n groq\n};\n//# sourceMappingURL=index.mjs.map"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dist-C76EmJsT.cjs","names":["convertUint8ArrayToBase64","UnsupportedFunctionalityError","_exhaustiveCheck","z","createJsonErrorResponseHandler","UnsupportedFunctionalityError2","parseProviderOptions","z2","postJsonToApi","combineHeaders","createJsonResponseHandler","generateId","createEventSourceResponseHandler","InvalidResponseDataError","isParsableJson","z3","parseProviderOptions2","convertBase64ToUint8Array","postFormDataToApi","combineHeaders2","createJsonResponseHandler2","withoutTrailingSlash","loadApiKey","NoSuchModelError"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/groq/1.2.9/e3431418f0b05e29bcd1dbebc5ff794d46e0ff523c7eb715c0866034219da83c/node_modules/@ai-sdk/groq/dist/index.mjs"],"sourcesContent":["// src/groq-provider.ts\nimport {\n NoSuchModelError\n} from \"@ai-sdk/provider\";\nimport {\n loadApiKey,\n withoutTrailingSlash\n} from \"@ai-sdk/provider-utils\";\n\n// src/groq-chat-language-model.ts\nimport {\n InvalidResponseDataError\n} from \"@ai-sdk/provider\";\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z2 } from \"zod\";\n\n// src/convert-to-groq-chat-messages.ts\nimport {\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertUint8ArrayToBase64 } from \"@ai-sdk/provider-utils\";\nfunction convertToGroqChatMessages(prompt) {\n const messages = [];\n for (const { role, content } of prompt) {\n switch (role) {\n case \"system\": {\n messages.push({ role: \"system\", content });\n break;\n }\n case \"user\": {\n if (content.length === 1 && content[0].type === \"text\") {\n messages.push({ role: \"user\", content: content[0].text });\n break;\n }\n messages.push({\n role: \"user\",\n content: content.map((part) => {\n var _a;\n switch (part.type) {\n case \"text\": {\n return { type: \"text\", text: part.text };\n }\n case \"image\": {\n return {\n type: \"image_url\",\n image_url: {\n url: part.image instanceof URL ? part.image.toString() : `data:${(_a = part.mimeType) != null ? _a : \"image/jpeg\"};base64,${convertUint8ArrayToBase64(part.image)}`\n }\n };\n }\n case \"file\": {\n throw new UnsupportedFunctionalityError({\n functionality: \"File content parts in user messages\"\n });\n }\n }\n })\n });\n break;\n }\n case \"assistant\": {\n let text = \"\";\n const toolCalls = [];\n for (const part of content) {\n switch (part.type) {\n case \"text\": {\n text += part.text;\n break;\n }\n case \"tool-call\": {\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.args)\n }\n });\n break;\n }\n }\n }\n messages.push({\n role: \"assistant\",\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : void 0\n });\n break;\n }\n case \"tool\": {\n for (const toolResponse of content) {\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result)\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n return messages;\n}\n\n// src/get-response-metadata.ts\nfunction getResponseMetadata({\n id,\n model,\n created\n}) {\n return {\n id: id != null ? id : void 0,\n modelId: model != null ? model : void 0,\n timestamp: created != null ? new Date(created * 1e3) : void 0\n };\n}\n\n// src/groq-error.ts\nimport { z } from \"zod\";\nimport { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nvar groqErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string()\n })\n});\nvar groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: (data) => data.error.message\n});\n\n// src/groq-prepare-tools.ts\nimport {\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nfunction prepareTools({\n mode\n}) {\n var _a;\n const tools = ((_a = mode.tools) == null ? void 0 : _a.length) ? mode.tools : void 0;\n const toolWarnings = [];\n if (tools == null) {\n return { tools: void 0, tool_choice: void 0, toolWarnings };\n }\n const toolChoice = mode.toolChoice;\n const groqTools = [];\n for (const tool of tools) {\n if (tool.type === \"provider-defined\") {\n toolWarnings.push({ type: \"unsupported-tool\", tool });\n } else {\n groqTools.push({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters\n }\n });\n }\n }\n if (toolChoice == null) {\n return { tools: groqTools, tool_choice: void 0, toolWarnings };\n }\n const type = toolChoice.type;\n switch (type) {\n case \"auto\":\n case \"none\":\n case \"required\":\n return { tools: groqTools, tool_choice: type, toolWarnings };\n case \"tool\":\n return {\n tools: groqTools,\n tool_choice: {\n type: \"function\",\n function: {\n name: toolChoice.toolName\n }\n },\n toolWarnings\n };\n default: {\n const _exhaustiveCheck = type;\n throw new UnsupportedFunctionalityError2({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`\n });\n }\n }\n}\n\n// src/map-groq-finish-reason.ts\nfunction mapGroqFinishReason(finishReason) {\n switch (finishReason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n return \"length\";\n case \"content_filter\":\n return \"content-filter\";\n case \"function_call\":\n case \"tool_calls\":\n return \"tool-calls\";\n default:\n return \"unknown\";\n }\n}\n\n// src/groq-chat-language-model.ts\nvar GroqChatLanguageModel = class {\n constructor(modelId, settings, config) {\n this.specificationVersion = \"v1\";\n this.supportsStructuredOutputs = false;\n this.defaultObjectGenerationMode = \"json\";\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n get provider() {\n return this.config.provider;\n }\n get supportsImageUrls() {\n return !this.settings.downloadImages;\n }\n getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n providerMetadata\n }) {\n const type = mode.type;\n const warnings = [];\n if (topK != null) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"topK\"\n });\n }\n if (responseFormat != null && responseFormat.type === \"json\" && responseFormat.schema != null) {\n warnings.push({\n type: \"unsupported-setting\",\n setting: \"responseFormat\",\n details: \"JSON response format schema is not supported\"\n });\n }\n const groqOptions = parseProviderOptions({\n provider: \"groq\",\n providerOptions: providerMetadata,\n schema: z2.object({\n reasoningFormat: z2.enum([\"parsed\", \"raw\", \"hidden\"]).nullish()\n })\n });\n const baseArgs = {\n // model id:\n model: this.modelId,\n // model specific settings:\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n // response format:\n response_format: (\n // json object response format is not supported for streaming:\n stream === false && (responseFormat == null ? void 0 : responseFormat.type) === \"json\" ? { type: \"json_object\" } : void 0\n ),\n // provider options:\n reasoning_format: groqOptions == null ? void 0 : groqOptions.reasoningFormat,\n // messages:\n messages: convertToGroqChatMessages(prompt)\n };\n switch (type) {\n case \"regular\": {\n const { tools, tool_choice, toolWarnings } = prepareTools({ mode });\n return {\n args: {\n ...baseArgs,\n tools,\n tool_choice\n },\n warnings: [...warnings, ...toolWarnings]\n };\n }\n case \"object-json\": {\n return {\n args: {\n ...baseArgs,\n response_format: (\n // json object response format is not supported for streaming:\n stream === false ? { type: \"json_object\" } : void 0\n )\n },\n warnings\n };\n }\n case \"object-tool\": {\n return {\n args: {\n ...baseArgs,\n tool_choice: {\n type: \"function\",\n function: { name: mode.tool.name }\n },\n tools: [\n {\n type: \"function\",\n function: {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters\n }\n }\n ]\n },\n warnings\n };\n }\n default: {\n const _exhaustiveCheck = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n const { args, warnings } = this.getArgs({ ...options, stream: false });\n const body = JSON.stringify(args);\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse\n } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const { messages: rawPrompt, ...rawSettings } = args;\n const choice = response.choices[0];\n return {\n text: (_a = choice.message.content) != null ? _a : void 0,\n reasoning: (_b = choice.message.reasoning) != null ? _b : void 0,\n toolCalls: (_c = choice.message.tool_calls) == null ? void 0 : _c.map((toolCall) => {\n var _a2;\n return {\n toolCallType: \"function\",\n toolCallId: (_a2 = toolCall.id) != null ? _a2 : generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments\n };\n }),\n finishReason: mapGroqFinishReason(choice.finish_reason),\n usage: {\n promptTokens: (_e = (_d = response.usage) == null ? void 0 : _d.prompt_tokens) != null ? _e : NaN,\n completionTokens: (_g = (_f = response.usage) == null ? void 0 : _f.completion_tokens) != null ? _g : NaN\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(response),\n warnings,\n request: { body }\n };\n }\n async doStream(options) {\n const { args, warnings } = this.getArgs({ ...options, stream: true });\n const body = JSON.stringify({ ...args, stream: true });\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: \"/chat/completions\",\n modelId: this.modelId\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n const { messages: rawPrompt, ...rawSettings } = args;\n const toolCalls = [];\n let finishReason = \"unknown\";\n let usage = {\n promptTokens: void 0,\n completionTokens: void 0\n };\n let isFirstChunk = true;\n let providerMetadata;\n return {\n stream: response.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;\n if (!chunk.success) {\n finishReason = \"error\";\n controller.enqueue({ type: \"error\", error: chunk.error });\n return;\n }\n const value = chunk.value;\n if (\"error\" in value) {\n finishReason = \"error\";\n controller.enqueue({ type: \"error\", error: value.error });\n return;\n }\n if (isFirstChunk) {\n isFirstChunk = false;\n controller.enqueue({\n type: \"response-metadata\",\n ...getResponseMetadata(value)\n });\n }\n if (((_a = value.x_groq) == null ? void 0 : _a.usage) != null) {\n usage = {\n promptTokens: (_b = value.x_groq.usage.prompt_tokens) != null ? _b : void 0,\n completionTokens: (_c = value.x_groq.usage.completion_tokens) != null ? _c : void 0\n };\n }\n const choice = value.choices[0];\n if ((choice == null ? void 0 : choice.finish_reason) != null) {\n finishReason = mapGroqFinishReason(choice.finish_reason);\n }\n if ((choice == null ? void 0 : choice.delta) == null) {\n return;\n }\n const delta = choice.delta;\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n controller.enqueue({\n type: \"reasoning\",\n textDelta: delta.reasoning\n });\n }\n if (delta.content != null && delta.content.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n textDelta: delta.content\n });\n }\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== \"function\") {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`\n });\n }\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`\n });\n }\n if (((_d = toolCallDelta.function) == null ? void 0 : _d.name) == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`\n });\n }\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: \"function\",\n function: {\n name: toolCallDelta.function.name,\n arguments: (_e = toolCallDelta.function.arguments) != null ? _e : \"\"\n },\n hasFinished: false\n };\n const toolCall2 = toolCalls[index];\n if (((_f = toolCall2.function) == null ? void 0 : _f.name) != null && ((_g = toolCall2.function) == null ? void 0 : _g.arguments) != null) {\n if (toolCall2.function.arguments.length > 0) {\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall2.id,\n toolName: toolCall2.function.name,\n argsTextDelta: toolCall2.function.arguments\n });\n }\n if (isParsableJson(toolCall2.function.arguments)) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: (_h = toolCall2.id) != null ? _h : generateId(),\n toolName: toolCall2.function.name,\n args: toolCall2.function.arguments\n });\n toolCall2.hasFinished = true;\n }\n }\n continue;\n }\n const toolCall = toolCalls[index];\n if (toolCall.hasFinished) {\n continue;\n }\n if (((_i = toolCallDelta.function) == null ? void 0 : _i.arguments) != null) {\n toolCall.function.arguments += (_k = (_j = toolCallDelta.function) == null ? void 0 : _j.arguments) != null ? _k : \"\";\n }\n controller.enqueue({\n type: \"tool-call-delta\",\n toolCallType: \"function\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: (_l = toolCallDelta.function.arguments) != null ? _l : \"\"\n });\n if (((_m = toolCall.function) == null ? void 0 : _m.name) != null && ((_n = toolCall.function) == null ? void 0 : _n.arguments) != null && isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: \"tool-call\",\n toolCallType: \"function\",\n toolCallId: (_o = toolCall.id) != null ? _o : generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n flush(controller) {\n var _a, _b;\n controller.enqueue({\n type: \"finish\",\n finishReason,\n usage: {\n promptTokens: (_a = usage.promptTokens) != null ? _a : NaN,\n completionTokens: (_b = usage.completionTokens) != null ? _b : NaN\n },\n ...providerMetadata != null ? { providerMetadata } : {}\n });\n }\n })\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body }\n };\n }\n};\nvar groqChatResponseSchema = z2.object({\n id: z2.string().nullish(),\n created: z2.number().nullish(),\n model: z2.string().nullish(),\n choices: z2.array(\n z2.object({\n message: z2.object({\n content: z2.string().nullish(),\n reasoning: z2.string().nullish(),\n tool_calls: z2.array(\n z2.object({\n id: z2.string().nullish(),\n type: z2.literal(\"function\"),\n function: z2.object({\n name: z2.string(),\n arguments: z2.string()\n })\n })\n ).nullish()\n }),\n index: z2.number(),\n finish_reason: z2.string().nullish()\n })\n ),\n usage: z2.object({\n prompt_tokens: z2.number().nullish(),\n completion_tokens: z2.number().nullish()\n }).nullish()\n});\nvar groqChatChunkSchema = z2.union([\n z2.object({\n id: z2.string().nullish(),\n created: z2.number().nullish(),\n model: z2.string().nullish(),\n choices: z2.array(\n z2.object({\n delta: z2.object({\n content: z2.string().nullish(),\n reasoning: z2.string().nullish(),\n tool_calls: z2.array(\n z2.object({\n index: z2.number(),\n id: z2.string().nullish(),\n type: z2.literal(\"function\").optional(),\n function: z2.object({\n name: z2.string().nullish(),\n arguments: z2.string().nullish()\n })\n })\n ).nullish()\n }).nullish(),\n finish_reason: z2.string().nullable().optional(),\n index: z2.number()\n })\n ),\n x_groq: z2.object({\n usage: z2.object({\n prompt_tokens: z2.number().nullish(),\n completion_tokens: z2.number().nullish()\n }).nullish()\n }).nullish()\n }),\n groqErrorDataSchema\n]);\n\n// src/groq-transcription-model.ts\nimport {\n combineHeaders as combineHeaders2,\n convertBase64ToUint8Array,\n createJsonResponseHandler as createJsonResponseHandler2,\n parseProviderOptions as parseProviderOptions2,\n postFormDataToApi\n} from \"@ai-sdk/provider-utils\";\nimport { z as z3 } from \"zod\";\nvar groqProviderOptionsSchema = z3.object({\n language: z3.string().nullish(),\n prompt: z3.string().nullish(),\n responseFormat: z3.string().nullish(),\n temperature: z3.number().min(0).max(1).nullish(),\n timestampGranularities: z3.array(z3.string()).nullish()\n});\nvar GroqTranscriptionModel = class {\n constructor(modelId, config) {\n this.modelId = modelId;\n this.config = config;\n this.specificationVersion = \"v1\";\n }\n get provider() {\n return this.config.provider;\n }\n getArgs({\n audio,\n mediaType,\n providerOptions\n }) {\n var _a, _b, _c, _d, _e;\n const warnings = [];\n const groqOptions = parseProviderOptions2({\n provider: \"groq\",\n providerOptions,\n schema: groqProviderOptionsSchema\n });\n const formData = new FormData();\n const blob = audio instanceof Uint8Array ? new Blob([audio]) : new Blob([convertBase64ToUint8Array(audio)]);\n formData.append(\"model\", this.modelId);\n formData.append(\"file\", new File([blob], \"audio\", { type: mediaType }));\n if (groqOptions) {\n const transcriptionModelOptions = {\n language: (_a = groqOptions.language) != null ? _a : void 0,\n prompt: (_b = groqOptions.prompt) != null ? _b : void 0,\n response_format: (_c = groqOptions.responseFormat) != null ? _c : void 0,\n temperature: (_d = groqOptions.temperature) != null ? _d : void 0,\n timestamp_granularities: (_e = groqOptions.timestampGranularities) != null ? _e : void 0\n };\n for (const key in transcriptionModelOptions) {\n const value = transcriptionModelOptions[key];\n if (value !== void 0) {\n formData.append(key, String(value));\n }\n }\n }\n return {\n formData,\n warnings\n };\n }\n async doGenerate(options) {\n var _a, _b, _c, _d, _e;\n const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();\n const { formData, warnings } = this.getArgs(options);\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse\n } = await postFormDataToApi({\n url: this.config.url({\n path: \"/audio/transcriptions\",\n modelId: this.modelId\n }),\n headers: combineHeaders2(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler2(\n groqTranscriptionResponseSchema\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch\n });\n return {\n text: response.text,\n segments: (_e = (_d = response.segments) == null ? void 0 : _d.map((segment) => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end\n }))) != null ? _e : [],\n language: response.language,\n durationInSeconds: response.duration,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse\n }\n };\n }\n};\nvar groqTranscriptionResponseSchema = z3.object({\n task: z3.string(),\n language: z3.string(),\n duration: z3.number(),\n text: z3.string(),\n segments: z3.array(\n z3.object({\n id: z3.number(),\n seek: z3.number(),\n start: z3.number(),\n end: z3.number(),\n text: z3.string(),\n tokens: z3.array(z3.number()),\n temperature: z3.number(),\n avg_logprob: z3.number(),\n compression_ratio: z3.number(),\n no_speech_prob: z3.number()\n })\n ),\n x_groq: z3.object({\n id: z3.string()\n })\n});\n\n// src/groq-provider.ts\nfunction createGroq(options = {}) {\n var _a;\n const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : \"https://api.groq.com/openai/v1\";\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: \"GROQ_API_KEY\",\n description: \"Groq\"\n })}`,\n ...options.headers\n });\n const createChatModel = (modelId, settings = {}) => new GroqChatLanguageModel(modelId, settings, {\n provider: \"groq.chat\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n const createLanguageModel = (modelId, settings) => {\n if (new.target) {\n throw new Error(\n \"The Groq model function cannot be called with the new keyword.\"\n );\n }\n return createChatModel(modelId, settings);\n };\n const createTranscriptionModel = (modelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: \"groq.transcription\",\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch\n });\n };\n const provider = function(modelId, settings) {\n return createLanguageModel(modelId, settings);\n };\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.textEmbeddingModel = (modelId) => {\n throw new NoSuchModelError({ modelId, modelType: \"textEmbeddingModel\" });\n };\n provider.transcription = createTranscriptionModel;\n return provider;\n}\nvar groq = createGroq();\nexport {\n createGroq,\n groq\n};\n//# sourceMappingURL=index.mjs.map"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require("./rolldown-runtime-Bd6kNlEP.cjs");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-B6qmZNb0.cjs");
|
|
3
3
|
let zod = require("zod");
|
|
4
|
-
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/google/1.2.22/
|
|
4
|
+
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/google/1.2.22/41ebc37da5c0cc776491dfd3b069573584edf95feef55c6898689a7ddd0d4085/node_modules/@ai-sdk/google/dist/index.mjs
|
|
5
5
|
function convertJSONSchemaToOpenAPISchema(jsonSchema) {
|
|
6
6
|
if (isEmptyObjectSchema(jsonSchema)) return;
|
|
7
7
|
if (typeof jsonSchema === "boolean") return {
|
|
@@ -703,4 +703,4 @@ var google = createGoogleGenerativeAI();
|
|
|
703
703
|
//#endregion
|
|
704
704
|
exports.google = google;
|
|
705
705
|
|
|
706
|
-
//# sourceMappingURL=dist-
|
|
706
|
+
//# sourceMappingURL=dist-C9yKk16g.cjs.map
|