@mastra/core 1.16.0-alpha.3 → 1.16.0-alpha.4
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 +38 -0
- package/dist/agent/index.cjs +13 -13
- package/dist/agent/index.js +2 -2
- package/dist/agent/message-list/conversion/output-converter.d.ts.map +1 -1
- package/dist/agent/message-list/index.cjs +18 -18
- package/dist/agent/message-list/index.js +1 -1
- package/dist/{chunk-JBAMLTYP.js → chunk-3HRPHNFN.js} +4 -4
- package/dist/{chunk-JBAMLTYP.js.map → chunk-3HRPHNFN.js.map} +1 -1
- package/dist/{chunk-AVOGYFGK.cjs → chunk-4THMANGC.cjs} +83 -83
- package/dist/{chunk-AVOGYFGK.cjs.map → chunk-4THMANGC.cjs.map} +1 -1
- package/dist/{chunk-26OOSNWN.js → chunk-5SWCNP2L.js} +3 -3
- package/dist/{chunk-26OOSNWN.js.map → chunk-5SWCNP2L.js.map} +1 -1
- package/dist/{chunk-XYT5D2T7.cjs → chunk-6VYFRSNT.cjs} +13 -13
- package/dist/{chunk-XYT5D2T7.cjs.map → chunk-6VYFRSNT.cjs.map} +1 -1
- package/dist/{chunk-WZ2EJZ7R.cjs → chunk-7L2ICIDI.cjs} +6 -6
- package/dist/{chunk-WZ2EJZ7R.cjs.map → chunk-7L2ICIDI.cjs.map} +1 -1
- package/dist/{chunk-BF2JWKWL.cjs → chunk-BQA45RHN.cjs} +5 -5
- package/dist/{chunk-BF2JWKWL.cjs.map → chunk-BQA45RHN.cjs.map} +1 -1
- package/dist/{chunk-MLCFE6MR.js → chunk-GRMC2OYN.js} +19 -3
- package/dist/chunk-GRMC2OYN.js.map +1 -0
- package/dist/{chunk-GZWOMZ7C.js → chunk-IWIO6OOO.js} +3 -3
- package/dist/{chunk-GZWOMZ7C.js.map → chunk-IWIO6OOO.js.map} +1 -1
- package/dist/{chunk-WEKILIGZ.js → chunk-J3NJXIJ4.js} +3 -3
- package/dist/{chunk-WEKILIGZ.js.map → chunk-J3NJXIJ4.js.map} +1 -1
- package/dist/{chunk-XME4PQE7.cjs → chunk-K4NN2KQQ.cjs} +19 -3
- package/dist/chunk-K4NN2KQQ.cjs.map +1 -0
- package/dist/{chunk-Q7B3NPO3.cjs → chunk-LY7WIAF5.cjs} +3 -3
- package/dist/{chunk-Q7B3NPO3.cjs.map → chunk-LY7WIAF5.cjs.map} +1 -1
- package/dist/{chunk-4LDSJHWQ.cjs → chunk-M6632FUT.cjs} +7 -7
- package/dist/{chunk-4LDSJHWQ.cjs.map → chunk-M6632FUT.cjs.map} +1 -1
- package/dist/{chunk-MQ2YFSTS.cjs → chunk-MDEWERCK.cjs} +185 -185
- package/dist/{chunk-MQ2YFSTS.cjs.map → chunk-MDEWERCK.cjs.map} +1 -1
- package/dist/{chunk-2CEWKM43.js → chunk-MXISDFVM.js} +3 -3
- package/dist/{chunk-2CEWKM43.js.map → chunk-MXISDFVM.js.map} +1 -1
- package/dist/{chunk-2NDTZII6.cjs → chunk-NEWK2BT5.cjs} +15 -15
- package/dist/{chunk-2NDTZII6.cjs.map → chunk-NEWK2BT5.cjs.map} +1 -1
- package/dist/{chunk-VQMIFPSC.cjs → chunk-NTF7UIBI.cjs} +84 -84
- package/dist/{chunk-VQMIFPSC.cjs.map → chunk-NTF7UIBI.cjs.map} +1 -1
- package/dist/{chunk-TQO7BSJX.js → chunk-OPRJPAB7.js} +3 -3
- package/dist/{chunk-TQO7BSJX.js.map → chunk-OPRJPAB7.js.map} +1 -1
- package/dist/{chunk-TKGXEXRR.js → chunk-OYAS35A6.js} +10 -10
- package/dist/{chunk-TKGXEXRR.js.map → chunk-OYAS35A6.js.map} +1 -1
- package/dist/{chunk-O6O5MD7Q.cjs → chunk-PCQBJ3NP.cjs} +5 -2
- package/dist/chunk-PCQBJ3NP.cjs.map +1 -0
- package/dist/{chunk-4EZX3JLF.cjs → chunk-PNSY2ZGF.cjs} +9 -9
- package/dist/{chunk-4EZX3JLF.cjs.map → chunk-PNSY2ZGF.cjs.map} +1 -1
- package/dist/{chunk-YVFTL5BS.cjs → chunk-RQBBPR64.cjs} +16 -16
- package/dist/{chunk-YVFTL5BS.cjs.map → chunk-RQBBPR64.cjs.map} +1 -1
- package/dist/{chunk-YPJ5V2S5.js → chunk-S6VT4LMH.js} +5 -2
- package/dist/chunk-S6VT4LMH.js.map +1 -0
- package/dist/{chunk-IS7VFXXN.js → chunk-SVE7QF2W.js} +8 -8
- package/dist/{chunk-IS7VFXXN.js.map → chunk-SVE7QF2W.js.map} +1 -1
- package/dist/{chunk-BXDWBXQW.cjs → chunk-SXVV5X4E.cjs} +13 -13
- package/dist/chunk-SXVV5X4E.cjs.map +1 -0
- package/dist/{chunk-76GUV7TZ.js → chunk-UQ5BWWRH.js} +4 -4
- package/dist/{chunk-76GUV7TZ.js.map → chunk-UQ5BWWRH.js.map} +1 -1
- package/dist/{chunk-V7KMU6NL.cjs → chunk-V2XNSBIT.cjs} +7 -7
- package/dist/{chunk-V7KMU6NL.cjs.map → chunk-V2XNSBIT.cjs.map} +1 -1
- package/dist/{chunk-RKGUSDHX.cjs → chunk-XGTV24L5.cjs} +58 -58
- package/dist/{chunk-RKGUSDHX.cjs.map → chunk-XGTV24L5.cjs.map} +1 -1
- package/dist/{chunk-7LMIK23W.js → chunk-XKOCRXCP.js} +3 -3
- package/dist/{chunk-7LMIK23W.js.map → chunk-XKOCRXCP.js.map} +1 -1
- package/dist/{chunk-A25ZFPG7.js → chunk-XU4ZIJEV.js} +7 -7
- package/dist/{chunk-A25ZFPG7.js.map → chunk-XU4ZIJEV.js.map} +1 -1
- package/dist/{chunk-YSPKTAYB.cjs → chunk-XW4B2RAG.cjs} +24 -24
- package/dist/{chunk-YSPKTAYB.cjs.map → chunk-XW4B2RAG.cjs.map} +1 -1
- package/dist/{chunk-STU7CG7E.js → chunk-YE4J2QEX.js} +5 -5
- package/dist/{chunk-STU7CG7E.js.map → chunk-YE4J2QEX.js.map} +1 -1
- package/dist/{chunk-JO36CQSY.js → chunk-YIUXBYAI.js} +12 -12
- package/dist/chunk-YIUXBYAI.js.map +1 -0
- package/dist/{chunk-WZQ2AJZV.js → chunk-YXBNQTAA.js} +8 -8
- package/dist/{chunk-WZQ2AJZV.js.map → chunk-YXBNQTAA.js.map} +1 -1
- package/dist/{chunk-TUSCHVH3.js → chunk-ZJMETLCP.js} +4 -4
- package/dist/{chunk-TUSCHVH3.js.map → chunk-ZJMETLCP.js.map} +1 -1
- package/dist/datasets/index.cjs +17 -17
- package/dist/datasets/index.js +2 -2
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +216 -216
- package/dist/docs/references/docs-memory-observational-memory.md +36 -0
- package/dist/docs/references/reference-memory-observational-memory.md +42 -3
- package/dist/evals/index.cjs +5 -5
- package/dist/evals/index.js +2 -2
- package/dist/evals/scoreTraces/index.cjs +3 -3
- package/dist/evals/scoreTraces/index.js +1 -1
- package/dist/harness/index.cjs +17 -17
- package/dist/harness/index.js +7 -7
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/integration/index.cjs +2 -2
- package/dist/integration/index.js +1 -1
- package/dist/llm/index.cjs +16 -16
- package/dist/llm/index.js +5 -5
- package/dist/llm/model/provider-types.generated.d.ts +3 -3
- package/dist/loop/index.cjs +14 -14
- package/dist/loop/index.js +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +14 -14
- package/dist/memory/index.js +1 -1
- package/dist/models-dev-JCB4Q53F.js +3 -0
- package/dist/{models-dev-A55UVGDD.js.map → models-dev-JCB4Q53F.js.map} +1 -1
- package/dist/models-dev-SV7R75OF.cjs +12 -0
- package/dist/{models-dev-2FOUJALF.cjs.map → models-dev-SV7R75OF.cjs.map} +1 -1
- package/dist/netlify-KG6ZIIC5.js +3 -0
- package/dist/{netlify-MF3L2BRE.js.map → netlify-KG6ZIIC5.js.map} +1 -1
- package/dist/netlify-SGAVTHDG.cjs +12 -0
- package/dist/{netlify-I3P5QPXG.cjs.map → netlify-SGAVTHDG.cjs.map} +1 -1
- package/dist/processor-provider/index.cjs +10 -10
- package/dist/processor-provider/index.js +1 -1
- package/dist/processors/index.cjs +42 -42
- package/dist/processors/index.js +1 -1
- package/dist/provider-registry-INQUWPG6.js +3 -0
- package/dist/{provider-registry-J76YNM72.js.map → provider-registry-INQUWPG6.js.map} +1 -1
- package/dist/provider-registry-UIDQJHBI.cjs +40 -0
- package/dist/{provider-registry-QB6DEJ7U.cjs.map → provider-registry-UIDQJHBI.cjs.map} +1 -1
- package/dist/provider-registry.json +8 -8
- package/dist/relevance/index.cjs +3 -3
- package/dist/relevance/index.js +1 -1
- package/dist/storage/index.cjs +74 -74
- package/dist/storage/index.js +1 -1
- package/dist/stream/index.cjs +11 -11
- package/dist/stream/index.js +2 -2
- package/dist/test-utils/llm-mock.cjs +4 -4
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tool-loop-agent/index.cjs +4 -4
- package/dist/tool-loop-agent/index.js +1 -1
- package/dist/tools/index.cjs +7 -7
- package/dist/tools/index.js +1 -1
- package/dist/tools/is-vercel-tool.cjs +2 -2
- package/dist/tools/is-vercel-tool.js +1 -1
- package/dist/tools/validation.d.ts.map +1 -1
- package/dist/utils.cjs +23 -23
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +7 -7
- package/dist/vector/index.js +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +24 -24
- package/dist/workflows/index.js +1 -1
- package/dist/workspace/index.cjs +68 -68
- package/dist/workspace/index.js +1 -1
- package/package.json +6 -6
- package/src/llm/model/provider-types.generated.d.ts +3 -3
- package/dist/chunk-BXDWBXQW.cjs.map +0 -1
- package/dist/chunk-JO36CQSY.js.map +0 -1
- package/dist/chunk-MLCFE6MR.js.map +0 -1
- package/dist/chunk-O6O5MD7Q.cjs.map +0 -1
- package/dist/chunk-XME4PQE7.cjs.map +0 -1
- package/dist/chunk-YPJ5V2S5.js.map +0 -1
- package/dist/models-dev-2FOUJALF.cjs +0 -12
- package/dist/models-dev-A55UVGDD.js +0 -3
- package/dist/netlify-I3P5QPXG.cjs +0 -12
- package/dist/netlify-MF3L2BRE.js +0 -3
- package/dist/provider-registry-J76YNM72.js +0 -3
- package/dist/provider-registry-QB6DEJ7U.cjs +0 -40
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkLY7WIAF5_cjs = require('./chunk-LY7WIAF5.cjs');
|
|
4
4
|
var chunk2VD5OGOT_cjs = require('./chunk-2VD5OGOT.cjs');
|
|
5
5
|
var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
|
|
6
6
|
|
|
7
7
|
// src/llm/model/gateways/netlify.ts
|
|
8
|
-
var NetlifyGateway = class extends
|
|
8
|
+
var NetlifyGateway = class extends chunkLY7WIAF5_cjs.MastraModelGateway {
|
|
9
9
|
id = "netlify";
|
|
10
10
|
name = "Netlify AI Gateway";
|
|
11
11
|
tokenCache = new chunk2VD5OGOT_cjs.InMemoryServerCache();
|
|
@@ -128,12 +128,12 @@ var NetlifyGateway = class extends chunkQ7B3NPO3_cjs.MastraModelGateway {
|
|
|
128
128
|
headers
|
|
129
129
|
}) {
|
|
130
130
|
const baseURL = await this.buildUrl(`${providerId}/${modelId}`);
|
|
131
|
-
const mastraHeaders = { "User-Agent":
|
|
131
|
+
const mastraHeaders = { "User-Agent": chunkLY7WIAF5_cjs.MASTRA_USER_AGENT, ...headers };
|
|
132
132
|
switch (providerId) {
|
|
133
133
|
case "openai":
|
|
134
|
-
return
|
|
134
|
+
return chunkLY7WIAF5_cjs.createOpenAI({ apiKey, baseURL, headers: mastraHeaders }).responses(modelId);
|
|
135
135
|
case "gemini":
|
|
136
|
-
return
|
|
136
|
+
return chunkLY7WIAF5_cjs.createGoogleGenerativeAI({
|
|
137
137
|
baseURL: `${baseURL}/v1beta/`,
|
|
138
138
|
apiKey,
|
|
139
139
|
headers: {
|
|
@@ -142,7 +142,7 @@ var NetlifyGateway = class extends chunkQ7B3NPO3_cjs.MastraModelGateway {
|
|
|
142
142
|
}
|
|
143
143
|
}).chat(modelId);
|
|
144
144
|
case "anthropic":
|
|
145
|
-
return
|
|
145
|
+
return chunkLY7WIAF5_cjs.createAnthropic({
|
|
146
146
|
apiKey,
|
|
147
147
|
baseURL: `${baseURL}/v1/`,
|
|
148
148
|
headers: {
|
|
@@ -151,7 +151,7 @@ var NetlifyGateway = class extends chunkQ7B3NPO3_cjs.MastraModelGateway {
|
|
|
151
151
|
}
|
|
152
152
|
})(modelId);
|
|
153
153
|
default:
|
|
154
|
-
return
|
|
154
|
+
return chunkLY7WIAF5_cjs.createOpenAICompatible({
|
|
155
155
|
name: providerId,
|
|
156
156
|
apiKey,
|
|
157
157
|
baseURL,
|
|
@@ -163,5 +163,5 @@ var NetlifyGateway = class extends chunkQ7B3NPO3_cjs.MastraModelGateway {
|
|
|
163
163
|
};
|
|
164
164
|
|
|
165
165
|
exports.NetlifyGateway = NetlifyGateway;
|
|
166
|
-
//# sourceMappingURL=chunk-
|
|
167
|
-
//# sourceMappingURL=chunk-
|
|
166
|
+
//# sourceMappingURL=chunk-PNSY2ZGF.cjs.map
|
|
167
|
+
//# sourceMappingURL=chunk-PNSY2ZGF.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/llm/model/gateways/netlify.ts"],"names":["MastraModelGateway","InMemoryServerCache","MastraError","MASTRA_USER_AGENT","createOpenAI","createGoogleGenerativeAI","createAnthropic","createOpenAICompatible"],"mappings":"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","file":"chunk-4EZX3JLF.cjs","sourcesContent":["import { createAnthropic } from '@ai-sdk/anthropic-v5';\nimport { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\nimport { MASTRA_USER_AGENT } from './constants.js';\n\ninterface NetlifyProviderResponse {\n token_env_var: string;\n url_env_var: string;\n models: string[];\n}\ninterface NetlifyResponse {\n providers: Record<string, NetlifyProviderResponse>;\n}\n\ninterface NetlifyTokenResponse {\n token: string;\n url: string;\n expires_at: number;\n}\n\ninterface CachedToken {\n token: string;\n url: string;\n expiresAt: number;\n}\n\ninterface TokenData {\n token: string;\n url: string;\n}\n\nexport class NetlifyGateway extends MastraModelGateway {\n readonly id = 'netlify';\n readonly name = 'Netlify AI Gateway';\n private tokenCache = new InMemoryServerCache();\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n const response = await fetch('https://api.netlify.com/api/v1/ai-gateway/providers');\n if (!response.ok) {\n throw new Error(`Failed to fetch from Netlify: ${response.statusText}`);\n }\n const data = (await response.json()) as NetlifyResponse;\n const config: ProviderConfig = {\n apiKeyEnvVar: ['NETLIFY_TOKEN', 'NETLIFY_SITE_ID'],\n apiKeyHeader: 'Authorization',\n name: `Netlify`,\n gateway: `netlify`,\n models: [],\n docUrl: 'https://docs.netlify.com/build/ai-gateway/overview/',\n };\n // Convert Netlify format to our standard format\n for (const [providerId, provider] of Object.entries(data.providers)) {\n for (const model of provider.models) {\n config.models.push(`${providerId}/${model}`);\n }\n }\n // Return with gateway ID as key - registry generator will detect this and avoid doubling the prefix\n return { netlify: config };\n }\n\n async buildUrl(routerId: string, envVars?: typeof process.env): Promise<string> {\n // Check for Netlify site ID first (for token exchange)\n const siteId = envVars?.['NETLIFY_SITE_ID'] || process.env['NETLIFY_SITE_ID'];\n const netlifyToken = envVars?.['NETLIFY_TOKEN'] || process.env['NETLIFY_TOKEN'];\n\n if (!netlifyToken) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_TOKEN',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_TOKEN environment variable required for model: ${routerId}`,\n });\n }\n\n if (!siteId) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_SITE_ID',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_SITE_ID environment variable required for model: ${routerId}`,\n });\n }\n\n try {\n const tokenData = await this.getOrFetchToken(siteId, netlifyToken);\n return tokenData.url.endsWith(`/`) ? tokenData.url.substring(0, tokenData.url.length - 1) : tokenData.url;\n } catch (error) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Netlify AI Gateway token for model ${routerId}: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n }\n\n /**\n * Get cached token or fetch a new site-specific AI Gateway token from Netlify\n */\n private async getOrFetchToken(siteId: string, netlifyToken: string): Promise<TokenData> {\n const cacheKey = `netlify-token:${siteId}:${netlifyToken}`;\n\n // Check cache first\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n // Return cached token if it won't expire in the next minute\n return { token: cached.token, url: cached.url };\n }\n\n // Fetch new token\n const response = await fetch(`https://api.netlify.com/api/v1/sites/${siteId}/ai-gateway/token`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${netlifyToken}`,\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to get Netlify AI Gateway token: ${response.status} ${error}`);\n }\n\n const tokenResponse = (await response.json()) as NetlifyTokenResponse;\n\n // Cache the token - InMemoryServerCache will handle the TTL\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.token,\n url: tokenResponse.url,\n expiresAt: tokenResponse.expires_at,\n });\n\n return { token: tokenResponse.token, url: tokenResponse.url };\n }\n\n /**\n * Get cached token or fetch a new site-specific AI Gateway token from Netlify\n */\n async getApiKey(modelId: string): Promise<string> {\n const siteId = process.env['NETLIFY_SITE_ID'];\n const netlifyToken = process.env['NETLIFY_TOKEN'];\n\n if (!netlifyToken) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_TOKEN',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_TOKEN environment variable required for model: ${modelId}`,\n });\n }\n\n if (!siteId) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_SITE_ID',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_SITE_ID environment variable required for model: ${modelId}`,\n });\n }\n\n try {\n return (await this.getOrFetchToken(siteId, netlifyToken)).token;\n } catch (error) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Netlify AI Gateway token for model ${modelId}: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n }\n\n async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<LanguageModelV2> {\n const baseURL = await this.buildUrl(`${providerId}/${modelId}`);\n\n const mastraHeaders = { 'User-Agent': MASTRA_USER_AGENT, ...headers };\n\n switch (providerId) {\n case 'openai':\n return createOpenAI({ apiKey, baseURL, headers: mastraHeaders }).responses(modelId);\n case 'gemini':\n return createGoogleGenerativeAI({\n baseURL: `${baseURL}/v1beta/`,\n apiKey,\n headers: {\n 'user-agent': 'google-genai-sdk/',\n ...mastraHeaders,\n },\n }).chat(modelId);\n case 'anthropic':\n return createAnthropic({\n apiKey,\n baseURL: `${baseURL}/v1/`,\n headers: {\n 'anthropic-version': '2023-06-01',\n ...mastraHeaders,\n },\n })(modelId);\n default:\n return createOpenAICompatible({\n name: providerId,\n apiKey,\n baseURL,\n headers: mastraHeaders,\n supportsStructuredOutputs: true,\n }).chatModel(modelId);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/llm/model/gateways/netlify.ts"],"names":["MastraModelGateway","InMemoryServerCache","MastraError","MASTRA_USER_AGENT","createOpenAI","createGoogleGenerativeAI","createAnthropic","createOpenAICompatible"],"mappings":"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","file":"chunk-PNSY2ZGF.cjs","sourcesContent":["import { createAnthropic } from '@ai-sdk/anthropic-v5';\nimport { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\nimport { MASTRA_USER_AGENT } from './constants.js';\n\ninterface NetlifyProviderResponse {\n token_env_var: string;\n url_env_var: string;\n models: string[];\n}\ninterface NetlifyResponse {\n providers: Record<string, NetlifyProviderResponse>;\n}\n\ninterface NetlifyTokenResponse {\n token: string;\n url: string;\n expires_at: number;\n}\n\ninterface CachedToken {\n token: string;\n url: string;\n expiresAt: number;\n}\n\ninterface TokenData {\n token: string;\n url: string;\n}\n\nexport class NetlifyGateway extends MastraModelGateway {\n readonly id = 'netlify';\n readonly name = 'Netlify AI Gateway';\n private tokenCache = new InMemoryServerCache();\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n const response = await fetch('https://api.netlify.com/api/v1/ai-gateway/providers');\n if (!response.ok) {\n throw new Error(`Failed to fetch from Netlify: ${response.statusText}`);\n }\n const data = (await response.json()) as NetlifyResponse;\n const config: ProviderConfig = {\n apiKeyEnvVar: ['NETLIFY_TOKEN', 'NETLIFY_SITE_ID'],\n apiKeyHeader: 'Authorization',\n name: `Netlify`,\n gateway: `netlify`,\n models: [],\n docUrl: 'https://docs.netlify.com/build/ai-gateway/overview/',\n };\n // Convert Netlify format to our standard format\n for (const [providerId, provider] of Object.entries(data.providers)) {\n for (const model of provider.models) {\n config.models.push(`${providerId}/${model}`);\n }\n }\n // Return with gateway ID as key - registry generator will detect this and avoid doubling the prefix\n return { netlify: config };\n }\n\n async buildUrl(routerId: string, envVars?: typeof process.env): Promise<string> {\n // Check for Netlify site ID first (for token exchange)\n const siteId = envVars?.['NETLIFY_SITE_ID'] || process.env['NETLIFY_SITE_ID'];\n const netlifyToken = envVars?.['NETLIFY_TOKEN'] || process.env['NETLIFY_TOKEN'];\n\n if (!netlifyToken) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_TOKEN',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_TOKEN environment variable required for model: ${routerId}`,\n });\n }\n\n if (!siteId) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_SITE_ID',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_SITE_ID environment variable required for model: ${routerId}`,\n });\n }\n\n try {\n const tokenData = await this.getOrFetchToken(siteId, netlifyToken);\n return tokenData.url.endsWith(`/`) ? tokenData.url.substring(0, tokenData.url.length - 1) : tokenData.url;\n } catch (error) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Netlify AI Gateway token for model ${routerId}: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n }\n\n /**\n * Get cached token or fetch a new site-specific AI Gateway token from Netlify\n */\n private async getOrFetchToken(siteId: string, netlifyToken: string): Promise<TokenData> {\n const cacheKey = `netlify-token:${siteId}:${netlifyToken}`;\n\n // Check cache first\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n // Return cached token if it won't expire in the next minute\n return { token: cached.token, url: cached.url };\n }\n\n // Fetch new token\n const response = await fetch(`https://api.netlify.com/api/v1/sites/${siteId}/ai-gateway/token`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${netlifyToken}`,\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to get Netlify AI Gateway token: ${response.status} ${error}`);\n }\n\n const tokenResponse = (await response.json()) as NetlifyTokenResponse;\n\n // Cache the token - InMemoryServerCache will handle the TTL\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.token,\n url: tokenResponse.url,\n expiresAt: tokenResponse.expires_at,\n });\n\n return { token: tokenResponse.token, url: tokenResponse.url };\n }\n\n /**\n * Get cached token or fetch a new site-specific AI Gateway token from Netlify\n */\n async getApiKey(modelId: string): Promise<string> {\n const siteId = process.env['NETLIFY_SITE_ID'];\n const netlifyToken = process.env['NETLIFY_TOKEN'];\n\n if (!netlifyToken) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_TOKEN',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_TOKEN environment variable required for model: ${modelId}`,\n });\n }\n\n if (!siteId) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_NO_SITE_ID',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Missing NETLIFY_SITE_ID environment variable required for model: ${modelId}`,\n });\n }\n\n try {\n return (await this.getOrFetchToken(siteId, netlifyToken)).token;\n } catch (error) {\n throw new MastraError({\n id: 'NETLIFY_GATEWAY_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Netlify AI Gateway token for model ${modelId}: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n }\n\n async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<LanguageModelV2> {\n const baseURL = await this.buildUrl(`${providerId}/${modelId}`);\n\n const mastraHeaders = { 'User-Agent': MASTRA_USER_AGENT, ...headers };\n\n switch (providerId) {\n case 'openai':\n return createOpenAI({ apiKey, baseURL, headers: mastraHeaders }).responses(modelId);\n case 'gemini':\n return createGoogleGenerativeAI({\n baseURL: `${baseURL}/v1beta/`,\n apiKey,\n headers: {\n 'user-agent': 'google-genai-sdk/',\n ...mastraHeaders,\n },\n }).chat(modelId);\n case 'anthropic':\n return createAnthropic({\n apiKey,\n baseURL: `${baseURL}/v1/`,\n headers: {\n 'anthropic-version': '2023-06-01',\n ...mastraHeaders,\n },\n })(modelId);\n default:\n return createOpenAICompatible({\n name: providerId,\n apiKey,\n baseURL,\n headers: mastraHeaders,\n supportsStructuredOutputs: true,\n }).chatModel(modelId);\n }\n }\n}\n"]}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkG5HKDGNT_cjs = require('./chunk-G5HKDGNT.cjs');
|
|
4
4
|
var chunkKJBMTK5B_cjs = require('./chunk-KJBMTK5B.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkK4NN2KQQ_cjs = require('./chunk-K4NN2KQQ.cjs');
|
|
6
6
|
var chunkRLPRSIR2_cjs = require('./chunk-RLPRSIR2.cjs');
|
|
7
7
|
var chunkXB4FLS7A_cjs = require('./chunk-XB4FLS7A.cjs');
|
|
8
|
-
var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
|
|
9
8
|
var chunk5WBEMKE2_cjs = require('./chunk-5WBEMKE2.cjs');
|
|
9
|
+
var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
|
|
10
10
|
var chunkRO47SMI7_cjs = require('./chunk-RO47SMI7.cjs');
|
|
11
11
|
var crypto = require('crypto');
|
|
12
12
|
var jsonToZod = require('@mastra/schema-compat/json-to-zod');
|
|
@@ -22,7 +22,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
22
22
|
this.originalTool = input.originalTool;
|
|
23
23
|
this.options = input.options;
|
|
24
24
|
this.logType = input.logType;
|
|
25
|
-
if (!
|
|
25
|
+
if (!chunkK4NN2KQQ_cjs.isVercelTool(this.originalTool) && (input.autoResumeSuspendedTools || this.originalTool.id?.startsWith("agent-") || this.originalTool.id?.startsWith("workflow-"))) {
|
|
26
26
|
let schema = this.originalTool.inputSchema;
|
|
27
27
|
if (typeof schema === "function") {
|
|
28
28
|
schema = schema();
|
|
@@ -55,7 +55,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
55
55
|
}
|
|
56
56
|
// Helper to get parameters based on tool type
|
|
57
57
|
getParameters = () => {
|
|
58
|
-
if (
|
|
58
|
+
if (chunkK4NN2KQQ_cjs.isVercelTool(this.originalTool)) {
|
|
59
59
|
let schema2 = this.originalTool.parameters ?? ("inputSchema" in this.originalTool ? this.originalTool.inputSchema : void 0) ?? v4.z.object({});
|
|
60
60
|
if (typeof schema2 === "function") {
|
|
61
61
|
schema2 = schema2();
|
|
@@ -201,7 +201,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
201
201
|
});
|
|
202
202
|
const execFunction = async (args, execOptions) => {
|
|
203
203
|
const tracingContext = execOptions.tracingContext || options.tracingContext;
|
|
204
|
-
const mcpMeta = !
|
|
204
|
+
const mcpMeta = !chunkK4NN2KQQ_cjs.isVercelTool(tool) && "mcpMetadata" in tool ? tool.mcpMetadata : void 0;
|
|
205
205
|
const toolRequestContext = execOptions.requestContext ?? options.requestContext;
|
|
206
206
|
const toolSpan = chunkG5HKDGNT_cjs.getOrCreateSpan({
|
|
207
207
|
type: mcpMeta ? "mcp_tool_call" /* MCP_TOOL_CALL */ : "tool_call" /* TOOL_CALL */,
|
|
@@ -226,7 +226,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
226
226
|
try {
|
|
227
227
|
let result;
|
|
228
228
|
let suspendData = null;
|
|
229
|
-
if (
|
|
229
|
+
if (chunkK4NN2KQQ_cjs.isVercelTool(tool)) {
|
|
230
230
|
result = await chunkG5HKDGNT_cjs.executeWithContext({
|
|
231
231
|
span: toolSpan,
|
|
232
232
|
fn: async () => tool?.execute?.(args, execOptions)
|
|
@@ -306,7 +306,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
306
306
|
}
|
|
307
307
|
const resumeData = execOptions.resumeData;
|
|
308
308
|
if (resumeData) {
|
|
309
|
-
const resumeValidation =
|
|
309
|
+
const resumeValidation = chunkK4NN2KQQ_cjs.validateToolInput(resumeSchema, resumeData, options.name);
|
|
310
310
|
if (resumeValidation.error) {
|
|
311
311
|
logger?.warn(resumeValidation.error.message);
|
|
312
312
|
toolSpan?.end({ output: resumeValidation.error, attributes: { success: false } });
|
|
@@ -317,7 +317,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
317
317
|
}
|
|
318
318
|
if (suspendData) {
|
|
319
319
|
const suspendSchema = this.getSuspendSchema();
|
|
320
|
-
const suspendValidation =
|
|
320
|
+
const suspendValidation = chunkK4NN2KQQ_cjs.validateToolSuspendData(suspendSchema, suspendData, options.name);
|
|
321
321
|
if (suspendValidation.error) {
|
|
322
322
|
logger?.warn(suspendValidation.error.message);
|
|
323
323
|
toolSpan?.end({ output: suspendValidation.error, attributes: { success: false } });
|
|
@@ -329,9 +329,9 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
329
329
|
toolSpan?.end({ output: result, attributes: { success: true } });
|
|
330
330
|
return result;
|
|
331
331
|
}
|
|
332
|
-
if (
|
|
332
|
+
if (chunkK4NN2KQQ_cjs.isVercelTool(tool)) {
|
|
333
333
|
const outputSchema = this.getOutputSchema();
|
|
334
|
-
const outputValidation =
|
|
334
|
+
const outputValidation = chunkK4NN2KQQ_cjs.validateToolOutput(outputSchema, result, options.name, false);
|
|
335
335
|
if (outputValidation.error) {
|
|
336
336
|
logger?.warn(outputValidation.error.message);
|
|
337
337
|
toolSpan?.end({ output: outputValidation.error, attributes: { success: false } });
|
|
@@ -351,7 +351,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
351
351
|
try {
|
|
352
352
|
logger2.debug(start, { ...rest, model: logModelObject, args });
|
|
353
353
|
const parameters = this.getParameters();
|
|
354
|
-
const { data, error: error2 } =
|
|
354
|
+
const { data, error: error2 } = chunkK4NN2KQQ_cjs.validateToolInput(parameters, args, options.name);
|
|
355
355
|
const suspendedToolRunIdErrToIgnore = error2?.message?.includes("suspendedToolRunId: Required") && !args?.resumeData;
|
|
356
356
|
if (error2 && !suspendedToolRunIdErrToIgnore) {
|
|
357
357
|
logger2.warn(error2.message);
|
|
@@ -469,7 +469,7 @@ var CoreToolBuilder = class extends chunkRO47SMI7_cjs.MastraBase {
|
|
|
469
469
|
}
|
|
470
470
|
let requireApproval = this.options.requireApproval;
|
|
471
471
|
let needsApprovalFn;
|
|
472
|
-
if (
|
|
472
|
+
if (chunkK4NN2KQQ_cjs.isVercelTool(this.originalTool) && "needsApproval" in this.originalTool) {
|
|
473
473
|
const needsApproval = this.originalTool.needsApproval;
|
|
474
474
|
if (typeof needsApproval === "boolean") {
|
|
475
475
|
requireApproval = needsApproval;
|
|
@@ -675,7 +675,7 @@ function ensureToolProperties(tools) {
|
|
|
675
675
|
const toolsWithProperties = Object.keys(tools).reduce((acc, key) => {
|
|
676
676
|
const tool = tools?.[key];
|
|
677
677
|
if (tool) {
|
|
678
|
-
if (typeof tool === "function" && !(tool instanceof
|
|
678
|
+
if (typeof tool === "function" && !(tool instanceof chunkK4NN2KQQ_cjs.Tool) && !chunkK4NN2KQQ_cjs.isVercelTool(tool)) {
|
|
679
679
|
throw new chunk4U7ZLI36_cjs.MastraError({
|
|
680
680
|
id: "TOOL_INVALID_FORMAT",
|
|
681
681
|
domain: "TOOL" /* TOOL */,
|
|
@@ -683,7 +683,7 @@ function ensureToolProperties(tools) {
|
|
|
683
683
|
text: `Tool "${key}" is not a valid tool format. Tools must be created using createTool() or be a valid Vercel AI SDK tool. Received a function.`
|
|
684
684
|
});
|
|
685
685
|
}
|
|
686
|
-
if (
|
|
686
|
+
if (chunkK4NN2KQQ_cjs.isVercelTool(tool)) {
|
|
687
687
|
acc[key] = setVercelToolProperties(tool);
|
|
688
688
|
} else {
|
|
689
689
|
acc[key] = tool;
|
|
@@ -897,5 +897,5 @@ exports.removeUndefinedValues = removeUndefinedValues;
|
|
|
897
897
|
exports.resolveSerializedZodOutput = resolveSerializedZodOutput;
|
|
898
898
|
exports.selectFields = selectFields;
|
|
899
899
|
exports.setNestedValue = setNestedValue;
|
|
900
|
-
//# sourceMappingURL=chunk-
|
|
901
|
-
//# sourceMappingURL=chunk-
|
|
900
|
+
//# sourceMappingURL=chunk-RQBBPR64.cjs.map
|
|
901
|
+
//# sourceMappingURL=chunk-RQBBPR64.cjs.map
|