@fractaal/pi-ai 0.86.9 → 1.6.0
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/README.md +154 -78
- package/dist/api/anthropic-messages.d.ts.map +1 -1
- package/dist/api/anthropic-messages.js +380 -144
- 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 +9 -11
- 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 +184 -121
- package/dist/api/bedrock-converse-stream.js.map +1 -1
- package/dist/api/bedrock-converse-stream.lazy.d.ts +7 -0
- package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -1
- package/dist/api/bedrock-converse-stream.lazy.js +18 -5
- package/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
- package/dist/api/classifier-shared.d.ts +21 -0
- package/dist/api/classifier-shared.d.ts.map +1 -0
- package/dist/api/classifier-shared.js +99 -0
- package/dist/api/classifier-shared.js.map +1 -0
- package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -1
- package/dist/api/cloudflare-workers-ai-system-one.js +10 -1
- package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -1
- package/dist/api/constrained-sampling.d.ts +15 -1
- package/dist/api/constrained-sampling.d.ts.map +1 -1
- package/dist/api/constrained-sampling.js +51 -18
- 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 +4 -10
- package/dist/api/google-generative-ai.js.map +1 -1
- package/dist/api/google-shared.d.ts +2 -1
- package/dist/api/google-shared.d.ts.map +1 -1
- package/dist/api/google-shared.js +60 -3
- 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 +9 -15
- package/dist/api/google-vertex.js.map +1 -1
- package/dist/api/lazy.d.ts +7 -2
- package/dist/api/lazy.d.ts.map +1 -1
- package/dist/api/lazy.js +33 -12
- package/dist/api/lazy.js.map +1 -1
- package/dist/api/llama-cpp-classify.d.ts.map +1 -1
- package/dist/api/llama-cpp-classify.js +4 -1
- package/dist/api/llama-cpp-classify.js.map +1 -1
- package/dist/api/mistral-conversations.d.ts.map +1 -1
- package/dist/api/mistral-conversations.js +50 -60
- 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 +30 -17
- package/dist/api/openai-codex-responses.js.map +1 -1
- package/dist/api/openai-completions.d.ts +2 -1
- package/dist/api/openai-completions.d.ts.map +1 -1
- package/dist/api/openai-completions.js +93 -90
- package/dist/api/openai-completions.js.map +1 -1
- package/dist/api/openai-decisions.d.ts +4 -0
- package/dist/api/openai-decisions.d.ts.map +1 -0
- package/dist/api/openai-decisions.js +162 -0
- package/dist/api/openai-decisions.js.map +1 -0
- package/dist/api/openai-decisions.lazy.d.ts +3 -0
- package/dist/api/openai-decisions.lazy.d.ts.map +1 -0
- package/dist/api/openai-decisions.lazy.js +4 -0
- package/dist/api/openai-decisions.lazy.js.map +1 -0
- package/dist/api/openai-responses-shared.d.ts +26 -0
- package/dist/api/openai-responses-shared.d.ts.map +1 -1
- package/dist/api/openai-responses-shared.js +132 -66
- 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 +42 -21
- package/dist/api/openai-responses.js.map +1 -1
- package/dist/api/openrouter-images.d.ts.map +1 -1
- package/dist/api/openrouter-images.js +5 -3
- package/dist/api/openrouter-images.js.map +1 -1
- package/dist/api/pi-messages.d.ts +2 -0
- package/dist/api/pi-messages.d.ts.map +1 -1
- package/dist/api/pi-messages.js +27 -12
- package/dist/api/pi-messages.js.map +1 -1
- package/dist/api/simple-options.d.ts +1 -0
- package/dist/api/simple-options.d.ts.map +1 -1
- package/dist/api/simple-options.js +18 -3
- package/dist/api/simple-options.js.map +1 -1
- package/dist/api/system-one-shared.d.ts +29 -3
- package/dist/api/system-one-shared.d.ts.map +1 -1
- package/dist/api/system-one-shared.js +54 -86
- package/dist/api/system-one-shared.js.map +1 -1
- package/dist/api/transform-messages.d.ts +16 -1
- package/dist/api/transform-messages.d.ts.map +1 -1
- package/dist/api/transform-messages.js +28 -15
- package/dist/api/transform-messages.js.map +1 -1
- package/dist/api/typesafe-system-one.d.ts.map +1 -1
- package/dist/api/typesafe-system-one.js +12 -1
- package/dist/api/typesafe-system-one.js.map +1 -1
- package/dist/auth/oauth/anthropic.d.ts.map +1 -1
- package/dist/auth/oauth/anthropic.js +14 -6
- package/dist/auth/oauth/anthropic.js.map +1 -1
- package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
- package/dist/auth/oauth/github-copilot.js +4 -11
- package/dist/auth/oauth/github-copilot.js.map +1 -1
- package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
- package/dist/auth/oauth/kimi-coding.js +4 -22
- package/dist/auth/oauth/kimi-coding.js.map +1 -1
- package/dist/auth/oauth/load.d.ts.map +1 -1
- package/dist/auth/oauth/load.js +5 -2
- package/dist/auth/oauth/load.js.map +1 -1
- package/dist/auth/oauth/meta.d.ts.map +1 -1
- package/dist/auth/oauth/meta.js +1 -14
- package/dist/auth/oauth/meta.js.map +1 -1
- package/dist/auth/oauth/openai-chatgpt.js +1 -1
- package/dist/auth/oauth/openai-chatgpt.js.map +1 -1
- package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
- package/dist/auth/oauth/openai-codex.js +4 -4
- package/dist/auth/oauth/openai-codex.js.map +1 -1
- package/dist/auth/oauth/radius.d.ts.map +1 -1
- package/dist/auth/oauth/radius.js +9 -3
- package/dist/auth/oauth/radius.js.map +1 -1
- package/dist/auth/oauth/trusted-url.d.ts +7 -0
- package/dist/auth/oauth/trusted-url.d.ts.map +1 -0
- package/dist/auth/oauth/trusted-url.js +12 -0
- package/dist/auth/oauth/trusted-url.js.map +1 -0
- package/dist/auth/types.d.ts +9 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/compat/extension-oauth-types.d.ts +4 -0
- package/dist/compat/extension-oauth-types.d.ts.map +1 -1
- package/dist/compat/extension-oauth-types.js.map +1 -1
- package/dist/env-api-keys.d.ts.map +1 -1
- package/dist/env-api-keys.js +1 -0
- package/dist/env-api-keys.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/lazy-bedrock-provider.d.ts +10 -0
- package/dist/lazy-bedrock-provider.d.ts.map +1 -0
- package/dist/lazy-bedrock-provider.js +13 -0
- package/dist/lazy-bedrock-provider.js.map +1 -0
- package/dist/lazy-oauth.d.ts +10 -0
- package/dist/lazy-oauth.d.ts.map +1 -0
- package/dist/lazy-oauth.js +23 -0
- package/dist/lazy-oauth.js.map +1 -0
- package/dist/models.d.ts +9 -0
- package/dist/models.d.ts.map +1 -1
- package/dist/models.generated.d.ts +4 -0
- package/dist/models.generated.d.ts.map +1 -1
- package/dist/models.generated.js +5 -1
- package/dist/models.generated.js.map +1 -1
- package/dist/models.js +28 -12
- package/dist/models.js.map +1 -1
- package/dist/providers/all.d.ts.map +1 -1
- package/dist/providers/all.js +2 -0
- package/dist/providers/all.js.map +1 -1
- package/dist/providers/amazon-bedrock.models.js +1 -1
- package/dist/providers/amazon-bedrock.models.js.map +1 -1
- package/dist/providers/ant-ling.models.js +1 -1
- package/dist/providers/ant-ling.models.js.map +1 -1
- package/dist/providers/anthropic.models.js +1 -1
- package/dist/providers/anthropic.models.js.map +1 -1
- package/dist/providers/azure.models.js +1 -1
- package/dist/providers/azure.models.js.map +1 -1
- package/dist/providers/baseten.models.js +1 -1
- package/dist/providers/baseten.models.js.map +1 -1
- package/dist/providers/cerebras.models.js +1 -1
- package/dist/providers/cerebras.models.js.map +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.js +1 -1
- package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
- package/dist/providers/cloudflare-workers-ai.models.js +1 -1
- package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
- package/dist/providers/compat-schema.d.ts +494 -0
- package/dist/providers/compat-schema.d.ts.map +1 -0
- package/dist/providers/compat-schema.js +447 -0
- package/dist/providers/compat-schema.js.map +1 -0
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/amazon-bedrock.json +1 -1
- package/dist/providers/data/anthropic.json +1 -1
- package/dist/providers/data/azure.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/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 -1
- 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-cn.json +1 -0
- 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 -1
- package/dist/providers/data/together.json +1 -1
- package/dist/providers/data/typesafe.json +1 -1
- 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.js +1 -1
- package/dist/providers/deepseek.models.js.map +1 -1
- package/dist/providers/faux.d.ts.map +1 -1
- package/dist/providers/faux.js +31 -9
- package/dist/providers/faux.js.map +1 -1
- package/dist/providers/fireworks.models.js +1 -1
- package/dist/providers/fireworks.models.js.map +1 -1
- package/dist/providers/github-copilot.d.ts +3 -1
- package/dist/providers/github-copilot.d.ts.map +1 -1
- package/dist/providers/github-copilot.js +13 -2
- package/dist/providers/github-copilot.js.map +1 -1
- package/dist/providers/github-copilot.models.js +1 -1
- package/dist/providers/github-copilot.models.js.map +1 -1
- package/dist/providers/google-vertex.models.js +1 -1
- package/dist/providers/google-vertex.models.js.map +1 -1
- package/dist/providers/google.models.js +1 -1
- package/dist/providers/google.models.js.map +1 -1
- package/dist/providers/groq.models.js +1 -1
- package/dist/providers/groq.models.js.map +1 -1
- package/dist/providers/huggingface.models.js +1 -1
- package/dist/providers/huggingface.models.js.map +1 -1
- package/dist/providers/kimi-coding.d.ts +1 -1
- package/dist/providers/kimi-coding.js +3 -3
- package/dist/providers/kimi-coding.js.map +1 -1
- package/dist/providers/kimi-coding.models.js +1 -1
- package/dist/providers/kimi-coding.models.js.map +1 -1
- package/dist/providers/meta.models.js +1 -1
- package/dist/providers/meta.models.js.map +1 -1
- package/dist/providers/minimax-cn.models.js +1 -1
- package/dist/providers/minimax-cn.models.js.map +1 -1
- package/dist/providers/minimax.models.js +1 -1
- package/dist/providers/minimax.models.js.map +1 -1
- package/dist/providers/mistral.models.js +1 -1
- package/dist/providers/mistral.models.js.map +1 -1
- package/dist/providers/model-schema.d.ts +91 -0
- package/dist/providers/model-schema.d.ts.map +1 -0
- package/dist/providers/model-schema.js +68 -0
- package/dist/providers/model-schema.js.map +1 -0
- package/dist/providers/moonshotai-cn.models.js +1 -1
- package/dist/providers/moonshotai-cn.models.js.map +1 -1
- package/dist/providers/moonshotai.models.js +1 -1
- package/dist/providers/moonshotai.models.js.map +1 -1
- package/dist/providers/nvidia.models.js +1 -1
- package/dist/providers/nvidia.models.js.map +1 -1
- package/dist/providers/openai-codex-catalog.d.ts.map +1 -1
- package/dist/providers/openai-codex-catalog.js +44 -44
- package/dist/providers/openai-codex-catalog.js.map +1 -1
- package/dist/providers/openai-codex.models.js +1 -1
- package/dist/providers/openai-codex.models.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +12 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openai.models.js +1 -1
- package/dist/providers/openai.models.js.map +1 -1
- package/dist/providers/opencode-go.d.ts +3 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +2 -0
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/opencode-go.models.js +1 -1
- package/dist/providers/opencode-go.models.js.map +1 -1
- package/dist/providers/opencode.js +1 -1
- package/dist/providers/opencode.js.map +1 -1
- package/dist/providers/opencode.models.js +1 -1
- package/dist/providers/opencode.models.js.map +1 -1
- package/dist/providers/openrouter-api.d.ts +40 -0
- package/dist/providers/openrouter-api.d.ts.map +1 -0
- package/dist/providers/openrouter-api.js +41 -0
- package/dist/providers/openrouter-api.js.map +1 -0
- package/dist/providers/openrouter.d.ts +11 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +52 -1
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/openrouter.models.js +1 -1
- package/dist/providers/openrouter.models.js.map +1 -1
- package/dist/providers/qwen-token-plan-cn.models.js +1 -1
- package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
- package/dist/providers/qwen-token-plan-individual-cn.d.ts +3 -0
- package/dist/providers/qwen-token-plan-individual-cn.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan-individual-cn.js +15 -0
- package/dist/providers/qwen-token-plan-individual-cn.js.map +1 -0
- package/dist/providers/qwen-token-plan-individual-cn.models.d.ts +6 -0
- package/dist/providers/qwen-token-plan-individual-cn.models.d.ts.map +1 -0
- package/dist/providers/qwen-token-plan-individual-cn.models.js +8 -0
- package/dist/providers/qwen-token-plan-individual-cn.models.js.map +1 -0
- package/dist/providers/qwen-token-plan-individual.models.js +1 -1
- package/dist/providers/qwen-token-plan-individual.models.js.map +1 -1
- package/dist/providers/qwen-token-plan.models.js +1 -1
- package/dist/providers/qwen-token-plan.models.js.map +1 -1
- package/dist/providers/radius-config.d.ts.map +1 -1
- package/dist/providers/radius-config.js +2 -1
- package/dist/providers/radius-config.js.map +1 -1
- package/dist/providers/radius.d.ts.map +1 -1
- package/dist/providers/radius.js +4 -12
- package/dist/providers/radius.js.map +1 -1
- package/dist/providers/radius.models.js +1 -1
- package/dist/providers/radius.models.js.map +1 -1
- package/dist/providers/schema-builders.d.ts +10 -0
- package/dist/providers/schema-builders.d.ts.map +1 -0
- package/dist/providers/schema-builders.js +18 -0
- package/dist/providers/schema-builders.js.map +1 -0
- package/dist/providers/together.models.js +1 -1
- package/dist/providers/together.models.js.map +1 -1
- package/dist/providers/typesafe.models.js +1 -1
- package/dist/providers/typesafe.models.js.map +1 -1
- package/dist/providers/vercel-ai-gateway.models.js +1 -1
- package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
- package/dist/providers/xai.models.js +1 -1
- package/dist/providers/xai.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.js +1 -1
- package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.js +1 -1
- package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.js +1 -1
- package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
- package/dist/providers/xiaomi.models.js +1 -1
- package/dist/providers/xiaomi.models.js.map +1 -1
- package/dist/providers/zai-coding-cn.models.js +1 -1
- package/dist/providers/zai-coding-cn.models.js.map +1 -1
- package/dist/providers/zai.models.js +1 -1
- package/dist/providers/zai.models.js.map +1 -1
- package/dist/telemetry.d.ts +288 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +192 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/types.d.ts +57 -310
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/error-body.d.ts +8 -0
- package/dist/utils/error-body.d.ts.map +1 -1
- package/dist/utils/error-body.js +30 -2
- package/dist/utils/error-body.js.map +1 -1
- package/dist/utils/estimate.js +1 -1
- package/dist/utils/estimate.js.map +1 -1
- package/dist/utils/event-stream.d.ts +10 -1
- package/dist/utils/event-stream.d.ts.map +1 -1
- package/dist/utils/event-stream.js +25 -0
- package/dist/utils/event-stream.js.map +1 -1
- package/dist/utils/identity.d.ts +65 -0
- package/dist/utils/identity.d.ts.map +1 -0
- package/dist/utils/identity.js +141 -0
- package/dist/utils/identity.js.map +1 -0
- package/dist/utils/json-parse.d.ts +10 -0
- package/dist/utils/json-parse.d.ts.map +1 -1
- package/dist/utils/json-parse.js +26 -1
- package/dist/utils/json-parse.js.map +1 -1
- package/dist/utils/model-operations.d.ts +3 -1
- package/dist/utils/model-operations.d.ts.map +1 -1
- package/dist/utils/model-operations.js +6 -0
- package/dist/utils/model-operations.js.map +1 -1
- package/dist/utils/openrouter-cost.d.ts +24 -0
- package/dist/utils/openrouter-cost.d.ts.map +1 -0
- package/dist/utils/openrouter-cost.js +34 -0
- package/dist/utils/openrouter-cost.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 +8 -1
- package/dist/utils/overflow.js.map +1 -1
- package/dist/utils/provider-retry.d.ts +2 -0
- package/dist/utils/provider-retry.d.ts.map +1 -1
- package/dist/utils/provider-retry.js +2 -0
- package/dist/utils/provider-retry.js.map +1 -1
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +29 -10
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/streaming-json.d.ts +84 -0
- package/dist/utils/streaming-json.d.ts.map +1 -0
- package/dist/utils/streaming-json.js +513 -0
- package/dist/utils/streaming-json.js.map +1 -0
- package/dist/utils/{typebox-helpers.d.ts → string-enum.d.ts} +5 -5
- package/dist/utils/string-enum.d.ts.map +1 -0
- package/dist/utils/{typebox-helpers.js → string-enum.js} +5 -6
- package/dist/utils/string-enum.js.map +1 -0
- package/dist/utils/text.d.ts +7 -0
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -1
- package/dist/utils/transcript.d.ts +23 -9
- package/dist/utils/transcript.d.ts.map +1 -1
- package/dist/utils/transcript.js +30 -19
- package/dist/utils/transcript.js.map +1 -1
- package/dist/utils/validation.d.ts +5 -3
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +27 -445
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +3 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +19 -10
- package/dist/utils/assistant-message-frame.d.ts +0 -77
- package/dist/utils/assistant-message-frame.d.ts.map +0 -1
- package/dist/utils/assistant-message-frame.js +0 -425
- package/dist/utils/assistant-message-frame.js.map +0 -1
- package/dist/utils/pi-user-agent.d.ts +0 -2
- package/dist/utils/pi-user-agent.d.ts.map +0 -1
- package/dist/utils/pi-user-agent.js +0 -12
- package/dist/utils/pi-user-agent.js.map +0 -1
- package/dist/utils/typebox-helpers.d.ts.map +0 -1
- package/dist/utils/typebox-helpers.js.map +0 -1
|
@@ -5,12 +5,63 @@ import { typesafeSystemOneApi } from "../api/typesafe-system-one.lazy.js";
|
|
|
5
5
|
import { envApiKeyAuth, lazyOAuth } from "../auth/helpers.js";
|
|
6
6
|
import { loadOpenRouterOAuth } from "../auth/oauth/load.js";
|
|
7
7
|
import { createProvider } from "../models.js";
|
|
8
|
+
import { isModelType } from "../utils/model-operations.js";
|
|
8
9
|
import { OPENROUTER_CLASSIFIER_MODELS, OPENROUTER_IMAGE_MODELS, OPENROUTER_MODELS } from "./openrouter.models.js";
|
|
10
|
+
import { openRouterCost } from "./openrouter-api.js";
|
|
11
|
+
const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
12
|
+
const OPENROUTER_USER_MODELS_TIMEOUT_MS = 15_000;
|
|
13
|
+
/**
|
|
14
|
+
* Restrict an OpenRouter catalog to the chat models the key may use, with the key's limits and
|
|
15
|
+
* prices from `GET /models/user`. Image and classifier models are returned unchanged. A missing
|
|
16
|
+
* limit keeps the catalog value. The request uses the provider's configured base URL, so regional
|
|
17
|
+
* endpoints such as `https://us.openrouter.ai/api/v1` apply their region's filtering. When the
|
|
18
|
+
* endpoint rejects the key (401/403) or does not exist (404), for example with a proxy configured
|
|
19
|
+
* in models.json, the catalog is returned unchanged.
|
|
20
|
+
*/
|
|
21
|
+
export async function personalizeOpenRouterCatalog(catalog, context) {
|
|
22
|
+
const key = context.credential?.type === "oauth" ? context.credential.access : context.credential?.key;
|
|
23
|
+
if (!key)
|
|
24
|
+
return catalog;
|
|
25
|
+
const response = await fetch(`${(context.baseUrl ?? OPENROUTER_BASE_URL).replace(/\/+$/, "")}/models/user`, {
|
|
26
|
+
headers: { accept: "application/json", authorization: `Bearer ${key}` },
|
|
27
|
+
signal: AbortSignal.any([context.signal, AbortSignal.timeout(OPENROUTER_USER_MODELS_TIMEOUT_MS)]),
|
|
28
|
+
});
|
|
29
|
+
if (response.status === 401 || response.status === 403 || response.status === 404)
|
|
30
|
+
return catalog;
|
|
31
|
+
if (!response.ok)
|
|
32
|
+
throw new Error(`OpenRouter model list request failed: ${response.status}`);
|
|
33
|
+
const body = await response.json();
|
|
34
|
+
if (typeof body !== "object" || body === null || !("data" in body) || !Array.isArray(body.data)) {
|
|
35
|
+
throw new Error("Invalid OpenRouter model list response");
|
|
36
|
+
}
|
|
37
|
+
const allowed = new Map();
|
|
38
|
+
for (const entry of body.data) {
|
|
39
|
+
if (typeof entry === "object" && entry !== null && "id" in entry && typeof entry.id === "string") {
|
|
40
|
+
allowed.set(entry.id, entry);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return catalog.flatMap((model) => {
|
|
44
|
+
if (!isModelType(model, "chat"))
|
|
45
|
+
return [model];
|
|
46
|
+
const entry = allowed.get(model.id);
|
|
47
|
+
if (!entry)
|
|
48
|
+
return [];
|
|
49
|
+
return [
|
|
50
|
+
{
|
|
51
|
+
...model,
|
|
52
|
+
// `||`: OpenRouter reports a missing limit as absent, null or 0, like the generator's fallback.
|
|
53
|
+
contextWindow: entry.top_provider?.context_length || entry.context_length || model.contextWindow,
|
|
54
|
+
maxTokens: entry.top_provider?.max_completion_tokens || model.maxTokens,
|
|
55
|
+
cost: entry.pricing ? openRouterCost(entry.pricing) : model.cost,
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
});
|
|
59
|
+
}
|
|
9
60
|
export function openrouterProvider() {
|
|
10
61
|
return createProvider({
|
|
11
62
|
id: "openrouter",
|
|
12
63
|
name: "OpenRouter",
|
|
13
|
-
baseUrl:
|
|
64
|
+
baseUrl: OPENROUTER_BASE_URL,
|
|
14
65
|
auth: {
|
|
15
66
|
apiKey: envApiKeyAuth("OpenRouter API key", ["OPENROUTER_API_KEY"]),
|
|
16
67
|
oauth: lazyOAuth({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"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","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openrouterImagesApi } from \"../api/openrouter-images.lazy.ts\";\nimport { typesafeSystemOneApi } from \"../api/typesafe-system-one.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadOpenRouterOAuth } from \"../auth/oauth/load.ts\";\nimport { createProvider, type Provider, type RefreshModelsContext } from \"../models.ts\";\nimport type { AnyModel } from \"../types.ts\";\nimport { isModelType } from \"../utils/model-operations.ts\";\nimport { OPENROUTER_CLASSIFIER_MODELS, OPENROUTER_IMAGE_MODELS, OPENROUTER_MODELS } from \"./openrouter.models.ts\";\nimport { type OpenRouterModel, openRouterCost } from \"./openrouter-api.ts\";\n\nconst OPENROUTER_BASE_URL = \"https://openrouter.ai/api/v1\";\nconst OPENROUTER_USER_MODELS_TIMEOUT_MS = 15_000;\n\n/**\n * Restrict an OpenRouter catalog to the chat models the key may use, with the key's limits and\n * prices from `GET /models/user`. Image and classifier models are returned unchanged. A missing\n * limit keeps the catalog value. The request uses the provider's configured base URL, so regional\n * endpoints such as `https://us.openrouter.ai/api/v1` apply their region's filtering. When the\n * endpoint rejects the key (401/403) or does not exist (404), for example with a proxy configured\n * in models.json, the catalog is returned unchanged.\n */\nexport async function personalizeOpenRouterCatalog(\n\tcatalog: readonly AnyModel[],\n\tcontext: RefreshModelsContext,\n): Promise<readonly AnyModel[]> {\n\tconst key = context.credential?.type === \"oauth\" ? context.credential.access : context.credential?.key;\n\tif (!key) return catalog;\n\tconst response = await fetch(`${(context.baseUrl ?? OPENROUTER_BASE_URL).replace(/\\/+$/, \"\")}/models/user`, {\n\t\theaders: { accept: \"application/json\", authorization: `Bearer ${key}` },\n\t\tsignal: AbortSignal.any([context.signal, AbortSignal.timeout(OPENROUTER_USER_MODELS_TIMEOUT_MS)]),\n\t});\n\tif (response.status === 401 || response.status === 403 || response.status === 404) return catalog;\n\tif (!response.ok) throw new Error(`OpenRouter model list request failed: ${response.status}`);\n\tconst body: unknown = await response.json();\n\tif (typeof body !== \"object\" || body === null || !(\"data\" in body) || !Array.isArray(body.data)) {\n\t\tthrow new Error(\"Invalid OpenRouter model list response\");\n\t}\n\tconst allowed = new Map<string, OpenRouterModel>();\n\tfor (const entry of body.data as unknown[]) {\n\t\tif (typeof entry === \"object\" && entry !== null && \"id\" in entry && typeof entry.id === \"string\") {\n\t\t\tallowed.set(entry.id, entry as OpenRouterModel);\n\t\t}\n\t}\n\treturn catalog.flatMap((model): AnyModel[] => {\n\t\tif (!isModelType(model, \"chat\")) return [model];\n\t\tconst entry = allowed.get(model.id);\n\t\tif (!entry) return [];\n\t\treturn [\n\t\t\t{\n\t\t\t\t...model,\n\t\t\t\t// `||`: OpenRouter reports a missing limit as absent, null or 0, like the generator's fallback.\n\t\t\t\tcontextWindow: entry.top_provider?.context_length || entry.context_length || model.contextWindow,\n\t\t\t\tmaxTokens: entry.top_provider?.max_completion_tokens || model.maxTokens,\n\t\t\t\tcost: entry.pricing ? openRouterCost(entry.pricing) : model.cost,\n\t\t\t},\n\t\t];\n\t});\n}\n\nexport function openrouterProvider(): Provider<\"anthropic-messages\" | \"openai-completions\"> {\n\treturn createProvider<\"anthropic-messages\" | \"openai-completions\">({\n\t\tid: \"openrouter\",\n\t\tname: \"OpenRouter\",\n\t\tbaseUrl: OPENROUTER_BASE_URL,\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"OpenRouter API key\", [\"OPENROUTER_API_KEY\"]),\n\t\t\toauth: lazyOAuth({\n\t\t\t\tname: \"OpenRouter OAuth\",\n\t\t\t\tloginLabel: \"Sign in with OpenRouter\",\n\t\t\t\tload: loadOpenRouterOAuth,\n\t\t\t}),\n\t\t},\n\t\tmodels: [\n\t\t\t...Object.values(OPENROUTER_MODELS),\n\t\t\t...Object.values(OPENROUTER_IMAGE_MODELS),\n\t\t\t...Object.values(OPENROUTER_CLASSIFIER_MODELS),\n\t\t],\n\t\tapi: {\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t},\n\t\timages: { \"openrouter-images\": openrouterImagesApi() },\n\t\t// OpenRouter serves TypeSafe's System One protocol at /api/v1/systemone.\n\t\tclassifiers: { \"typesafe-system-one\": typesafeSystemOneApi() },\n\t});\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/openrouter.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.models.js","sourceRoot":"","sources":["../../src/providers/openrouter.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"openrouter.models.js","sourceRoot":"","sources":["../../src/providers/openrouter.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,iBAAiB,GAC7B,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GACnC,wBAAwB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,4BAA4B,GACxC,6BAA6B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/openrouter.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const OPENROUTER_MODELS: ChatModelCatalog<typeof values, \"openrouter\"> =\n\tflattenChatModelCatalog(\"openrouter\", values);\n\nexport const OPENROUTER_IMAGE_MODELS: ImageModelCatalog<typeof values, \"openrouter\"> =\n\tflattenImageModelCatalog(\"openrouter\", values);\n\nexport const OPENROUTER_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"openrouter\"> =\n\tflattenClassifierModelCatalog(\"openrouter\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/qwen-token-plan-cn.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"qwen-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,yBAAyB,GACrC,uBAAuB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,+BAA+B,GAC3C,wBAAwB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,oCAAoC,GAChD,6BAA6B,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/qwen-token-plan-cn.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const QWEN_TOKEN_PLAN_CN_MODELS: ChatModelCatalog<typeof values, \"qwen-token-plan-cn\"> =\n\tflattenChatModelCatalog(\"qwen-token-plan-cn\", values);\n\nexport const QWEN_TOKEN_PLAN_CN_IMAGE_MODELS: ImageModelCatalog<typeof values, \"qwen-token-plan-cn\"> =\n\tflattenImageModelCatalog(\"qwen-token-plan-cn\", values);\n\nexport const QWEN_TOKEN_PLAN_CN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"qwen-token-plan-cn\"> =\n\tflattenClassifierModelCatalog(\"qwen-token-plan-cn\", values);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen-token-plan-individual-cn.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual-cn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,iCAAiC,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CASlF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
|
|
2
|
+
import { envApiKeyAuth } from "../auth/helpers.js";
|
|
3
|
+
import { createProvider } from "../models.js";
|
|
4
|
+
import { QWEN_TOKEN_PLAN_INDIVIDUAL_CN_MODELS } from "./qwen-token-plan-individual-cn.models.js";
|
|
5
|
+
export function qwenTokenPlanIndividualCnProvider() {
|
|
6
|
+
return createProvider({
|
|
7
|
+
id: "qwen-token-plan-individual-cn",
|
|
8
|
+
name: "Qwen Token Plan Individual CN",
|
|
9
|
+
baseUrl: "https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
|
|
10
|
+
auth: { apiKey: envApiKeyAuth("Qwen Token Plan Individual CN API key", ["QWEN_TOKEN_PLAN_CN_API_KEY"]) },
|
|
11
|
+
models: Object.values(QWEN_TOKEN_PLAN_INDIVIDUAL_CN_MODELS),
|
|
12
|
+
api: openAICompletionsApi(),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=qwen-token-plan-individual-cn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen-token-plan-individual-cn.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual-cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AAEjG,MAAM,UAAU,iCAAiC;IAChD,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,+BAA+B;QACnC,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE,oEAAoE;QAC7E,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,uCAAuC,EAAE,CAAC,4BAA4B,CAAC,CAAC,EAAE;QACxG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAAC;QAC3D,GAAG,EAAE,oBAAoB,EAAE;KAC3B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { QWEN_TOKEN_PLAN_INDIVIDUAL_CN_MODELS } from \"./qwen-token-plan-individual-cn.models.ts\";\n\nexport function qwenTokenPlanIndividualCnProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"qwen-token-plan-individual-cn\",\n\t\tname: \"Qwen Token Plan Individual CN\",\n\t\tbaseUrl: \"https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1\",\n\t\tauth: { apiKey: envApiKeyAuth(\"Qwen Token Plan Individual CN API key\", [\"QWEN_TOKEN_PLAN_CN_API_KEY\"]) },\n\t\tmodels: Object.values(QWEN_TOKEN_PLAN_INDIVIDUAL_CN_MODELS),\n\t\tapi: openAICompletionsApi(),\n\t});\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import values from "./data/qwen-token-plan-individual-cn.json";
|
|
2
|
+
import { type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from "../model-catalog.ts";
|
|
3
|
+
export declare const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_MODELS: ChatModelCatalog<typeof values, "qwen-token-plan-individual-cn">;
|
|
4
|
+
export declare const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_IMAGE_MODELS: ImageModelCatalog<typeof values, "qwen-token-plan-individual-cn">;
|
|
5
|
+
export declare const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "qwen-token-plan-individual-cn">;
|
|
6
|
+
//# sourceMappingURL=qwen-token-plan-individual-cn.models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen-token-plan-individual-cn.models.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual-cn.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,2CAA2C,CAAuB;AACrF,OAAO,EAAoF,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEnM,eAAO,MAAM,oCAAoC,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,+BAA+B,CACjD,CAAC;AAElE,eAAO,MAAM,0CAA0C,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,+BAA+B,CACvD,CAAC;AAEnE,eAAO,MAAM,+CAA+C,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,+BAA+B,CAC5D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
|
+
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
|
+
import values from "./data/qwen-token-plan-individual-cn.json" with { type: "json" };
|
|
4
|
+
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
5
|
+
export const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_MODELS = flattenChatModelCatalog("qwen-token-plan-individual-cn", values);
|
|
6
|
+
export const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_IMAGE_MODELS = flattenImageModelCatalog("qwen-token-plan-individual-cn", values);
|
|
7
|
+
export const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_CLASSIFIER_MODELS = flattenClassifierModelCatalog("qwen-token-plan-individual-cn", values);
|
|
8
|
+
//# sourceMappingURL=qwen-token-plan-individual-cn.models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen-token-plan-individual-cn.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual-cn.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,2CAA2C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,oCAAoC,GAChD,uBAAuB,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,0CAA0C,GACtD,wBAAwB,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,+CAA+C,GAC3D,6BAA6B,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/qwen-token-plan-individual-cn.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_MODELS: ChatModelCatalog<typeof values, \"qwen-token-plan-individual-cn\"> =\n\tflattenChatModelCatalog(\"qwen-token-plan-individual-cn\", values);\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_IMAGE_MODELS: ImageModelCatalog<typeof values, \"qwen-token-plan-individual-cn\"> =\n\tflattenImageModelCatalog(\"qwen-token-plan-individual-cn\", values);\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_CN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"qwen-token-plan-individual-cn\"> =\n\tflattenClassifierModelCatalog(\"qwen-token-plan-individual-cn\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/qwen-token-plan-individual.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-token-plan-individual.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"qwen-token-plan-individual.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,wCAAwC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,iCAAiC,GAC7C,uBAAuB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,uCAAuC,GACnD,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,4CAA4C,GACxD,6BAA6B,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/qwen-token-plan-individual.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS: ChatModelCatalog<typeof values, \"qwen-token-plan-individual\"> =\n\tflattenChatModelCatalog(\"qwen-token-plan-individual\", values);\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_IMAGE_MODELS: ImageModelCatalog<typeof values, \"qwen-token-plan-individual\"> =\n\tflattenImageModelCatalog(\"qwen-token-plan-individual\", values);\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"qwen-token-plan-individual\"> =\n\tflattenClassifierModelCatalog(\"qwen-token-plan-individual\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/qwen-token-plan.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-token-plan.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"qwen-token-plan.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,sBAAsB,GAClC,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,4BAA4B,GACxC,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,iCAAiC,GAC7C,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/qwen-token-plan.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const QWEN_TOKEN_PLAN_MODELS: ChatModelCatalog<typeof values, \"qwen-token-plan\"> =\n\tflattenChatModelCatalog(\"qwen-token-plan\", values);\n\nexport const QWEN_TOKEN_PLAN_IMAGE_MODELS: ImageModelCatalog<typeof values, \"qwen-token-plan\"> =\n\tflattenImageModelCatalog(\"qwen-token-plan\", values);\n\nexport const QWEN_TOKEN_PLAN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"qwen-token-plan\"> =\n\tflattenClassifierModelCatalog(\"qwen-token-plan\", values);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radius-config.d.ts","sourceRoot":"","sources":["../../src/providers/radius-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"radius-config.d.ts","sourceRoot":"","sources":["../../src/providers/radius-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG3D,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,KAAK,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAC5B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IACrD,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAC;AA4BF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,eAAe,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAElH;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,CAOjH;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,CAGnH;AAOD,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAY9B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ownedSlice } from "../utils/text.js";
|
|
1
2
|
export const DEFAULT_RADIUS_GATEWAY = "https://radius.pi.dev";
|
|
2
3
|
function isRadiusGatewayModel(value) {
|
|
3
4
|
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
@@ -45,7 +46,7 @@ export function getRadiusModels(providerId, credential) {
|
|
|
45
46
|
}
|
|
46
47
|
function truncateHttpBody(body) {
|
|
47
48
|
const trimmed = body.trim();
|
|
48
|
-
return trimmed.length > 512 ? `${trimmed
|
|
49
|
+
return trimmed.length > 512 ? `${ownedSlice(trimmed, 0, 512)}…` : trimmed;
|
|
49
50
|
}
|
|
50
51
|
export async function loadRadiusGatewayConfig(gateway, apiKey, signal) {
|
|
51
52
|
const headers = { accept: "application/json" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radius-config.js","sourceRoot":"","sources":["../../src/providers/radius-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"radius-config.js","sourceRoot":"","sources":["../../src/providers/radius-config.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OAuthCredential } from \"../auth/types.ts\";\nimport type { Model, ThinkingLevelMap } from \"../types.ts\";\nimport { ownedSlice } from \"../utils/text.ts\";\n\nexport const DEFAULT_RADIUS_GATEWAY = \"https://radius.pi.dev\";\n\nexport type RadiusGatewayModel = {\n\tid: string;\n\tname: string;\n\treasoning: boolean;\n\tthinkingLevelMap?: ThinkingLevelMap;\n\tinput: (\"text\" | \"image\")[];\n\tcost: Model<\"pi-messages\">[\"cost\"];\n\tcontextWindow: number;\n\tmaxTokens: number;\n};\n\nexport type RadiusGatewayConfig = {\n\tbaseUrl: string;\n\tmodels: RadiusGatewayModel[];\n};\n\nexport type RadiusOAuthCredential = OAuthCredential & {\n\tgatewayConfig?: RadiusGatewayConfig;\n};\n\nfunction isRadiusGatewayModel(value: unknown): value is RadiusGatewayModel {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n\tconst model = value as Partial<RadiusGatewayModel>;\n\treturn (\n\t\ttypeof model.id === \"string\" &&\n\t\ttypeof model.name === \"string\" &&\n\t\ttypeof model.reasoning === \"boolean\" &&\n\t\tArray.isArray(model.input) &&\n\t\ttypeof model.cost === \"object\" &&\n\t\tmodel.cost !== null &&\n\t\t!Array.isArray(model.cost) &&\n\t\ttypeof model.contextWindow === \"number\" &&\n\t\ttypeof model.maxTokens === \"number\"\n\t);\n}\n\nfunction sanitizeRadiusGatewayConfig(config: unknown): RadiusGatewayConfig | undefined {\n\tif (typeof config !== \"object\" || config === null || Array.isArray(config)) return undefined;\n\tconst { baseUrl, models } = config as Partial<RadiusGatewayConfig>;\n\tif (typeof baseUrl !== \"string\" || !Array.isArray(models)) return undefined;\n\treturn {\n\t\tbaseUrl,\n\t\tmodels: models.filter(isRadiusGatewayModel).map((model) => ({ ...model })),\n\t};\n}\n\nexport function normalizeRadiusGatewayUrl(value: string): string {\n\tconst withScheme = /^https?:\\/\\//iu.test(value) ? value : `https://${value}`;\n\treturn withScheme.replace(/\\/+$/u, \"\");\n}\n\nexport function getRadiusCredentialConfig(credential: OAuthCredential | undefined): RadiusGatewayConfig | undefined {\n\treturn sanitizeRadiusGatewayConfig((credential as RadiusOAuthCredential | undefined)?.gatewayConfig);\n}\n\nexport function getRadiusModelsFromConfig(providerId: string, config: RadiusGatewayConfig): Model<\"pi-messages\">[] {\n\treturn config.models.map((model) => ({\n\t\t...model,\n\t\tapi: \"pi-messages\",\n\t\tprovider: providerId,\n\t\tbaseUrl: config.baseUrl,\n\t}));\n}\n\nexport function getRadiusModels(providerId: string, credential: OAuthCredential | undefined): Model<\"pi-messages\">[] {\n\tconst config = getRadiusCredentialConfig(credential);\n\treturn config ? getRadiusModelsFromConfig(providerId, config) : [];\n}\n\nfunction truncateHttpBody(body: string): string {\n\tconst trimmed = body.trim();\n\treturn trimmed.length > 512 ? `${ownedSlice(trimmed, 0, 512)}…` : trimmed;\n}\n\nexport async function loadRadiusGatewayConfig(\n\tgateway: string,\n\tapiKey?: string,\n\tsignal?: AbortSignal,\n): Promise<RadiusGatewayConfig> {\n\tconst headers: Record<string, string> = { accept: \"application/json\" };\n\tif (apiKey) headers.authorization = `Bearer ${apiKey}`;\n\tconst response = await fetch(new URL(\"/v1/config\", gateway), { headers, signal });\n\tif (!response.ok) {\n\t\tthrow new Error(\n\t\t\t`Could not load Radius config from ${gateway}: ${response.status}: ${truncateHttpBody(await response.text())}`,\n\t\t);\n\t}\n\tconst config = sanitizeRadiusGatewayConfig(await response.json());\n\tif (!config) throw new Error(`Invalid Radius config from ${gateway}`);\n\treturn config;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radius.d.ts","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAW7C,MAAM,WAAW,qBAAqB;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,QAAQ,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"radius.d.ts","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAW7C,MAAM,WAAW,qBAAqB;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,QAAQ,CAAC,aAAa,CAAC,CAoE3F"}
|
package/dist/providers/radius.js
CHANGED
|
@@ -11,7 +11,9 @@ export function radiusProvider(options = {}) {
|
|
|
11
11
|
const baselineModels = gateway === normalizeRadiusGatewayUrl(DEFAULT_RADIUS_GATEWAY)
|
|
12
12
|
? Object.values(RADIUS_MODELS).map((model) => ({ ...model, provider: id }))
|
|
13
13
|
: [];
|
|
14
|
-
|
|
14
|
+
// Gateway catalog for this account. Radius org owners can disable models, so once known it replaces
|
|
15
|
+
// the shipped baseline instead of overlaying it. The baseline only covers the time before any catalog exists.
|
|
16
|
+
let dynamicModels;
|
|
15
17
|
const streams = piMessagesApi();
|
|
16
18
|
return {
|
|
17
19
|
id,
|
|
@@ -20,17 +22,7 @@ export function radiusProvider(options = {}) {
|
|
|
20
22
|
apiKey: envApiKeyAuth("Radius API key", ["RADIUS_API_KEY"]),
|
|
21
23
|
oauth: lazyOAuth({ name, load: () => loadRadiusOAuth({ name, gateway }) }),
|
|
22
24
|
},
|
|
23
|
-
getModels: () =>
|
|
24
|
-
const merged = [...baselineModels];
|
|
25
|
-
for (const model of dynamicModels) {
|
|
26
|
-
const index = merged.findIndex((entry) => entry.id === model.id);
|
|
27
|
-
if (index >= 0)
|
|
28
|
-
merged[index] = model;
|
|
29
|
-
else
|
|
30
|
-
merged.push(model);
|
|
31
|
-
}
|
|
32
|
-
return merged;
|
|
33
|
-
},
|
|
25
|
+
getModels: () => dynamicModels ?? baselineModels,
|
|
34
26
|
refreshModels: async (context) => {
|
|
35
27
|
const stored = context.stored;
|
|
36
28
|
if (stored) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radius.js","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACN,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAQ5B,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,OAAO,GAA0B,EAAE;IACjE,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;IACtC,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;IACrF,MAAM,cAAc,GACnB,OAAO,KAAK,yBAAyB,CAAC,sBAAsB,CAAC;QAC5D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,EAAE,CAAC;IACP,
|
|
1
|
+
{"version":3,"file":"radius.js","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"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","sourcesContent":["import { piMessagesApi } from \"../api/pi-messages.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadRadiusOAuth } from \"../auth/oauth/load.ts\";\nimport type { Provider } from \"../models.ts\";\nimport type { Model } from \"../types.ts\";\nimport { RADIUS_MODELS } from \"./radius.models.ts\";\nimport {\n\tDEFAULT_RADIUS_GATEWAY,\n\tgetRadiusModels,\n\tgetRadiusModelsFromConfig,\n\tloadRadiusGatewayConfig,\n\tnormalizeRadiusGatewayUrl,\n} from \"./radius-config.ts\";\n\nexport interface RadiusProviderOptions {\n\tid?: string;\n\tname?: string;\n\tgateway?: string;\n}\n\n/** Radius gateway provider with a persisted, dynamically refreshed catalog. */\nexport function radiusProvider(options: RadiusProviderOptions = {}): Provider<\"pi-messages\"> {\n\tconst id = options.id ?? \"radius\";\n\tconst name = options.name ?? \"Radius\";\n\tconst gateway = normalizeRadiusGatewayUrl(options.gateway ?? DEFAULT_RADIUS_GATEWAY);\n\tconst baselineModels: Model<\"pi-messages\">[] =\n\t\tgateway === normalizeRadiusGatewayUrl(DEFAULT_RADIUS_GATEWAY)\n\t\t\t? Object.values(RADIUS_MODELS).map((model) => ({ ...model, provider: id }))\n\t\t\t: [];\n\t// Gateway catalog for this account. Radius org owners can disable models, so once known it replaces\n\t// the shipped baseline instead of overlaying it. The baseline only covers the time before any catalog exists.\n\tlet dynamicModels: Model<\"pi-messages\">[] | undefined;\n\tconst streams = piMessagesApi();\n\n\treturn {\n\t\tid,\n\t\tname,\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"Radius API key\", [\"RADIUS_API_KEY\"]),\n\t\t\toauth: lazyOAuth({ name, load: () => loadRadiusOAuth({ name, gateway }) }),\n\t\t},\n\t\tgetModels: () => dynamicModels ?? baselineModels,\n\t\trefreshModels: async (context) => {\n\t\t\tconst stored = context.stored;\n\t\t\tif (stored) {\n\t\t\t\tconst restored = stored.models.filter((model) => model.provider === id) as Model<\"pi-messages\">[];\n\t\t\t\tif (\n\t\t\t\t\t!(await context.publish({\n\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\tdynamicModels = restored;\n\t\t\t\t\t\t},\n\t\t\t\t\t}))\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Import catalogs cached by the pre-ModelsStore Radius implementation.\n\t\t\tif (!stored && context.credential?.type === \"oauth\") {\n\t\t\t\tconst legacy = getRadiusModels(id, context.credential);\n\t\t\t\tif (legacy.length > 0) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(await context.publish({\n\t\t\t\t\t\t\tpersist: { models: legacy, checkedAt: Date.now() },\n\t\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\t\tdynamicModels = legacy;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}))\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!context.allowNetwork || context.signal.aborted) return;\n\t\t\tconst apiKey = context.credential?.type === \"oauth\" ? context.credential.access : context.credential?.key;\n\t\t\tconst config = await loadRadiusGatewayConfig(gateway, apiKey, context.signal);\n\t\t\tif (context.signal.aborted) return;\n\t\t\tconst refreshed = getRadiusModelsFromConfig(id, config);\n\t\t\tawait context.publish({\n\t\t\t\tpersist: { models: refreshed, checkedAt: Date.now() },\n\t\t\t\tupdate: () => {\n\t\t\t\t\tdynamicModels = refreshed;\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tstream: (model, context, streamOptions) => streams.stream(model, context, streamOptions),\n\t\tstreamSimple: (model, context, streamOptions) => streams.streamSimple(model, context, streamOptions),\n\t};\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/radius.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radius.models.js","sourceRoot":"","sources":["../../src/providers/radius.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"radius.models.js","sourceRoot":"","sources":["../../src/providers/radius.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,aAAa,GACzB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAC/B,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,wBAAwB,GACpC,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/radius.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const RADIUS_MODELS: ChatModelCatalog<typeof values, \"radius\"> =\n\tflattenChatModelCatalog(\"radius\", values);\n\nexport const RADIUS_IMAGE_MODELS: ImageModelCatalog<typeof values, \"radius\"> =\n\tflattenImageModelCatalog(\"radius\", values);\n\nexport const RADIUS_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"radius\"> =\n\tflattenClassifierModelCatalog(\"radius\", values);\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Annotations, type Properties, type Schema, type Static, type StaticObject } from "@earendil-works/pi-schema";
|
|
2
|
+
/** An object that allows other properties; `additionalProperties: true` says so explicitly. */
|
|
3
|
+
export declare function openObject<const P extends Properties>(properties: P, options?: Annotations<StaticObject<P>> & {
|
|
4
|
+
readonly additionalProperties?: true;
|
|
5
|
+
}): Schema<StaticObject<P>>;
|
|
6
|
+
/** One string: `{ type: "string", const: value }`. */
|
|
7
|
+
export declare function stringLiteral<const V extends string>(value: V, options?: Annotations<V>): Schema<V>;
|
|
8
|
+
/** An object with any string keys and values of `value`: `{ type: "object", patternProperties: { "^.*$": value } }`. */
|
|
9
|
+
export declare function stringRecord<S extends Schema>(value: S, options?: Annotations<Record<string, Static<S>>>): Schema<Record<string, Static<S>>>;
|
|
10
|
+
//# sourceMappingURL=schema-builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builders.d.ts","sourceRoot":"","sources":["../../src/providers/schema-builders.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,WAAW,EAEhB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,MAAM,2BAA2B,CAAC;AAEnC,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EACpD,UAAU,EAAE,CAAC,EACb,OAAO,GAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAA;CAAO,GACnF,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAIzB;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,WAAW,CAAC,CAAC,CAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAEvG;AAED,wHAAwH;AACxH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC5C,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAM,GAClD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAEnC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Builders for pi-ai's own configuration schemas (model metadata, compat settings): pi-schema's builders, shaped like the
|
|
2
|
+
// TypeBox schemas they replace, so models.json and the catalog validate exactly as before.
|
|
3
|
+
import { obj, } from "@earendil-works/pi-schema";
|
|
4
|
+
/** An object that allows other properties; `additionalProperties: true` says so explicitly. */
|
|
5
|
+
export function openObject(properties, options = {}) {
|
|
6
|
+
const { additionalProperties, ...annotations } = options;
|
|
7
|
+
const schema = obj(properties, { ...annotations, open: true });
|
|
8
|
+
return additionalProperties ? { ...schema, additionalProperties } : schema;
|
|
9
|
+
}
|
|
10
|
+
/** One string: `{ type: "string", const: value }`. */
|
|
11
|
+
export function stringLiteral(value, options = {}) {
|
|
12
|
+
return { type: "string", const: value, ...options };
|
|
13
|
+
}
|
|
14
|
+
/** An object with any string keys and values of `value`: `{ type: "object", patternProperties: { "^.*$": value } }`. */
|
|
15
|
+
export function stringRecord(value, options = {}) {
|
|
16
|
+
return { type: "object", patternProperties: { "^.*$": value }, ...options };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=schema-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builders.js","sourceRoot":"","sources":["../../src/providers/schema-builders.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,2FAA2F;AAE3F,OAAO,EAEN,GAAG,GAKH,MAAM,2BAA2B,CAAC;AAEnC,+FAA+F;AAC/F,MAAM,UAAU,UAAU,CACzB,UAAa,EACb,OAAO,GAA4E,EAAE;IAErF,MAAM,EAAE,oBAAoB,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO,oBAAoB,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5E,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAyB,KAAQ,EAAE,OAAO,GAAmB,EAAE;IAC3F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;AACrD,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,YAAY,CAC3B,KAAQ,EACR,OAAO,GAA2C,EAAE;IAEpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;AAC7E,CAAC","sourcesContent":["// Builders for pi-ai's own configuration schemas (model metadata, compat settings): pi-schema's builders, shaped like the\n// TypeBox schemas they replace, so models.json and the catalog validate exactly as before.\n\nimport {\n\ttype Annotations,\n\tobj,\n\ttype Properties,\n\ttype Schema,\n\ttype Static,\n\ttype StaticObject,\n} from \"@earendil-works/pi-schema\";\n\n/** An object that allows other properties; `additionalProperties: true` says so explicitly. */\nexport function openObject<const P extends Properties>(\n\tproperties: P,\n\toptions: Annotations<StaticObject<P>> & { readonly additionalProperties?: true } = {},\n): Schema<StaticObject<P>> {\n\tconst { additionalProperties, ...annotations } = options;\n\tconst schema = obj(properties, { ...annotations, open: true });\n\treturn additionalProperties ? { ...schema, additionalProperties } : schema;\n}\n\n/** One string: `{ type: \"string\", const: value }`. */\nexport function stringLiteral<const V extends string>(value: V, options: Annotations<V> = {}): Schema<V> {\n\treturn { type: \"string\", const: value, ...options };\n}\n\n/** An object with any string keys and values of `value`: `{ type: \"object\", patternProperties: { \"^.*$\": value } }`. */\nexport function stringRecord<S extends Schema>(\n\tvalue: S,\n\toptions: Annotations<Record<string, Static<S>>> = {},\n): Schema<Record<string, Static<S>>> {\n\treturn { type: \"object\", patternProperties: { \"^.*$\": value }, ...options };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/together.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"together.models.js","sourceRoot":"","sources":["../../src/providers/together.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"together.models.js","sourceRoot":"","sources":["../../src/providers/together.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,eAAe,GAC3B,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GACjC,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,0BAA0B,GACtC,6BAA6B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/together.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const TOGETHER_MODELS: ChatModelCatalog<typeof values, \"together\"> =\n\tflattenChatModelCatalog(\"together\", values);\n\nexport const TOGETHER_IMAGE_MODELS: ImageModelCatalog<typeof values, \"together\"> =\n\tflattenImageModelCatalog(\"together\", values);\n\nexport const TOGETHER_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"together\"> =\n\tflattenClassifierModelCatalog(\"together\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/typesafe.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typesafe.models.js","sourceRoot":"","sources":["../../src/providers/typesafe.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"typesafe.models.js","sourceRoot":"","sources":["../../src/providers/typesafe.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,eAAe,GAC3B,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GACjC,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,0BAA0B,GACtC,6BAA6B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/typesafe.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const TYPESAFE_MODELS: ChatModelCatalog<typeof values, \"typesafe\"> =\n\tflattenChatModelCatalog(\"typesafe\", values);\n\nexport const TYPESAFE_IMAGE_MODELS: ImageModelCatalog<typeof values, \"typesafe\"> =\n\tflattenImageModelCatalog(\"typesafe\", values);\n\nexport const TYPESAFE_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"typesafe\"> =\n\tflattenClassifierModelCatalog(\"typesafe\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/vercel-ai-gateway.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai-gateway.models.js","sourceRoot":"","sources":["../../src/providers/vercel-ai-gateway.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"vercel-ai-gateway.models.js","sourceRoot":"","sources":["../../src/providers/vercel-ai-gateway.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,wBAAwB,GACpC,uBAAuB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,8BAA8B,GAC1C,wBAAwB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,mCAAmC,GAC/C,6BAA6B,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/vercel-ai-gateway.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const VERCEL_AI_GATEWAY_MODELS: ChatModelCatalog<typeof values, \"vercel-ai-gateway\"> =\n\tflattenChatModelCatalog(\"vercel-ai-gateway\", values);\n\nexport const VERCEL_AI_GATEWAY_IMAGE_MODELS: ImageModelCatalog<typeof values, \"vercel-ai-gateway\"> =\n\tflattenImageModelCatalog(\"vercel-ai-gateway\", values);\n\nexport const VERCEL_AI_GATEWAY_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"vercel-ai-gateway\"> =\n\tflattenClassifierModelCatalog(\"vercel-ai-gateway\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/xai.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xai.models.js","sourceRoot":"","sources":["../../src/providers/xai.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"xai.models.js","sourceRoot":"","sources":["../../src/providers/xai.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,UAAU,GACtB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAC5B,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,qBAAqB,GACjC,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xai.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const XAI_MODELS: ChatModelCatalog<typeof values, \"xai\"> =\n\tflattenChatModelCatalog(\"xai\", values);\n\nexport const XAI_IMAGE_MODELS: ImageModelCatalog<typeof values, \"xai\"> =\n\tflattenImageModelCatalog(\"xai\", values);\n\nexport const XAI_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"xai\"> =\n\tflattenClassifierModelCatalog(\"xai\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/xiaomi-token-plan-ams.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xiaomi-token-plan-ams.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-ams.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"xiaomi-token-plan-ams.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-ams.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,4BAA4B,GACxC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,kCAAkC,GAC9C,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,uCAAuC,GACnD,6BAA6B,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-ams.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_AMS_MODELS: ChatModelCatalog<typeof values, \"xiaomi-token-plan-ams\"> =\n\tflattenChatModelCatalog(\"xiaomi-token-plan-ams\", values);\n\nexport const XIAOMI_TOKEN_PLAN_AMS_IMAGE_MODELS: ImageModelCatalog<typeof values, \"xiaomi-token-plan-ams\"> =\n\tflattenImageModelCatalog(\"xiaomi-token-plan-ams\", values);\n\nexport const XIAOMI_TOKEN_PLAN_AMS_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"xiaomi-token-plan-ams\"> =\n\tflattenClassifierModelCatalog(\"xiaomi-token-plan-ams\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/xiaomi-token-plan-cn.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xiaomi-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"xiaomi-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,kCAAkC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,2BAA2B,GACvC,uBAAuB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,iCAAiC,GAC7C,wBAAwB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,sCAAsC,GAClD,6BAA6B,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-cn.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_CN_MODELS: ChatModelCatalog<typeof values, \"xiaomi-token-plan-cn\"> =\n\tflattenChatModelCatalog(\"xiaomi-token-plan-cn\", values);\n\nexport const XIAOMI_TOKEN_PLAN_CN_IMAGE_MODELS: ImageModelCatalog<typeof values, \"xiaomi-token-plan-cn\"> =\n\tflattenImageModelCatalog(\"xiaomi-token-plan-cn\", values);\n\nexport const XIAOMI_TOKEN_PLAN_CN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"xiaomi-token-plan-cn\"> =\n\tflattenClassifierModelCatalog(\"xiaomi-token-plan-cn\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/xiaomi-token-plan-sgp.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xiaomi-token-plan-sgp.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-sgp.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"xiaomi-token-plan-sgp.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-sgp.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,4BAA4B,GACxC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,kCAAkC,GAC9C,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,uCAAuC,GACnD,6BAA6B,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-sgp.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_SGP_MODELS: ChatModelCatalog<typeof values, \"xiaomi-token-plan-sgp\"> =\n\tflattenChatModelCatalog(\"xiaomi-token-plan-sgp\", values);\n\nexport const XIAOMI_TOKEN_PLAN_SGP_IMAGE_MODELS: ImageModelCatalog<typeof values, \"xiaomi-token-plan-sgp\"> =\n\tflattenImageModelCatalog(\"xiaomi-token-plan-sgp\", values);\n\nexport const XIAOMI_TOKEN_PLAN_SGP_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"xiaomi-token-plan-sgp\"> =\n\tflattenClassifierModelCatalog(\"xiaomi-token-plan-sgp\", values);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// This file is auto-generated by
|
|
1
|
+
// This file is auto-generated by catalog/generate.ts
|
|
2
2
|
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
3
|
import values from "./data/xiaomi.json" with { type: "json" };
|
|
4
4
|
import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog } from "../model-catalog.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xiaomi.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi.models.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"xiaomi.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi.models.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAEjE,OAAO,MAAM,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,wBAAwB,EAA8E,MAAM,qBAAqB,CAAC;AAEnM,MAAM,CAAC,MAAM,aAAa,GACzB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAC/B,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,wBAAwB,GACpC,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by catalog/generate.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi.json\" with { type: \"json\" };\nimport { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_MODELS: ChatModelCatalog<typeof values, \"xiaomi\"> =\n\tflattenChatModelCatalog(\"xiaomi\", values);\n\nexport const XIAOMI_IMAGE_MODELS: ImageModelCatalog<typeof values, \"xiaomi\"> =\n\tflattenImageModelCatalog(\"xiaomi\", values);\n\nexport const XIAOMI_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"xiaomi\"> =\n\tflattenClassifierModelCatalog(\"xiaomi\", values);\n"]}
|