@mastra/core 1.18.0-alpha.0 → 1.18.0-alpha.1

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 (147) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/agent/index.cjs +8 -8
  3. package/dist/agent/index.js +1 -1
  4. package/dist/{chunk-3ECYXW43.cjs → chunk-2U4M4SGY.cjs} +16 -16
  5. package/dist/{chunk-3ECYXW43.cjs.map → chunk-2U4M4SGY.cjs.map} +1 -1
  6. package/dist/{chunk-JEEYINIB.js → chunk-3NMSFQPY.js} +4 -4
  7. package/dist/{chunk-JEEYINIB.js.map → chunk-3NMSFQPY.js.map} +1 -1
  8. package/dist/{chunk-7CDFI4GW.cjs → chunk-3O73Q6M2.cjs} +76 -76
  9. package/dist/{chunk-7CDFI4GW.cjs.map → chunk-3O73Q6M2.cjs.map} +1 -1
  10. package/dist/{chunk-ZOPIN73X.js → chunk-3U4ZNZIF.js} +4 -4
  11. package/dist/{chunk-ZOPIN73X.js.map → chunk-3U4ZNZIF.js.map} +1 -1
  12. package/dist/{chunk-QVQ3PGG2.cjs → chunk-7IDACSBM.cjs} +206 -2
  13. package/dist/chunk-7IDACSBM.cjs.map +1 -0
  14. package/dist/{chunk-YFYB3Q5L.js → chunk-A2Z26HFR.js} +9 -9
  15. package/dist/{chunk-YFYB3Q5L.js.map → chunk-A2Z26HFR.js.map} +1 -1
  16. package/dist/{chunk-AIYWGXK7.js → chunk-BYJDWJCX.js} +3 -3
  17. package/dist/{chunk-AIYWGXK7.js.map → chunk-BYJDWJCX.js.map} +1 -1
  18. package/dist/{chunk-F7YLMJSQ.js → chunk-D4DCPE5Y.js} +4 -4
  19. package/dist/{chunk-F7YLMJSQ.js.map → chunk-D4DCPE5Y.js.map} +1 -1
  20. package/dist/{chunk-CYQ2TNSK.js → chunk-EYM6DWKD.js} +18 -3
  21. package/dist/{chunk-CYQ2TNSK.js.map → chunk-EYM6DWKD.js.map} +1 -1
  22. package/dist/{chunk-3LH5QX5F.cjs → chunk-G62XEVSI.cjs} +3 -3
  23. package/dist/{chunk-3LH5QX5F.cjs.map → chunk-G62XEVSI.cjs.map} +1 -1
  24. package/dist/{chunk-BHVF4Z5D.cjs → chunk-GFBH7Q4W.cjs} +13 -13
  25. package/dist/{chunk-BHVF4Z5D.cjs.map → chunk-GFBH7Q4W.cjs.map} +1 -1
  26. package/dist/{chunk-3DDJ33AU.js → chunk-HEHK7LXS.js} +4 -4
  27. package/dist/{chunk-3DDJ33AU.js.map → chunk-HEHK7LXS.js.map} +1 -1
  28. package/dist/{chunk-TG4U3K3I.cjs → chunk-JFPVUKPB.cjs} +50 -50
  29. package/dist/{chunk-TG4U3K3I.cjs.map → chunk-JFPVUKPB.cjs.map} +1 -1
  30. package/dist/{chunk-AIEKKCJ7.js → chunk-K22Q6XPG.js} +3 -3
  31. package/dist/{chunk-AIEKKCJ7.js.map → chunk-K22Q6XPG.js.map} +1 -1
  32. package/dist/{chunk-V54LY5HR.cjs → chunk-KL2IRBNK.cjs} +6107 -5697
  33. package/dist/chunk-KL2IRBNK.cjs.map +1 -0
  34. package/dist/{chunk-DV7FIKOO.cjs → chunk-MSDZQ4DW.cjs} +10 -10
  35. package/dist/{chunk-DV7FIKOO.cjs.map → chunk-MSDZQ4DW.cjs.map} +1 -1
  36. package/dist/{chunk-3H34KWBU.cjs → chunk-PK3X5KIF.cjs} +24 -9
  37. package/dist/{chunk-3H34KWBU.cjs.map → chunk-PK3X5KIF.cjs.map} +1 -1
  38. package/dist/{chunk-SLG7AUBK.cjs → chunk-PQWEJELD.cjs} +6 -6
  39. package/dist/{chunk-SLG7AUBK.cjs.map → chunk-PQWEJELD.cjs.map} +1 -1
  40. package/dist/{chunk-P2C4NFMY.js → chunk-RB2QRGRV.js} +4 -4
  41. package/dist/{chunk-P2C4NFMY.js.map → chunk-RB2QRGRV.js.map} +1 -1
  42. package/dist/{chunk-BIB2LCIR.js → chunk-TKKBZUWD.js} +6106 -5696
  43. package/dist/chunk-TKKBZUWD.js.map +1 -0
  44. package/dist/{chunk-AEIPJW4F.cjs → chunk-UEZU2TA2.cjs} +185 -185
  45. package/dist/{chunk-AEIPJW4F.cjs.map → chunk-UEZU2TA2.cjs.map} +1 -1
  46. package/dist/{chunk-DL4A7URO.cjs → chunk-UPCNNWXW.cjs} +236 -20
  47. package/dist/chunk-UPCNNWXW.cjs.map +1 -0
  48. package/dist/{chunk-KMVGT2JI.js → chunk-UQ2HAEHL.js} +233 -17
  49. package/dist/chunk-UQ2HAEHL.js.map +1 -0
  50. package/dist/{chunk-AGEYVARR.js → chunk-VMKNS3YO.js} +204 -3
  51. package/dist/chunk-VMKNS3YO.js.map +1 -0
  52. package/dist/{chunk-YXNO6AHV.js → chunk-WYFCQAHY.js} +7 -7
  53. package/dist/{chunk-YXNO6AHV.js.map → chunk-WYFCQAHY.js.map} +1 -1
  54. package/dist/{chunk-A5JHKGFY.cjs → chunk-Z3VUDCXI.cjs} +7 -7
  55. package/dist/{chunk-A5JHKGFY.cjs.map → chunk-Z3VUDCXI.cjs.map} +1 -1
  56. package/dist/datasets/index.cjs +17 -17
  57. package/dist/datasets/index.js +2 -2
  58. package/dist/docs/SKILL.md +2 -1
  59. package/dist/docs/assets/SOURCE_MAP.json +349 -334
  60. package/dist/docs/references/reference-evals-run-evals.md +78 -3
  61. package/dist/docs/references/reference-evals-scorer-utils.md +184 -0
  62. package/dist/docs/references/reference-evals-trajectory-accuracy.md +613 -0
  63. package/dist/docs/references/reference.md +1 -0
  64. package/dist/evals/base.d.ts +8 -2
  65. package/dist/evals/base.d.ts.map +1 -1
  66. package/dist/evals/index.cjs +32 -20
  67. package/dist/evals/index.js +3 -3
  68. package/dist/evals/run/index.d.ts +28 -1
  69. package/dist/evals/run/index.d.ts.map +1 -1
  70. package/dist/evals/run/scorerAccumulator.d.ts +4 -1
  71. package/dist/evals/run/scorerAccumulator.d.ts.map +1 -1
  72. package/dist/evals/scoreTraces/index.cjs +5 -5
  73. package/dist/evals/scoreTraces/index.js +2 -2
  74. package/dist/evals/types.d.ts +305 -10
  75. package/dist/evals/types.d.ts.map +1 -1
  76. package/dist/harness/index.cjs +7 -7
  77. package/dist/harness/index.js +5 -5
  78. package/dist/index.cjs +2 -2
  79. package/dist/index.js +1 -1
  80. package/dist/llm/index.cjs +16 -16
  81. package/dist/llm/index.js +5 -5
  82. package/dist/llm/model/provider-types.generated.d.ts +2444 -2243
  83. package/dist/loop/index.cjs +14 -14
  84. package/dist/loop/index.js +1 -1
  85. package/dist/loop/network/index.d.ts +3 -3
  86. package/dist/loop/types.d.ts +1 -1
  87. package/dist/mastra/index.cjs +2 -2
  88. package/dist/mastra/index.js +1 -1
  89. package/dist/memory/index.cjs +14 -14
  90. package/dist/memory/index.js +1 -1
  91. package/dist/models-dev-3U6ICCNW.js +3 -0
  92. package/dist/{models-dev-JEMMVJFN.js.map → models-dev-3U6ICCNW.js.map} +1 -1
  93. package/dist/models-dev-BJHT4GXA.cjs +12 -0
  94. package/dist/{models-dev-MU7QGI4O.cjs.map → models-dev-BJHT4GXA.cjs.map} +1 -1
  95. package/dist/netlify-DE3IXMT2.js +3 -0
  96. package/dist/{netlify-BROEKRZF.js.map → netlify-DE3IXMT2.js.map} +1 -1
  97. package/dist/netlify-UARJYMCW.cjs +12 -0
  98. package/dist/{netlify-GOEIG6IC.cjs.map → netlify-UARJYMCW.cjs.map} +1 -1
  99. package/dist/processor-provider/index.cjs +10 -10
  100. package/dist/processor-provider/index.js +1 -1
  101. package/dist/processors/index.cjs +44 -44
  102. package/dist/processors/index.js +1 -1
  103. package/dist/provider-registry-65CPGTUU.cjs +40 -0
  104. package/dist/{provider-registry-CKFMYEBK.cjs.map → provider-registry-65CPGTUU.cjs.map} +1 -1
  105. package/dist/provider-registry-EQAT7FXK.js +3 -0
  106. package/dist/{provider-registry-P7EMCVJI.js.map → provider-registry-EQAT7FXK.js.map} +1 -1
  107. package/dist/provider-registry.json +6102 -5692
  108. package/dist/relevance/index.cjs +3 -3
  109. package/dist/relevance/index.js +1 -1
  110. package/dist/storage/constants.cjs +56 -56
  111. package/dist/storage/constants.d.ts +1 -1
  112. package/dist/storage/constants.js +1 -1
  113. package/dist/storage/domains/experiments/base.d.ts +2 -1
  114. package/dist/storage/domains/experiments/base.d.ts.map +1 -1
  115. package/dist/storage/domains/experiments/inmemory.d.ts +2 -1
  116. package/dist/storage/domains/experiments/inmemory.d.ts.map +1 -1
  117. package/dist/storage/domains/observability/tracing.d.ts +45 -45
  118. package/dist/storage/index.cjs +160 -160
  119. package/dist/storage/index.js +2 -2
  120. package/dist/storage/types.d.ts +12 -0
  121. package/dist/storage/types.d.ts.map +1 -1
  122. package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
  123. package/dist/stream/MastraWorkflowStream.d.ts +1 -1
  124. package/dist/stream/index.cjs +8 -8
  125. package/dist/stream/index.js +1 -1
  126. package/dist/tool-loop-agent/index.cjs +4 -4
  127. package/dist/tool-loop-agent/index.js +1 -1
  128. package/dist/vector/index.cjs +7 -7
  129. package/dist/vector/index.js +1 -1
  130. package/dist/workflows/evented/index.cjs +10 -10
  131. package/dist/workflows/evented/index.js +1 -1
  132. package/dist/workflows/index.cjs +24 -24
  133. package/dist/workflows/index.js +1 -1
  134. package/package.json +5 -5
  135. package/src/llm/model/provider-types.generated.d.ts +2444 -2243
  136. package/dist/chunk-AGEYVARR.js.map +0 -1
  137. package/dist/chunk-BIB2LCIR.js.map +0 -1
  138. package/dist/chunk-DL4A7URO.cjs.map +0 -1
  139. package/dist/chunk-KMVGT2JI.js.map +0 -1
  140. package/dist/chunk-QVQ3PGG2.cjs.map +0 -1
  141. package/dist/chunk-V54LY5HR.cjs.map +0 -1
  142. package/dist/models-dev-JEMMVJFN.js +0 -3
  143. package/dist/models-dev-MU7QGI4O.cjs +0 -12
  144. package/dist/netlify-BROEKRZF.js +0 -3
  145. package/dist/netlify-GOEIG6IC.cjs +0 -12
  146. package/dist/provider-registry-CKFMYEBK.cjs +0 -40
  147. package/dist/provider-registry-P7EMCVJI.js +0 -3
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunk3LH5QX5F_cjs = require('./chunk-3LH5QX5F.cjs');
4
- var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
3
+ var chunkG62XEVSI_cjs = require('./chunk-G62XEVSI.cjs');
5
4
  var chunk2VD5OGOT_cjs = require('./chunk-2VD5OGOT.cjs');
