@mastra/core 1.18.0-alpha.0 → 1.18.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/agent/index.cjs +8 -8
- package/dist/agent/index.js +1 -1
- package/dist/{chunk-YXNO6AHV.js → chunk-45M6KUQZ.js} +7 -7
- package/dist/{chunk-YXNO6AHV.js.map → chunk-45M6KUQZ.js.map} +1 -1
- package/dist/{chunk-AEIPJW4F.cjs → chunk-4KGTZPYF.cjs} +185 -185
- package/dist/{chunk-AEIPJW4F.cjs.map → chunk-4KGTZPYF.cjs.map} +1 -1
- package/dist/{chunk-DL4A7URO.cjs → chunk-5AVTFQEP.cjs} +236 -20
- package/dist/chunk-5AVTFQEP.cjs.map +1 -0
- package/dist/{chunk-DV7FIKOO.cjs → chunk-6WVZQBYQ.cjs} +10 -10
- package/dist/{chunk-DV7FIKOO.cjs.map → chunk-6WVZQBYQ.cjs.map} +1 -1
- package/dist/{chunk-QVQ3PGG2.cjs → chunk-7IDACSBM.cjs} +206 -2
- package/dist/chunk-7IDACSBM.cjs.map +1 -0
- package/dist/{chunk-V54LY5HR.cjs → chunk-DQYOFNZ7.cjs} +6107 -5697
- package/dist/chunk-DQYOFNZ7.cjs.map +1 -0
- package/dist/{chunk-F7YLMJSQ.js → chunk-E6XNM5ES.js} +4 -4
- package/dist/{chunk-F7YLMJSQ.js.map → chunk-E6XNM5ES.js.map} +1 -1
- package/dist/{chunk-CYQ2TNSK.js → chunk-EYM6DWKD.js} +18 -3
- package/dist/{chunk-CYQ2TNSK.js.map → chunk-EYM6DWKD.js.map} +1 -1
- package/dist/{chunk-3ECYXW43.cjs → chunk-H5O522FY.cjs} +16 -16
- package/dist/{chunk-3ECYXW43.cjs.map → chunk-H5O522FY.cjs.map} +1 -1
- package/dist/{chunk-BIB2LCIR.js → chunk-IOCCTQYZ.js} +6106 -5696
- package/dist/chunk-IOCCTQYZ.js.map +1 -0
- package/dist/{chunk-KMVGT2JI.js → chunk-JEWTRDRI.js} +233 -17
- package/dist/chunk-JEWTRDRI.js.map +1 -0
- package/dist/{chunk-AIYWGXK7.js → chunk-L53NRDFU.js} +3 -3
- package/dist/{chunk-AIYWGXK7.js.map → chunk-L53NRDFU.js.map} +1 -1
- package/dist/{chunk-SLG7AUBK.cjs → chunk-LUONHWL6.cjs} +6 -6
- package/dist/{chunk-SLG7AUBK.cjs.map → chunk-LUONHWL6.cjs.map} +1 -1
- package/dist/{chunk-3DDJ33AU.js → chunk-M5CZCWWW.js} +4 -4
- package/dist/{chunk-3DDJ33AU.js.map → chunk-M5CZCWWW.js.map} +1 -1
- package/dist/{chunk-3H34KWBU.cjs → chunk-PK3X5KIF.cjs} +24 -9
- package/dist/{chunk-3H34KWBU.cjs.map → chunk-PK3X5KIF.cjs.map} +1 -1
- package/dist/{chunk-AIEKKCJ7.js → chunk-QR2Z4WQ7.js} +3 -3
- package/dist/{chunk-AIEKKCJ7.js.map → chunk-QR2Z4WQ7.js.map} +1 -1
- package/dist/{chunk-TG4U3K3I.cjs → chunk-T2CILERS.cjs} +50 -50
- package/dist/{chunk-TG4U3K3I.cjs.map → chunk-T2CILERS.cjs.map} +1 -1
- package/dist/{chunk-P2C4NFMY.js → chunk-URN2SKVG.js} +4 -4
- package/dist/{chunk-P2C4NFMY.js.map → chunk-URN2SKVG.js.map} +1 -1
- package/dist/{chunk-BHVF4Z5D.cjs → chunk-VAVK4KJI.cjs} +28 -28
- package/dist/chunk-VAVK4KJI.cjs.map +1 -0
- package/dist/{chunk-ZOPIN73X.js → chunk-VF3CL3JV.js} +19 -19
- package/dist/chunk-VF3CL3JV.js.map +1 -0
- package/dist/{chunk-AGEYVARR.js → chunk-VMKNS3YO.js} +204 -3
- package/dist/chunk-VMKNS3YO.js.map +1 -0
- package/dist/{chunk-A5JHKGFY.cjs → chunk-WPDB2VAM.cjs} +7 -7
- package/dist/{chunk-A5JHKGFY.cjs.map → chunk-WPDB2VAM.cjs.map} +1 -1
- package/dist/{chunk-YFYB3Q5L.js → chunk-WVTVBWOQ.js} +9 -9
- package/dist/{chunk-YFYB3Q5L.js.map → chunk-WVTVBWOQ.js.map} +1 -1
- package/dist/{chunk-3LH5QX5F.cjs → chunk-XRZNAZRP.cjs} +3 -3
- package/dist/{chunk-3LH5QX5F.cjs.map → chunk-XRZNAZRP.cjs.map} +1 -1
- package/dist/{chunk-7CDFI4GW.cjs → chunk-YEKQKMCU.cjs} +76 -76
- package/dist/{chunk-7CDFI4GW.cjs.map → chunk-YEKQKMCU.cjs.map} +1 -1
- package/dist/{chunk-JEEYINIB.js → chunk-YN3FI4AD.js} +4 -4
- package/dist/{chunk-JEEYINIB.js.map → chunk-YN3FI4AD.js.map} +1 -1
- package/dist/datasets/index.cjs +17 -17
- package/dist/datasets/index.js +2 -2
- package/dist/docs/SKILL.md +2 -3
- package/dist/docs/assets/SOURCE_MAP.json +349 -334
- package/dist/docs/references/reference-evals-run-evals.md +78 -3
- package/dist/docs/references/reference-evals-scorer-utils.md +184 -0
- package/dist/docs/references/reference-evals-trajectory-accuracy.md +613 -0
- package/dist/docs/references/reference-logging-pino-logger.md +58 -0
- package/dist/docs/references/reference.md +1 -2
- package/dist/evals/base.d.ts +8 -2
- package/dist/evals/base.d.ts.map +1 -1
- package/dist/evals/index.cjs +32 -20
- package/dist/evals/index.js +3 -3
- package/dist/evals/run/index.d.ts +28 -1
- package/dist/evals/run/index.d.ts.map +1 -1
- package/dist/evals/run/scorerAccumulator.d.ts +4 -1
- package/dist/evals/run/scorerAccumulator.d.ts.map +1 -1
- package/dist/evals/scoreTraces/index.cjs +5 -5
- package/dist/evals/scoreTraces/index.js +2 -2
- package/dist/evals/types.d.ts +305 -10
- package/dist/evals/types.d.ts.map +1 -1
- package/dist/harness/index.cjs +7 -7
- package/dist/harness/index.js +5 -5
- package/dist/index.cjs +2 -2
- package/dist/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 +2444 -2243
- package/dist/loop/index.cjs +14 -14
- package/dist/loop/index.js +1 -1
- package/dist/loop/network/index.d.ts +3 -3
- package/dist/loop/types.d.ts +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-GLFQVCT4.cjs +12 -0
- package/dist/{models-dev-MU7QGI4O.cjs.map → models-dev-GLFQVCT4.cjs.map} +1 -1
- package/dist/models-dev-WSLKK6FO.js +3 -0
- package/dist/{models-dev-JEMMVJFN.js.map → models-dev-WSLKK6FO.js.map} +1 -1
- package/dist/netlify-SNTN56QS.js +3 -0
- package/dist/{netlify-BROEKRZF.js.map → netlify-SNTN56QS.js.map} +1 -1
- package/dist/netlify-VFRYJYBK.cjs +12 -0
- package/dist/{netlify-GOEIG6IC.cjs.map → netlify-VFRYJYBK.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 +44 -44
- package/dist/processors/index.js +1 -1
- package/dist/provider-registry-L6KDLMFM.cjs +40 -0
- package/dist/{provider-registry-CKFMYEBK.cjs.map → provider-registry-L6KDLMFM.cjs.map} +1 -1
- package/dist/provider-registry-LEXW2E53.js +3 -0
- package/dist/{provider-registry-P7EMCVJI.js.map → provider-registry-LEXW2E53.js.map} +1 -1
- package/dist/provider-registry.json +6102 -5692
- package/dist/relevance/index.cjs +3 -3
- package/dist/relevance/index.js +1 -1
- package/dist/storage/constants.cjs +56 -56
- package/dist/storage/constants.d.ts +1 -1
- package/dist/storage/constants.js +1 -1
- package/dist/storage/domains/experiments/base.d.ts +2 -1
- package/dist/storage/domains/experiments/base.d.ts.map +1 -1
- package/dist/storage/domains/experiments/inmemory.d.ts +2 -1
- package/dist/storage/domains/experiments/inmemory.d.ts.map +1 -1
- package/dist/storage/domains/observability/tracing.d.ts +45 -45
- package/dist/storage/index.cjs +160 -160
- package/dist/storage/index.js +2 -2
- package/dist/storage/types.d.ts +12 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
- package/dist/stream/MastraWorkflowStream.d.ts +1 -1
- package/dist/stream/index.cjs +8 -8
- package/dist/stream/index.js +1 -1
- package/dist/tool-loop-agent/index.cjs +4 -4
- package/dist/tool-loop-agent/index.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/package.json +5 -5
- package/src/llm/model/provider-types.generated.d.ts +2444 -2243
- package/dist/chunk-AGEYVARR.js.map +0 -1
- package/dist/chunk-BHVF4Z5D.cjs.map +0 -1
- package/dist/chunk-BIB2LCIR.js.map +0 -1
- package/dist/chunk-DL4A7URO.cjs.map +0 -1
- package/dist/chunk-KMVGT2JI.js.map +0 -1
- package/dist/chunk-QVQ3PGG2.cjs.map +0 -1
- package/dist/chunk-V54LY5HR.cjs.map +0 -1
- package/dist/chunk-ZOPIN73X.js.map +0 -1
- package/dist/docs/references/reference-core-getStoredAgentById.md +0 -87
- package/dist/docs/references/reference-core-listStoredAgents.md +0 -91
- package/dist/models-dev-JEMMVJFN.js +0 -3
- package/dist/models-dev-MU7QGI4O.cjs +0 -12
- package/dist/netlify-BROEKRZF.js +0 -3
- package/dist/netlify-GOEIG6IC.cjs +0 -12
- package/dist/provider-registry-CKFMYEBK.cjs +0 -40
- package/dist/provider-registry-P7EMCVJI.js +0 -3
|
@@ -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-6WVZQBYQ.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"]}
|
|
@@ -106,6 +106,207 @@ var listScoresResponseSchema = v4.z.object({
|
|
|
106
106
|
pagination: chunkG5HKDGNT_cjs.paginationInfoSchema,
|
|
107
107
|
scores: v4.z.array(scoreRowDataSchema)
|
|
108
108
|
});
|
|
109
|
+
function extractTrajectory(output) {
|
|
110
|
+
const steps = [];
|
|
111
|
+
for (const message of output) {
|
|
112
|
+
const toolInvocations = message?.content?.toolInvocations;
|
|
113
|
+
if (!toolInvocations) continue;
|
|
114
|
+
for (const invocation of toolInvocations) {
|
|
115
|
+
if (invocation && invocation.toolName && (invocation.state === "result" || invocation.state === "call")) {
|
|
116
|
+
const toolArgs = invocation.args != null && typeof invocation.args === "object" && !Array.isArray(invocation.args) ? invocation.args : invocation.args != null ? { value: invocation.args } : void 0;
|
|
117
|
+
const rawResult = invocation.state === "result" ? invocation.result : void 0;
|
|
118
|
+
const toolResult = rawResult != null && typeof rawResult === "object" && !Array.isArray(rawResult) ? rawResult : rawResult != null ? { value: rawResult } : void 0;
|
|
119
|
+
steps.push({
|
|
120
|
+
stepType: "tool_call",
|
|
121
|
+
name: invocation.toolName,
|
|
122
|
+
toolArgs,
|
|
123
|
+
toolResult,
|
|
124
|
+
success: invocation.state === "result"
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return { steps, rawOutput: output };
|
|
130
|
+
}
|
|
131
|
+
function extractWorkflowTrajectory(stepResults, stepExecutionPath) {
|
|
132
|
+
const steps = [];
|
|
133
|
+
const stepIds = stepExecutionPath ?? Object.keys(stepResults);
|
|
134
|
+
let totalStartedAt;
|
|
135
|
+
let totalEndedAt;
|
|
136
|
+
for (const stepId of stepIds) {
|
|
137
|
+
const result = stepResults[stepId];
|
|
138
|
+
if (!result) continue;
|
|
139
|
+
if (result.startedAt != null) {
|
|
140
|
+
if (totalStartedAt == null || result.startedAt < totalStartedAt) {
|
|
141
|
+
totalStartedAt = result.startedAt;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const endedAt = "endedAt" in result ? result.endedAt : void 0;
|
|
145
|
+
if (endedAt != null) {
|
|
146
|
+
if (totalEndedAt == null || endedAt > totalEndedAt) {
|
|
147
|
+
totalEndedAt = endedAt;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const durationMs = result.startedAt != null && endedAt != null ? endedAt - result.startedAt : void 0;
|
|
151
|
+
const output = "output" in result && result.output != null && typeof result.output === "object" && !Array.isArray(result.output) ? result.output : "output" in result && result.output != null ? { value: result.output } : void 0;
|
|
152
|
+
steps.push({
|
|
153
|
+
stepType: "workflow_step",
|
|
154
|
+
name: stepId,
|
|
155
|
+
stepId,
|
|
156
|
+
status: result.status,
|
|
157
|
+
output,
|
|
158
|
+
durationMs,
|
|
159
|
+
metadata: result.metadata
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
const totalDurationMs = totalStartedAt != null && totalEndedAt != null ? totalEndedAt - totalStartedAt : void 0;
|
|
163
|
+
return {
|
|
164
|
+
steps,
|
|
165
|
+
totalDurationMs,
|
|
166
|
+
rawWorkflowResult: { stepResults, stepExecutionPath }
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
var SKIPPED_SPAN_TYPES = /* @__PURE__ */ new Set([
|
|
170
|
+
"generic" /* GENERIC */,
|
|
171
|
+
"model_step" /* MODEL_STEP */,
|
|
172
|
+
"model_chunk" /* MODEL_CHUNK */,
|
|
173
|
+
"workflow_conditional_eval" /* WORKFLOW_CONDITIONAL_EVAL */
|
|
174
|
+
]);
|
|
175
|
+
function spanToTrajectorySteps(node) {
|
|
176
|
+
const { span, children: childNodes } = node;
|
|
177
|
+
if (SKIPPED_SPAN_TYPES.has(span.spanType)) {
|
|
178
|
+
return childNodes.flatMap(spanToTrajectorySteps);
|
|
179
|
+
}
|
|
180
|
+
const durationMs = span.endedAt != null && span.startedAt != null ? span.endedAt.getTime() - span.startedAt.getTime() : void 0;
|
|
181
|
+
const childSteps = childNodes.flatMap(spanToTrajectorySteps);
|
|
182
|
+
const base = {
|
|
183
|
+
name: span.name,
|
|
184
|
+
durationMs,
|
|
185
|
+
metadata: span.metadata,
|
|
186
|
+
...childSteps.length > 0 ? { children: childSteps } : {}
|
|
187
|
+
};
|
|
188
|
+
const attrs = span.attributes ?? {};
|
|
189
|
+
switch (span.spanType) {
|
|
190
|
+
case "tool_call" /* TOOL_CALL */: {
|
|
191
|
+
const toolArgs = toRecordOrUndefined(span.input);
|
|
192
|
+
const toolResult = toRecordOrUndefined(span.output);
|
|
193
|
+
return [
|
|
194
|
+
{
|
|
195
|
+
...base,
|
|
196
|
+
stepType: "tool_call",
|
|
197
|
+
toolArgs,
|
|
198
|
+
toolResult,
|
|
199
|
+
success: typeof attrs.success === "boolean" ? attrs.success : void 0
|
|
200
|
+
}
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
case "mcp_tool_call" /* MCP_TOOL_CALL */: {
|
|
204
|
+
const toolArgs = toRecordOrUndefined(span.input);
|
|
205
|
+
const toolResult = toRecordOrUndefined(span.output);
|
|
206
|
+
return [
|
|
207
|
+
{
|
|
208
|
+
...base,
|
|
209
|
+
stepType: "mcp_tool_call",
|
|
210
|
+
toolArgs,
|
|
211
|
+
toolResult,
|
|
212
|
+
mcpServer: typeof attrs.mcpServer === "string" ? attrs.mcpServer : void 0,
|
|
213
|
+
success: typeof attrs.success === "boolean" ? attrs.success : void 0
|
|
214
|
+
}
|
|
215
|
+
];
|
|
216
|
+
}
|
|
217
|
+
case "model_generation" /* MODEL_GENERATION */: {
|
|
218
|
+
const usage = attrs.usage;
|
|
219
|
+
return [
|
|
220
|
+
{
|
|
221
|
+
...base,
|
|
222
|
+
stepType: "model_generation",
|
|
223
|
+
modelId: typeof attrs.model === "string" ? attrs.model : void 0,
|
|
224
|
+
promptTokens: usage?.inputTokens,
|
|
225
|
+
completionTokens: usage?.outputTokens,
|
|
226
|
+
finishReason: typeof attrs.finishReason === "string" ? attrs.finishReason : void 0
|
|
227
|
+
}
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
case "agent_run" /* AGENT_RUN */:
|
|
231
|
+
return [{ ...base, stepType: "agent_run", agentId: span.entityId ?? void 0 }];
|
|
232
|
+
case "workflow_run" /* WORKFLOW_RUN */:
|
|
233
|
+
return [{ ...base, stepType: "workflow_run", workflowId: span.entityId ?? void 0 }];
|
|
234
|
+
case "workflow_step" /* WORKFLOW_STEP */: {
|
|
235
|
+
const output = toRecordOrUndefined(span.output);
|
|
236
|
+
return [{ ...base, stepType: "workflow_step", stepId: span.name, output }];
|
|
237
|
+
}
|
|
238
|
+
case "workflow_conditional" /* WORKFLOW_CONDITIONAL */:
|
|
239
|
+
return [{ ...base, stepType: "workflow_conditional" }];
|
|
240
|
+
case "workflow_parallel" /* WORKFLOW_PARALLEL */:
|
|
241
|
+
return [{ ...base, stepType: "workflow_parallel" }];
|
|
242
|
+
case "workflow_loop" /* WORKFLOW_LOOP */:
|
|
243
|
+
return [{ ...base, stepType: "workflow_loop" }];
|
|
244
|
+
case "workflow_sleep" /* WORKFLOW_SLEEP */:
|
|
245
|
+
return [{ ...base, stepType: "workflow_sleep" }];
|
|
246
|
+
case "workflow_wait_event" /* WORKFLOW_WAIT_EVENT */:
|
|
247
|
+
return [{ ...base, stepType: "workflow_wait_event" }];
|
|
248
|
+
case "processor_run" /* PROCESSOR_RUN */:
|
|
249
|
+
return [{ ...base, stepType: "processor_run" }];
|
|
250
|
+
default:
|
|
251
|
+
return childSteps;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function toRecordOrUndefined(value) {
|
|
255
|
+
if (value == null) return void 0;
|
|
256
|
+
if (typeof value === "object" && !Array.isArray(value)) {
|
|
257
|
+
return value;
|
|
258
|
+
}
|
|
259
|
+
return { value };
|
|
260
|
+
}
|
|
261
|
+
function extractTrajectoryFromTrace(spans, rootSpanId) {
|
|
262
|
+
if (spans.length === 0) {
|
|
263
|
+
return { steps: [] };
|
|
264
|
+
}
|
|
265
|
+
const nodeMap = /* @__PURE__ */ new Map();
|
|
266
|
+
for (const span of spans) {
|
|
267
|
+
nodeMap.set(span.spanId, { span, children: [] });
|
|
268
|
+
}
|
|
269
|
+
const roots = [];
|
|
270
|
+
for (const span of spans) {
|
|
271
|
+
const node = nodeMap.get(span.spanId);
|
|
272
|
+
if (span.parentSpanId && nodeMap.has(span.parentSpanId)) {
|
|
273
|
+
nodeMap.get(span.parentSpanId).children.push(node);
|
|
274
|
+
} else {
|
|
275
|
+
roots.push(node);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
for (const node of nodeMap.values()) {
|
|
279
|
+
node.children.sort((a, b) => a.span.startedAt.getTime() - b.span.startedAt.getTime());
|
|
280
|
+
}
|
|
281
|
+
let targetRoots;
|
|
282
|
+
if (rootSpanId) {
|
|
283
|
+
const rootNode = nodeMap.get(rootSpanId);
|
|
284
|
+
targetRoots = rootNode ? [rootNode] : roots;
|
|
285
|
+
} else {
|
|
286
|
+
targetRoots = roots;
|
|
287
|
+
}
|
|
288
|
+
let stepsToConvert;
|
|
289
|
+
if (targetRoots.length === 1) {
|
|
290
|
+
const root = targetRoots[0];
|
|
291
|
+
const containerTypes = /* @__PURE__ */ new Set(["workflow_run" /* WORKFLOW_RUN */, "agent_run" /* AGENT_RUN */]);
|
|
292
|
+
if (containerTypes.has(root.span.spanType)) {
|
|
293
|
+
stepsToConvert = root.children;
|
|
294
|
+
} else {
|
|
295
|
+
stepsToConvert = targetRoots;
|
|
296
|
+
}
|
|
297
|
+
} else {
|
|
298
|
+
stepsToConvert = targetRoots;
|
|
299
|
+
}
|
|
300
|
+
const steps = stepsToConvert.flatMap(spanToTrajectorySteps);
|
|
301
|
+
let totalDurationMs;
|
|
302
|
+
if (targetRoots.length === 1) {
|
|
303
|
+
const root = targetRoots[0].span;
|
|
304
|
+
if (root.endedAt && root.startedAt) {
|
|
305
|
+
totalDurationMs = root.endedAt.getTime() - root.startedAt.getTime();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return { steps, totalDurationMs };
|
|
309
|
+
}
|
|
109
310
|
|
|
110
311
|
// src/storage/domains/observability/tracing.ts
|
|
111
312
|
var createOmitKeys = (shape) => Object.fromEntries(Object.keys(shape).map((k) => [k, true]));
|
|
@@ -951,6 +1152,9 @@ exports.buildStorageSchema = buildStorageSchema;
|
|
|
951
1152
|
exports.computeTraceStatus = computeTraceStatus;
|
|
952
1153
|
exports.createSpanArgsSchema = createSpanArgsSchema;
|
|
953
1154
|
exports.createSpanRecordSchema = createSpanRecordSchema;
|
|
1155
|
+
exports.extractTrajectory = extractTrajectory;
|
|
1156
|
+
exports.extractTrajectoryFromTrace = extractTrajectoryFromTrace;
|
|
1157
|
+
exports.extractWorkflowTrajectory = extractWorkflowTrajectory;
|
|
954
1158
|
exports.getRootSpanArgsSchema = getRootSpanArgsSchema;
|
|
955
1159
|
exports.getRootSpanResponseSchema = getRootSpanResponseSchema;
|
|
956
1160
|
exports.getSpanArgsSchema = getSpanArgsSchema;
|
|
@@ -987,5 +1191,5 @@ exports.tracesOrderByFieldSchema = tracesOrderByFieldSchema;
|
|
|
987
1191
|
exports.tracesOrderBySchema = tracesOrderBySchema;
|
|
988
1192
|
exports.updateSpanArgsSchema = updateSpanArgsSchema;
|
|
989
1193
|
exports.updateSpanRecordSchema = updateSpanRecordSchema;
|
|
990
|
-
//# sourceMappingURL=chunk-
|
|
991
|
-
//# sourceMappingURL=chunk-
|
|
1194
|
+
//# sourceMappingURL=chunk-7IDACSBM.cjs.map
|
|
1195
|
+
//# sourceMappingURL=chunk-7IDACSBM.cjs.map
|