@bastani/pi-ai 0.9.19 → 0.9.20-alpha.10
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 +83 -1
- package/NOTICE.md +1 -1
- package/README.md +203 -30
- package/dist/api/anthropic-messages.d.ts.map +1 -1
- package/dist/api/anthropic-messages.js +255 -97
- package/dist/api/anthropic-messages.js.map +1 -1
- package/dist/api/azure-openai-responses.d.ts.map +1 -1
- package/dist/api/azure-openai-responses.js +21 -6
- package/dist/api/azure-openai-responses.js.map +1 -1
- package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
- package/dist/api/bedrock-converse-stream.js +20 -15
- package/dist/api/bedrock-converse-stream.js.map +1 -1
- package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
- package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.js +43 -0
- package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
- package/dist/api/cloudflare-workers-ai-system-one.lazy.js.map +1 -0
- package/dist/api/cloudflare.d.ts +2 -0
- package/dist/api/cloudflare.d.ts.map +1 -1
- package/dist/api/cloudflare.js +2 -0
- package/dist/api/cloudflare.js.map +1 -1
- package/dist/api/constrained-sampling.d.ts +8 -3
- package/dist/api/constrained-sampling.d.ts.map +1 -1
- package/dist/api/constrained-sampling.js +29 -11
- package/dist/api/constrained-sampling.js.map +1 -1
- package/dist/api/google-generative-ai.d.ts.map +1 -1
- package/dist/api/google-generative-ai.js +23 -80
- package/dist/api/google-generative-ai.js.map +1 -1
- package/dist/api/google-shared.d.ts +13 -4
- package/dist/api/google-shared.d.ts.map +1 -1
- package/dist/api/google-shared.js +54 -4
- package/dist/api/google-shared.js.map +1 -1
- package/dist/api/google-vertex.d.ts.map +1 -1
- package/dist/api/google-vertex.js +26 -65
- package/dist/api/google-vertex.js.map +1 -1
- package/dist/api/mistral-conversations.d.ts.map +1 -1
- package/dist/api/mistral-conversations.js +18 -13
- package/dist/api/mistral-conversations.js.map +1 -1
- package/dist/api/openai-codex-responses.d.ts.map +1 -1
- package/dist/api/openai-codex-responses.js +40 -26
- package/dist/api/openai-codex-responses.js.map +1 -1
- package/dist/api/openai-completions.d.ts +6 -4
- package/dist/api/openai-completions.d.ts.map +1 -1
- package/dist/api/openai-completions.js +44 -58
- package/dist/api/openai-completions.js.map +1 -1
- package/dist/api/openai-responses-shared.d.ts +11 -5
- package/dist/api/openai-responses-shared.d.ts.map +1 -1
- package/dist/api/openai-responses-shared.js +65 -58
- package/dist/api/openai-responses-shared.js.map +1 -1
- package/dist/api/openai-responses.d.ts.map +1 -1
- package/dist/api/openai-responses.js +15 -19
- package/dist/api/openai-responses.js.map +1 -1
- package/dist/api/openrouter-images.d.ts +2 -1
- package/dist/api/openrouter-images.d.ts.map +1 -1
- package/dist/api/openrouter-images.js +1 -0
- package/dist/api/openrouter-images.js.map +1 -1
- package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
- package/dist/api/openrouter-images.lazy.js.map +1 -1
- package/dist/api/pi-messages.d.ts +3 -3
- package/dist/api/pi-messages.d.ts.map +1 -1
- package/dist/api/pi-messages.js +3 -2
- package/dist/api/pi-messages.js.map +1 -1
- package/dist/api/simple-options.d.ts +3 -3
- package/dist/api/simple-options.d.ts.map +1 -1
- package/dist/api/simple-options.js +1 -0
- package/dist/api/simple-options.js.map +1 -1
- package/dist/api/system-one-shared.d.ts +23 -0
- package/dist/api/system-one-shared.d.ts.map +1 -0
- package/dist/api/system-one-shared.js +170 -0
- package/dist/api/system-one-shared.js.map +1 -0
- package/dist/api/transform-messages.d.ts.map +1 -1
- package/dist/api/transform-messages.js +21 -7
- package/dist/api/transform-messages.js.map +1 -1
- package/dist/api/typesafe-system-one.d.ts +4 -0
- package/dist/api/typesafe-system-one.d.ts.map +1 -0
- package/dist/api/typesafe-system-one.js +19 -0
- package/dist/api/typesafe-system-one.js.map +1 -0
- package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
- package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -0
- package/dist/api/typesafe-system-one.lazy.js +4 -0
- package/dist/api/typesafe-system-one.lazy.js.map +1 -0
- package/dist/auth/credential-store.d.ts.map +1 -1
- package/dist/auth/credential-store.js +3 -2
- package/dist/auth/credential-store.js.map +1 -1
- package/dist/auth/oauth/load.d.ts +2 -0
- package/dist/auth/oauth/load.d.ts.map +1 -1
- package/dist/auth/oauth/load.js +5 -0
- package/dist/auth/oauth/load.js.map +1 -1
- package/dist/auth/oauth/meta.d.ts +17 -0
- package/dist/auth/oauth/meta.d.ts.map +1 -0
- package/dist/auth/oauth/meta.js +190 -0
- package/dist/auth/oauth/meta.js.map +1 -0
- package/dist/auth/resolve.d.ts +6 -8
- package/dist/auth/resolve.d.ts.map +1 -1
- package/dist/auth/resolve.js +29 -26
- package/dist/auth/resolve.js.map +1 -1
- package/dist/bun-oauth.d.ts.map +1 -1
- package/dist/bun-oauth.js +2 -0
- package/dist/bun-oauth.js.map +1 -1
- package/dist/compat.d.ts +3 -3
- package/dist/compat.d.ts.map +1 -1
- package/dist/compat.js +9 -6
- package/dist/compat.js.map +1 -1
- package/dist/decision-models.d.ts +21 -0
- package/dist/decision-models.d.ts.map +1 -0
- package/dist/decision-models.generated.d.ts +3 -0
- package/dist/decision-models.generated.d.ts.map +1 -0
- package/dist/decision-models.generated.js +47 -0
- package/dist/decision-models.generated.js.map +1 -0
- package/dist/decision-models.js +8 -0
- package/dist/decision-models.js.map +1 -0
- package/dist/env-api-keys.d.ts +2 -0
- package/dist/env-api-keys.d.ts.map +1 -1
- package/dist/env-api-keys.js +61 -43
- package/dist/env-api-keys.js.map +1 -1
- package/dist/image-models.d.ts +19 -8
- package/dist/image-models.d.ts.map +1 -1
- package/dist/image-models.js +14 -13
- package/dist/image-models.js.map +1 -1
- package/dist/images-api-registry.d.ts +7 -7
- package/dist/images-api-registry.d.ts.map +1 -1
- package/dist/images-api-registry.js.map +1 -1
- package/dist/images.d.ts +7 -2
- package/dist/images.d.ts.map +1 -1
- package/dist/images.js +5 -0
- package/dist/images.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/model-catalog.d.ts +25 -9
- package/dist/model-catalog.d.ts.map +1 -1
- package/dist/model-catalog.js +14 -2
- package/dist/model-catalog.js.map +1 -1
- package/dist/models-store.d.ts +3 -2
- package/dist/models-store.d.ts.map +1 -1
- package/dist/models-store.js.map +1 -1
- package/dist/models.d.ts +99 -31
- package/dist/models.d.ts.map +1 -1
- package/dist/models.generated.d.ts +133 -39
- package/dist/models.generated.d.ts.map +1 -1
- package/dist/models.generated.js +133 -39
- package/dist/models.generated.js.map +1 -1
- package/dist/models.js +161 -31
- package/dist/models.js.map +1 -1
- package/dist/providers/all.d.ts +19 -13
- package/dist/providers/all.d.ts.map +1 -1
- package/dist/providers/all.js +27 -21
- package/dist/providers/all.js.map +1 -1
- package/dist/providers/amazon-bedrock.models.d.ts +4 -3
- package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
- package/dist/providers/amazon-bedrock.models.js +4 -2
- package/dist/providers/amazon-bedrock.models.js.map +1 -1
- package/dist/providers/ant-ling.models.d.ts +4 -3
- package/dist/providers/ant-ling.models.d.ts.map +1 -1
- package/dist/providers/ant-ling.models.js +4 -2
- package/dist/providers/ant-ling.models.js.map +1 -1
- package/dist/providers/anthropic.models.d.ts +4 -3
- package/dist/providers/anthropic.models.d.ts.map +1 -1
- package/dist/providers/anthropic.models.js +4 -2
- package/dist/providers/anthropic.models.js.map +1 -1
- package/dist/providers/azure-openai-responses.models.d.ts +4 -3
- package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
- package/dist/providers/azure-openai-responses.models.js +4 -2
- package/dist/providers/azure-openai-responses.models.js.map +1 -1
- package/dist/providers/baseten.models.d.ts +4 -3
- package/dist/providers/baseten.models.d.ts.map +1 -1
- package/dist/providers/baseten.models.js +4 -2
- package/dist/providers/baseten.models.js.map +1 -1
- package/dist/providers/cerebras.models.d.ts +4 -3
- package/dist/providers/cerebras.models.d.ts.map +1 -1
- package/dist/providers/cerebras.models.js +4 -2
- package/dist/providers/cerebras.models.js.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -3
- package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
- package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
- package/dist/providers/cloudflare-stream.d.ts +6 -2
- package/dist/providers/cloudflare-stream.d.ts.map +1 -1
- package/dist/providers/cloudflare-stream.js +6 -0
- package/dist/providers/cloudflare-stream.js.map +1 -1
- package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
- package/dist/providers/cloudflare-workers-ai.js +10 -3
- package/dist/providers/cloudflare-workers-ai.js.map +1 -1
- package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -3
- package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
- package/dist/providers/cloudflare-workers-ai.models.js +4 -2
- package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/amazon-bedrock.json +1 -1
- package/dist/providers/data/ant-ling.json +1 -1
- package/dist/providers/data/anthropic.json +1 -1
- package/dist/providers/data/azure-openai-responses.json +1 -1
- package/dist/providers/data/baseten.json +1 -1
- package/dist/providers/data/cerebras.json +1 -1
- package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
- package/dist/providers/data/cloudflare-workers-ai.json +1 -1
- package/dist/providers/data/deepseek.json +1 -1
- package/dist/providers/data/fireworks.json +1 -1
- package/dist/providers/data/github-copilot.json +1 -1
- package/dist/providers/data/google-vertex.json +1 -1
- package/dist/providers/data/google.json +1 -1
- package/dist/providers/data/groq.json +1 -1
- package/dist/providers/data/huggingface.json +1 -1
- package/dist/providers/data/kimi-coding.json +1 -1
- package/dist/providers/data/meta.json +1 -0
- package/dist/providers/data/minimax-cn.json +1 -1
- package/dist/providers/data/minimax.json +1 -1
- package/dist/providers/data/mistral.json +1 -1
- package/dist/providers/data/moonshotai-cn.json +1 -1
- package/dist/providers/data/moonshotai.json +1 -1
- package/dist/providers/data/nvidia.json +1 -1
- package/dist/providers/data/openai-codex.json +1 -1
- package/dist/providers/data/openai.json +1 -1
- package/dist/providers/data/opencode-go.json +1 -1
- package/dist/providers/data/opencode.json +1 -1
- package/dist/providers/data/openrouter.json +1 -1
- package/dist/providers/data/qwen-token-plan-cn.json +1 -1
- package/dist/providers/data/qwen-token-plan-individual.json +1 -1
- package/dist/providers/data/qwen-token-plan.json +1 -1
- package/dist/providers/data/radius.json +1 -0
- package/dist/providers/data/together.json +1 -1
- package/dist/providers/data/typesafe.json +1 -0
- package/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/dist/providers/data/xai.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
- package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
- package/dist/providers/data/xiaomi.json +1 -1
- package/dist/providers/data/zai-coding-cn.json +1 -1
- package/dist/providers/data/zai.json +1 -1
- package/dist/providers/deepseek.models.d.ts +4 -3
- package/dist/providers/deepseek.models.d.ts.map +1 -1
- package/dist/providers/deepseek.models.js +4 -2
- package/dist/providers/deepseek.models.js.map +1 -1
- package/dist/providers/faux.d.ts +3 -2
- package/dist/providers/faux.d.ts.map +1 -1
- package/dist/providers/faux.js +12 -11
- package/dist/providers/faux.js.map +1 -1
- package/dist/providers/fireworks.models.d.ts +4 -3
- package/dist/providers/fireworks.models.d.ts.map +1 -1
- package/dist/providers/fireworks.models.js +4 -2
- package/dist/providers/fireworks.models.js.map +1 -1
- package/dist/providers/github-copilot.models.d.ts +4 -3
- package/dist/providers/github-copilot.models.d.ts.map +1 -1
- package/dist/providers/github-copilot.models.js +4 -2
- package/dist/providers/github-copilot.models.js.map +1 -1
- package/dist/providers/google-vertex.models.d.ts +4 -3
- package/dist/providers/google-vertex.models.d.ts.map +1 -1
- package/dist/providers/google-vertex.models.js +4 -2
- package/dist/providers/google-vertex.models.js.map +1 -1
- package/dist/providers/google.models.d.ts +4 -3
- package/dist/providers/google.models.d.ts.map +1 -1
- package/dist/providers/google.models.js +4 -2
- package/dist/providers/google.models.js.map +1 -1
- package/dist/providers/groq.models.d.ts +4 -3
- package/dist/providers/groq.models.d.ts.map +1 -1
- package/dist/providers/groq.models.js +4 -2
- package/dist/providers/groq.models.js.map +1 -1
- package/dist/providers/huggingface.models.d.ts +4 -3
- package/dist/providers/huggingface.models.d.ts.map +1 -1
- package/dist/providers/huggingface.models.js +4 -2
- package/dist/providers/huggingface.models.js.map +1 -1
- package/dist/providers/images/register-builtins.d.ts +1 -1
- package/dist/providers/images/register-builtins.d.ts.map +1 -1
- package/dist/providers/images/register-builtins.js.map +1 -1
- package/dist/providers/kimi-coding.models.d.ts +4 -3
- package/dist/providers/kimi-coding.models.d.ts.map +1 -1
- package/dist/providers/kimi-coding.models.js +4 -2
- package/dist/providers/kimi-coding.models.js.map +1 -1
- package/dist/providers/meta.d.ts +3 -0
- package/dist/providers/meta.d.ts.map +1 -0
- package/dist/providers/meta.js +24 -0
- package/dist/providers/meta.js.map +1 -0
- package/dist/providers/meta.models.d.ts +5 -0
- package/dist/providers/meta.models.d.ts.map +1 -0
- package/dist/providers/meta.models.js +8 -0
- package/dist/providers/meta.models.js.map +1 -0
- package/dist/providers/minimax-cn.models.d.ts +4 -3
- package/dist/providers/minimax-cn.models.d.ts.map +1 -1
- package/dist/providers/minimax-cn.models.js +4 -2
- package/dist/providers/minimax-cn.models.js.map +1 -1
- package/dist/providers/minimax.models.d.ts +4 -3
- package/dist/providers/minimax.models.d.ts.map +1 -1
- package/dist/providers/minimax.models.js +4 -2
- package/dist/providers/minimax.models.js.map +1 -1
- package/dist/providers/mistral.models.d.ts +4 -3
- package/dist/providers/mistral.models.d.ts.map +1 -1
- package/dist/providers/mistral.models.js +4 -2
- package/dist/providers/mistral.models.js.map +1 -1
- package/dist/providers/moonshotai-cn.models.d.ts +4 -3
- package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
- package/dist/providers/moonshotai-cn.models.js +4 -2
- package/dist/providers/moonshotai-cn.models.js.map +1 -1
- package/dist/providers/moonshotai.models.d.ts +4 -3
- package/dist/providers/moonshotai.models.d.ts.map +1 -1
- package/dist/providers/moonshotai.models.js +4 -2
- package/dist/providers/moonshotai.models.js.map +1 -1
- package/dist/providers/nvidia.models.d.ts +4 -3
- package/dist/providers/nvidia.models.d.ts.map +1 -1
- package/dist/providers/nvidia.models.js +4 -2
- package/dist/providers/nvidia.models.js.map +1 -1
- package/dist/providers/openai-codex.models.d.ts +4 -3
- package/dist/providers/openai-codex.models.d.ts.map +1 -1
- package/dist/providers/openai-codex.models.js +4 -2
- package/dist/providers/openai-codex.models.js.map +1 -1
- package/dist/providers/openai.models.d.ts +4 -3
- package/dist/providers/openai.models.d.ts.map +1 -1
- package/dist/providers/openai.models.js +4 -2
- package/dist/providers/openai.models.js.map +1 -1
- package/dist/providers/opencode-go.models.d.ts +4 -3
- package/dist/providers/opencode-go.models.d.ts.map +1 -1
- package/dist/providers/opencode-go.models.js +4 -2
- package/dist/providers/opencode-go.models.js.map +1 -1
- package/dist/providers/opencode.models.d.ts +4 -3
- package/dist/providers/opencode.models.d.ts.map +1 -1
- package/dist/providers/opencode.models.js +4 -2
- package/dist/providers/opencode.models.js.map +1 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +11 -2
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/openrouter.models.d.ts +4 -3
- package/dist/providers/openrouter.models.d.ts.map +1 -1
- package/dist/providers/openrouter.models.js +4 -2
- package/dist/providers/openrouter.models.js.map +1 -1
- package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -3
- package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
- package/dist/providers/qwen-token-plan-cn.models.js +4 -2
- package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
- package/dist/providers/qwen-token-plan-individual.models.d.ts +4 -3
- package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -1
- package/dist/providers/qwen-token-plan-individual.models.js +4 -2
- package/dist/providers/qwen-token-plan-individual.models.js.map +1 -1
- package/dist/providers/qwen-token-plan.models.d.ts +4 -3
- package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
- package/dist/providers/qwen-token-plan.models.js +4 -2
- package/dist/providers/qwen-token-plan.models.js.map +1 -1
- package/dist/providers/radius.d.ts.map +1 -1
- package/dist/providers/radius.js +19 -5
- package/dist/providers/radius.js.map +1 -1
- package/dist/providers/radius.models.d.ts +5 -0
- package/dist/providers/radius.models.d.ts.map +1 -0
- package/dist/providers/radius.models.js +8 -0
- package/dist/providers/radius.models.js.map +1 -0
- package/dist/providers/together.models.d.ts +4 -3
- package/dist/providers/together.models.d.ts.map +1 -1
- package/dist/providers/together.models.js +4 -2
- package/dist/providers/together.models.js.map +1 -1
- package/dist/providers/typesafe.d.ts +3 -0
- package/dist/providers/typesafe.d.ts.map +1 -0
- package/dist/providers/typesafe.js +18 -0
- package/dist/providers/typesafe.js.map +1 -0
- package/dist/providers/typesafe.models.d.ts +5 -0
- package/dist/providers/typesafe.models.d.ts.map +1 -0
- package/dist/providers/typesafe.models.js +8 -0
- package/dist/providers/typesafe.models.js.map +1 -0
- package/dist/providers/vercel-ai-gateway.models.d.ts +4 -3
- package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
- package/dist/providers/vercel-ai-gateway.models.js +4 -2
- package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
- package/dist/providers/xai.models.d.ts +4 -3
- package/dist/providers/xai.models.d.ts.map +1 -1
- package/dist/providers/xai.models.js +4 -2
- package/dist/providers/xai.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -3
- package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -3
- package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -3
- package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
- package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
- package/dist/providers/xiaomi.models.d.ts +4 -3
- package/dist/providers/xiaomi.models.d.ts.map +1 -1
- package/dist/providers/xiaomi.models.js +4 -2
- package/dist/providers/xiaomi.models.js.map +1 -1
- package/dist/providers/zai-coding-cn.models.d.ts +4 -3
- package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
- package/dist/providers/zai-coding-cn.models.js +4 -2
- package/dist/providers/zai-coding-cn.models.js.map +1 -1
- package/dist/providers/zai.models.d.ts +4 -3
- package/dist/providers/zai.models.d.ts.map +1 -1
- package/dist/providers/zai.models.js +4 -2
- package/dist/providers/zai.models.js.map +1 -1
- package/dist/types.d.ts +227 -51
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +3 -2
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/estimate.d.ts +2 -2
- package/dist/utils/estimate.d.ts.map +1 -1
- package/dist/utils/estimate.js +8 -29
- package/dist/utils/estimate.js.map +1 -1
- package/dist/utils/headers.d.ts +1 -1
- package/dist/utils/headers.d.ts.map +1 -1
- package/dist/utils/headers.js +10 -8
- package/dist/utils/headers.js.map +1 -1
- package/dist/utils/model-operations.d.ts +11 -0
- package/dist/utils/model-operations.d.ts.map +1 -0
- package/dist/utils/model-operations.js +47 -0
- package/dist/utils/model-operations.js.map +1 -0
- package/dist/utils/models-error.d.ts +8 -0
- package/dist/utils/models-error.d.ts.map +1 -0
- package/dist/utils/models-error.js +19 -0
- package/dist/utils/models-error.js.map +1 -0
- package/dist/utils/overflow.d.ts +1 -0
- package/dist/utils/overflow.d.ts.map +1 -1
- package/dist/utils/overflow.js +17 -5
- package/dist/utils/overflow.js.map +1 -1
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +2 -0
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/text.d.ts +9 -1
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/text.js +26 -0
- package/dist/utils/text.js.map +1 -1
- package/dist/utils/transcript.d.ts +84 -0
- package/dist/utils/transcript.d.ts.map +1 -0
- package/dist/utils/transcript.js +204 -0
- package/dist/utils/transcript.js.map +1 -0
- package/package.json +4 -4
- package/dist/image-models.generated.d.ts +0 -785
- package/dist/image-models.generated.d.ts.map +0 -1
- package/dist/image-models.generated.js +0 -787
- package/dist/image-models.generated.js.map +0 -1
- package/dist/images-models.d.ts +0 -95
- package/dist/images-models.d.ts.map +0 -1
- package/dist/images-models.js +0 -143
- package/dist/images-models.js.map +0 -1
- package/dist/providers/openrouter-images.d.ts +0 -3
- package/dist/providers/openrouter-images.d.ts.map +0 -1
- package/dist/providers/openrouter-images.js +0 -22
- package/dist/providers/openrouter-images.js.map +0 -1
- package/dist/utils/deferred-tools.d.ts +0 -9
- package/dist/utils/deferred-tools.d.ts.map +0 -1
- package/dist/utils/deferred-tools.js +0 -36
- package/dist/utils/deferred-tools.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -14,12 +14,12 @@ import type { AssistantMessageEventStream } from "./utils/event-stream.ts";
|
|
|
14
14
|
export type { AssistantMessageEventStream } from "./utils/event-stream.ts";
|
|
15
15
|
export type KnownApi = "openai-completions" | "mistral-conversations" | "openai-responses" | "azure-openai-responses" | "openai-codex-responses" | "anthropic-messages" | "bedrock-converse-stream" | "google-generative-ai" | "google-vertex" | "pi-messages";
|
|
16
16
|
export type Api = KnownApi | (string & {});
|
|
17
|
-
export type
|
|
18
|
-
export type
|
|
19
|
-
export type
|
|
17
|
+
export type KnownImageApi = "openrouter-images";
|
|
18
|
+
export type ImageApi = KnownImageApi | (string & {});
|
|
19
|
+
export type KnownClassifierApi = "typesafe-system-one" | "cloudflare-workers-ai-system-one";
|
|
20
|
+
export type ClassifierApi = KnownClassifierApi | (string & {});
|
|
21
|
+
export type KnownProvider = "amazon-bedrock" | "ant-ling" | "anthropic" | "google" | "google-vertex" | "openai" | "azure-openai-responses" | "openai-codex" | "radius" | "typesafe" | "nvidia" | "deepseek" | "github-copilot" | "xai" | "groq" | "cerebras" | "openrouter" | "vercel-ai-gateway" | "zai" | "zai-coding-cn" | "mistral" | "minimax" | "minimax-cn" | "moonshotai" | "moonshotai-cn" | "huggingface" | "fireworks" | "together" | "baseten" | "opencode" | "opencode-go" | "kimi-coding" | "meta" | "cloudflare-workers-ai" | "cloudflare-ai-gateway" | "qwen-token-plan" | "qwen-token-plan-cn" | "qwen-token-plan-individual" | "xiaomi" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-sgp";
|
|
20
22
|
export type ProviderId = KnownProvider | string;
|
|
21
|
-
export type KnownImagesProvider = "openrouter";
|
|
22
|
-
export type ImagesProviderId = KnownImagesProvider | string;
|
|
23
23
|
export type ToolChoice = "auto" | "none";
|
|
24
24
|
export type ThinkingLevel = "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
25
25
|
export type ModelThinkingLevel = "off" | ThinkingLevel;
|
|
@@ -38,6 +38,11 @@ export interface ThinkingBudgets {
|
|
|
38
38
|
high?: number;
|
|
39
39
|
}
|
|
40
40
|
export type CacheRetention = "none" | "short" | "long";
|
|
41
|
+
/**
|
|
42
|
+
* Best-effort prompt cache lifetime in seconds for each retention tier a request can ask for.
|
|
43
|
+
* A missing tier means the lifetime is unknown; pi does not warm such caches.
|
|
44
|
+
*/
|
|
45
|
+
export type ModelPromptCache = Partial<Record<Exclude<CacheRetention, "none">, number>>;
|
|
41
46
|
export type Transport = "sse" | "websocket" | "websocket-cached" | "auto";
|
|
42
47
|
/** Provider-scoped environment overrides. Values take precedence over process.env. */
|
|
43
48
|
export type ProviderEnv = Record<string, string>;
|
|
@@ -109,6 +114,12 @@ export interface StreamOptions extends ProviderRequestOptions<Model<Api>> {
|
|
|
109
114
|
* its body stream is consumed.
|
|
110
115
|
*/
|
|
111
116
|
onResponse?: (response: ProviderResponse, model: Model<Api>) => void | Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Optional observer for each parsed provider stream event before Pi normalization.
|
|
119
|
+
* Event data is adapter-owned and must be treated as read-only.
|
|
120
|
+
* Adapter support is explicit; unsupported adapters do not invoke it.
|
|
121
|
+
*/
|
|
122
|
+
onProviderStreamEvent?: (data: unknown, model: Model<Api>) => void | Promise<void>;
|
|
112
123
|
temperature?: number;
|
|
113
124
|
/**
|
|
114
125
|
* Arbitrary sampling parameters merged into the request body as-is, after the named request
|
|
@@ -202,21 +213,27 @@ export type ApiStreamOptions<TApi extends Api> = TApi extends keyof ApiOptionsMa
|
|
|
202
213
|
* `Provider.stream()` via `ApiStreamOptions`.
|
|
203
214
|
*/
|
|
204
215
|
export interface ProviderStreams {
|
|
205
|
-
stream(model: Model<Api>, context:
|
|
206
|
-
streamSimple(model: Model<Api>, context:
|
|
216
|
+
stream(model: Model<Api>, context: TranscriptContext, options?: StreamOptions): AssistantMessageEventStream;
|
|
217
|
+
streamSimple(model: Model<Api>, context: TranscriptContext, options?: SimpleStreamOptions): AssistantMessageEventStream;
|
|
207
218
|
fetchDeferred?(model: Model<Api>, handle: DeferredHandle, options?: DeferredFetchOptions): AssistantMessageEventStream;
|
|
208
219
|
cancelDeferred?(model: Model<Api>, handle: DeferredHandle, options?: DeferredCancelOptions): Promise<void>;
|
|
209
220
|
}
|
|
210
221
|
/**
|
|
211
222
|
* The uniform contract of an image-generation API implementation module:
|
|
212
223
|
* every image API module under `src/api/` exports exactly `generateImages`,
|
|
213
|
-
* so the module itself satisfies this interface. Lazy wrappers and
|
|
214
|
-
*
|
|
224
|
+
* so the module itself satisfies this interface. Lazy wrappers and
|
|
225
|
+
* `createProvider({ images })` pass these around as values.
|
|
215
226
|
*/
|
|
216
227
|
export interface ProviderImages {
|
|
217
|
-
generateImages(model:
|
|
228
|
+
generateImages(model: ImageModel<ImageApi>, context: ImagesContext, options?: ImagesOptions): Promise<AssistantImages>;
|
|
218
229
|
}
|
|
219
|
-
|
|
230
|
+
/** The uniform contract implemented by classifier API modules. */
|
|
231
|
+
export interface ProviderClassifier {
|
|
232
|
+
classify(model: ClassifierModel<ClassifierApi>, context: ClassifierContext, options?: ClassifierOptions): Promise<ClassifierResult>;
|
|
233
|
+
}
|
|
234
|
+
export interface ClassifierOptions extends ProviderRequestOptions<ClassifierModel<ClassifierApi>> {
|
|
235
|
+
}
|
|
236
|
+
export interface ImagesOptions extends ProviderRequestOptions<ImageModel<ImageApi>> {
|
|
220
237
|
/**
|
|
221
238
|
* Optional metadata to include in API requests.
|
|
222
239
|
* Providers extract the fields they understand and ignore the rest.
|
|
@@ -240,8 +257,9 @@ export interface SimpleStreamOptions extends StreamOptions {
|
|
|
240
257
|
/** Custom token budgets for thinking levels (token-based providers only) */
|
|
241
258
|
thinkingBudgets?: ThinkingBudgets;
|
|
242
259
|
}
|
|
243
|
-
export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context:
|
|
244
|
-
export type ImagesFunction<
|
|
260
|
+
export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context: TranscriptContext, options?: TOptions) => AssistantMessageEventStream;
|
|
261
|
+
export type ImagesFunction<TOptions extends ImagesOptions = ImagesOptions> = (model: ImageModel<ImageApi>, context: ImagesContext, options?: TOptions) => Promise<AssistantImages>;
|
|
262
|
+
export type ClassifierFunction<TOptions extends ClassifierOptions = ClassifierOptions> = (model: ClassifierModel<ClassifierApi>, context: ClassifierContext, options?: TOptions) => Promise<ClassifierResult>;
|
|
245
263
|
export interface TextSignatureV1 {
|
|
246
264
|
v: 1;
|
|
247
265
|
id: string;
|
|
@@ -319,7 +337,7 @@ export interface ToolCall {
|
|
|
319
337
|
type: "toolCall";
|
|
320
338
|
id: string;
|
|
321
339
|
name: string;
|
|
322
|
-
arguments:
|
|
340
|
+
arguments: JsonObject;
|
|
323
341
|
thoughtSignature?: string;
|
|
324
342
|
/** OpenAI Responses namespace for calls to dynamically loaded or namespaced tools. */
|
|
325
343
|
namespace?: string;
|
|
@@ -329,7 +347,7 @@ export interface Usage {
|
|
|
329
347
|
output: number;
|
|
330
348
|
cacheRead: number;
|
|
331
349
|
cacheWrite: number;
|
|
332
|
-
/** Subset of `cacheWrite` written with 1h retention.
|
|
350
|
+
/** Subset of `cacheWrite` written with 1h retention. Anthropic and Bedrock report this split. */
|
|
333
351
|
cacheWrite1h?: number;
|
|
334
352
|
/**
|
|
335
353
|
* Reasoning/thinking tokens, when the provider reports them. This is a subset of
|
|
@@ -347,9 +365,23 @@ export interface Usage {
|
|
|
347
365
|
};
|
|
348
366
|
}
|
|
349
367
|
export type StopReason = "pending" | "stop" | "length" | "toolUse" | "error" | "aborted" | "deferred";
|
|
350
|
-
export type JsonValue =
|
|
368
|
+
export type JsonValue = null | boolean | number | string | readonly JsonValue[] | JsonObject;
|
|
369
|
+
export type JsonObject = {
|
|
351
370
|
[key: string]: JsonValue;
|
|
352
371
|
};
|
|
372
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
373
|
+
type IsExactlyJsonValue<T> = [T] extends [JsonValue] ? ([JsonValue] extends [T] ? true : false) : false;
|
|
374
|
+
type IsJsonProperty<T> = IsAny<T> extends true ? false : unknown extends T ? false : [Exclude<T, undefined>] extends [never] ? true : IsJsonCompatible<Exclude<T, undefined>>;
|
|
375
|
+
type InvalidJsonKeys<T extends object> = {
|
|
376
|
+
[TKey in keyof T]-?: TKey extends string | number ? (IsJsonProperty<T[TKey]> extends true ? never : TKey) : TKey;
|
|
377
|
+
}[keyof T];
|
|
378
|
+
type IsJsonCompatible<T> = IsAny<T> extends true ? false : unknown extends T ? false : IsExactlyJsonValue<T> extends true ? true : T extends null | boolean | number | string ? true : T extends undefined ? false : T extends readonly (infer TItem)[] ? IsJsonCompatible<TItem> : T extends (...args: never[]) => unknown ? false : T extends object ? [InvalidJsonKeys<T>] extends [never] ? true : false : false;
|
|
379
|
+
/** The JSON representation of a typed in-memory value. Optional object properties remain optional. */
|
|
380
|
+
export type JsonRepresentation<T> = IsAny<T> extends true ? JsonValue : unknown extends T ? JsonValue : [T] extends [JsonValue] ? T : T extends readonly unknown[] ? {
|
|
381
|
+
[TKey in keyof T]: JsonRepresentation<Exclude<T[TKey], undefined>>;
|
|
382
|
+
} : T extends object ? {
|
|
383
|
+
[TKey in keyof T]: JsonRepresentation<Exclude<T[TKey], undefined>>;
|
|
384
|
+
} : never;
|
|
353
385
|
export interface DeferredHandle {
|
|
354
386
|
provider: string;
|
|
355
387
|
modelId: string;
|
|
@@ -361,6 +393,33 @@ export interface DeferredHandle {
|
|
|
361
393
|
/** Provider conversion data required to reconstruct the final assistant message. */
|
|
362
394
|
data?: JsonValue;
|
|
363
395
|
}
|
|
396
|
+
/**
|
|
397
|
+
* System instructions and tool declarations at one point in the transcript.
|
|
398
|
+
*
|
|
399
|
+
* The leading system message is the system prompt. Later system messages change it:
|
|
400
|
+
* `content` adds instructions from that point on, `sections` replace or remove named
|
|
401
|
+
* prompt sections, and `toolsAdded`/`toolsRemoved` change the tool set. Replaying
|
|
402
|
+
* every system message in order yields the current prompt and tools. Providers that
|
|
403
|
+
* accept system messages mid-conversation send each one in place; other providers
|
|
404
|
+
* rebuild the leading system message from the replayed state.
|
|
405
|
+
*/
|
|
406
|
+
export interface SystemMessage {
|
|
407
|
+
role: "system";
|
|
408
|
+
/** Instruction text. On the leading message this is the base prompt; later, additional instructions. */
|
|
409
|
+
content: string | TextContent[];
|
|
410
|
+
/**
|
|
411
|
+
* Named, ordered prompt sections rendered verbatim after `content`. The leading message
|
|
412
|
+
* declares them; later messages replace sections by name, and `null` removes one. Keep
|
|
413
|
+
* each section self-delimiting (a tag, a heading) so the model can relate an update to
|
|
414
|
+
* the original. Avoid integer-like names; JSON objects reorder those.
|
|
415
|
+
*/
|
|
416
|
+
sections?: Record<string, string | null>;
|
|
417
|
+
/** Complete definitions of tools that become available at this point. */
|
|
418
|
+
toolsAdded?: Tool[];
|
|
419
|
+
/** Tools that stop being available at this point. */
|
|
420
|
+
toolsRemoved?: ToolReference[];
|
|
421
|
+
timestamp: number;
|
|
422
|
+
}
|
|
364
423
|
export interface UserMessage {
|
|
365
424
|
role: "user";
|
|
366
425
|
content: string | (TextContent | ImageContent | DocumentContent)[];
|
|
@@ -389,24 +448,18 @@ export interface AssistantMessage {
|
|
|
389
448
|
endTurn?: boolean;
|
|
390
449
|
timestamp: number;
|
|
391
450
|
}
|
|
392
|
-
export
|
|
451
|
+
export type ToolResultMessage<TDetails = JsonValue> = IsJsonCompatible<TDetails> extends true ? {
|
|
393
452
|
role: "toolResult";
|
|
394
453
|
toolCallId: string;
|
|
395
454
|
toolName: string;
|
|
396
455
|
content: (TextContent | ImageContent)[];
|
|
397
|
-
details?: TDetails
|
|
456
|
+
details?: JsonRepresentation<TDetails>;
|
|
398
457
|
/** Usage from the tool execution itself, if available. Not part of main LLM context accounting. */
|
|
399
458
|
usage?: Usage;
|
|
400
|
-
/**
|
|
401
|
-
* Names from `Context.tools` that became available after this result.
|
|
402
|
-
* Providers with native deferred tool loading use this as the load point;
|
|
403
|
-
* other providers ignore it and use `Context.tools` normally.
|
|
404
|
-
*/
|
|
405
|
-
addedToolNames?: string[];
|
|
406
459
|
isError: boolean;
|
|
407
460
|
timestamp: number;
|
|
408
|
-
}
|
|
409
|
-
export type Message = UserMessage | AssistantMessage | ToolResultMessage;
|
|
461
|
+
} : never;
|
|
462
|
+
export type Message = SystemMessage | UserMessage | AssistantMessage | ToolResultMessage;
|
|
410
463
|
export type ImagesInputContent = TextContent | ImageContent;
|
|
411
464
|
export type ImagesOutputContent = TextContent | ImageContent;
|
|
412
465
|
export interface ImagesContext {
|
|
@@ -414,8 +467,8 @@ export interface ImagesContext {
|
|
|
414
467
|
}
|
|
415
468
|
export type ImagesStopReason = "stop" | "error" | "aborted";
|
|
416
469
|
export interface AssistantImages {
|
|
417
|
-
api:
|
|
418
|
-
provider:
|
|
470
|
+
api: ImageApi;
|
|
471
|
+
provider: ProviderId;
|
|
419
472
|
model: string;
|
|
420
473
|
output: ImagesOutputContent[];
|
|
421
474
|
responseId?: string;
|
|
@@ -424,6 +477,55 @@ export interface AssistantImages {
|
|
|
424
477
|
errorMessage?: string;
|
|
425
478
|
timestamp: number;
|
|
426
479
|
}
|
|
480
|
+
export interface ClassifierChoiceQuestion {
|
|
481
|
+
type: "choice";
|
|
482
|
+
instructions: string;
|
|
483
|
+
criteria: Record<string, string>;
|
|
484
|
+
}
|
|
485
|
+
export interface ClassifierScoreQuestion {
|
|
486
|
+
type: "score";
|
|
487
|
+
instructions: string;
|
|
488
|
+
criteria: string[];
|
|
489
|
+
}
|
|
490
|
+
export interface ClassifierBoolQuestion {
|
|
491
|
+
type: "bool";
|
|
492
|
+
instructions: string;
|
|
493
|
+
criteria: {
|
|
494
|
+
true: string;
|
|
495
|
+
false: string;
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
export type ClassifierQuestion = ClassifierChoiceQuestion | ClassifierScoreQuestion | ClassifierBoolQuestion;
|
|
499
|
+
export interface ClassifierContext {
|
|
500
|
+
state: JsonObject;
|
|
501
|
+
questions: Record<string, ClassifierQuestion>;
|
|
502
|
+
}
|
|
503
|
+
export interface ClassifierChoiceAnswer {
|
|
504
|
+
type: "choice";
|
|
505
|
+
choice: string;
|
|
506
|
+
probabilities: Record<string, number>;
|
|
507
|
+
confidence: number;
|
|
508
|
+
}
|
|
509
|
+
export interface ClassifierScoreAnswer {
|
|
510
|
+
type: "score";
|
|
511
|
+
score: number;
|
|
512
|
+
confidence: number;
|
|
513
|
+
}
|
|
514
|
+
export interface ClassifierBoolAnswer {
|
|
515
|
+
type: "bool";
|
|
516
|
+
probability: number;
|
|
517
|
+
}
|
|
518
|
+
export type ClassifierAnswer = ClassifierChoiceAnswer | ClassifierScoreAnswer | ClassifierBoolAnswer;
|
|
519
|
+
export type ClassifierStopReason = "stop" | "error" | "aborted";
|
|
520
|
+
export interface ClassifierResult {
|
|
521
|
+
api: ClassifierApi;
|
|
522
|
+
provider: ProviderId;
|
|
523
|
+
model: string;
|
|
524
|
+
answers: Record<string, ClassifierAnswer>;
|
|
525
|
+
stopReason: ClassifierStopReason;
|
|
526
|
+
errorMessage?: string;
|
|
527
|
+
timestamp: number;
|
|
528
|
+
}
|
|
427
529
|
import type { TSchema } from "typebox";
|
|
428
530
|
/** OpenAI grammar variants for constrained sampling. */
|
|
429
531
|
export type GrammarFormat = "openai_lark" | "openai_regex";
|
|
@@ -448,11 +550,31 @@ export interface Tool<TParameters extends TSchema = TSchema> {
|
|
|
448
550
|
parameters: TParameters;
|
|
449
551
|
constrainedSampling?: false | ConstrainedSamplingConfig;
|
|
450
552
|
}
|
|
553
|
+
export interface ToolReference {
|
|
554
|
+
name: string;
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Request input accepted by the public stream entry points (`Models.stream()`,
|
|
558
|
+
* `streamSimple()`, ...). `systemPrompt` and `tools` are shorthand for a leading
|
|
559
|
+
* system message; `normalizeContext()` folds them into one before the request
|
|
560
|
+
* reaches a provider.
|
|
561
|
+
*/
|
|
451
562
|
export interface Context {
|
|
452
563
|
systemPrompt?: string;
|
|
453
564
|
messages: Message[];
|
|
454
565
|
tools?: Tool[];
|
|
455
566
|
}
|
|
567
|
+
declare const transcriptContextBrand: unique symbol;
|
|
568
|
+
/**
|
|
569
|
+
* Normalized request context passed to providers and API implementations. The
|
|
570
|
+
* prompt and tool declarations are carried by the transcript's system messages.
|
|
571
|
+
* Only `normalizeContext()` produces this type, so a raw `Context` cannot reach
|
|
572
|
+
* provider code by accident.
|
|
573
|
+
*/
|
|
574
|
+
export type TranscriptContext = {
|
|
575
|
+
messages: Message[];
|
|
576
|
+
readonly [transcriptContextBrand]: true;
|
|
577
|
+
};
|
|
456
578
|
/**
|
|
457
579
|
* Event protocol for AssistantMessageEventStream.
|
|
458
580
|
*
|
|
@@ -586,14 +708,16 @@ export interface OpenAICompletionsCompat {
|
|
|
586
708
|
supportsThinkingTokenBudget?: boolean;
|
|
587
709
|
/** Whether the provider supports OpenAI custom tools with Lark/regex grammar formats. When false, grammar-constrained tools fall back to normal function tools. Default: false; the generated model catalog enables it for capable models. */
|
|
588
710
|
supportsOpenAIGrammarTools?: boolean;
|
|
589
|
-
/** Whether the
|
|
711
|
+
/** Whether the exact model accepts system or developer messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false; the generated model catalog enables it for verified models. */
|
|
712
|
+
supportsMidConvoSystemMessages?: boolean;
|
|
713
|
+
/** Whether system messages can introduce additional tools mid-conversation. Requires `supportsMidConvoSystemMessages`. Default: false; the generated model catalog enables it for capable models. */
|
|
714
|
+
supportsMidConvoToolAdditions?: boolean;
|
|
715
|
+
/** Whether the provider supports the `strict` field in tool definitions. Default: false; generated capable models enable it explicitly. */
|
|
590
716
|
supportsStrictMode?: boolean;
|
|
591
717
|
/** Cache control convention for prompt caching. "anthropic" applies Anthropic-style `cache_control` markers to the system prompt, last tool definition, and last user, assistant, or tool-result text content. */
|
|
592
718
|
cacheControlFormat?: "anthropic";
|
|
593
719
|
/** Whether to send session-affinity data from `options.sessionId`. Default: true for OpenRouter endpoints, false otherwise. */
|
|
594
720
|
sendSessionAffinityHeaders?: boolean;
|
|
595
|
-
/** Provider-specific deferred tool serialization mode. */
|
|
596
|
-
deferredToolsMode?: "kimi";
|
|
597
721
|
/** Session-affinity header format: `openai` sends `session_id`, `x-client-request-id`, and `x-session-affinity`; `openai-nosession` sends `x-client-request-id` and `x-session-affinity`; `openrouter` sends `x-session-id`. Does not affect the `prompt_cache_key` body param, which is governed by cache retention. Default: auto-detected. */
|
|
598
722
|
sessionAffinityFormat?: SessionAffinityFormat;
|
|
599
723
|
/** Whether the provider supports long prompt cache retention (`prompt_cache_retention: "24h"` or Anthropic-style `cache_control.ttl: "1h"`, depending on format). Default: true. */
|
|
@@ -610,6 +734,8 @@ export interface OpenAICompletionsCompat {
|
|
|
610
734
|
export interface OpenAIResponsesCompat {
|
|
611
735
|
/** Whether the provider supports the `developer` role (vs `system`). Default: true. */
|
|
612
736
|
supportsDeveloperRole?: boolean;
|
|
737
|
+
/** Whether the exact model accepts developer or system messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false; the generated model catalog enables it for verified models. */
|
|
738
|
+
supportsMidConvoSystemMessages?: boolean;
|
|
613
739
|
/** Session-affinity header format: `openai` sends `session_id` and `x-client-request-id`; `openai-nosession` sends `x-client-request-id`; `openrouter` sends `x-session-id`. Does not affect the `prompt_cache_key` body param, which is governed by cache retention. Default: auto-detected. */
|
|
614
740
|
sessionAffinityFormat?: SessionAffinityFormat;
|
|
615
741
|
/** Whether the provider supports long prompt cache retention. This uses `prompt_cache_options.ttl: "30m"` on GPT-5.6+ and `prompt_cache_retention: "24h"` on earlier models. Default: true. */
|
|
@@ -620,7 +746,7 @@ export interface OpenAIResponsesCompat {
|
|
|
620
746
|
supportsOpenAIGrammarTools?: boolean;
|
|
621
747
|
/** Whether the model supports message-anchored `additional_tools` input items. Default: false. */
|
|
622
748
|
supportsAdditionalTools?: boolean;
|
|
623
|
-
/** Whether the model supports client-executed tool search for
|
|
749
|
+
/** Whether the model supports client-executed tool search for transcript-anchored additions. Default: false. */
|
|
624
750
|
supportsToolSearch?: boolean;
|
|
625
751
|
/** Whether the model accepts `prompt_cache_options` (OpenAI GPT-5.6+ prompt caching). Older OpenAI models reject the parameter. Default: false. */
|
|
626
752
|
supportsExplicitPromptCacheMode?: boolean;
|
|
@@ -679,6 +805,10 @@ export interface AnthropicMessagesCompat {
|
|
|
679
805
|
supportsStrictTools?: boolean;
|
|
680
806
|
/** Whether the exact model transport supports effort-only system messages and thinking binding controls. Default: false. */
|
|
681
807
|
supportsMidConvoEffort?: boolean;
|
|
808
|
+
/** Whether the exact model accepts system-role messages inside the conversation. When false, later system messages are folded into the top-level system prompt. Default: false. */
|
|
809
|
+
supportsMidConvoSystemMessages?: boolean;
|
|
810
|
+
/** Whether the exact model accepts mid-conversation `tool_addition` and `tool_removal` blocks. Requires `supportsMidConvoSystemMessages`. Default: false. */
|
|
811
|
+
supportsMidConvoToolChanges?: boolean;
|
|
682
812
|
/**
|
|
683
813
|
* Models Anthropic accepts in `fallbacks` for server-side refusal fallback,
|
|
684
814
|
* with local pricing metadata for returned fallback responses. When absent or
|
|
@@ -686,12 +816,6 @@ export interface AnthropicMessagesCompat {
|
|
|
686
816
|
* with no permitted fallback targets.
|
|
687
817
|
*/
|
|
688
818
|
allowedFallbackModels?: AnthropicAllowedFallbackModel[];
|
|
689
|
-
/**
|
|
690
|
-
* Whether the provider supports deferred tools loaded by `tool_reference`
|
|
691
|
-
* blocks in tool results. Default: true for first-party Anthropic models
|
|
692
|
-
* except Haiku and models older than Claude 4.5; false for other providers.
|
|
693
|
-
*/
|
|
694
|
-
supportsToolReferences?: boolean;
|
|
695
819
|
/**
|
|
696
820
|
* Whether the model runs Anthropic's preserved-thinking *conversation* check, which
|
|
697
821
|
* rejects a request whose `system` prompt, `tools`, or earlier messages changed since a
|
|
@@ -746,6 +870,11 @@ export interface BedrockCompat {
|
|
|
746
870
|
*/
|
|
747
871
|
supportsTemperature?: boolean;
|
|
748
872
|
}
|
|
873
|
+
/** Compatibility settings for the Mistral chat API. */
|
|
874
|
+
export interface MistralConversationsCompat {
|
|
875
|
+
/** Whether the exact model accepts system messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false. */
|
|
876
|
+
supportsMidConvoSystemMessages?: boolean;
|
|
877
|
+
}
|
|
749
878
|
/**
|
|
750
879
|
* OpenRouter provider routing preferences.
|
|
751
880
|
* Controls which upstream providers OpenRouter routes requests to.
|
|
@@ -839,6 +968,26 @@ export interface ModelCost extends ModelCostRates {
|
|
|
839
968
|
/** Request-wide pricing tiers. The highest matching input threshold applies to the full request. */
|
|
840
969
|
tiers?: ModelCostTier[];
|
|
841
970
|
}
|
|
971
|
+
export interface ModelImageResizeOptions {
|
|
972
|
+
maxWidth?: number;
|
|
973
|
+
maxHeight?: number;
|
|
974
|
+
/** Maximum base64-encoded payload size in bytes. */
|
|
975
|
+
maxBytes?: number;
|
|
976
|
+
jpegQuality?: number;
|
|
977
|
+
}
|
|
978
|
+
export interface ModelImageInputLimits {
|
|
979
|
+
/** Cache-safe resize profile applied before a new image enters conversation history. */
|
|
980
|
+
resize?: ModelImageResizeOptions;
|
|
981
|
+
/** Maximum images accepted in one provider message. */
|
|
982
|
+
maxPerMessage?: number;
|
|
983
|
+
/** Maximum images accepted across one provider request. */
|
|
984
|
+
maxPerRequest?: number;
|
|
985
|
+
}
|
|
986
|
+
export interface ModelInputLimits {
|
|
987
|
+
/** Maximum serialized provider request size in bytes. */
|
|
988
|
+
maxRequestBytes?: number;
|
|
989
|
+
images?: ModelImageInputLimits;
|
|
990
|
+
}
|
|
842
991
|
/**
|
|
843
992
|
* Explicit routing metadata that marks a model as the fast-inference variant of another model.
|
|
844
993
|
*
|
|
@@ -853,42 +1002,69 @@ export interface ModelFastRoute {
|
|
|
853
1002
|
upstreamModelId: string;
|
|
854
1003
|
/** Service tier to send with the request. Set only for providers that route fast traffic through an OpenAI-style tier. */
|
|
855
1004
|
serviceTier?: "priority";
|
|
1005
|
+
/** Anthropic inference speed to send with the request. Set only for Claude models that support fast mode. */
|
|
1006
|
+
speed?: "fast";
|
|
856
1007
|
}
|
|
857
|
-
|
|
1008
|
+
/** Fields shared by every catalog entry, regardless of what you can do with it. */
|
|
1009
|
+
export interface BaseModel<TApi extends string> {
|
|
858
1010
|
id: string;
|
|
859
1011
|
name: string;
|
|
860
1012
|
api: TApi;
|
|
861
1013
|
provider: ProviderId;
|
|
862
1014
|
baseUrl: string;
|
|
1015
|
+
input: ("text" | "image" | "pdf")[];
|
|
1016
|
+
/** Provider input limits and cache-safe preprocessing metadata. */
|
|
1017
|
+
inputLimits?: ModelInputLimits;
|
|
1018
|
+
cost: ModelCost;
|
|
1019
|
+
headers?: Record<string, string>;
|
|
1020
|
+
}
|
|
1021
|
+
/** Chat model: usable with `stream()` and friends. */
|
|
1022
|
+
export interface Model<TApi extends Api> extends BaseModel<TApi> {
|
|
1023
|
+
/**
|
|
1024
|
+
* Optional: chat is the default model type, so models without `type` are chat
|
|
1025
|
+
* models. Narrow mixed model lists with `isModelType()` instead of comparing
|
|
1026
|
+
* `type` directly.
|
|
1027
|
+
*/
|
|
1028
|
+
type?: "chat";
|
|
863
1029
|
reasoning: boolean;
|
|
864
1030
|
/**
|
|
865
1031
|
* Maps pi thinking levels to provider/model-specific values.
|
|
866
1032
|
* Missing keys use provider defaults. null marks a level as unsupported.
|
|
867
1033
|
*/
|
|
868
1034
|
thinkingLevelMap?: ThinkingLevelMap;
|
|
869
|
-
/**
|
|
870
|
-
|
|
871
|
-
* a document block — the Anthropic Messages and Amazon Bedrock Converse paths — so a provider
|
|
872
|
-
* that publishes PDF support but has no such path here stays at `["text", "image"]`.
|
|
873
|
-
*/
|
|
874
|
-
input: ("text" | "image" | "pdf")[];
|
|
875
|
-
cost: ModelCost;
|
|
1035
|
+
/** Prompt cache lifetimes per retention tier. Unset when the provider's cache behavior is unknown. */
|
|
1036
|
+
promptCache?: ModelPromptCache;
|
|
876
1037
|
contextWindow: number;
|
|
877
1038
|
maxTokens: number;
|
|
878
1039
|
/** Default sampling parameters for this model. See {@link StreamOptions.samplingParams}; per-request keys override these. */
|
|
879
1040
|
samplingParams?: Record<string, unknown>;
|
|
880
|
-
headers?: Record<string, string>;
|
|
881
1041
|
/**
|
|
882
1042
|
* Marks this model as the fast-inference variant of {@link ModelFastRoute.baseModelId} and carries the
|
|
883
1043
|
* upstream routing it needs. Absent on every normal model.
|
|
884
1044
|
*/
|
|
885
1045
|
fastRoute?: ModelFastRoute;
|
|
886
1046
|
/** Compatibility overrides for OpenAI-compatible APIs. If not set, auto-detected from baseUrl. */
|
|
887
|
-
compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat : TApi extends "openai-responses" | "azure-openai-responses" | "openai-codex-responses" ? OpenAIResponsesCompat : TApi extends "anthropic-messages" ? AnthropicMessagesCompat : TApi extends "bedrock-converse-stream" ? BedrockCompat : never;
|
|
1047
|
+
compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat : TApi extends "openai-responses" | "azure-openai-responses" | "openai-codex-responses" ? OpenAIResponsesCompat : TApi extends "anthropic-messages" ? AnthropicMessagesCompat : TApi extends "bedrock-converse-stream" ? BedrockCompat : TApi extends "mistral-conversations" ? MistralConversationsCompat : never;
|
|
888
1048
|
}
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
1049
|
+
/** Image-generation model: usable with `generateImages()` only. */
|
|
1050
|
+
export interface ImageModel<TApi extends ImageApi> extends BaseModel<TApi> {
|
|
1051
|
+
type: "image";
|
|
1052
|
+
/** Output modalities. Always includes `"image"`; `"text"` means the model can also return text blocks. */
|
|
892
1053
|
output: ("text" | "image")[];
|
|
893
1054
|
}
|
|
1055
|
+
/** Structured classifier model: usable with `classify()` only. */
|
|
1056
|
+
export interface ClassifierModel<TApi extends ClassifierApi> extends BaseModel<TApi> {
|
|
1057
|
+
type: "classifier";
|
|
1058
|
+
contextWindow: number;
|
|
1059
|
+
}
|
|
1060
|
+
/** Model shape for each model type. */
|
|
1061
|
+
export interface ModelTypeMap {
|
|
1062
|
+
chat: Model<Api>;
|
|
1063
|
+
image: ImageModel<ImageApi>;
|
|
1064
|
+
classifier: ClassifierModel<ClassifierApi>;
|
|
1065
|
+
}
|
|
1066
|
+
/** What a catalog entry is for. Decides which `Models` operation accepts it. */
|
|
1067
|
+
export type ModelType = keyof ModelTypeMap;
|
|
1068
|
+
/** Anything a provider can list. Narrow with `isModelType()`. */
|
|
1069
|
+
export type AnyModel = ModelTypeMap[ModelType];
|
|
894
1070
|
//# sourceMappingURL=types.d.ts.map
|