5
+ var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
6
6
 
7
7
  // src/llm/model/gateways/netlify.ts
8
- var NetlifyGateway = class extends chunk3LH5QX5F_cjs.MastraModelGateway {
8
+ var NetlifyGateway = class extends chunkG62XEVSI_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 chunk3LH5QX5F_cjs.MastraModelGateway {
128
128
  headers
129
129
  }) {
130
130
  const baseURL = await this.buildUrl(`${providerId}/${modelId}`);
131
- const mastraHeaders = { "User-Agent": chunk3LH5QX5F_cjs.MASTRA_USER_AGENT, ...headers };
131
+ const mastraHeaders = { "User-Agent": chunkG62XEVSI_cjs.MASTRA_USER_AGENT, ...headers };
132
132
  switch (providerId) {
133
133
  case "openai":
134
- return chunk3LH5QX5F_cjs.createOpenAI({ apiKey, baseURL, headers: mastraHeaders }).responses(modelId);
134
+ return chunkG62XEVSI_cjs.createOpenAI({ apiKey, baseURL, headers: mastraHeaders }).responses(modelId);
135
135
  case "gemini":
136
- return chunk3LH5QX5F_cjs.createGoogleGenerativeAI({
136
+ return chunkG62XEVSI_cjs.createGoogleGenerativeAI({
137
137
  baseURL: `${baseURL}/v1beta/`,
138
138
  apiKey,
139
139
  headers: {
@@ -142,7 +142,7 @@ var NetlifyGateway = class extends chunk3LH5QX5F_cjs.MastraModelGateway {
142
142
  }
143
143
  }).chat(modelId);
144
144
  case "anthropic":
145
- return chunk3LH5QX5F_cjs.createAnthropic({
145
+ return chunkG62XEVSI_cjs.createAnthropic({
146
146
  apiKey,
147
147
  baseURL: `${baseURL}/v1/`,
148
148
  headers: {
@@ -151,7 +151,7 @@ var NetlifyGateway = class extends chunk3LH5QX5F_cjs.MastraModelGateway {
151
151
  }
152
152
  })(modelId);
153
153
  default:
154
- return chunk3LH5QX5F_cjs.createOpenAICompatible({
154
+ return chunkG62XEVSI_cjs.createOpenAICompatible({
155
155
  name: providerId,
156
156
  apiKey,
157
157
  baseURL,
@@ -163,5 +163,5 @@ var NetlifyGateway = class extends chunk3LH5QX5F_cjs.MastraModelGateway {
163
163
  };
164
164
 
165
165
  exports.NetlifyGateway = NetlifyGateway;
166
- //# sourceMappingURL=chunk-DV7FIKOO.cjs.map
167
- //# sourceMappingURL=chunk-DV7FIKOO.cjs.map
166
+ //# sourceMappingURL=chunk-MSDZQ4DW.cjs.map
167
+ //# sourceMappingURL=chunk-MSDZQ4DW.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-DV7FIKOO.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-MSDZQ4DW.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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkANLO4VM2_cjs = require('./chunk-ANLO4VM2.cjs');
4
- var chunkQVQ3PGG2_cjs = require('./chunk-QVQ3PGG2.cjs');
4
+ var chunk7IDACSBM_cjs = require('./chunk-7IDACSBM.cjs');
5
5
  var chunkR2V6BCYX_cjs = require('./chunk-R2V6BCYX.cjs');
6
6
  var chunkG5HKDGNT_cjs = require('./chunk-G5HKDGNT.cjs');
7
7
  var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
@@ -547,7 +547,7 @@ function safelyParseJSON(input) {
547
547
  }
548
548
  function transformRow(row, tableName, options = {}) {
549
549
  const { preferredTimestampFields = {}, convertTimestamps = false, nullValuePattern, fieldMappings = {} } = options;
550
- const tableSchema = chunkQVQ3PGG2_cjs.TABLE_SCHEMAS[tableName];
550
+ const tableSchema = chunk7IDACSBM_cjs.TABLE_SCHEMAS[tableName];
551
551
  const result = {};
552
552
  for (const [key, columnSchema] of Object.entries(tableSchema)) {
553
553
  const sourceKey = fieldMappings[key] ?? key;
@@ -578,7 +578,7 @@ function transformRow(row, tableName, options = {}) {
578
578
  return result;
579
579
  }
580
580
  function transformScoreRow(row, options = {}) {
581
- return transformRow(row, chunkQVQ3PGG2_cjs.TABLE_SCORERS, options);
581
+ return transformRow(row, chunk7IDACSBM_cjs.TABLE_SCORERS, options);
582
582
  }
583
583
  function toUpperSnakeCase(str) {
584
584
  return str.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/([A-Z])([A-Z][a-z])/g, "$1_$2").toUpperCase().replace(/[^A-Z0-9]+/g, "_").replace(/^_+|_+$/g, "");
@@ -830,7 +830,7 @@ var ObservabilityInMemory = class extends ObservabilityStorage {
830
830
  };
831
831
  }
832
832
  async listTraces(args) {
833
- const { filters, pagination, orderBy } = chunkQVQ3PGG2_cjs.listTracesArgsSchema.parse(args);
833
+ const { filters, pagination, orderBy } = chunk7IDACSBM_cjs.listTracesArgsSchema.parse(args);
834
834
  const matchingRootSpans = [];
835
835
  for (const [, traceEntry] of this.db.traces) {
836
836
  if (!traceEntry.rootSpan) continue;
@@ -859,7 +859,7 @@ var ObservabilityInMemory = class extends ObservabilityStorage {
859
859
  const end = start + perPage;
860
860
  const paged = matchingRootSpans.slice(start, end);
861
861
  return {
862
- spans: chunkQVQ3PGG2_cjs.toTraceSpans(paged),
862
+ spans: chunk7IDACSBM_cjs.toTraceSpans(paged),
863
863
  pagination: { total, page, perPage, hasMore: end < total }
864
864
  };
865
865
  }
@@ -2976,6 +2976,21 @@ var ExperimentsInMemory = class extends ExperimentsStorage {
2976
2976
  }
2977
2977
  }
2978
2978
  }
2979
+ async getReviewSummary() {
2980
+ const counts = /* @__PURE__ */ new Map();
2981
+ for (const result of this.db.experimentResults.values()) {
2982
+ let entry = counts.get(result.experimentId);
2983
+ if (!entry) {
2984
+ entry = { experimentId: result.experimentId, total: 0, needsReview: 0, reviewed: 0, complete: 0 };
2985
+ counts.set(result.experimentId, entry);
2986
+ }
2987
+ entry.total++;
2988
+ if (result.status === "needs-review") entry.needsReview++;
2989
+ else if (result.status === "reviewed") entry.reviewed++;
2990
+ else if (result.status === "complete") entry.complete++;
2991
+ }
2992
+ return Array.from(counts.values());
2993
+ }
2979
2994
  };
2980
2995
 
2981
2996
  // src/storage/domains/inmemory-db.ts
@@ -8053,7 +8068,7 @@ var StoreOperationsInMemory = class extends StoreOperations {
8053
8068
  async insert({ tableName, record }) {
8054
8069
  const table = this.data[tableName];
8055
8070
  let key = record.id;
8056
- if ([chunkQVQ3PGG2_cjs.TABLE_WORKFLOW_SNAPSHOT].includes(tableName) && !record.id && record.run_id) {
8071
+ if ([chunk7IDACSBM_cjs.TABLE_WORKFLOW_SNAPSHOT].includes(tableName) && !record.id && record.run_id) {
8057
8072
  key = record.workflow_name ? `${record.workflow_name}-${record.run_id}` : record.run_id;
8058
8073
  record.id = key;
8059
8074
  } else if (!record.id) {
@@ -8066,7 +8081,7 @@ var StoreOperationsInMemory = class extends StoreOperations {
8066
8081
  const table = this.data[tableName];
8067
8082
  for (const record of records) {
8068
8083
  let key = record.id;
8069
- if ([chunkQVQ3PGG2_cjs.TABLE_WORKFLOW_SNAPSHOT].includes(tableName) && !record.id && record.run_id) {
8084
+ if ([chunk7IDACSBM_cjs.TABLE_WORKFLOW_SNAPSHOT].includes(tableName) && !record.id && record.run_id) {
8070
8085
  key = record.run_id;
8071
8086
  record.id = key;
8072
8087
  } else if (!record.id) {
@@ -8188,5 +8203,5 @@ exports.serializeSpanAttributes = serializeSpanAttributes;
8188
8203
  exports.toEntityType = toEntityType;
8189
8204
  exports.transformRow = transformRow;
8190
8205
  exports.transformScoreRow = transformScoreRow;
8191
- //# sourceMappingURL=chunk-3H34KWBU.cjs.map
8192
- //# sourceMappingURL=chunk-3H34KWBU.cjs.map
8206
+ //# sourceMappingURL=chunk-PK3X5KIF.cjs.map
8207
+ //# sourceMappingURL=chunk-PK3X5KIF.cjs.map