@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.
Files changed (155) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/agent/index.cjs +13 -13
  3. package/dist/agent/index.js +2 -2
  4. package/dist/agent/message-list/conversion/output-converter.d.ts.map +1 -1
  5. package/dist/agent/message-list/index.cjs +18 -18
  6. package/dist/agent/message-list/index.js +1 -1
  7. package/dist/{chunk-JBAMLTYP.js → chunk-3HRPHNFN.js} +4 -4
  8. package/dist/{chunk-JBAMLTYP.js.map → chunk-3HRPHNFN.js.map} +1 -1
  9. package/dist/{chunk-AVOGYFGK.cjs → chunk-4THMANGC.cjs} +83 -83
  10. package/dist/{chunk-AVOGYFGK.cjs.map → chunk-4THMANGC.cjs.map} +1 -1
  11. package/dist/{chunk-26OOSNWN.js → chunk-5SWCNP2L.js} +3 -3
  12. package/dist/{chunk-26OOSNWN.js.map → chunk-5SWCNP2L.js.map} +1 -1
  13. package/dist/{chunk-XYT5D2T7.cjs → chunk-6VYFRSNT.cjs} +13 -13
  14. package/dist/{chunk-XYT5D2T7.cjs.map → chunk-6VYFRSNT.cjs.map} +1 -1
  15. package/dist/{chunk-WZ2EJZ7R.cjs → chunk-7L2ICIDI.cjs} +6 -6
  16. package/dist/{chunk-WZ2EJZ7R.cjs.map → chunk-7L2ICIDI.cjs.map} +1 -1
  17. package/dist/{chunk-BF2JWKWL.cjs → chunk-BQA45RHN.cjs} +5 -5
  18. package/dist/{chunk-BF2JWKWL.cjs.map → chunk-BQA45RHN.cjs.map} +1 -1
  19. package/dist/{chunk-MLCFE6MR.js → chunk-GRMC2OYN.js} +19 -3
  20. package/dist/chunk-GRMC2OYN.js.map +1 -0
  21. package/dist/{chunk-GZWOMZ7C.js → chunk-IWIO6OOO.js} +3 -3
  22. package/dist/{chunk-GZWOMZ7C.js.map → chunk-IWIO6OOO.js.map} +1 -1
  23. package/dist/{chunk-WEKILIGZ.js → chunk-J3NJXIJ4.js} +3 -3
  24. package/dist/{chunk-WEKILIGZ.js.map → chunk-J3NJXIJ4.js.map} +1 -1
  25. package/dist/{chunk-XME4PQE7.cjs → chunk-K4NN2KQQ.cjs} +19 -3
  26. package/dist/chunk-K4NN2KQQ.cjs.map +1 -0
  27. package/dist/{chunk-Q7B3NPO3.cjs → chunk-LY7WIAF5.cjs} +3 -3
  28. package/dist/{chunk-Q7B3NPO3.cjs.map → chunk-LY7WIAF5.cjs.map} +1 -1
  29. package/dist/{chunk-4LDSJHWQ.cjs → chunk-M6632FUT.cjs} +7 -7
  30. package/dist/{chunk-4LDSJHWQ.cjs.map → chunk-M6632FUT.cjs.map} +1 -1
  31. package/dist/{chunk-MQ2YFSTS.cjs → chunk-MDEWERCK.cjs} +185 -185
  32. package/dist/{chunk-MQ2YFSTS.cjs.map → chunk-MDEWERCK.cjs.map} +1 -1
  33. package/dist/{chunk-2CEWKM43.js → chunk-MXISDFVM.js} +3 -3
  34. package/dist/{chunk-2CEWKM43.js.map → chunk-MXISDFVM.js.map} +1 -1
  35. package/dist/{chunk-2NDTZII6.cjs → chunk-NEWK2BT5.cjs} +15 -15
  36. package/dist/{chunk-2NDTZII6.cjs.map → chunk-NEWK2BT5.cjs.map} +1 -1
  37. package/dist/{chunk-VQMIFPSC.cjs → chunk-NTF7UIBI.cjs} +84 -84
  38. package/dist/{chunk-VQMIFPSC.cjs.map → chunk-NTF7UIBI.cjs.map} +1 -1
  39. package/dist/{chunk-TQO7BSJX.js → chunk-OPRJPAB7.js} +3 -3
  40. package/dist/{chunk-TQO7BSJX.js.map → chunk-OPRJPAB7.js.map} +1 -1
  41. package/dist/{chunk-TKGXEXRR.js → chunk-OYAS35A6.js} +10 -10
  42. package/dist/{chunk-TKGXEXRR.js.map → chunk-OYAS35A6.js.map} +1 -1
  43. package/dist/{chunk-O6O5MD7Q.cjs → chunk-PCQBJ3NP.cjs} +5 -2
  44. package/dist/chunk-PCQBJ3NP.cjs.map +1 -0
  45. package/dist/{chunk-4EZX3JLF.cjs → chunk-PNSY2ZGF.cjs} +9 -9
  46. package/dist/{chunk-4EZX3JLF.cjs.map → chunk-PNSY2ZGF.cjs.map} +1 -1
  47. package/dist/{chunk-YVFTL5BS.cjs → chunk-RQBBPR64.cjs} +16 -16
  48. package/dist/{chunk-YVFTL5BS.cjs.map → chunk-RQBBPR64.cjs.map} +1 -1
  49. package/dist/{chunk-YPJ5V2S5.js → chunk-S6VT4LMH.js} +5 -2
  50. package/dist/chunk-S6VT4LMH.js.map +1 -0
  51. package/dist/{chunk-IS7VFXXN.js → chunk-SVE7QF2W.js} +8 -8
  52. package/dist/{chunk-IS7VFXXN.js.map → chunk-SVE7QF2W.js.map} +1 -1
  53. package/dist/{chunk-BXDWBXQW.cjs → chunk-SXVV5X4E.cjs} +13 -13
  54. package/dist/chunk-SXVV5X4E.cjs.map +1 -0
  55. package/dist/{chunk-76GUV7TZ.js → chunk-UQ5BWWRH.js} +4 -4
  56. package/dist/{chunk-76GUV7TZ.js.map → chunk-UQ5BWWRH.js.map} +1 -1
  57. package/dist/{chunk-V7KMU6NL.cjs → chunk-V2XNSBIT.cjs} +7 -7
  58. package/dist/{chunk-V7KMU6NL.cjs.map → chunk-V2XNSBIT.cjs.map} +1 -1
  59. package/dist/{chunk-RKGUSDHX.cjs → chunk-XGTV24L5.cjs} +58 -58
  60. package/dist/{chunk-RKGUSDHX.cjs.map → chunk-XGTV24L5.cjs.map} +1 -1
  61. package/dist/{chunk-7LMIK23W.js → chunk-XKOCRXCP.js} +3 -3
  62. package/dist/{chunk-7LMIK23W.js.map → chunk-XKOCRXCP.js.map} +1 -1
  63. package/dist/{chunk-A25ZFPG7.js → chunk-XU4ZIJEV.js} +7 -7
  64. package/dist/{chunk-A25ZFPG7.js.map → chunk-XU4ZIJEV.js.map} +1 -1
  65. package/dist/{chunk-YSPKTAYB.cjs → chunk-XW4B2RAG.cjs} +24 -24
  66. package/dist/{chunk-YSPKTAYB.cjs.map → chunk-XW4B2RAG.cjs.map} +1 -1
  67. package/dist/{chunk-STU7CG7E.js → chunk-YE4J2QEX.js} +5 -5
  68. package/dist/{chunk-STU7CG7E.js.map → chunk-YE4J2QEX.js.map} +1 -1
  69. package/dist/{chunk-JO36CQSY.js → chunk-YIUXBYAI.js} +12 -12
  70. package/dist/chunk-YIUXBYAI.js.map +1 -0
  71. package/dist/{chunk-WZQ2AJZV.js → chunk-YXBNQTAA.js} +8 -8
  72. package/dist/{chunk-WZQ2AJZV.js.map → chunk-YXBNQTAA.js.map} +1 -1
  73. package/dist/{chunk-TUSCHVH3.js → chunk-ZJMETLCP.js} +4 -4
  74. package/dist/{chunk-TUSCHVH3.js.map → chunk-ZJMETLCP.js.map} +1 -1
  75. package/dist/datasets/index.cjs +17 -17
  76. package/dist/datasets/index.js +2 -2
  77. package/dist/docs/SKILL.md +1 -1
  78. package/dist/docs/assets/SOURCE_MAP.json +216 -216
  79. package/dist/docs/references/docs-memory-observational-memory.md +36 -0
  80. package/dist/docs/references/reference-memory-observational-memory.md +42 -3
  81. package/dist/evals/index.cjs +5 -5
  82. package/dist/evals/index.js +2 -2
  83. package/dist/evals/scoreTraces/index.cjs +3 -3
  84. package/dist/evals/scoreTraces/index.js +1 -1
  85. package/dist/harness/index.cjs +17 -17
  86. package/dist/harness/index.js +7 -7
  87. package/dist/index.cjs +2 -2
  88. package/dist/index.js +1 -1
  89. package/dist/integration/index.cjs +2 -2
  90. package/dist/integration/index.js +1 -1
  91. package/dist/llm/index.cjs +16 -16
  92. package/dist/llm/index.js +5 -5
  93. package/dist/llm/model/provider-types.generated.d.ts +3 -3
  94. package/dist/loop/index.cjs +14 -14
  95. package/dist/loop/index.js +1 -1
  96. package/dist/mastra/index.cjs +2 -2
  97. package/dist/mastra/index.js +1 -1
  98. package/dist/memory/index.cjs +14 -14
  99. package/dist/memory/index.js +1 -1
  100. package/dist/models-dev-JCB4Q53F.js +3 -0
  101. package/dist/{models-dev-A55UVGDD.js.map → models-dev-JCB4Q53F.js.map} +1 -1
  102. package/dist/models-dev-SV7R75OF.cjs +12 -0
  103. package/dist/{models-dev-2FOUJALF.cjs.map → models-dev-SV7R75OF.cjs.map} +1 -1
  104. package/dist/netlify-KG6ZIIC5.js +3 -0
  105. package/dist/{netlify-MF3L2BRE.js.map → netlify-KG6ZIIC5.js.map} +1 -1
  106. package/dist/netlify-SGAVTHDG.cjs +12 -0
  107. package/dist/{netlify-I3P5QPXG.cjs.map → netlify-SGAVTHDG.cjs.map} +1 -1
  108. package/dist/processor-provider/index.cjs +10 -10
  109. package/dist/processor-provider/index.js +1 -1
  110. package/dist/processors/index.cjs +42 -42
  111. package/dist/processors/index.js +1 -1
  112. package/dist/provider-registry-INQUWPG6.js +3 -0
  113. package/dist/{provider-registry-J76YNM72.js.map → provider-registry-INQUWPG6.js.map} +1 -1
  114. package/dist/provider-registry-UIDQJHBI.cjs +40 -0
  115. package/dist/{provider-registry-QB6DEJ7U.cjs.map → provider-registry-UIDQJHBI.cjs.map} +1 -1
  116. package/dist/provider-registry.json +8 -8
  117. package/dist/relevance/index.cjs +3 -3
  118. package/dist/relevance/index.js +1 -1
  119. package/dist/storage/index.cjs +74 -74
  120. package/dist/storage/index.js +1 -1
  121. package/dist/stream/index.cjs +11 -11
  122. package/dist/stream/index.js +2 -2
  123. package/dist/test-utils/llm-mock.cjs +4 -4
  124. package/dist/test-utils/llm-mock.js +1 -1
  125. package/dist/tool-loop-agent/index.cjs +4 -4
  126. package/dist/tool-loop-agent/index.js +1 -1
  127. package/dist/tools/index.cjs +7 -7
  128. package/dist/tools/index.js +1 -1
  129. package/dist/tools/is-vercel-tool.cjs +2 -2
  130. package/dist/tools/is-vercel-tool.js +1 -1
  131. package/dist/tools/validation.d.ts.map +1 -1
  132. package/dist/utils.cjs +23 -23
  133. package/dist/utils.js +1 -1
  134. package/dist/vector/index.cjs +7 -7
  135. package/dist/vector/index.js +1 -1
  136. package/dist/workflows/evented/index.cjs +10 -10
  137. package/dist/workflows/evented/index.js +1 -1
  138. package/dist/workflows/index.cjs +24 -24
  139. package/dist/workflows/index.js +1 -1
  140. package/dist/workspace/index.cjs +68 -68
  141. package/dist/workspace/index.js +1 -1
  142. package/package.json +6 -6
  143. package/src/llm/model/provider-types.generated.d.ts +3 -3
  144. package/dist/chunk-BXDWBXQW.cjs.map +0 -1
  145. package/dist/chunk-JO36CQSY.js.map +0 -1
  146. package/dist/chunk-MLCFE6MR.js.map +0 -1
  147. package/dist/chunk-O6O5MD7Q.cjs.map +0 -1
  148. package/dist/chunk-XME4PQE7.cjs.map +0 -1
  149. package/dist/chunk-YPJ5V2S5.js.map +0 -1
  150. package/dist/models-dev-2FOUJALF.cjs +0 -12
  151. package/dist/models-dev-A55UVGDD.js +0 -3
  152. package/dist/netlify-I3P5QPXG.cjs +0 -12
  153. package/dist/netlify-MF3L2BRE.js +0 -3
  154. package/dist/provider-registry-J76YNM72.js +0 -3
  155. package/dist/provider-registry-QB6DEJ7U.cjs +0 -40
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkQ7B3NPO3_cjs = require('./chunk-Q7B3NPO3.cjs');
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 chunkQ7B3NPO3_cjs.MastraModelGateway {
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": chunkQ7B3NPO3_cjs.MASTRA_USER_AGENT, ...headers };
131
+ const mastraHeaders = { "User-Agent": chunkLY7WIAF5_cjs.MASTRA_USER_AGENT, ...headers };
132
132
  switch (providerId) {
133
133
  case "openai":
134
- return chunkQ7B3NPO3_cjs.createOpenAI({ apiKey, baseURL, headers: mastraHeaders }).responses(modelId);
134
+ return chunkLY7WIAF5_cjs.createOpenAI({ apiKey, baseURL, headers: mastraHeaders }).responses(modelId);
135
135
  case "gemini":
136
- return chunkQ7B3NPO3_cjs.createGoogleGenerativeAI({
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 chunkQ7B3NPO3_cjs.createAnthropic({
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 chunkQ7B3NPO3_cjs.createOpenAICompatible({
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-4EZX3JLF.cjs.map
167
- //# sourceMappingURL=chunk-4EZX3JLF.cjs.map
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 chunkXME4PQE7_cjs = require('./chunk-XME4PQE7.cjs');
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 (!chunkXME4PQE7_cjs.isVercelTool(this.originalTool) && (input.autoResumeSuspendedTools || this.originalTool.id?.startsWith("agent-") || this.originalTool.id?.startsWith("workflow-"))) {
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 (chunkXME4PQE7_cjs.isVercelTool(this.originalTool)) {
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 = !chunkXME4PQE7_cjs.isVercelTool(tool) && "mcpMetadata" in tool ? tool.mcpMetadata : void 0;
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 (chunkXME4PQE7_cjs.isVercelTool(tool)) {
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 = chunkXME4PQE7_cjs.validateToolInput(resumeSchema, resumeData, options.name);
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 = chunkXME4PQE7_cjs.validateToolSuspendData(suspendSchema, suspendData, options.name);
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 (chunkXME4PQE7_cjs.isVercelTool(tool)) {
332
+ if (chunkK4NN2KQQ_cjs.isVercelTool(tool)) {
333
333
  const outputSchema = this.getOutputSchema();
334
- const outputValidation = chunkXME4PQE7_cjs.validateToolOutput(outputSchema, result, options.name, false);
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 } = chunkXME4PQE7_cjs.validateToolInput(parameters, args, options.name);
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 (chunkXME4PQE7_cjs.isVercelTool(this.originalTool) && "needsApproval" in this.originalTool) {
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 chunkXME4PQE7_cjs.Tool) && !chunkXME4PQE7_cjs.isVercelTool(tool)) {
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 (chunkXME4PQE7_cjs.isVercelTool(tool)) {
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-YVFTL5BS.cjs.map
901
- //# sourceMappingURL=chunk-YVFTL5BS.cjs.map
900
+ //# sourceMappingURL=chunk-RQBBPR64.cjs.map
901
+ //# sourceMappingURL=chunk-RQBBPR64.cjs.map