@ai-sdk/gateway 4.0.64 → 4.0.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/dist/index.d.ts +22 -10
- package/dist/index.js +48 -100
- package/dist/index.js.map +1 -1
- package/docs/00-ai-gateway.mdx +8 -2
- package/package.json +2 -2
- package/src/errors/as-gateway-error.ts +5 -0
- package/src/errors/create-gateway-error.ts +3 -0
- package/src/errors/gateway-response-error.ts +3 -1
- package/src/gateway-image-model-settings.ts +1 -0
- package/src/gateway-language-model-batch.ts +27 -126
- package/src/gateway-language-model-settings.ts +7 -6
- package/src/gateway-transcription-model-settings.ts +2 -0
- package/src/gateway-video-model-settings.ts +1 -0
- package/src/tool/tako-search.ts +25 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @ai-sdk/gateway
|
|
2
2
|
|
|
3
|
+
## 4.0.68
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 805bbfc: chore(provider/gateway): update gateway model settings files
|
|
8
|
+
- 90192f1: Mark transient network errors that occur while reading successful response bodies as retryable.
|
|
9
|
+
- Updated dependencies [90192f1]
|
|
10
|
+
- @ai-sdk/provider-utils@5.0.33
|
|
11
|
+
|
|
12
|
+
## 4.0.67
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 0e7994c: chore(provider/gateway): update gateway model settings files
|
|
17
|
+
- Updated dependencies [3e125ba]
|
|
18
|
+
- @ai-sdk/provider-utils@5.0.32
|
|
19
|
+
|
|
20
|
+
## 4.0.66
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- 81bebaf: Add GLM-5.3-Flash model support to the Z.AI provider and AI Gateway.
|
|
25
|
+
|
|
26
|
+
## 4.0.65
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- 80227cf: chore(provider/gateway): update gateway model settings files
|
|
31
|
+
- a9782e1: fix: align batch result parsing, request counts, and lifecycle behavior across providers
|
|
32
|
+
- 5533946: Remove the internal-only `relevance_score` and `citation_number` fields from
|
|
33
|
+
published Tako Search response types and schemas. Code that reads either field
|
|
34
|
+
must be updated; Gateway responses still pass the values through at runtime,
|
|
35
|
+
but they are no longer typed. Also document data surcharge controls.
|
|
36
|
+
- Updated dependencies [a9782e1]
|
|
37
|
+
- Updated dependencies [35841f5]
|
|
38
|
+
- Updated dependencies [d2f3353]
|
|
39
|
+
- @ai-sdk/provider-utils@5.0.31
|
|
40
|
+
|
|
3
41
|
## 4.0.64
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,9 @@ import { FetchFunction, WebSocketConstructor, InferSchema } from '@ai-sdk/provid
|
|
|
4
4
|
|
|
5
5
|
type GatewayEmbeddingModelId = 'alibaba/qwen3-embedding-0.6b' | 'alibaba/qwen3-embedding-4b' | 'alibaba/qwen3-embedding-8b' | 'amazon/titan-embed-text-v2' | 'cohere/embed-v4.0' | 'google/gemini-embedding-001' | 'google/gemini-embedding-2' | 'google/text-embedding-005' | 'google/text-multilingual-embedding-002' | 'mistral/codestral-embed' | 'mistral/mistral-embed' | 'openai/text-embedding-3-large' | 'openai/text-embedding-3-small' | 'openai/text-embedding-ada-002' | 'perplexity/pplx-embed-v1-0.6b' | 'perplexity/pplx-embed-v1-4b' | 'voyage/voyage-3-large' | 'voyage/voyage-3.5' | 'voyage/voyage-3.5-lite' | 'voyage/voyage-4' | 'voyage/voyage-4-large' | 'voyage/voyage-4-lite' | 'voyage/voyage-code-2' | 'voyage/voyage-code-3' | 'voyage/voyage-finance-2' | 'voyage/voyage-law-2' | (string & {});
|
|
6
6
|
|
|
7
|
-
type GatewayImageModelId = 'bfl/flux-2-flex' | 'bfl/flux-2-klein-4b' | 'bfl/flux-2-klein-9b' | 'bfl/flux-2-max' | 'bfl/flux-2-pro' | 'bfl/flux-kontext-max' | 'bfl/flux-kontext-pro' | 'bfl/flux-pro-1.0-fill' | 'bfl/flux-pro-1.1' | 'bfl/flux-pro-1.1-ultra' | 'bytedance/seedream-4.0' | 'bytedance/seedream-4.5' | 'bytedance/seedream-5.0-lite' | 'bytedance/seedream-5.0-pro' | 'openai/gpt-image-1' | 'openai/gpt-image-1-mini' | 'openai/gpt-image-1.5' | 'openai/gpt-image-2' | 'prodia/flux-fast-schnell' | 'quiverai/arrow-1.1' | 'recraft/recraft-v2' | 'recraft/recraft-v3' | 'recraft/recraft-v4' | 'recraft/recraft-v4-pro' | 'recraft/recraft-v4.1' | 'recraft/recraft-v4.1-pro' | 'recraft/recraft-v4.1-utility' | 'recraft/recraft-v4.1-utility-pro' | 'spacexai/grok-imagine-image' | 'spacexai/grok-imagine-image-2.0' | (string & {});
|
|
7
|
+
type GatewayImageModelId = 'bfl/flux-2-flex' | 'bfl/flux-2-klein-4b' | 'bfl/flux-2-klein-9b' | 'bfl/flux-2-max' | 'bfl/flux-2-pro' | 'bfl/flux-kontext-max' | 'bfl/flux-kontext-pro' | 'bfl/flux-pro-1.0-fill' | 'bfl/flux-pro-1.1' | 'bfl/flux-pro-1.1-ultra' | 'bytedance/seedream-4.0' | 'bytedance/seedream-4.5' | 'bytedance/seedream-5.0-lite' | 'bytedance/seedream-5.0-pro' | 'meta/muse-image-1.0' | 'openai/gpt-image-1' | 'openai/gpt-image-1-mini' | 'openai/gpt-image-1.5' | 'openai/gpt-image-2' | 'prodia/flux-fast-schnell' | 'quiverai/arrow-1.1' | 'recraft/recraft-v2' | 'recraft/recraft-v3' | 'recraft/recraft-v4' | 'recraft/recraft-v4-pro' | 'recraft/recraft-v4.1' | 'recraft/recraft-v4.1-pro' | 'recraft/recraft-v4.1-utility' | 'recraft/recraft-v4.1-utility-pro' | 'spacexai/grok-imagine-image' | 'spacexai/grok-imagine-image-2.0' | (string & {});
|
|
8
8
|
|
|
9
|
-
type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen-3.6-max-preview' | 'alibaba/qwen3-235b-a22b-thinking' | 'alibaba/qwen3-coder' | 'alibaba/qwen3-coder-30b-a3b' | 'alibaba/qwen3-coder-next' | 'alibaba/qwen3-coder-plus' | 'alibaba/qwen3-max' | 'alibaba/qwen3-max-preview' | 'alibaba/qwen3-max-thinking' | 'alibaba/qwen3-next-80b-a3b-instruct' | 'alibaba/qwen3-next-80b-a3b-thinking' | 'alibaba/qwen3-vl-235b-a22b-instruct' | 'alibaba/qwen3-vl-instruct' | 'alibaba/qwen3-vl-thinking' | 'alibaba/qwen3.5-flash' | 'alibaba/qwen3.5-plus' | 'alibaba/qwen3.6-27b' | 'alibaba/qwen3.6-plus' | 'alibaba/qwen3.7-flash' | 'alibaba/qwen3.7-max' | 'alibaba/qwen3.7-plus' | 'alibaba/qwen3.8-2.4t-a95b' | 'alibaba/qwen3.8-27b' | 'alibaba/qwen3.8-max' | 'amazon/nova-2-lite' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-fable-5' | 'anthropic/claude-haiku-4.5' | 'anthropic/claude-opus-4' | 'anthropic/claude-opus-4.5' | 'anthropic/claude-opus-4.6' | 'anthropic/claude-opus-4.7' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-opus-4.8-fast' | 'anthropic/claude-opus-5' | 'anthropic/claude-opus-5-fast' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-sonnet-5' | 'arcee-ai/trinity-large-thinking' | '
|
|
9
|
+
type GatewayModelId = 'alibaba/qwen-3-14b' | 'alibaba/qwen-3-235b' | 'alibaba/qwen-3-30b' | 'alibaba/qwen-3-32b' | 'alibaba/qwen-3.6-max-preview' | 'alibaba/qwen3-235b-a22b-thinking' | 'alibaba/qwen3-coder' | 'alibaba/qwen3-coder-30b-a3b' | 'alibaba/qwen3-coder-next' | 'alibaba/qwen3-coder-plus' | 'alibaba/qwen3-max' | 'alibaba/qwen3-max-preview' | 'alibaba/qwen3-max-thinking' | 'alibaba/qwen3-next-80b-a3b-instruct' | 'alibaba/qwen3-next-80b-a3b-thinking' | 'alibaba/qwen3-vl-235b-a22b-instruct' | 'alibaba/qwen3-vl-instruct' | 'alibaba/qwen3-vl-thinking' | 'alibaba/qwen3.5-flash' | 'alibaba/qwen3.5-plus' | 'alibaba/qwen3.6-27b' | 'alibaba/qwen3.6-plus' | 'alibaba/qwen3.7-flash' | 'alibaba/qwen3.7-max' | 'alibaba/qwen3.7-plus' | 'alibaba/qwen3.8-2.4t-a95b' | 'alibaba/qwen3.8-27b' | 'alibaba/qwen3.8-flash' | 'alibaba/qwen3.8-max' | 'amazon/nova-2-lite' | 'amazon/nova-lite' | 'amazon/nova-micro' | 'amazon/nova-pro' | 'anthropic/claude-3-haiku' | 'anthropic/claude-fable-5' | 'anthropic/claude-haiku-4.5' | 'anthropic/claude-opus-4' | 'anthropic/claude-opus-4.5' | 'anthropic/claude-opus-4.6' | 'anthropic/claude-opus-4.7' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-opus-4.8-fast' | 'anthropic/claude-opus-5' | 'anthropic/claude-opus-5-fast' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-sonnet-5' | 'arcee-ai/trinity-large-thinking' | 'bytedance/seed-1.6' | 'bytedance/seed-1.8' | 'cohere/command-a' | 'deepseek/deepseek-r1' | 'deepseek/deepseek-v3' | 'deepseek/deepseek-v3.1' | 'deepseek/deepseek-v3.1-terminus' | 'deepseek/deepseek-v3.2' | 'deepseek/deepseek-v3.2-thinking' | 'deepseek/deepseek-v4-flash' | 'deepseek/deepseek-v4-flash-0731' | 'deepseek/deepseek-v4-flash-vision-exp' | 'deepseek/deepseek-v4-pro' | 'deepseek/deepseek-v4-pro-0813' | 'google/gemini-2.5-flash' | 'google/gemini-2.5-flash-image' | 'google/gemini-2.5-flash-lite' | 'google/gemini-2.5-pro' | 'google/gemini-3-flash' | 'google/gemini-3-pro-image' | 'google/gemini-3.1-flash-image' | 'google/gemini-3.1-flash-image-preview' | 'google/gemini-3.1-flash-lite' | 'google/gemini-3.1-flash-lite-image' | 'google/gemini-3.1-pro-preview' | 'google/gemini-3.5-flash' | 'google/gemini-3.5-flash-lite' | 'google/gemini-3.6-flash' | 'google/gemini-3.7-flash' | 'google/gemini-omni-flash-preview' | 'google/gemma-4-26b-a4b-it' | 'google/gemma-4-31b-it' | 'inception/mercury-2' | 'inception/mercury-coder-small' | 'inclusionai/ling-3.0-flash' | 'inclusionai/ling-3.0-flash-fin' | 'inclusionai/ling-3.0-flash-fin-free' | 'interfaze/interfaze-beta' | 'kwaipilot/kat-coder-air-v2.5' | 'kwaipilot/kat-coder-pro-v1' | 'kwaipilot/kat-coder-pro-v2' | 'kwaipilot/kat-coder-pro-v2.5' | 'meta/llama-3.1-70b' | 'meta/llama-3.1-8b' | 'meta/llama-3.3-70b' | 'meta/llama-4-maverick' | 'meta/llama-4-scout' | 'meta/muse-glimmer-30b' | 'meta/muse-spark-1.1' | 'meta/muse-spark-1.2' | 'meta/muse-spark-1.2-contributor' | 'minimax/minimax-m2' | 'minimax/minimax-m2.1' | 'minimax/minimax-m2.1-lightning' | 'minimax/minimax-m2.5' | 'minimax/minimax-m2.5-highspeed' | 'minimax/minimax-m2.7' | 'minimax/minimax-m2.7-free' | 'minimax/minimax-m2.7-highspeed' | 'minimax/minimax-m3' | 'minimax/minimax-m3-free' | 'mistral/codestral' | 'mistral/devstral-2' | 'mistral/devstral-small-2' | 'mistral/ministral-14b' | 'mistral/ministral-3b' | 'mistral/ministral-8b' | 'mistral/mistral-large-3' | 'mistral/mistral-medium' | 'mistral/mistral-medium-3.5' | 'mistral/mistral-nemo' | 'mistral/mistral-small' | 'mistral/pixtral-12b' | 'moonshotai/kimi-k2' | 'moonshotai/kimi-k2-thinking' | 'moonshotai/kimi-k2.5' | 'moonshotai/kimi-k2.6' | 'moonshotai/kimi-k2.7-code' | 'moonshotai/kimi-k2.7-code-highspeed' | 'moonshotai/kimi-k3' | 'moonshotai/kimi-k3-fast' | 'morph/morph-v3-fast' | 'morph/morph-v3-large' | 'nvidia/nemotron-3-nano-30b-a3b' | 'nvidia/nemotron-3-super-120b-a12b' | 'nvidia/nemotron-3-ultra-550b-a55b' | 'nvidia/nemotron-3.5-lightning' | 'nvidia/nemotron-nano-12b-v2-vl' | 'nvidia/nemotron-nano-9b-v2' | 'openai/gpt-3.5-turbo' | 'openai/gpt-4-turbo' | 'openai/gpt-4.1' | 'openai/gpt-4.1-fast' | 'openai/gpt-4.1-mini' | 'openai/gpt-4.1-mini-fast' | 'openai/gpt-4.1-nano' | 'openai/gpt-4.1-nano-fast' | 'openai/gpt-4o' | 'openai/gpt-4o-fast' | 'openai/gpt-4o-mini' | 'openai/gpt-4o-mini-fast' | 'openai/gpt-5' | 'openai/gpt-5-codex' | 'openai/gpt-5-fast' | 'openai/gpt-5-mini' | 'openai/gpt-5-mini-fast' | 'openai/gpt-5-nano' | 'openai/gpt-5-pro' | 'openai/gpt-5.1-codex' | 'openai/gpt-5.1-codex-max' | 'openai/gpt-5.1-codex-mini' | 'openai/gpt-5.1-thinking' | 'openai/gpt-5.1-thinking-fast' | 'openai/gpt-5.2' | 'openai/gpt-5.2-codex' | 'openai/gpt-5.2-fast' | 'openai/gpt-5.2-pro' | 'openai/gpt-5.3-codex' | 'openai/gpt-5.3-codex-fast' | 'openai/gpt-5.4' | 'openai/gpt-5.4-fast' | 'openai/gpt-5.4-mini' | 'openai/gpt-5.4-mini-fast' | 'openai/gpt-5.4-nano' | 'openai/gpt-5.4-pro' | 'openai/gpt-5.5' | 'openai/gpt-5.5-fast' | 'openai/gpt-5.5-pro' | 'openai/gpt-5.6-luna' | 'openai/gpt-5.6-luna-fast' | 'openai/gpt-5.6-sol' | 'openai/gpt-5.6-sol-fast' | 'openai/gpt-5.6-terra' | 'openai/gpt-5.6-terra-fast' | 'openai/gpt-oss-120b' | 'openai/gpt-oss-20b' | 'openai/gpt-oss-safeguard-120b' | 'openai/gpt-oss-safeguard-20b' | 'openai/o1' | 'openai/o3' | 'openai/o3-fast' | 'openai/o3-mini' | 'openai/o3-pro' | 'openai/o4-mini' | 'openai/o4-mini-fast' | 'perplexity/sonar' | 'perplexity/sonar-pro' | 'perplexity/sonar-reasoning-pro' | 'poolside/laguna-s-2.1' | 'poolside/laguna-s-2.1-free' | 'sakana/fugu-ultra' | 'sakana/namazu' | 'spacexai/grok-4.1-fast-non-reasoning' | 'spacexai/grok-4.1-fast-reasoning' | 'spacexai/grok-4.20-multi-agent' | 'spacexai/grok-4.20-multi-agent-beta' | 'spacexai/grok-4.20-non-reasoning' | 'spacexai/grok-4.20-non-reasoning-beta' | 'spacexai/grok-4.20-reasoning' | 'spacexai/grok-4.20-reasoning-beta' | 'spacexai/grok-4.3' | 'spacexai/grok-4.5' | 'spacexai/grok-4.6' | 'spacexai/grok-build-0.1' | 'stepfun/step-3.5-flash' | 'stepfun/step-3.7-flash' | 'tencent/hy-mt2-lite' | 'tencent/hy-mt2-plus' | 'tencent/hy-mt2-pro' | 'tencent/hy3' | 'thinkingmachines/inkling' | 'thinkingmachines/inkling-small' | 'xiaomi/mimo-v2.5' | 'xiaomi/mimo-v2.5-pro' | 'zai/glm-4.5' | 'zai/glm-4.5-air' | 'zai/glm-4.5v' | 'zai/glm-4.6' | 'zai/glm-4.7' | 'zai/glm-4.7-flash' | 'zai/glm-4.7-flashx' | 'zai/glm-5' | 'zai/glm-5-turbo' | 'zai/glm-5.1' | 'zai/glm-5.2' | 'zai/glm-5.2-fast' | 'zai/glm-5.3' | 'zai/glm-5.3-flash' | 'zai/glm-5v-turbo' | (string & {});
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Shared WebSocket subprotocol contract for AI Gateway realtime and streaming
|
|
@@ -81,9 +81,9 @@ type GatewayRerankingModelId = 'cohere/rerank-v3.5' | 'cohere/rerank-v4-fast' |
|
|
|
81
81
|
|
|
82
82
|
type GatewaySpeechModelId = 'fish-audio/s1' | 'fish-audio/s1-free' | 'fish-audio/s2-pro' | 'fish-audio/s2-pro-free' | 'fish-audio/s2.1-pro' | 'fish-audio/s2.1-pro-free' | 'openai/tts-1' | 'openai/tts-1-hd' | 'spacexai/grok-tts' | (string & {});
|
|
83
83
|
|
|
84
|
-
type GatewayTranscriptionModelId = 'fish-audio/transcribe-1' | 'fish-audio/transcribe-1-free' | 'openai/gpt-4o-mini-transcribe' | 'openai/gpt-4o-transcribe' | 'openai/gpt-realtime-whisper' | 'openai/whisper-1' | 'spacexai/grok-stt' | (string & {});
|
|
84
|
+
type GatewayTranscriptionModelId = 'fish-audio/transcribe-1' | 'fish-audio/transcribe-1-free' | 'google/gemini-3.5-transcribe' | 'google/gemini-3.5-transcribe-live' | 'openai/gpt-4o-mini-transcribe' | 'openai/gpt-4o-transcribe' | 'openai/gpt-realtime-whisper' | 'openai/whisper-1' | 'spacexai/grok-stt' | (string & {});
|
|
85
85
|
|
|
86
|
-
type GatewayVideoModelId = 'alibaba/wan-v2.5-t2v-preview' | 'alibaba/wan-v2.6-i2v' | 'alibaba/wan-v2.6-i2v-flash' | 'alibaba/wan-v2.6-r2v' | 'alibaba/wan-v2.6-r2v-flash' | 'alibaba/wan-v2.6-t2v' | 'alibaba/wan-v2.7-r2v' | 'alibaba/wan-v2.7-t2v' | 'bfl/flux-3-video' | 'bytedance/seedance-2.0' | 'bytedance/seedance-2.0-fast' | 'bytedance/seedance-2.0-mini' | 'bytedance/seedance-2.5' | 'bytedance/seedance-v1.0-pro' | 'bytedance/seedance-v1.0-pro-fast' | 'bytedance/seedance-v1.5-pro' | 'google/veo-3.0-fast-generate-001' | 'google/veo-3.0-generate-001' | 'google/veo-3.1-fast-generate-001' | 'google/veo-3.1-generate-001' | 'google/veo-3.1-lite-generate-001' | 'klingai/kling-v2.5-turbo-i2v' | 'klingai/kling-v2.5-turbo-t2v' | 'klingai/kling-v2.6-i2v' | 'klingai/kling-v2.6-motion-control' | 'klingai/kling-v2.6-t2v' | 'klingai/kling-v3.0-i2v' | 'klingai/kling-v3.0-motion-control' | 'klingai/kling-v3.0-t2v' | 'minimax/minimax-h3' | 'spacexai/grok-imagine-video' | 'spacexai/grok-imagine-video-1.5' | 'spacexai/grok-imagine-video-1.5-preview' | (string & {});
|
|
86
|
+
type GatewayVideoModelId = 'alibaba/wan-v2.5-t2v-preview' | 'alibaba/wan-v2.6-i2v' | 'alibaba/wan-v2.6-i2v-flash' | 'alibaba/wan-v2.6-r2v' | 'alibaba/wan-v2.6-r2v-flash' | 'alibaba/wan-v2.6-t2v' | 'alibaba/wan-v2.7-r2v' | 'alibaba/wan-v2.7-t2v' | 'alibaba/wan-v3.0-video' | 'bfl/flux-3-video' | 'bytedance/seedance-2.0' | 'bytedance/seedance-2.0-fast' | 'bytedance/seedance-2.0-mini' | 'bytedance/seedance-2.5' | 'bytedance/seedance-v1.0-pro' | 'bytedance/seedance-v1.0-pro-fast' | 'bytedance/seedance-v1.5-pro' | 'google/veo-3.0-fast-generate-001' | 'google/veo-3.0-generate-001' | 'google/veo-3.1-fast-generate-001' | 'google/veo-3.1-generate-001' | 'google/veo-3.1-lite-generate-001' | 'klingai/kling-v2.5-turbo-i2v' | 'klingai/kling-v2.5-turbo-t2v' | 'klingai/kling-v2.6-i2v' | 'klingai/kling-v2.6-motion-control' | 'klingai/kling-v2.6-t2v' | 'klingai/kling-v3.0-i2v' | 'klingai/kling-v3.0-motion-control' | 'klingai/kling-v3.0-t2v' | 'minimax/minimax-h3' | 'spacexai/grok-imagine-video' | 'spacexai/grok-imagine-video-1.5' | 'spacexai/grok-imagine-video-1.5-preview' | (string & {});
|
|
87
87
|
|
|
88
88
|
declare const KNOWN_MODEL_TYPES: readonly ["embedding", "image", "language", "realtime", "reranking", "speech", "transcription", "video"];
|
|
89
89
|
type KnownModelType = (typeof KNOWN_MODEL_TYPES)[number];
|
|
@@ -247,15 +247,28 @@ interface GatewayGenerationInfo {
|
|
|
247
247
|
type TakoSearchEffort = 'deep' | 'fast' | 'instant';
|
|
248
248
|
type TakoContentFormat = 'card_json' | 'csv' | 'json_compact' | 'json_records';
|
|
249
249
|
interface TakoDataSourceConfig {
|
|
250
|
-
/**
|
|
250
|
+
/**
|
|
251
|
+
* Maximum number of data results to return (1-20). When includeContents is
|
|
252
|
+
* true, each additional result adds its own data surcharge.
|
|
253
|
+
*/
|
|
251
254
|
count?: number;
|
|
252
|
-
/**
|
|
255
|
+
/**
|
|
256
|
+
* Inline rows for each data result. This adds a data surcharge based on row
|
|
257
|
+
* count and dataset source. To estimate cost, search with includeContents
|
|
258
|
+
* disabled and inspect cards.content.export_pricing. This applies to every
|
|
259
|
+
* returned card; limit sources.data.count and sources.data.maxRows to control
|
|
260
|
+
* cost.
|
|
261
|
+
*/
|
|
253
262
|
includeContents?: boolean;
|
|
254
263
|
/** Requested delivery mode for card data. Search cards are always inlined. */
|
|
255
264
|
mode?: 'inline' | 'url';
|
|
256
265
|
/** Serialization for inlined card data. */
|
|
257
266
|
contentFormat?: TakoContentFormat;
|
|
258
|
-
/**
|
|
267
|
+
/**
|
|
268
|
+
* Maximum rows to inline per result. Omit to use the allowance in
|
|
269
|
+
* cards.content.export_pricing. A data surcharge applies per 1,000 exported
|
|
270
|
+
* rows; lower values reduce cost.
|
|
271
|
+
*/
|
|
259
272
|
maxRows?: number;
|
|
260
273
|
/** Data Graph node IDs to prioritize. */
|
|
261
274
|
nodeIds?: string[];
|
|
@@ -417,7 +430,6 @@ interface TakoCard {
|
|
|
417
430
|
relevance?: 'High' | 'Low' | 'Medium' | null;
|
|
418
431
|
content?: TakoResultContent | null;
|
|
419
432
|
exportable?: boolean;
|
|
420
|
-
relevance_score?: number | null;
|
|
421
433
|
nodes?: Array<{
|
|
422
434
|
id: string;
|
|
423
435
|
type: 'entity' | 'metric';
|
|
@@ -441,7 +453,6 @@ interface TakoWebResult {
|
|
|
441
453
|
source_name?: string | null;
|
|
442
454
|
publish_date?: string | null;
|
|
443
455
|
content?: TakoResultContent | null;
|
|
444
|
-
citation_number?: number | null;
|
|
445
456
|
}
|
|
446
457
|
interface TakoSearchResponse {
|
|
447
458
|
request_id: string;
|
|
@@ -1330,13 +1341,14 @@ declare class GatewayResponseError extends GatewayError {
|
|
|
1330
1341
|
readonly type = "response_error";
|
|
1331
1342
|
readonly response?: unknown;
|
|
1332
1343
|
readonly validationError?: TypeValidationError;
|
|
1333
|
-
constructor({ message, statusCode, response, validationError, cause, generationId, }?: {
|
|
1344
|
+
constructor({ message, statusCode, response, validationError, cause, generationId, isRetryable, }?: {
|
|
1334
1345
|
message?: string;
|
|
1335
1346
|
statusCode?: number;
|
|
1336
1347
|
response?: unknown;
|
|
1337
1348
|
validationError?: TypeValidationError;
|
|
1338
1349
|
cause?: unknown;
|
|
1339
1350
|
generationId?: string;
|
|
1351
|
+
isRetryable?: boolean;
|
|
1340
1352
|
});
|
|
1341
1353
|
static isInstance(error: unknown): error is GatewayResponseError;
|
|
1342
1354
|
}
|
package/dist/index.js
CHANGED
|
@@ -400,9 +400,10 @@ var GatewayResponseError = class extends (_b10 = GatewayError, _a10 = symbol10,
|
|
|
400
400
|
response,
|
|
401
401
|
validationError,
|
|
402
402
|
cause,
|
|
403
|
-
generationId
|
|
403
|
+
generationId,
|
|
404
|
+
isRetryable
|
|
404
405
|
} = {}) {
|
|
405
|
-
super({ message, statusCode, cause, generationId });
|
|
406
|
+
super({ message, statusCode, cause, generationId, isRetryable });
|
|
406
407
|
this[_a10] = true;
|
|
407
408
|
// used in isInstance
|
|
408
409
|
this.name = name9;
|
|
@@ -426,7 +427,8 @@ async function createGatewayErrorFromResponse({
|
|
|
426
427
|
statusCode,
|
|
427
428
|
defaultMessage = "Gateway request failed",
|
|
428
429
|
cause,
|
|
429
|
-
authMethod
|
|
430
|
+
authMethod,
|
|
431
|
+
isRetryable
|
|
430
432
|
}) {
|
|
431
433
|
var _a12;
|
|
432
434
|
const parseResult = await safeValidateTypes({
|
|
@@ -441,7 +443,8 @@ async function createGatewayErrorFromResponse({
|
|
|
441
443
|
response,
|
|
442
444
|
validationError: parseResult.error,
|
|
443
445
|
cause,
|
|
444
|
-
generationId: rawGenerationId
|
|
446
|
+
generationId: rawGenerationId,
|
|
447
|
+
isRetryable
|
|
445
448
|
});
|
|
446
449
|
}
|
|
447
450
|
const validatedResponse = parseResult.value;
|
|
@@ -638,7 +641,8 @@ async function asGatewayError(error, authMethod) {
|
|
|
638
641
|
statusCode: (_a12 = error.statusCode) != null ? _a12 : 500,
|
|
639
642
|
defaultMessage: "Gateway request failed",
|
|
640
643
|
cause: error,
|
|
641
|
-
authMethod
|
|
644
|
+
authMethod,
|
|
645
|
+
isRetryable: error.isRetryable && (error.statusCode == null || error.statusCode < 400) ? true : void 0
|
|
642
646
|
});
|
|
643
647
|
}
|
|
644
648
|
return await createGatewayErrorFromResponse({
|
|
@@ -1007,16 +1011,14 @@ var gatewayGenerationInfoResponseSchema = lazySchema7(
|
|
|
1007
1011
|
);
|
|
1008
1012
|
|
|
1009
1013
|
// src/gateway-language-model-batch.ts
|
|
1010
|
-
import {
|
|
1011
|
-
APICallError as APICallError2
|
|
1012
|
-
} from "@ai-sdk/provider";
|
|
1013
1014
|
import {
|
|
1014
1015
|
combineHeaders as combineHeaders2,
|
|
1015
1016
|
convertAsyncIteratorToReadableStream,
|
|
1016
1017
|
createJsonErrorResponseHandler as createJsonErrorResponseHandler5,
|
|
1018
|
+
createJsonLinesResponseHandler,
|
|
1017
1019
|
createJsonResponseHandler as createJsonResponseHandler5,
|
|
1018
1020
|
getErrorMessage as getErrorMessage5,
|
|
1019
|
-
|
|
1021
|
+
normalizeBatchRequestCounts,
|
|
1020
1022
|
postJsonToApi as postJsonToApi2,
|
|
1021
1023
|
resolve as resolve5,
|
|
1022
1024
|
WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2,
|
|
@@ -1346,7 +1348,7 @@ var GatewayBatchLanguageModel = class _GatewayBatchLanguageModel extends Gateway
|
|
|
1346
1348
|
}) {
|
|
1347
1349
|
const resolvedHeaders = this.config.headers ? await resolve5(this.config.headers) : void 0;
|
|
1348
1350
|
try {
|
|
1349
|
-
const { value:
|
|
1351
|
+
const { value: lines } = await postJsonToApi2({
|
|
1350
1352
|
url: this.getBatchUrl("results"),
|
|
1351
1353
|
headers: combineHeaders2(
|
|
1352
1354
|
resolvedHeaders,
|
|
@@ -1355,24 +1357,9 @@ var GatewayBatchLanguageModel = class _GatewayBatchLanguageModel extends Gateway
|
|
|
1355
1357
|
await resolve5(this.config.o11yHeaders)
|
|
1356
1358
|
),
|
|
1357
1359
|
body: { batchId },
|
|
1358
|
-
successfulResponseHandler:
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
requestBodyValues
|
|
1362
|
-
}) => {
|
|
1363
|
-
if (response.body == null) {
|
|
1364
|
-
throw new APICallError2({
|
|
1365
|
-
message: "Batch results response body is empty",
|
|
1366
|
-
url,
|
|
1367
|
-
requestBodyValues,
|
|
1368
|
-
statusCode: response.status
|
|
1369
|
-
});
|
|
1370
|
-
}
|
|
1371
|
-
return {
|
|
1372
|
-
value: response.body,
|
|
1373
|
-
responseHeaders: Object.fromEntries([...response.headers])
|
|
1374
|
-
};
|
|
1375
|
-
},
|
|
1360
|
+
successfulResponseHandler: createJsonLinesResponseHandler(
|
|
1361
|
+
gatewayBatchItemResultLineSchema
|
|
1362
|
+
),
|
|
1376
1363
|
failedResponseHandler: createJsonErrorResponseHandler5({
|
|
1377
1364
|
errorSchema: z.any(),
|
|
1378
1365
|
errorToMessage: (data) => {
|
|
@@ -1384,7 +1371,7 @@ var GatewayBatchLanguageModel = class _GatewayBatchLanguageModel extends Gateway
|
|
|
1384
1371
|
fetch: this.config.fetch
|
|
1385
1372
|
});
|
|
1386
1373
|
return convertAsyncIteratorToReadableStream(
|
|
1387
|
-
|
|
1374
|
+
convertGatewayBatchResultLines(lines)
|
|
1388
1375
|
);
|
|
1389
1376
|
} catch (error) {
|
|
1390
1377
|
if (isAbortOrTimeoutError(error)) {
|
|
@@ -1437,7 +1424,13 @@ function isAbortOrTimeoutError(error) {
|
|
|
1437
1424
|
return error.name === "AbortError" || error.name === "TimeoutError";
|
|
1438
1425
|
}
|
|
1439
1426
|
function convertGatewayBatchStatus(body) {
|
|
1440
|
-
|
|
1427
|
+
var _a12, _b12, _c, _d;
|
|
1428
|
+
const requestCounts = normalizeBatchRequestCounts({
|
|
1429
|
+
total: (_a12 = body.requestCounts) == null ? void 0 : _a12.total,
|
|
1430
|
+
pending: (_b12 = body.requestCounts) == null ? void 0 : _b12.pending,
|
|
1431
|
+
completed: (_c = body.requestCounts) == null ? void 0 : _c.completed,
|
|
1432
|
+
failed: (_d = body.requestCounts) == null ? void 0 : _d.failed
|
|
1433
|
+
});
|
|
1441
1434
|
return {
|
|
1442
1435
|
status: body.status,
|
|
1443
1436
|
...body.rawStatus != null && { rawStatus: body.rawStatus },
|
|
@@ -1459,67 +1452,18 @@ function convertGatewayBatchStatus(body) {
|
|
|
1459
1452
|
}
|
|
1460
1453
|
};
|
|
1461
1454
|
}
|
|
1462
|
-
function
|
|
1463
|
-
if (counts == null || typeof counts.total !== "number" || typeof counts.pending !== "number" || typeof counts.completed !== "number" || typeof counts.failed !== "number") {
|
|
1464
|
-
return void 0;
|
|
1465
|
-
}
|
|
1466
|
-
return {
|
|
1467
|
-
total: counts.total,
|
|
1468
|
-
pending: counts.pending,
|
|
1469
|
-
completed: counts.completed,
|
|
1470
|
-
failed: counts.failed
|
|
1471
|
-
};
|
|
1472
|
-
}
|
|
1473
|
-
async function* parseGatewayBatchResultLines(stream) {
|
|
1474
|
-
const reader = stream.getReader();
|
|
1475
|
-
const decoder = new TextDecoder();
|
|
1476
|
-
let buffer = "";
|
|
1477
|
-
let finished = false;
|
|
1478
|
-
try {
|
|
1479
|
-
while (true) {
|
|
1480
|
-
const { done, value } = await reader.read();
|
|
1481
|
-
if (done) {
|
|
1482
|
-
finished = true;
|
|
1483
|
-
buffer += decoder.decode();
|
|
1484
|
-
break;
|
|
1485
|
-
}
|
|
1486
|
-
buffer += decoder.decode(value, { stream: true });
|
|
1487
|
-
let lineEnd = buffer.indexOf("\n");
|
|
1488
|
-
while (lineEnd !== -1) {
|
|
1489
|
-
const line = buffer.slice(0, lineEnd).replace(/\r$/, "");
|
|
1490
|
-
buffer = buffer.slice(lineEnd + 1);
|
|
1491
|
-
if (line.trim().length > 0) {
|
|
1492
|
-
yield await parseGatewayBatchResultLine(line);
|
|
1493
|
-
}
|
|
1494
|
-
lineEnd = buffer.indexOf("\n");
|
|
1495
|
-
}
|
|
1496
|
-
}
|
|
1497
|
-
const finalLine = buffer.replace(/\r$/, "");
|
|
1498
|
-
if (finalLine.trim().length > 0) {
|
|
1499
|
-
yield await parseGatewayBatchResultLine(finalLine);
|
|
1500
|
-
}
|
|
1501
|
-
} finally {
|
|
1502
|
-
if (!finished) {
|
|
1503
|
-
await reader.cancel().catch(() => {
|
|
1504
|
-
});
|
|
1505
|
-
}
|
|
1506
|
-
reader.releaseLock();
|
|
1507
|
-
}
|
|
1508
|
-
}
|
|
1509
|
-
async function parseGatewayBatchResultLine(line) {
|
|
1455
|
+
async function* convertGatewayBatchResultLines(lines) {
|
|
1510
1456
|
var _a12;
|
|
1511
|
-
const
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
if (response !== void 0 && typeof response.timestamp === "string") {
|
|
1519
|
-
response.timestamp = new Date(response.timestamp);
|
|
1457
|
+
for await (const line of lines) {
|
|
1458
|
+
const item = line;
|
|
1459
|
+
if (item.status === "succeeded") {
|
|
1460
|
+
const response = (_a12 = item.result) == null ? void 0 : _a12.response;
|
|
1461
|
+
if (response !== void 0 && typeof response.timestamp === "string") {
|
|
1462
|
+
response.timestamp = new Date(response.timestamp);
|
|
1463
|
+
}
|
|
1520
1464
|
}
|
|
1465
|
+
yield item;
|
|
1521
1466
|
}
|
|
1522
|
-
return item;
|
|
1523
1467
|
}
|
|
1524
1468
|
var gatewayBatchItemResultLineSchema = z.object({
|
|
1525
1469
|
id: z.string(),
|
|
@@ -1853,7 +1797,7 @@ var gatewayImageResponseSchema = z.object({
|
|
|
1853
1797
|
|
|
1854
1798
|
// src/gateway-video-model.ts
|
|
1855
1799
|
import {
|
|
1856
|
-
APICallError as
|
|
1800
|
+
APICallError as APICallError2,
|
|
1857
1801
|
getErrorMessage as getErrorMessage8
|
|
1858
1802
|
} from "@ai-sdk/provider";
|
|
1859
1803
|
import {
|
|
@@ -1897,7 +1841,7 @@ var GatewayVideoModel = class {
|
|
|
1897
1841
|
requestBodyValues
|
|
1898
1842
|
}) => {
|
|
1899
1843
|
if (response.body == null) {
|
|
1900
|
-
throw new
|
|
1844
|
+
throw new APICallError2({
|
|
1901
1845
|
message: "SSE response body is empty",
|
|
1902
1846
|
url,
|
|
1903
1847
|
requestBodyValues,
|
|
@@ -1912,7 +1856,7 @@ var GatewayVideoModel = class {
|
|
|
1912
1856
|
const { done, value: parseResult } = await reader.read();
|
|
1913
1857
|
reader.releaseLock();
|
|
1914
1858
|
if (done || !parseResult) {
|
|
1915
|
-
throw new
|
|
1859
|
+
throw new APICallError2({
|
|
1916
1860
|
message: "SSE stream ended without a data event",
|
|
1917
1861
|
url,
|
|
1918
1862
|
requestBodyValues,
|
|
@@ -1920,7 +1864,7 @@ var GatewayVideoModel = class {
|
|
|
1920
1864
|
});
|
|
1921
1865
|
}
|
|
1922
1866
|
if (!parseResult.success) {
|
|
1923
|
-
throw new
|
|
1867
|
+
throw new APICallError2({
|
|
1924
1868
|
message: "Failed to parse video SSE event",
|
|
1925
1869
|
cause: parseResult.error,
|
|
1926
1870
|
url,
|
|
@@ -1930,7 +1874,7 @@ var GatewayVideoModel = class {
|
|
|
1930
1874
|
}
|
|
1931
1875
|
const event = parseResult.value;
|
|
1932
1876
|
if (event.type === "error") {
|
|
1933
|
-
throw new
|
|
1877
|
+
throw new APICallError2({
|
|
1934
1878
|
message: event.message,
|
|
1935
1879
|
statusCode: event.statusCode,
|
|
1936
1880
|
url,
|
|
@@ -3220,13 +3164,19 @@ import {
|
|
|
3220
3164
|
zodSchema as zodSchema13
|
|
3221
3165
|
} from "@ai-sdk/provider-utils";
|
|
3222
3166
|
var takoDataSourceInputSchema = z.object({
|
|
3223
|
-
count: z.number().optional().describe(
|
|
3224
|
-
|
|
3167
|
+
count: z.number().optional().describe(
|
|
3168
|
+
"Maximum number of data results to return (1-20). When include_contents is true, each additional result adds its own data surcharge."
|
|
3169
|
+
),
|
|
3170
|
+
include_contents: z.boolean().optional().describe(
|
|
3171
|
+
"Inline rows for each data result. This adds a data surcharge based on row count and dataset source. To estimate cost, search with include_contents disabled and inspect cards.content.export_pricing. This applies to every returned card; limit sources.data.count and sources.data.max_rows to control cost."
|
|
3172
|
+
),
|
|
3225
3173
|
mode: z.enum(["inline", "url"]).optional().describe(
|
|
3226
3174
|
"Requested data delivery mode. Search card data is always inline."
|
|
3227
3175
|
),
|
|
3228
3176
|
content_format: z.enum(["card_json", "csv", "json_compact", "json_records"]).optional().describe("Serialization for inlined card data."),
|
|
3229
|
-
max_rows: z.number().optional().describe(
|
|
3177
|
+
max_rows: z.number().optional().describe(
|
|
3178
|
+
"Maximum rows to inline per result. Omit to use the allowance in cards.content.export_pricing. A data surcharge applies per 1,000 exported rows; lower values reduce cost."
|
|
3179
|
+
),
|
|
3230
3180
|
node_ids: z.array(z.string()).optional().describe("Data Graph node IDs to prioritize. Maximum 20."),
|
|
3231
3181
|
strict: z.boolean().optional().describe(
|
|
3232
3182
|
"Only return cards matching node_ids. Requires a non-empty node_ids."
|
|
@@ -3358,7 +3308,6 @@ var takoCardSchema = z.object({
|
|
|
3358
3308
|
relevance: z.enum(["High", "Low", "Medium"]).nullish(),
|
|
3359
3309
|
content: takoResultContentSchema.nullish(),
|
|
3360
3310
|
exportable: z.boolean().optional(),
|
|
3361
|
-
relevance_score: z.number().nullish(),
|
|
3362
3311
|
nodes: z.array(
|
|
3363
3312
|
z.object({
|
|
3364
3313
|
id: z.string(),
|
|
@@ -3380,8 +3329,7 @@ var takoWebResultSchema = z.object({
|
|
|
3380
3329
|
snippet: z.string().nullish(),
|
|
3381
3330
|
source_name: z.string().nullish(),
|
|
3382
3331
|
publish_date: z.string().nullish(),
|
|
3383
|
-
content: takoResultContentSchema.nullish()
|
|
3384
|
-
citation_number: z.number().nullish()
|
|
3332
|
+
content: takoResultContentSchema.nullish()
|
|
3385
3333
|
}).passthrough();
|
|
3386
3334
|
var takoSearchOutputSchema = lazySchema13(
|
|
3387
3335
|
() => zodSchema13(
|
|
@@ -3467,7 +3415,7 @@ async function getVercelRequestId() {
|
|
|
3467
3415
|
}
|
|
3468
3416
|
|
|
3469
3417
|
// src/version.ts
|
|
3470
|
-
var VERSION = true ? "4.0.
|
|
3418
|
+
var VERSION = true ? "4.0.68" : "0.0.0-test";
|
|
3471
3419
|
|
|
3472
3420
|
// src/gateway-provider.ts
|
|
3473
3421
|
var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
|