@vib-rato/ai 0.16.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/CHANGELOG.md +3354 -0
- package/README.md +1194 -0
- package/dist/types/adapter-internals/provider-safety-stop.d.ts +45 -0
- package/dist/types/api-registry.d.ts +30 -0
- package/dist/types/auth-broker/client.d.ts +80 -0
- package/dist/types/auth-broker/index.d.ts +5 -0
- package/dist/types/auth-broker/redact.d.ts +7 -0
- package/dist/types/auth-broker/refresher.d.ts +25 -0
- package/dist/types/auth-broker/remote-store.d.ts +153 -0
- package/dist/types/auth-broker/server.d.ts +32 -0
- package/dist/types/auth-broker/types.d.ts +132 -0
- package/dist/types/auth-broker/wire-schemas.d.ts +555 -0
- package/dist/types/auth-gateway/http.d.ts +40 -0
- package/dist/types/auth-gateway/index.d.ts +3 -0
- package/dist/types/auth-gateway/server.d.ts +70 -0
- package/dist/types/auth-gateway/types.d.ts +129 -0
- package/dist/types/auth-storage.d.ts +1074 -0
- package/dist/types/cli.d.ts +2 -0
- package/dist/types/codex-tools.d.ts +4 -0
- package/dist/types/context-cap-policy.d.ts +68 -0
- package/dist/types/core.d.ts +35 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/model-cache.d.ts +24 -0
- package/dist/types/model-manager.d.ts +77 -0
- package/dist/types/model-pricing.d.ts +3 -0
- package/dist/types/model-retirements.d.ts +6 -0
- package/dist/types/model-thinking.d.ts +100 -0
- package/dist/types/models.d.ts +21 -0
- package/dist/types/openai-completions-compat.d.ts +34 -0
- package/dist/types/provider-details.d.ts +24 -0
- package/dist/types/provider-models/bundled-references.d.ts +4 -0
- package/dist/types/provider-models/descriptors.d.ts +48 -0
- package/dist/types/provider-models/google.d.ts +20 -0
- package/dist/types/provider-models/index.d.ts +5 -0
- package/dist/types/provider-models/ollama.d.ts +7 -0
- package/dist/types/provider-models/openai-compat.d.ts +293 -0
- package/dist/types/provider-models/special.d.ts +29 -0
- package/dist/types/providers/amazon-bedrock.d.ts +60 -0
- package/dist/types/providers/anthropic-messages-server-schema.d.ts +450 -0
- package/dist/types/providers/anthropic-messages-server.d.ts +17 -0
- package/dist/types/providers/anthropic.d.ts +280 -0
- package/dist/types/providers/aws-credential-config.d.ts +19 -0
- package/dist/types/providers/aws-credentials.d.ts +43 -0
- package/dist/types/providers/aws-eventstream.d.ts +38 -0
- package/dist/types/providers/aws-sigv4.d.ts +55 -0
- package/dist/types/providers/azure-openai-responses.d.ts +22 -0
- package/dist/types/providers/composer-discipline.d.ts +32 -0
- package/dist/types/providers/cursor/client-version.d.ts +10 -0
- package/dist/types/providers/cursor/exec-modern.d.ts +98 -0
- package/dist/types/providers/cursor/gen/agent_pb.d.ts +16769 -0
- package/dist/types/providers/cursor-pi-args.d.ts +119 -0
- package/dist/types/providers/cursor.d.ts +72 -0
- package/dist/types/providers/dashscope-token-plan-headers.d.ts +57 -0
- package/dist/types/providers/error-message.d.ts +27 -0
- package/dist/types/providers/github-copilot-headers.d.ts +40 -0
- package/dist/types/providers/gitlab-duo.d.ts +27 -0
- package/dist/types/providers/google-auth.d.ts +26 -0
- package/dist/types/providers/google-gemini-cli.d.ts +75 -0
- package/dist/types/providers/google-gemini-headers.d.ts +43 -0
- package/dist/types/providers/google-shared.d.ts +183 -0
- package/dist/types/providers/google-types.d.ts +138 -0
- package/dist/types/providers/google-vertex.d.ts +11 -0
- package/dist/types/providers/google.d.ts +4 -0
- package/dist/types/providers/grammar.d.ts +1 -0
- package/dist/types/providers/kimi.d.ts +27 -0
- package/dist/types/providers/kiro-api-key.d.ts +50 -0
- package/dist/types/providers/kiro-codewhisperer.d.ts +11 -0
- package/dist/types/providers/mock.d.ts +189 -0
- package/dist/types/providers/ollama.d.ts +41 -0
- package/dist/types/providers/openai-anthropic-shim.d.ts +31 -0
- package/dist/types/providers/openai-bounded-rate-limits.d.ts +3 -0
- package/dist/types/providers/openai-chat-server-schema.d.ts +1733 -0
- package/dist/types/providers/openai-chat-server.d.ts +16 -0
- package/dist/types/providers/openai-codex/constants.d.ts +26 -0
- package/dist/types/providers/openai-codex/request-transformer.d.ts +50 -0
- package/dist/types/providers/openai-codex/response-handler.d.ts +18 -0
- package/dist/types/providers/openai-codex-responses.d.ts +71 -0
- package/dist/types/providers/openai-completions-compat.d.ts +6 -0
- package/dist/types/providers/openai-completions.d.ts +35 -0
- package/dist/types/providers/openai-opencodex-responses.d.ts +10 -0
- package/dist/types/providers/openai-request-transform.d.ts +4 -0
- package/dist/types/providers/openai-responses-server-schema.d.ts +392 -0
- package/dist/types/providers/openai-responses-server.d.ts +17 -0
- package/dist/types/providers/openai-responses-shared.d.ts +106 -0
- package/dist/types/providers/openai-responses.d.ts +37 -0
- package/dist/types/providers/pi-native-client.d.ts +29 -0
- package/dist/types/providers/pi-native-server.d.ts +60 -0
- package/dist/types/providers/register-builtins.d.ts +59 -0
- package/dist/types/providers/synthetic.d.ts +26 -0
- package/dist/types/providers/transform-messages.d.ts +33 -0
- package/dist/types/providers/vision-guard.d.ts +8 -0
- package/dist/types/rate-limit-utils.d.ts +19 -0
- package/dist/types/stream.d.ts +45 -0
- package/dist/types/types.d.ts +1073 -0
- package/dist/types/usage/claude.d.ts +3 -0
- package/dist/types/usage/gemini.d.ts +2 -0
- package/dist/types/usage/github-copilot.d.ts +7 -0
- package/dist/types/usage/google-antigravity.d.ts +2 -0
- package/dist/types/usage/grok-cli.d.ts +17 -0
- package/dist/types/usage/kimi.d.ts +4 -0
- package/dist/types/usage/minimax-code.d.ts +2 -0
- package/dist/types/usage/openai-codex.d.ts +3 -0
- package/dist/types/usage/shared.d.ts +1 -0
- package/dist/types/usage/zai.d.ts +2 -0
- package/dist/types/usage.d.ts +264 -0
- package/dist/types/utils/abort.d.ts +19 -0
- package/dist/types/utils/anthropic-auth.d.ts +39 -0
- package/dist/types/utils/block-symbols.d.ts +6 -0
- package/dist/types/utils/discovery/antigravity.d.ts +67 -0
- package/dist/types/utils/discovery/codex.d.ts +38 -0
- package/dist/types/utils/discovery/cursor.d.ts +49 -0
- package/dist/types/utils/discovery/gemini.d.ts +25 -0
- package/dist/types/utils/discovery/index.d.ts +4 -0
- package/dist/types/utils/discovery/openai-compatible.d.ts +81 -0
- package/dist/types/utils/event-stream.d.ts +41 -0
- package/dist/types/utils/fallback-transport.d.ts +110 -0
- package/dist/types/utils/fireworks-model-id.d.ts +10 -0
- package/dist/types/utils/foundry.d.ts +11 -0
- package/dist/types/utils/h2-fetch.d.ts +22 -0
- package/dist/types/utils/http-inspector.d.ts +59 -0
- package/dist/types/utils/idle-iterator.d.ts +122 -0
- package/dist/types/utils/json-parse.d.ts +98 -0
- package/dist/types/utils/oauth/alibaba-token-plan.d.ts +19 -0
- package/dist/types/utils/oauth/anthropic.d.ts +41 -0
- package/dist/types/utils/oauth/api-key-login.d.ts +38 -0
- package/dist/types/utils/oauth/api-key-validation.d.ts +39 -0
- package/dist/types/utils/oauth/bizrouter.d.ts +1 -0
- package/dist/types/utils/oauth/callback-server.d.ts +80 -0
- package/dist/types/utils/oauth/cerebras.d.ts +1 -0
- package/dist/types/utils/oauth/cloudflare-ai-gateway.d.ts +18 -0
- package/dist/types/utils/oauth/commandcode.d.ts +1 -0
- package/dist/types/utils/oauth/cursor.d.ts +15 -0
- package/dist/types/utils/oauth/deepinfra.d.ts +1 -0
- package/dist/types/utils/oauth/deepseek.d.ts +10 -0
- package/dist/types/utils/oauth/firepass.d.ts +1 -0
- package/dist/types/utils/oauth/fireworks.d.ts +1 -0
- package/dist/types/utils/oauth/fugu.d.ts +1 -0
- package/dist/types/utils/oauth/github-copilot.d.ts +38 -0
- package/dist/types/utils/oauth/gitlab-duo.d.ts +3 -0
- package/dist/types/utils/oauth/glm-zcode.d.ts +71 -0
- package/dist/types/utils/oauth/google-antigravity.d.ts +11 -0
- package/dist/types/utils/oauth/google-gemini-cli.d.ts +10 -0
- package/dist/types/utils/oauth/google-oauth-shared.d.ts +28 -0
- package/dist/types/utils/oauth/huggingface.d.ts +19 -0
- package/dist/types/utils/oauth/index.d.ts +39 -0
- package/dist/types/utils/oauth/kagi.d.ts +17 -0
- package/dist/types/utils/oauth/kilo.d.ts +5 -0
- package/dist/types/utils/oauth/kimi.d.ts +17 -0
- package/dist/types/utils/oauth/kiro.d.ts +71 -0
- package/dist/types/utils/oauth/litellm.d.ts +18 -0
- package/dist/types/utils/oauth/lm-studio.d.ts +17 -0
- package/dist/types/utils/oauth/mara.d.ts +1 -0
- package/dist/types/utils/oauth/minimax-code.d.ts +28 -0
- package/dist/types/utils/oauth/moonshot.d.ts +1 -0
- package/dist/types/utils/oauth/nanogpt.d.ts +1 -0
- package/dist/types/utils/oauth/nvidia.d.ts +18 -0
- package/dist/types/utils/oauth/ollama-cloud.d.ts +2 -0
- package/dist/types/utils/oauth/ollama.d.ts +18 -0
- package/dist/types/utils/oauth/openai-codex.d.ts +21 -0
- package/dist/types/utils/oauth/opencode.d.ts +18 -0
- package/dist/types/utils/oauth/opengateway.d.ts +1 -0
- package/dist/types/utils/oauth/openrouter.d.ts +1 -0
- package/dist/types/utils/oauth/parallel.d.ts +17 -0
- package/dist/types/utils/oauth/perplexity.d.ts +4 -0
- package/dist/types/utils/oauth/pkce.d.ts +8 -0
- package/dist/types/utils/oauth/qianfan.d.ts +17 -0
- package/dist/types/utils/oauth/qwen-portal.d.ts +19 -0
- package/dist/types/utils/oauth/sglang.d.ts +16 -0
- package/dist/types/utils/oauth/synthetic.d.ts +1 -0
- package/dist/types/utils/oauth/tavily.d.ts +17 -0
- package/dist/types/utils/oauth/together.d.ts +1 -0
- package/dist/types/utils/oauth/types.d.ts +56 -0
- package/dist/types/utils/oauth/venice.d.ts +18 -0
- package/dist/types/utils/oauth/vercel-ai-gateway.d.ts +18 -0
- package/dist/types/utils/oauth/vllm.d.ts +16 -0
- package/dist/types/utils/oauth/xai.d.ts +30 -0
- package/dist/types/utils/oauth/xiaomi.d.ts +25 -0
- package/dist/types/utils/oauth/zai.d.ts +18 -0
- package/dist/types/utils/oauth/zenmux.d.ts +1 -0
- package/dist/types/utils/overflow.d.ts +14 -0
- package/dist/types/utils/parse-bind.d.ts +26 -0
- package/dist/types/utils/provider-response.d.ts +6 -0
- package/dist/types/utils/provider-safety-stop.d.ts +8 -0
- package/dist/types/utils/proxy.d.ts +7 -0
- package/dist/types/utils/retry-after.d.ts +3 -0
- package/dist/types/utils/retry-budget.d.ts +1 -0
- package/dist/types/utils/retry.d.ts +29 -0
- package/dist/types/utils/schema/adapt.d.ts +24 -0
- package/dist/types/utils/schema/compatibility.d.ts +30 -0
- package/dist/types/utils/schema/dereference.d.ts +11 -0
- package/dist/types/utils/schema/draft.d.ts +10 -0
- package/dist/types/utils/schema/equality.d.ts +4 -0
- package/dist/types/utils/schema/fields.d.ts +49 -0
- package/dist/types/utils/schema/index.d.ts +14 -0
- package/dist/types/utils/schema/json-schema-validator.d.ts +12 -0
- package/dist/types/utils/schema/meta-validator.d.ts +2 -0
- package/dist/types/utils/schema/normalize.d.ts +93 -0
- package/dist/types/utils/schema/root-combinator.d.ts +12 -0
- package/dist/types/utils/schema/spill.d.ts +8 -0
- package/dist/types/utils/schema/stamps.d.ts +25 -0
- package/dist/types/utils/schema/types.d.ts +4 -0
- package/dist/types/utils/schema/wire.d.ts +54 -0
- package/dist/types/utils/schema/zod-decontaminate.d.ts +31 -0
- package/dist/types/utils/sse-debug.d.ts +10 -0
- package/dist/types/utils/tool-call-healing.d.ts +80 -0
- package/dist/types/utils/tool-choice-capability.d.ts +57 -0
- package/dist/types/utils/tool-choice.d.ts +50 -0
- package/dist/types/utils/validation.d.ts +17 -0
- package/dist/types/utils.d.ts +117 -0
- package/package.json +152 -0
- package/src/adapter-internals/provider-safety-stop.d.ts +45 -0
- package/src/adapter-internals/provider-safety-stop.ts +156 -0
- package/src/api-registry.d.ts +30 -0
- package/src/api-registry.ts +96 -0
- package/src/auth-broker/client.ts +444 -0
- package/src/auth-broker/index.ts +5 -0
- package/src/auth-broker/redact.ts +39 -0
- package/src/auth-broker/refresher.ts +130 -0
- package/src/auth-broker/remote-store.ts +1576 -0
- package/src/auth-broker/server.ts +764 -0
- package/src/auth-broker/types.ts +164 -0
- package/src/auth-broker/wire-schemas.ts +261 -0
- package/src/auth-gateway/http.ts +198 -0
- package/src/auth-gateway/index.ts +3 -0
- package/src/auth-gateway/server.ts +1315 -0
- package/src/auth-gateway/types.ts +160 -0
- package/src/auth-storage.ts +7312 -0
- package/src/cli.ts +269 -0
- package/src/codex-tools.d.ts +4 -0
- package/src/codex-tools.ts +24 -0
- package/src/context-cap-policy.d.ts +68 -0
- package/src/context-cap-policy.ts +123 -0
- package/src/core.ts +44 -0
- package/src/index.ts +61 -0
- package/src/model-cache.ts +236 -0
- package/src/model-manager.ts +744 -0
- package/src/model-pricing.d.ts +3 -0
- package/src/model-pricing.ts +68 -0
- package/src/model-retirements.d.ts +6 -0
- package/src/model-retirements.ts +19 -0
- package/src/model-thinking.d.ts +100 -0
- package/src/model-thinking.ts +1054 -0
- package/src/models.d.ts +21 -0
- package/src/models.json +94672 -0
- package/src/models.json.d.ts +9 -0
- package/src/models.ts +126 -0
- package/src/openai-completions-compat.d.ts +34 -0
- package/src/openai-completions-compat.ts +383 -0
- package/src/prompts/composer-bash-policy-recovery.md +1 -0
- package/src/prompts/cursor-composer-bash-policy-recovery.md +1 -0
- package/src/prompts/cursor-composer-edit-discipline.md +7 -0
- package/src/prompts/turn-aborted-guidance.md +4 -0
- package/src/provider-details.ts +90 -0
- package/src/provider-models/bundled-references.ts +38 -0
- package/src/provider-models/descriptors.ts +392 -0
- package/src/provider-models/google.ts +92 -0
- package/src/provider-models/index.ts +5 -0
- package/src/provider-models/ollama.ts +159 -0
- package/src/provider-models/openai-compat.ts +2920 -0
- package/src/provider-models/special.ts +185 -0
- package/src/providers/amazon-bedrock.d.ts +60 -0
- package/src/providers/amazon-bedrock.ts +939 -0
- package/src/providers/anthropic-messages-server-schema.ts +229 -0
- package/src/providers/anthropic-messages-server.ts +839 -0
- package/src/providers/anthropic.d.ts +280 -0
- package/src/providers/anthropic.ts +4421 -0
- package/src/providers/aws-credential-config.d.ts +19 -0
- package/src/providers/aws-credential-config.ts +179 -0
- package/src/providers/aws-credentials.d.ts +43 -0
- package/src/providers/aws-credentials.ts +457 -0
- package/src/providers/aws-eventstream.d.ts +38 -0
- package/src/providers/aws-eventstream.ts +185 -0
- package/src/providers/aws-sigv4.d.ts +55 -0
- package/src/providers/aws-sigv4.ts +218 -0
- package/src/providers/azure-openai-responses.d.ts +22 -0
- package/src/providers/azure-openai-responses.ts +447 -0
- package/src/providers/composer-discipline.d.ts +32 -0
- package/src/providers/composer-discipline.ts +95 -0
- package/src/providers/cursor/client-version.d.ts +10 -0
- package/src/providers/cursor/client-version.ts +10 -0
- package/src/providers/cursor/exec-modern.d.ts +98 -0
- package/src/providers/cursor/exec-modern.ts +497 -0
- package/src/providers/cursor/gen/agent_pb.d.ts +16769 -0
- package/src/providers/cursor/gen/agent_pb.ts +19780 -0
- package/src/providers/cursor/proto/agent.proto +4533 -0
- package/src/providers/cursor/proto/buf.gen.yaml +6 -0
- package/src/providers/cursor/proto/buf.yaml +17 -0
- package/src/providers/cursor-pi-args.d.ts +119 -0
- package/src/providers/cursor-pi-args.ts +187 -0
- package/src/providers/cursor.d.ts +72 -0
- package/src/providers/cursor.ts +3396 -0
- package/src/providers/dashscope-token-plan-headers.d.ts +57 -0
- package/src/providers/dashscope-token-plan-headers.ts +84 -0
- package/src/providers/error-message.d.ts +27 -0
- package/src/providers/error-message.ts +21 -0
- package/src/providers/github-copilot-headers.d.ts +40 -0
- package/src/providers/github-copilot-headers.ts +140 -0
- package/src/providers/gitlab-duo.d.ts +27 -0
- package/src/providers/gitlab-duo.ts +393 -0
- package/src/providers/google-auth.d.ts +26 -0
- package/src/providers/google-auth.ts +262 -0
- package/src/providers/google-gemini-cli.d.ts +75 -0
- package/src/providers/google-gemini-cli.ts +969 -0
- package/src/providers/google-gemini-headers.d.ts +43 -0
- package/src/providers/google-gemini-headers.ts +100 -0
- package/src/providers/google-shared.d.ts +183 -0
- package/src/providers/google-shared.ts +1105 -0
- package/src/providers/google-types.d.ts +138 -0
- package/src/providers/google-types.ts +167 -0
- package/src/providers/google-vertex.d.ts +11 -0
- package/src/providers/google-vertex.ts +124 -0
- package/src/providers/google.d.ts +4 -0
- package/src/providers/google.ts +41 -0
- package/src/providers/grammar.d.ts +1 -0
- package/src/providers/grammar.ts +70 -0
- package/src/providers/kimi.d.ts +27 -0
- package/src/providers/kimi.ts +52 -0
- package/src/providers/kiro-api-key.d.ts +50 -0
- package/src/providers/kiro-api-key.ts +786 -0
- package/src/providers/kiro-codewhisperer.d.ts +11 -0
- package/src/providers/kiro-codewhisperer.ts +600 -0
- package/src/providers/mock.ts +526 -0
- package/src/providers/ollama.d.ts +41 -0
- package/src/providers/ollama.ts +645 -0
- package/src/providers/openai-anthropic-shim.d.ts +31 -0
- package/src/providers/openai-anthropic-shim.ts +156 -0
- package/src/providers/openai-bounded-rate-limits.d.ts +3 -0
- package/src/providers/openai-bounded-rate-limits.ts +57 -0
- package/src/providers/openai-chat-server-schema.ts +254 -0
- package/src/providers/openai-chat-server.ts +724 -0
- package/src/providers/openai-codex/constants.d.ts +26 -0
- package/src/providers/openai-codex/constants.ts +43 -0
- package/src/providers/openai-codex/request-transformer.d.ts +50 -0
- package/src/providers/openai-codex/request-transformer.ts +219 -0
- package/src/providers/openai-codex/response-handler.d.ts +18 -0
- package/src/providers/openai-codex/response-handler.ts +111 -0
- package/src/providers/openai-codex-responses.d.ts +71 -0
- package/src/providers/openai-codex-responses.ts +3288 -0
- package/src/providers/openai-completions-compat.d.ts +6 -0
- package/src/providers/openai-completions-compat.ts +6 -0
- package/src/providers/openai-completions.d.ts +35 -0
- package/src/providers/openai-completions.ts +2294 -0
- package/src/providers/openai-opencodex-responses.ts +174 -0
- package/src/providers/openai-request-transform.d.ts +4 -0
- package/src/providers/openai-request-transform.ts +136 -0
- package/src/providers/openai-responses-server-schema.ts +290 -0
- package/src/providers/openai-responses-server.ts +1268 -0
- package/src/providers/openai-responses-shared.d.ts +106 -0
- package/src/providers/openai-responses-shared.ts +1253 -0
- package/src/providers/openai-responses.d.ts +37 -0
- package/src/providers/openai-responses.ts +989 -0
- package/src/providers/pi-native-client.d.ts +29 -0
- package/src/providers/pi-native-client.ts +243 -0
- package/src/providers/pi-native-server.ts +488 -0
- package/src/providers/register-builtins.d.ts +59 -0
- package/src/providers/register-builtins.ts +544 -0
- package/src/providers/synthetic.d.ts +26 -0
- package/src/providers/synthetic.ts +50 -0
- package/src/providers/transform-messages.d.ts +33 -0
- package/src/providers/transform-messages.ts +408 -0
- package/src/providers/vision-guard.d.ts +8 -0
- package/src/providers/vision-guard.ts +31 -0
- package/src/rate-limit-utils.d.ts +19 -0
- package/src/rate-limit-utils.ts +102 -0
- package/src/stream.d.ts +45 -0
- package/src/stream.ts +1306 -0
- package/src/types.d.ts +1073 -0
- package/src/types.ts +1305 -0
- package/src/usage/claude.ts +449 -0
- package/src/usage/gemini.ts +250 -0
- package/src/usage/github-copilot.ts +421 -0
- package/src/usage/google-antigravity.ts +201 -0
- package/src/usage/grok-cli.ts +259 -0
- package/src/usage/kimi.ts +285 -0
- package/src/usage/minimax-code.ts +31 -0
- package/src/usage/openai-codex.ts +503 -0
- package/src/usage/shared.ts +10 -0
- package/src/usage/zai.ts +247 -0
- package/src/usage.ts +190 -0
- package/src/utils/abort.d.ts +19 -0
- package/src/utils/abort.ts +51 -0
- package/src/utils/anthropic-auth.ts +95 -0
- package/src/utils/block-symbols.d.ts +6 -0
- package/src/utils/block-symbols.ts +11 -0
- package/src/utils/discovery/antigravity.ts +275 -0
- package/src/utils/discovery/codex.ts +362 -0
- package/src/utils/discovery/cursor.ts +388 -0
- package/src/utils/discovery/gemini.ts +248 -0
- package/src/utils/discovery/index.ts +4 -0
- package/src/utils/discovery/openai-compatible.ts +379 -0
- package/src/utils/event-stream.d.ts +41 -0
- package/src/utils/event-stream.ts +269 -0
- package/src/utils/fallback-transport.d.ts +110 -0
- package/src/utils/fallback-transport.ts +411 -0
- package/src/utils/fireworks-model-id.d.ts +10 -0
- package/src/utils/fireworks-model-id.ts +30 -0
- package/src/utils/foundry.d.ts +11 -0
- package/src/utils/foundry.ts +18 -0
- package/src/utils/h2-fetch.ts +60 -0
- package/src/utils/http-inspector.d.ts +59 -0
- package/src/utils/http-inspector.ts +380 -0
- package/src/utils/idle-iterator.d.ts +122 -0
- package/src/utils/idle-iterator.ts +410 -0
- package/src/utils/json-parse.d.ts +98 -0
- package/src/utils/json-parse.ts +607 -0
- package/src/utils/oauth/alibaba-token-plan.ts +60 -0
- package/src/utils/oauth/anthropic.ts +233 -0
- package/src/utils/oauth/api-key-login.ts +98 -0
- package/src/utils/oauth/api-key-validation.ts +344 -0
- package/src/utils/oauth/bizrouter.ts +15 -0
- package/src/utils/oauth/callback-server.d.ts +80 -0
- package/src/utils/oauth/callback-server.ts +359 -0
- package/src/utils/oauth/cerebras.ts +16 -0
- package/src/utils/oauth/cloudflare-ai-gateway.ts +48 -0
- package/src/utils/oauth/commandcode.ts +17 -0
- package/src/utils/oauth/cursor.ts +157 -0
- package/src/utils/oauth/deepinfra.ts +15 -0
- package/src/utils/oauth/deepseek.ts +53 -0
- package/src/utils/oauth/firepass.ts +24 -0
- package/src/utils/oauth/fireworks.ts +15 -0
- package/src/utils/oauth/fugu.ts +15 -0
- package/src/utils/oauth/github-copilot.d.ts +38 -0
- package/src/utils/oauth/github-copilot.ts +362 -0
- package/src/utils/oauth/gitlab-duo.ts +123 -0
- package/src/utils/oauth/glm-zcode.d.ts +71 -0
- package/src/utils/oauth/glm-zcode.ts +433 -0
- package/src/utils/oauth/google-antigravity.ts +200 -0
- package/src/utils/oauth/google-gemini-cli.ts +256 -0
- package/src/utils/oauth/google-oauth-shared.ts +110 -0
- package/src/utils/oauth/huggingface.ts +62 -0
- package/src/utils/oauth/index.ts +558 -0
- package/src/utils/oauth/kagi.ts +47 -0
- package/src/utils/oauth/kilo.ts +87 -0
- package/src/utils/oauth/kimi.d.ts +17 -0
- package/src/utils/oauth/kimi.ts +275 -0
- package/src/utils/oauth/kiro.ts +448 -0
- package/src/utils/oauth/litellm.ts +47 -0
- package/src/utils/oauth/lm-studio.ts +38 -0
- package/src/utils/oauth/mara.ts +16 -0
- package/src/utils/oauth/minimax-code.ts +78 -0
- package/src/utils/oauth/moonshot.ts +16 -0
- package/src/utils/oauth/nanogpt.ts +15 -0
- package/src/utils/oauth/nvidia.ts +70 -0
- package/src/utils/oauth/oauth.html +199 -0
- package/src/utils/oauth/ollama-cloud.ts +28 -0
- package/src/utils/oauth/ollama.ts +47 -0
- package/src/utils/oauth/openai-codex.ts +299 -0
- package/src/utils/oauth/opencode.ts +49 -0
- package/src/utils/oauth/opengateway.ts +15 -0
- package/src/utils/oauth/openrouter.ts +16 -0
- package/src/utils/oauth/parallel.ts +46 -0
- package/src/utils/oauth/perplexity.ts +225 -0
- package/src/utils/oauth/pkce.ts +18 -0
- package/src/utils/oauth/qianfan.ts +58 -0
- package/src/utils/oauth/qwen-portal.ts +60 -0
- package/src/utils/oauth/sglang.ts +42 -0
- package/src/utils/oauth/synthetic.ts +15 -0
- package/src/utils/oauth/tavily.ts +46 -0
- package/src/utils/oauth/together.ts +16 -0
- package/src/utils/oauth/types.d.ts +56 -0
- package/src/utils/oauth/types.ts +122 -0
- package/src/utils/oauth/venice.ts +59 -0
- package/src/utils/oauth/vercel-ai-gateway.ts +47 -0
- package/src/utils/oauth/vllm.ts +42 -0
- package/src/utils/oauth/xai.ts +246 -0
- package/src/utils/oauth/xiaomi.ts +199 -0
- package/src/utils/oauth/zai.ts +60 -0
- package/src/utils/oauth/zenmux.ts +15 -0
- package/src/utils/overflow.ts +275 -0
- package/src/utils/parse-bind.ts +81 -0
- package/src/utils/provider-response.d.ts +6 -0
- package/src/utils/provider-response.ts +30 -0
- package/src/utils/provider-safety-stop.ts +8 -0
- package/src/utils/proxy.d.ts +7 -0
- package/src/utils/proxy.ts +652 -0
- package/src/utils/retry-after.d.ts +3 -0
- package/src/utils/retry-after.ts +110 -0
- package/src/utils/retry-budget.d.ts +1 -0
- package/src/utils/retry-budget.ts +4 -0
- package/src/utils/retry.d.ts +29 -0
- package/src/utils/retry.ts +67 -0
- package/src/utils/schema/CONSTRAINTS.md +164 -0
- package/src/utils/schema/adapt.d.ts +24 -0
- package/src/utils/schema/adapt.ts +36 -0
- package/src/utils/schema/compatibility.d.ts +30 -0
- package/src/utils/schema/compatibility.ts +435 -0
- package/src/utils/schema/dereference.d.ts +11 -0
- package/src/utils/schema/dereference.ts +98 -0
- package/src/utils/schema/draft.d.ts +10 -0
- package/src/utils/schema/draft.ts +341 -0
- package/src/utils/schema/equality.d.ts +4 -0
- package/src/utils/schema/equality.ts +97 -0
- package/src/utils/schema/fields.d.ts +49 -0
- package/src/utils/schema/fields.ts +190 -0
- package/src/utils/schema/index.d.ts +14 -0
- package/src/utils/schema/index.ts +14 -0
- package/src/utils/schema/json-schema-validator.d.ts +12 -0
- package/src/utils/schema/json-schema-validator.ts +577 -0
- package/src/utils/schema/meta-validator.d.ts +2 -0
- package/src/utils/schema/meta-validator.ts +167 -0
- package/src/utils/schema/normalize.d.ts +93 -0
- package/src/utils/schema/normalize.ts +1588 -0
- package/src/utils/schema/root-combinator.d.ts +12 -0
- package/src/utils/schema/root-combinator.ts +143 -0
- package/src/utils/schema/spill.d.ts +8 -0
- package/src/utils/schema/spill.ts +43 -0
- package/src/utils/schema/stamps.d.ts +25 -0
- package/src/utils/schema/stamps.ts +97 -0
- package/src/utils/schema/types.d.ts +4 -0
- package/src/utils/schema/types.ts +11 -0
- package/src/utils/schema/wire.d.ts +54 -0
- package/src/utils/schema/wire.ts +213 -0
- package/src/utils/schema/zod-decontaminate.d.ts +31 -0
- package/src/utils/schema/zod-decontaminate.ts +331 -0
- package/src/utils/sse-debug.d.ts +10 -0
- package/src/utils/sse-debug.ts +289 -0
- package/src/utils/tool-call-healing.d.ts +80 -0
- package/src/utils/tool-call-healing.ts +298 -0
- package/src/utils/tool-choice-capability.d.ts +57 -0
- package/src/utils/tool-choice-capability.ts +633 -0
- package/src/utils/tool-choice.d.ts +50 -0
- package/src/utils/tool-choice.ts +99 -0
- package/src/utils/validation.ts +1080 -0
- package/src/utils.d.ts +117 -0
- package/src/utils.ts +523 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DashScope Token Plan canonical request headers.
|
|
3
|
+
*
|
|
4
|
+
* Reproduces QwenLM/qwen-code's DashScopeOpenAICompatibleProvider.buildHeaders()
|
|
5
|
+
* defaultHeaders so the built-in `alibaba-token-plan` provider emits the same
|
|
6
|
+
* client identity / cache / auth-type fingerprint upstream sends. DashScope is
|
|
7
|
+
* compatibility-sensitive to this fingerprint; a non-identical set can cause
|
|
8
|
+
* request instability and affect first-event latency (vib-rato #3557).
|
|
9
|
+
*
|
|
10
|
+
* Upstream pin (reproduce EXACTLY here):
|
|
11
|
+
* Repository: QwenLM/qwen-code
|
|
12
|
+
* Commit: f4cd6e1d8bbb1c24e7e5d1a40187d8e28aa7c4fb
|
|
13
|
+
* Version: 0.21.1
|
|
14
|
+
* Source: packages/core/src/core/openaiContentGenerator/provider/dashscope.ts
|
|
15
|
+
* buildHeaders():
|
|
16
|
+
* const userAgent = `QwenCode/${version} (${process.platform}; ${process.arch})`;
|
|
17
|
+
* const defaultHeaders = {
|
|
18
|
+
* 'User-Agent': userAgent,
|
|
19
|
+
* 'X-DashScope-CacheControl': 'enable',
|
|
20
|
+
* 'X-DashScope-UserAgent': userAgent,
|
|
21
|
+
* 'X-DashScope-AuthType': authType,
|
|
22
|
+
* };
|
|
23
|
+
* return customHeaders ? { ...defaultHeaders, ...customHeaders } : defaultHeaders;
|
|
24
|
+
*
|
|
25
|
+
* The Token Plan preset authenticates with AuthType.USE_OPENAI ('openai'), so
|
|
26
|
+
* X-DashScope-AuthType is the constant 'openai'. Pin the version so an upstream
|
|
27
|
+
* bump is an explicit parity update rather than silent drift.
|
|
28
|
+
*/
|
|
29
|
+
export declare const QWEN_CODE_UPSTREAM_REPO = "QwenLM/qwen-code";
|
|
30
|
+
export declare const QWEN_CODE_UPSTREAM_COMMIT = "f4cd6e1d8bbb1c24e7e5d1a40187d8e28aa7c4fb";
|
|
31
|
+
export declare const QWEN_CODE_UPSTREAM_VERSION = "0.21.1";
|
|
32
|
+
/**
|
|
33
|
+
* The Qwen Code CLI version string used in identity headers. Pinned to the
|
|
34
|
+
* upstream version at {@link QWEN_CODE_UPSTREAM_COMMIT}; change both together
|
|
35
|
+
* as an explicit parity update.
|
|
36
|
+
*/
|
|
37
|
+
export declare function qwenCodeUserAgent(version?: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Canonical DashScope Token Plan headers (upstream defaultHeaders, no caller
|
|
40
|
+
* overrides applied). Exposed for tests/fixtures so the pinned wire set lives
|
|
41
|
+
* in exactly one place.
|
|
42
|
+
*/
|
|
43
|
+
export declare function dashscopeTokenPlanDefaultHeaders(version?: string): Readonly<Record<string, string>>;
|
|
44
|
+
/**
|
|
45
|
+
* Merge canonical DashScope Token Plan identity headers onto a caller's header
|
|
46
|
+
* map, reproducing upstream buildHeaders() precedence EXACTLY:
|
|
47
|
+
* `{ ...defaultHeaders, ...customHeaders }` — caller wins per header.
|
|
48
|
+
*
|
|
49
|
+
* This mirrors Vibrato's existing kimi-code injection order
|
|
50
|
+
* (`headers = { ...getKimiCommonHeaders(), ...headers }`): canonical identity as
|
|
51
|
+
* the base, caller-supplied headers overriding individual keys. A caller that
|
|
52
|
+
* pins `User-Agent` takes that key; the other canonicals still apply.
|
|
53
|
+
*
|
|
54
|
+
* A null/undefined `callerHeaders` returns the canonical set alone (upstream
|
|
55
|
+
* `customHeaders ? {...} : defaultHeaders` shortcut).
|
|
56
|
+
*/
|
|
57
|
+
export declare function mergeDashScopeTokenPlanHeaders(callerHeaders: Record<string, string> | undefined, version?: string): Record<string, string>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DashScope Token Plan canonical request headers.
|
|
3
|
+
*
|
|
4
|
+
* Reproduces QwenLM/qwen-code's DashScopeOpenAICompatibleProvider.buildHeaders()
|
|
5
|
+
* defaultHeaders so the built-in `alibaba-token-plan` provider emits the same
|
|
6
|
+
* client identity / cache / auth-type fingerprint upstream sends. DashScope is
|
|
7
|
+
* compatibility-sensitive to this fingerprint; a non-identical set can cause
|
|
8
|
+
* request instability and affect first-event latency (vib-rato #3557).
|
|
9
|
+
*
|
|
10
|
+
* Upstream pin (reproduce EXACTLY here):
|
|
11
|
+
* Repository: QwenLM/qwen-code
|
|
12
|
+
* Commit: f4cd6e1d8bbb1c24e7e5d1a40187d8e28aa7c4fb
|
|
13
|
+
* Version: 0.21.1
|
|
14
|
+
* Source: packages/core/src/core/openaiContentGenerator/provider/dashscope.ts
|
|
15
|
+
* buildHeaders():
|
|
16
|
+
* const userAgent = `QwenCode/${version} (${process.platform}; ${process.arch})`;
|
|
17
|
+
* const defaultHeaders = {
|
|
18
|
+
* 'User-Agent': userAgent,
|
|
19
|
+
* 'X-DashScope-CacheControl': 'enable',
|
|
20
|
+
* 'X-DashScope-UserAgent': userAgent,
|
|
21
|
+
* 'X-DashScope-AuthType': authType,
|
|
22
|
+
* };
|
|
23
|
+
* return customHeaders ? { ...defaultHeaders, ...customHeaders } : defaultHeaders;
|
|
24
|
+
*
|
|
25
|
+
* The Token Plan preset authenticates with AuthType.USE_OPENAI ('openai'), so
|
|
26
|
+
* X-DashScope-AuthType is the constant 'openai'. Pin the version so an upstream
|
|
27
|
+
* bump is an explicit parity update rather than silent drift.
|
|
28
|
+
*/
|
|
29
|
+
export const QWEN_CODE_UPSTREAM_REPO = "QwenLM/qwen-code";
|
|
30
|
+
export const QWEN_CODE_UPSTREAM_COMMIT = "f4cd6e1d8bbb1c24e7e5d1a40187d8e28aa7c4fb";
|
|
31
|
+
export const QWEN_CODE_UPSTREAM_VERSION = "0.21.1";
|
|
32
|
+
|
|
33
|
+
// Upstream Token Plan preset uses AuthType.USE_OPENAI = 'openai'.
|
|
34
|
+
const QWEN_CODE_TOKEN_PLAN_AUTH_TYPE = "openai";
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The Qwen Code CLI version string used in identity headers. Pinned to the
|
|
38
|
+
* upstream version at {@link QWEN_CODE_UPSTREAM_COMMIT}; change both together
|
|
39
|
+
* as an explicit parity update.
|
|
40
|
+
*/
|
|
41
|
+
export function qwenCodeUserAgent(version: string = QWEN_CODE_UPSTREAM_VERSION): string {
|
|
42
|
+
// process.platform / process.arch are read verbatim, matching upstream
|
|
43
|
+
// (e.g. "linux", "darwin", "win32"; "x64", "arm64"). No normalization.
|
|
44
|
+
return `QwenCode/${version} (${process.platform}; ${process.arch})`;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Canonical DashScope Token Plan headers (upstream defaultHeaders, no caller
|
|
49
|
+
* overrides applied). Exposed for tests/fixtures so the pinned wire set lives
|
|
50
|
+
* in exactly one place.
|
|
51
|
+
*/
|
|
52
|
+
export function dashscopeTokenPlanDefaultHeaders(
|
|
53
|
+
version: string = QWEN_CODE_UPSTREAM_VERSION,
|
|
54
|
+
): Readonly<Record<string, string>> {
|
|
55
|
+
const userAgent = qwenCodeUserAgent(version);
|
|
56
|
+
return Object.freeze({
|
|
57
|
+
"User-Agent": userAgent,
|
|
58
|
+
"X-DashScope-CacheControl": "enable",
|
|
59
|
+
"X-DashScope-UserAgent": userAgent,
|
|
60
|
+
"X-DashScope-AuthType": QWEN_CODE_TOKEN_PLAN_AUTH_TYPE,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Merge canonical DashScope Token Plan identity headers onto a caller's header
|
|
66
|
+
* map, reproducing upstream buildHeaders() precedence EXACTLY:
|
|
67
|
+
* `{ ...defaultHeaders, ...customHeaders }` — caller wins per header.
|
|
68
|
+
*
|
|
69
|
+
* This mirrors Vibrato's existing kimi-code injection order
|
|
70
|
+
* (`headers = { ...getKimiCommonHeaders(), ...headers }`): canonical identity as
|
|
71
|
+
* the base, caller-supplied headers overriding individual keys. A caller that
|
|
72
|
+
* pins `User-Agent` takes that key; the other canonicals still apply.
|
|
73
|
+
*
|
|
74
|
+
* A null/undefined `callerHeaders` returns the canonical set alone (upstream
|
|
75
|
+
* `customHeaders ? {...} : defaultHeaders` shortcut).
|
|
76
|
+
*/
|
|
77
|
+
export function mergeDashScopeTokenPlanHeaders(
|
|
78
|
+
callerHeaders: Record<string, string> | undefined,
|
|
79
|
+
version: string = QWEN_CODE_UPSTREAM_VERSION,
|
|
80
|
+
): Record<string, string> {
|
|
81
|
+
const defaults = dashscopeTokenPlanDefaultHeaders(version);
|
|
82
|
+
if (!callerHeaders) return { ...defaults };
|
|
83
|
+
return { ...defaults, ...callerHeaders };
|
|
84
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Api, Model } from "../types";
|
|
2
|
+
export declare function createProviderErrorMessage(model: Model<Api>, err: unknown): {
|
|
3
|
+
role: "assistant";
|
|
4
|
+
content: {
|
|
5
|
+
type: "text";
|
|
6
|
+
text: string;
|
|
7
|
+
}[];
|
|
8
|
+
api: Api;
|
|
9
|
+
provider: string;
|
|
10
|
+
model: string;
|
|
11
|
+
usage: {
|
|
12
|
+
input: number;
|
|
13
|
+
output: number;
|
|
14
|
+
cacheRead: number;
|
|
15
|
+
cacheWrite: number;
|
|
16
|
+
totalTokens: number;
|
|
17
|
+
cost: {
|
|
18
|
+
input: number;
|
|
19
|
+
output: number;
|
|
20
|
+
cacheRead: number;
|
|
21
|
+
cacheWrite: number;
|
|
22
|
+
total: number;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
stopReason: "error";
|
|
26
|
+
timestamp: number;
|
|
27
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Api, Model } from "../types";
|
|
2
|
+
|
|
3
|
+
export function createProviderErrorMessage(model: Model<Api>, err: unknown) {
|
|
4
|
+
return {
|
|
5
|
+
role: "assistant" as const,
|
|
6
|
+
content: [{ type: "text" as const, text: err instanceof Error ? err.message : String(err) }],
|
|
7
|
+
api: model.api,
|
|
8
|
+
provider: model.provider,
|
|
9
|
+
model: model.id,
|
|
10
|
+
usage: {
|
|
11
|
+
input: 0,
|
|
12
|
+
output: 0,
|
|
13
|
+
cacheRead: 0,
|
|
14
|
+
cacheWrite: 0,
|
|
15
|
+
totalTokens: 0,
|
|
16
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
17
|
+
},
|
|
18
|
+
stopReason: "error" as const,
|
|
19
|
+
timestamp: Date.now(),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Message } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Infer whether the current request to Copilot is user-initiated or agent-initiated.
|
|
4
|
+
* Accepts `unknown[]` because providers may pass pre-converted message shapes.
|
|
5
|
+
*/
|
|
6
|
+
export type CopilotInitiator = "user" | "agent";
|
|
7
|
+
export type CopilotPremiumRequests = number;
|
|
8
|
+
export type CopilotDynamicHeaders = {
|
|
9
|
+
headers: Record<string, string>;
|
|
10
|
+
initiator: CopilotInitiator;
|
|
11
|
+
premiumRequests: CopilotPremiumRequests;
|
|
12
|
+
};
|
|
13
|
+
export declare function resolveGitHubCopilotBaseUrl(baseUrl: string | undefined, apiKey: string | undefined): string | undefined;
|
|
14
|
+
export declare function inferCopilotInitiator(messages: unknown[]): CopilotInitiator;
|
|
15
|
+
/** Check whether any message in the conversation contains image content. */
|
|
16
|
+
export declare function hasCopilotVisionInput(messages: Message[]): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve an explicitly configured Copilot initiator header, if present.
|
|
19
|
+
* Handles case-insensitive X-Initiator keys and returns the last valid value.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getCopilotInitiatorOverride(headers: Record<string, string> | undefined): CopilotInitiator | undefined;
|
|
22
|
+
export type CopilotPlanTier = "free" | "paid";
|
|
23
|
+
export declare function getCopilotPremiumMultiplier(premiumMultiplier: number | undefined, planTier?: string): number;
|
|
24
|
+
export declare function getCopilotPremiumRequests(params: {
|
|
25
|
+
initiator: CopilotInitiator;
|
|
26
|
+
premiumMultiplier?: number;
|
|
27
|
+
planTier?: string;
|
|
28
|
+
}): CopilotPremiumRequests;
|
|
29
|
+
/**
|
|
30
|
+
* Build dynamic Copilot headers that vary per-request.
|
|
31
|
+
* Static headers (User-Agent, Editor-Version, etc.) come from model.headers.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildCopilotDynamicHeaders(params: {
|
|
34
|
+
messages: unknown[];
|
|
35
|
+
hasImages: boolean;
|
|
36
|
+
premiumMultiplier?: number;
|
|
37
|
+
headers?: Record<string, string>;
|
|
38
|
+
initiatorOverride?: CopilotInitiator;
|
|
39
|
+
planTier?: string;
|
|
40
|
+
}): CopilotDynamicHeaders;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type { Message } from "../types";
|
|
2
|
+
import { getGitHubCopilotBaseUrl, parseGitHubCopilotApiKey } from "../utils/oauth/github-copilot";
|
|
3
|
+
/**
|
|
4
|
+
* Infer whether the current request to Copilot is user-initiated or agent-initiated.
|
|
5
|
+
* Accepts `unknown[]` because providers may pass pre-converted message shapes.
|
|
6
|
+
*/
|
|
7
|
+
export type CopilotInitiator = "user" | "agent";
|
|
8
|
+
export type CopilotPremiumRequests = number;
|
|
9
|
+
export type CopilotDynamicHeaders = {
|
|
10
|
+
headers: Record<string, string>;
|
|
11
|
+
initiator: CopilotInitiator;
|
|
12
|
+
premiumRequests: CopilotPremiumRequests;
|
|
13
|
+
};
|
|
14
|
+
export function resolveGitHubCopilotBaseUrl(
|
|
15
|
+
baseUrl: string | undefined,
|
|
16
|
+
apiKey: string | undefined,
|
|
17
|
+
): string | undefined {
|
|
18
|
+
if (!apiKey) return baseUrl;
|
|
19
|
+
const { enterpriseUrl } = parseGitHubCopilotApiKey(apiKey);
|
|
20
|
+
if (!enterpriseUrl) return baseUrl;
|
|
21
|
+
if (baseUrl && !baseUrl.includes("githubcopilot.com")) return baseUrl;
|
|
22
|
+
return getGitHubCopilotBaseUrl(enterpriseUrl);
|
|
23
|
+
}
|
|
24
|
+
export function inferCopilotInitiator(messages: unknown[]): CopilotInitiator {
|
|
25
|
+
if (messages.length === 0) return "user";
|
|
26
|
+
|
|
27
|
+
const last = messages[messages.length - 1] as Record<string, unknown>;
|
|
28
|
+
const attribution = last.attribution;
|
|
29
|
+
if (typeof attribution === "string") {
|
|
30
|
+
const normalizedAttribution = attribution.trim().toLowerCase();
|
|
31
|
+
if (normalizedAttribution === "user" || normalizedAttribution === "agent") {
|
|
32
|
+
return normalizedAttribution;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const role = last.role as string | undefined;
|
|
37
|
+
if (!role) return "user";
|
|
38
|
+
|
|
39
|
+
if (role !== "user") return "agent";
|
|
40
|
+
|
|
41
|
+
// Check if last content block is a tool_result (Anthropic-converted shape)
|
|
42
|
+
const content = last.content;
|
|
43
|
+
if (Array.isArray(content) && content.length > 0) {
|
|
44
|
+
const lastBlock = content[content.length - 1] as Record<string, unknown>;
|
|
45
|
+
if (lastBlock.type === "tool_result") {
|
|
46
|
+
return "agent";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return "user";
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Check whether any message in the conversation contains image content. */
|
|
54
|
+
export function hasCopilotVisionInput(messages: Message[]): boolean {
|
|
55
|
+
return messages.some(msg => {
|
|
56
|
+
if (msg.role === "user" && Array.isArray(msg.content)) {
|
|
57
|
+
return msg.content.some(c => c.type === "image");
|
|
58
|
+
}
|
|
59
|
+
if (msg.role === "toolResult" && Array.isArray(msg.content)) {
|
|
60
|
+
return msg.content.some(c => c.type === "image");
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Resolve an explicitly configured Copilot initiator header, if present.
|
|
68
|
+
* Handles case-insensitive X-Initiator keys and returns the last valid value.
|
|
69
|
+
*/
|
|
70
|
+
export function getCopilotInitiatorOverride(headers: Record<string, string> | undefined): CopilotInitiator | undefined {
|
|
71
|
+
if (!headers) return undefined;
|
|
72
|
+
|
|
73
|
+
let override: CopilotInitiator | undefined;
|
|
74
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
75
|
+
if (key.toLowerCase() !== "x-initiator") continue;
|
|
76
|
+
const normalized = value.trim().toLowerCase();
|
|
77
|
+
if (normalized === "user" || normalized === "agent") {
|
|
78
|
+
override = normalized;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return override;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export type CopilotPlanTier = "free" | "paid";
|
|
86
|
+
|
|
87
|
+
function normalizeCopilotPlanTier(planTier: string | undefined): CopilotPlanTier {
|
|
88
|
+
if (planTier === "paid") return "paid";
|
|
89
|
+
return "free";
|
|
90
|
+
}
|
|
91
|
+
export function getCopilotPremiumMultiplier(premiumMultiplier: number | undefined, planTier?: string): number {
|
|
92
|
+
const normalizedMultiplier = premiumMultiplier ?? 1;
|
|
93
|
+
if (normalizeCopilotPlanTier(planTier) === "free" && normalizedMultiplier === 0) {
|
|
94
|
+
return 1;
|
|
95
|
+
}
|
|
96
|
+
return normalizedMultiplier;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function getCopilotPremiumRequests(params: {
|
|
100
|
+
initiator: CopilotInitiator;
|
|
101
|
+
premiumMultiplier?: number;
|
|
102
|
+
planTier?: string;
|
|
103
|
+
}): CopilotPremiumRequests {
|
|
104
|
+
if (params.initiator === "agent") return 0;
|
|
105
|
+
return getCopilotPremiumMultiplier(params.premiumMultiplier, params.planTier);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Build dynamic Copilot headers that vary per-request.
|
|
110
|
+
* Static headers (User-Agent, Editor-Version, etc.) come from model.headers.
|
|
111
|
+
*/
|
|
112
|
+
export function buildCopilotDynamicHeaders(params: {
|
|
113
|
+
messages: unknown[];
|
|
114
|
+
hasImages: boolean;
|
|
115
|
+
premiumMultiplier?: number;
|
|
116
|
+
headers?: Record<string, string>;
|
|
117
|
+
initiatorOverride?: CopilotInitiator;
|
|
118
|
+
planTier?: string;
|
|
119
|
+
}): CopilotDynamicHeaders {
|
|
120
|
+
const initiator =
|
|
121
|
+
params.initiatorOverride ?? getCopilotInitiatorOverride(params.headers) ?? inferCopilotInitiator(params.messages);
|
|
122
|
+
const headers: Record<string, string> = {
|
|
123
|
+
"X-Initiator": initiator,
|
|
124
|
+
"Openai-Intent": "conversation-edits",
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
if (params.hasImages) {
|
|
128
|
+
headers["Copilot-Vision-Request"] = "true";
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
headers,
|
|
133
|
+
initiator,
|
|
134
|
+
premiumRequests: getCopilotPremiumRequests({
|
|
135
|
+
initiator,
|
|
136
|
+
premiumMultiplier: params.premiumMultiplier,
|
|
137
|
+
planTier: params.planTier,
|
|
138
|
+
}),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Api, Context, Model, SimpleStreamOptions } from "../types";
|
|
2
|
+
import { AssistantMessageEventStream } from "../utils/event-stream";
|
|
3
|
+
type GitLabProvider = "anthropic" | "openai";
|
|
4
|
+
type GitLabOpenAIApiType = "chat" | "responses";
|
|
5
|
+
export type GitLabModelMapping = {
|
|
6
|
+
provider: GitLabProvider;
|
|
7
|
+
model: string;
|
|
8
|
+
openaiApiType?: GitLabOpenAIApiType;
|
|
9
|
+
name: string;
|
|
10
|
+
reasoning: boolean;
|
|
11
|
+
input: ("text" | "image")[];
|
|
12
|
+
cost: {
|
|
13
|
+
input: number;
|
|
14
|
+
output: number;
|
|
15
|
+
cacheRead: number;
|
|
16
|
+
cacheWrite: number;
|
|
17
|
+
};
|
|
18
|
+
contextWindow: number;
|
|
19
|
+
maxTokens: number;
|
|
20
|
+
};
|
|
21
|
+
export declare const MODEL_MAPPINGS: Record<string, GitLabModelMapping>;
|
|
22
|
+
export declare function getModelMapping(modelId: string): GitLabModelMapping | undefined;
|
|
23
|
+
export declare function getGitLabDuoModels(): Model<Api>[];
|
|
24
|
+
export declare function clearGitLabDuoDirectAccessCache(): void;
|
|
25
|
+
export declare function isGitLabDuoModel(model: Model<Api>): boolean;
|
|
26
|
+
export declare function streamGitLabDuo(model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
|
|
27
|
+
export {};
|