@linxiraos/pi-ai 1.0.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 +5066 -0
- package/README.md +1195 -0
- package/dist/types/api-registry.d.ts +30 -0
- package/dist/types/auth/sqlite-credential-store.d.ts +117 -0
- package/dist/types/auth-broker/client.d.ts +93 -0
- package/dist/types/auth-broker/discover.d.ts +39 -0
- package/dist/types/auth-broker/index.d.ts +7 -0
- package/dist/types/auth-broker/refresher.d.ts +25 -0
- package/dist/types/auth-broker/remote-store.d.ts +136 -0
- package/dist/types/auth-broker/server.d.ts +48 -0
- package/dist/types/auth-broker/snapshot-cache.d.ts +17 -0
- package/dist/types/auth-broker/types.d.ts +152 -0
- package/dist/types/auth-broker/wire-schema-resource.d.ts +53 -0
- package/dist/types/auth-broker/wire-schemas.d.ts +5 -0
- package/dist/types/auth-gateway/http.d.ts +56 -0
- package/dist/types/auth-gateway/index.d.ts +3 -0
- package/dist/types/auth-gateway/server.d.ts +36 -0
- package/dist/types/auth-gateway/types.d.ts +127 -0
- package/dist/types/auth-retry.d.ts +150 -0
- package/dist/types/auth-storage.d.ts +1258 -0
- package/dist/types/dialect/anthropic.d.ts +15 -0
- package/dist/types/dialect/catalog.d.ts +3 -0
- package/dist/types/dialect/coercion.d.ts +23 -0
- package/dist/types/dialect/deepseek.d.ts +14 -0
- package/dist/types/dialect/demotion.d.ts +30 -0
- package/dist/types/dialect/examples.d.ts +18 -0
- package/dist/types/dialect/factory.d.ts +3 -0
- package/dist/types/dialect/fenced-thinking.d.ts +53 -0
- package/dist/types/dialect/gemini.d.ts +17 -0
- package/dist/types/dialect/gemma.d.ts +15 -0
- package/dist/types/dialect/glm.d.ts +9 -0
- package/dist/types/dialect/harmony.d.ts +8 -0
- package/dist/types/dialect/hermes.d.ts +9 -0
- package/dist/types/dialect/history.d.ts +3 -0
- package/dist/types/dialect/index.d.ts +11 -0
- package/dist/types/dialect/inventory.d.ts +9 -0
- package/dist/types/dialect/kimi.d.ts +14 -0
- package/dist/types/dialect/minimax.d.ts +3 -0
- package/dist/types/dialect/owned-stream.d.ts +4 -0
- package/dist/types/dialect/qwen3.d.ts +9 -0
- package/dist/types/dialect/rendering.d.ts +54 -0
- package/dist/types/dialect/thinking.d.ts +6 -0
- package/dist/types/dialect/types.d.ts +68 -0
- package/dist/types/dialect/xml.d.ts +9 -0
- package/dist/types/error/abort.d.ts +14 -0
- package/dist/types/error/auth-classify.d.ts +20 -0
- package/dist/types/error/auth.d.ts +27 -0
- package/dist/types/error/aws.d.ts +27 -0
- package/dist/types/error/classes.d.ts +106 -0
- package/dist/types/error/finalize.d.ts +39 -0
- package/dist/types/error/flags.d.ts +94 -0
- package/dist/types/error/format.d.ts +20 -0
- package/dist/types/error/gateway.d.ts +20 -0
- package/dist/types/error/index.d.ts +14 -0
- package/dist/types/error/oauth.d.ts +43 -0
- package/dist/types/error/provider.d.ts +42 -0
- package/dist/types/error/rate-limit.d.ts +80 -0
- package/dist/types/error/retryable.d.ts +27 -0
- package/dist/types/error/validation.d.ts +32 -0
- package/dist/types/index.d.ts +51 -0
- package/dist/types/provider-details.d.ts +24 -0
- package/dist/types/providers/amazon-bedrock.d.ts +39 -0
- package/dist/types/providers/anthropic-client.d.ts +106 -0
- package/dist/types/providers/anthropic-messages-server-schema.d.ts +937 -0
- package/dist/types/providers/anthropic-messages-server.d.ts +17 -0
- package/dist/types/providers/anthropic-wire.d.ts +345 -0
- package/dist/types/providers/anthropic.d.ts +261 -0
- package/dist/types/providers/aws-credentials.d.ts +48 -0
- package/dist/types/providers/aws-eventstream.d.ts +39 -0
- package/dist/types/providers/aws-sigv4.d.ts +55 -0
- package/dist/types/providers/azure-openai-responses.d.ts +16 -0
- package/dist/types/providers/bedrock-mantle.d.ts +13 -0
- package/dist/types/providers/claude-code-fingerprint.d.ts +19 -0
- package/dist/types/providers/cowork-fetch.d.ts +3 -0
- package/dist/types/providers/cursor/exec-modern.d.ts +98 -0
- package/dist/types/providers/cursor-pi-args.d.ts +105 -0
- package/dist/types/providers/cursor.d.ts +221 -0
- package/dist/types/providers/devin.d.ts +12 -0
- package/dist/types/providers/error-message.d.ts +25 -0
- package/dist/types/providers/github-copilot-headers.d.ts +40 -0
- package/dist/types/providers/gitlab-duo-workflow.d.ts +254 -0
- package/dist/types/providers/gitlab-duo.d.ts +27 -0
- package/dist/types/providers/google-auth.d.ts +24 -0
- package/dist/types/providers/google-gemini-cli.d.ts +120 -0
- package/dist/types/providers/google-shared.d.ts +203 -0
- package/dist/types/providers/google-types.d.ts +155 -0
- package/dist/types/providers/google-vertex.d.ts +7 -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/mock.d.ts +179 -0
- package/dist/types/providers/ollama.d.ts +8 -0
- package/dist/types/providers/openai-anthropic-shim.d.ts +35 -0
- package/dist/types/providers/openai-chat-server-schema.d.ts +1311 -0
- package/dist/types/providers/openai-chat-server.d.ts +16 -0
- package/dist/types/providers/openai-chat-wire.d.ts +669 -0
- package/dist/types/providers/openai-codex/request-transformer.d.ts +109 -0
- package/dist/types/providers/openai-codex/response-handler.d.ts +26 -0
- package/dist/types/providers/openai-codex-responses.d.ts +238 -0
- package/dist/types/providers/openai-completions.d.ts +48 -0
- package/dist/types/providers/openai-reasoning-fallback.d.ts +25 -0
- package/dist/types/providers/openai-responses-server-schema.d.ts +1314 -0
- package/dist/types/providers/openai-responses-server.d.ts +17 -0
- package/dist/types/providers/openai-responses-wire.d.ts +6099 -0
- package/dist/types/providers/openai-responses.d.ts +131 -0
- package/dist/types/providers/openai-shared.d.ts +624 -0
- package/dist/types/providers/pi-native-client.d.ts +13 -0
- package/dist/types/providers/pi-native-server.d.ts +69 -0
- package/dist/types/providers/register-builtins.d.ts +37 -0
- package/dist/types/providers/synthetic.d.ts +26 -0
- package/dist/types/providers/transform-messages.d.ts +32 -0
- package/dist/types/providers/vision-guard.d.ts +20 -0
- package/dist/types/registry/aiand.d.ts +7 -0
- package/dist/types/registry/aimlapi.d.ts +4 -0
- package/dist/types/registry/alibaba-coding-plan.d.ts +8 -0
- package/dist/types/registry/alibaba-token-plan.d.ts +18 -0
- package/dist/types/registry/amazon-bedrock.d.ts +5 -0
- package/dist/types/registry/anthropic.d.ts +10 -0
- package/dist/types/registry/api-key-login.d.ts +42 -0
- package/dist/types/registry/api-key-validation.d.ts +43 -0
- package/dist/types/registry/aws.d.ts +13 -0
- package/dist/types/registry/azure.d.ts +4 -0
- package/dist/types/registry/baseten.d.ts +7 -0
- package/dist/types/registry/bedrock-mantle.d.ts +22 -0
- package/dist/types/registry/cerebras.d.ts +7 -0
- package/dist/types/registry/cloudflare-ai-gateway.d.ts +13 -0
- package/dist/types/registry/coreweave.d.ts +7 -0
- package/dist/types/registry/cursor.d.ts +7 -0
- package/dist/types/registry/deepseek.d.ts +8 -0
- package/dist/types/registry/derived.d.ts +5 -0
- package/dist/types/registry/devin.d.ts +8 -0
- package/dist/types/registry/exa.d.ts +8 -0
- package/dist/types/registry/firepass.d.ts +16 -0
- package/dist/types/registry/fireworks.d.ts +7 -0
- package/dist/types/registry/github-copilot.d.ts +7 -0
- package/dist/types/registry/gitlab-duo-workflow.d.ts +10 -0
- package/dist/types/registry/gitlab-duo.d.ts +9 -0
- package/dist/types/registry/gmi-cloud.d.ts +7 -0
- package/dist/types/registry/google-antigravity.d.ts +9 -0
- package/dist/types/registry/google-gemini-cli.d.ts +9 -0
- package/dist/types/registry/google-vertex.d.ts +5 -0
- package/dist/types/registry/google.d.ts +4 -0
- package/dist/types/registry/groq.d.ts +4 -0
- package/dist/types/registry/huggingface.d.ts +7 -0
- package/dist/types/registry/index.d.ts +4 -0
- package/dist/types/registry/kagi.d.ts +14 -0
- package/dist/types/registry/kilo.d.ts +7 -0
- package/dist/types/registry/kimi-code.d.ts +7 -0
- package/dist/types/registry/litellm.d.ts +13 -0
- package/dist/types/registry/llama-cpp.d.ts +8 -0
- package/dist/types/registry/lm-studio.d.ts +8 -0
- package/dist/types/registry/meta.d.ts +7 -0
- package/dist/types/registry/minimax-code-cn.d.ts +6 -0
- package/dist/types/registry/minimax-code.d.ts +6 -0
- package/dist/types/registry/minimax.d.ts +4 -0
- package/dist/types/registry/mistral.d.ts +4 -0
- package/dist/types/registry/moonshot.d.ts +7 -0
- package/dist/types/registry/nanogpt.d.ts +7 -0
- package/dist/types/registry/novita.d.ts +6 -0
- package/dist/types/registry/nvidia.d.ts +7 -0
- package/dist/types/registry/oauth/anthropic-constants.d.ts +12 -0
- package/dist/types/registry/oauth/anthropic.d.ts +24 -0
- package/dist/types/registry/oauth/callback-server.d.ts +74 -0
- package/dist/types/registry/oauth/cursor.d.ts +16 -0
- package/dist/types/registry/oauth/device-code.d.ts +25 -0
- package/dist/types/registry/oauth/devin.d.ts +5 -0
- package/dist/types/registry/oauth/github-copilot.d.ts +30 -0
- package/dist/types/registry/oauth/gitlab-duo-workflow.d.ts +6 -0
- package/dist/types/registry/oauth/gitlab-duo.d.ts +3 -0
- package/dist/types/registry/oauth/google-antigravity.d.ts +11 -0
- package/dist/types/registry/oauth/google-gemini-cli.d.ts +22 -0
- package/dist/types/registry/oauth/google-oauth-shared.d.ts +56 -0
- package/dist/types/registry/oauth/index.d.ts +45 -0
- package/dist/types/registry/oauth/kimi.d.ts +21 -0
- package/dist/types/registry/oauth/minimax-code.d.ts +27 -0
- package/dist/types/registry/oauth/openai-codex.d.ts +33 -0
- package/dist/types/registry/oauth/opencode.d.ts +18 -0
- package/dist/types/registry/oauth/perplexity.d.ts +9 -0
- package/dist/types/registry/oauth/pkce.d.ts +8 -0
- package/dist/types/registry/oauth/types.d.ts +87 -0
- package/dist/types/registry/oauth/wafer.d.ts +1 -0
- package/dist/types/registry/oauth/xai-oauth.d.ts +46 -0
- package/dist/types/registry/oauth/xiaomi.d.ts +25 -0
- package/dist/types/registry/oauth/zai.d.ts +25 -0
- package/dist/types/registry/ollama-cloud.d.ts +7 -0
- package/dist/types/registry/ollama.d.ts +12 -0
- package/dist/types/registry/openai-codex-device.d.ts +8 -0
- package/dist/types/registry/openai-codex.d.ts +9 -0
- package/dist/types/registry/openai.d.ts +4 -0
- package/dist/types/registry/opencode-go.d.ts +6 -0
- package/dist/types/registry/opencode-zen.d.ts +6 -0
- package/dist/types/registry/openrouter.d.ts +13 -0
- package/dist/types/registry/parallel.d.ts +14 -0
- package/dist/types/registry/perplexity.d.ts +7 -0
- package/dist/types/registry/qianfan.d.ts +7 -0
- package/dist/types/registry/qwen-portal.d.ts +7 -0
- package/dist/types/registry/registry.d.ts +367 -0
- package/dist/types/registry/sakana.d.ts +7 -0
- package/dist/types/registry/siliconflow-cn.d.ts +7 -0
- package/dist/types/registry/siliconflow.d.ts +7 -0
- package/dist/types/registry/synthetic.d.ts +6 -0
- package/dist/types/registry/tavily.d.ts +14 -0
- package/dist/types/registry/together.d.ts +6 -0
- package/dist/types/registry/types.d.ts +75 -0
- package/dist/types/registry/umans.d.ts +7 -0
- package/dist/types/registry/venice.d.ts +13 -0
- package/dist/types/registry/vercel-ai-gateway.d.ts +7 -0
- package/dist/types/registry/vllm.d.ts +7 -0
- package/dist/types/registry/wafer-serverless.d.ts +6 -0
- package/dist/types/registry/xai-oauth.d.ts +7 -0
- package/dist/types/registry/xai.d.ts +7 -0
- package/dist/types/registry/xiaomi-token-plan-ams.d.ts +6 -0
- package/dist/types/registry/xiaomi-token-plan-cn.d.ts +6 -0
- package/dist/types/registry/xiaomi-token-plan-sgp.d.ts +6 -0
- package/dist/types/registry/xiaomi.d.ts +6 -0
- package/dist/types/registry/zai.d.ts +15 -0
- package/dist/types/registry/zenmux.d.ts +7 -0
- package/dist/types/registry/zhipu-coding-plan.d.ts +7 -0
- package/dist/types/stream.d.ts +46 -0
- package/dist/types/types.d.ts +1064 -0
- package/dist/types/usage/alibaba-token-plan.d.ts +3 -0
- package/dist/types/usage/claude.d.ts +4 -0
- package/dist/types/usage/cursor.d.ts +4 -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 +15 -0
- package/dist/types/usage/kimi.d.ts +2 -0
- package/dist/types/usage/minimax-code.d.ts +3 -0
- package/dist/types/usage/ollama.d.ts +5 -0
- package/dist/types/usage/openai-codex-base-url.d.ts +18 -0
- package/dist/types/usage/openai-codex-reset.d.ts +88 -0
- package/dist/types/usage/openai-codex.d.ts +10 -0
- package/dist/types/usage/opencode-go.d.ts +2 -0
- package/dist/types/usage/shared.d.ts +1 -0
- package/dist/types/usage/synthetic.d.ts +2 -0
- package/dist/types/usage/umans.d.ts +2 -0
- package/dist/types/usage/xai-oauth.d.ts +12 -0
- package/dist/types/usage/zai.d.ts +3 -0
- package/dist/types/usage.d.ts +527 -0
- package/dist/types/utils/abort.d.ts +25 -0
- package/dist/types/utils/anthropic-auth.d.ts +35 -0
- package/dist/types/utils/aws-profile.d.ts +17 -0
- package/dist/types/utils/block-symbols.d.ts +62 -0
- package/dist/types/utils/deterministic-id.d.ts +16 -0
- package/dist/types/utils/empty-completion-retry.d.ts +21 -0
- package/dist/types/utils/event-stream.d.ts +39 -0
- package/dist/types/utils/foundry.d.ts +1 -0
- package/dist/types/utils/google-validation.d.ts +2 -0
- package/dist/types/utils/harmony-leak.d.ts +135 -0
- package/dist/types/utils/http-inspector.d.ts +49 -0
- package/dist/types/utils/idle-iterator.d.ts +149 -0
- package/dist/types/utils/leaked-thinking-stream.d.ts +33 -0
- package/dist/types/utils/openai-http.d.ts +48 -0
- package/dist/types/utils/openrouter-headers.d.ts +1 -0
- package/dist/types/utils/parse-bind.d.ts +23 -0
- package/dist/types/utils/provider-response.d.ts +3 -0
- package/dist/types/utils/proxy.d.ts +39 -0
- package/dist/types/utils/request-debug.d.ts +29 -0
- package/dist/types/utils/retry-after.d.ts +4 -0
- package/dist/types/utils/retry.d.ts +14 -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 +54 -0
- package/dist/types/utils/schema/index.d.ts +14 -0
- package/dist/types/utils/schema/json-schema-validator.d.ts +20 -0
- package/dist/types/utils/schema/meta-validator.d.ts +2 -0
- package/dist/types/utils/schema/normalize.d.ts +153 -0
- package/dist/types/utils/schema/spill.d.ts +8 -0
- package/dist/types/utils/schema/stamps.d.ts +17 -0
- package/dist/types/utils/schema/strict-tool-validation.d.ts +16 -0
- package/dist/types/utils/schema/types.d.ts +4 -0
- package/dist/types/utils/schema/typescript.d.ts +24 -0
- package/dist/types/utils/schema/wire.d.ts +52 -0
- package/dist/types/utils/sdk-stream-timeout.d.ts +33 -0
- package/dist/types/utils/sse-debug.d.ts +5 -0
- package/dist/types/utils/stream-markup-healing.d.ts +87 -0
- package/dist/types/utils/thinking-loop.d.ts +102 -0
- package/dist/types/utils/tool-call-loop-guard.d.ts +26 -0
- package/dist/types/utils/tool-choice.d.ts +52 -0
- package/dist/types/utils/validation.d.ts +28 -0
- package/dist/types/utils.d.ts +57 -0
- package/package.json +138 -0
- package/src/api-registry.ts +109 -0
- package/src/auth/sqlite-credential-store.ts +2066 -0
- package/src/auth-broker/client.ts +471 -0
- package/src/auth-broker/discover.ts +310 -0
- package/src/auth-broker/index.ts +7 -0
- package/src/auth-broker/refresher.ts +117 -0
- package/src/auth-broker/remote-store.ts +1332 -0
- package/src/auth-broker/server.ts +898 -0
- package/src/auth-broker/snapshot-cache.ts +200 -0
- package/src/auth-broker/types.ts +193 -0
- package/src/auth-broker/wire-schema-resource.ts +487 -0
- package/src/auth-broker/wire-schemas.ts +43 -0
- package/src/auth-gateway/http.ts +227 -0
- package/src/auth-gateway/index.ts +3 -0
- package/src/auth-gateway/server.ts +836 -0
- package/src/auth-gateway/types.ts +153 -0
- package/src/auth-retry.ts +401 -0
- package/src/auth-storage.ts +6540 -0
- package/src/dialect/anthropic.md +31 -0
- package/src/dialect/anthropic.ts +608 -0
- package/src/dialect/catalog.ts +29 -0
- package/src/dialect/coercion.ts +136 -0
- package/src/dialect/deepseek.md +24 -0
- package/src/dialect/deepseek.ts +609 -0
- package/src/dialect/demotion.ts +40 -0
- package/src/dialect/examples.ts +71 -0
- package/src/dialect/factory.ts +34 -0
- package/src/dialect/fenced-thinking.ts +184 -0
- package/src/dialect/gemini.md +44 -0
- package/src/dialect/gemini.ts +583 -0
- package/src/dialect/gemma.md +33 -0
- package/src/dialect/gemma.ts +387 -0
- package/src/dialect/glm.md +32 -0
- package/src/dialect/glm.ts +579 -0
- package/src/dialect/harmony.md +31 -0
- package/src/dialect/harmony.ts +345 -0
- package/src/dialect/hermes.md +25 -0
- package/src/dialect/hermes.ts +206 -0
- package/src/dialect/history.ts +81 -0
- package/src/dialect/index.ts +15 -0
- package/src/dialect/inventory.ts +30 -0
- package/src/dialect/kimi.md +24 -0
- package/src/dialect/kimi.ts +340 -0
- package/src/dialect/minimax.md +31 -0
- package/src/dialect/minimax.ts +95 -0
- package/src/dialect/owned-stream.ts +481 -0
- package/src/dialect/prompt-template.md +12 -0
- package/src/dialect/qwen3.md +28 -0
- package/src/dialect/qwen3.ts +240 -0
- package/src/dialect/rendering.ts +304 -0
- package/src/dialect/thinking.ts +292 -0
- package/src/dialect/types.ts +56 -0
- package/src/dialect/xml.md +22 -0
- package/src/dialect/xml.ts +90 -0
- package/src/error/abort.ts +18 -0
- package/src/error/auth-classify.ts +47 -0
- package/src/error/auth.ts +48 -0
- package/src/error/aws.ts +35 -0
- package/src/error/classes.ts +281 -0
- package/src/error/finalize.ts +69 -0
- package/src/error/flags.ts +602 -0
- package/src/error/format.ts +45 -0
- package/src/error/gateway.ts +96 -0
- package/src/error/index.ts +14 -0
- package/src/error/oauth.ts +58 -0
- package/src/error/provider.ts +63 -0
- package/src/error/rate-limit.ts +303 -0
- package/src/error/retryable.ts +70 -0
- package/src/error/validation.ts +44 -0
- package/src/index.ts +51 -0
- package/src/provider-details.ts +90 -0
- package/src/providers/amazon-bedrock.ts +1064 -0
- package/src/providers/anthropic-client.ts +317 -0
- package/src/providers/anthropic-messages-server-schema.ts +252 -0
- package/src/providers/anthropic-messages-server.ts +818 -0
- package/src/providers/anthropic-wire.ts +359 -0
- package/src/providers/anthropic.ts +4539 -0
- package/src/providers/aws-credentials.ts +772 -0
- package/src/providers/aws-eventstream.ts +181 -0
- package/src/providers/aws-sigv4.ts +218 -0
- package/src/providers/azure-openai-responses.ts +438 -0
- package/src/providers/bedrock-mantle.ts +110 -0
- package/src/providers/claude-code-fingerprint.ts +20 -0
- package/src/providers/cowork-fetch.ts +201 -0
- package/src/providers/cursor/exec-modern.ts +496 -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.ts +165 -0
- package/src/providers/cursor.ts +4689 -0
- package/src/providers/devin/proto/buf/validate/validate.proto +468 -0
- package/src/providers/devin/proto/buf.gen.yaml +33 -0
- package/src/providers/devin/proto/buf.yaml +17 -0
- package/src/providers/devin/proto/cel/expr/checked.proto +103 -0
- package/src/providers/devin/proto/cel/expr/eval.proto +38 -0
- package/src/providers/devin/proto/cel/expr/explain.proto +15 -0
- package/src/providers/devin/proto/cel/expr/syntax.proto +113 -0
- package/src/providers/devin/proto/cel/expr/value.proto +41 -0
- package/src/providers/devin/proto/connectext/grpc/status/v1/status.proto +11 -0
- package/src/providers/devin/proto/errorspb/errors.proto +56 -0
- package/src/providers/devin/proto/errorspb/hintdetail.proto +7 -0
- package/src/providers/devin/proto/errorspb/markers.proto +10 -0
- package/src/providers/devin/proto/errorspb/tags.proto +12 -0
- package/src/providers/devin/proto/errorspb/testing.proto +6 -0
- package/src/providers/devin/proto/exa/analytics_pb/analytics.proto +188 -0
- package/src/providers/devin/proto/exa/api_server_pb/api_server.proto +2461 -0
- package/src/providers/devin/proto/exa/auth_pb/auth.proto +19 -0
- package/src/providers/devin/proto/exa/auto_cascade_common_pb/auto_cascade_common.proto +79 -0
- package/src/providers/devin/proto/exa/browser_preview_pb/browser_preview.proto +32 -0
- package/src/providers/devin/proto/exa/bug_checker_pb/bug_checker.proto +22 -0
- package/src/providers/devin/proto/exa/cascade_plugins_pb/cascade_plugins.proto +262 -0
- package/src/providers/devin/proto/exa/chat_client_server_pb/chat_client_server.proto +57 -0
- package/src/providers/devin/proto/exa/chat_pb/chat.proto +449 -0
- package/src/providers/devin/proto/exa/code_edit/code_edit_pb/code_edit.proto +186 -0
- package/src/providers/devin/proto/exa/codeium_common_pb/codeium_common.proto +4157 -0
- package/src/providers/devin/proto/exa/context_module_pb/context_module.proto +175 -0
- package/src/providers/devin/proto/exa/cortex_pb/cortex.proto +3268 -0
- package/src/providers/devin/proto/exa/dev_pb/dev.proto +26 -0
- package/src/providers/devin/proto/exa/diff_action_pb/diff_action.proto +75 -0
- package/src/providers/devin/proto/exa/eval/pr_eval/datasets_pb/datasets.proto +103 -0
- package/src/providers/devin/proto/exa/eval_pb/eval.proto +1315 -0
- package/src/providers/devin/proto/exa/extension_server_pb/extension_server.proto +556 -0
- package/src/providers/devin/proto/exa/file_system_provider_pb/file_system_provider.proto +75 -0
- package/src/providers/devin/proto/exa/index_pb/index.proto +461 -0
- package/src/providers/devin/proto/exa/knowledge_base_pb/knowledge_base.proto +144 -0
- package/src/providers/devin/proto/exa/language_server_pb/language_server.proto +2385 -0
- package/src/providers/devin/proto/exa/model_management_pb/model_management.proto +186 -0
- package/src/providers/devin/proto/exa/opensearch_clients_pb/opensearch_clients.proto +503 -0
- package/src/providers/devin/proto/exa/product_analytics_pb/product_analytics.proto +37 -0
- package/src/providers/devin/proto/exa/prompt_pb/prompt.proto +92 -0
- package/src/providers/devin/proto/exa/reactive_component_pb/reactive_component.proto +96 -0
- package/src/providers/devin/proto/exa/seat_management_pb/seat_management.proto +2680 -0
- package/src/providers/devin/proto/exa/tokenizer_pb/tokenizer.proto +37 -0
- package/src/providers/devin/proto/exa/trainer_pb/config.proto +647 -0
- package/src/providers/devin/proto/exa/tree_sitter/language_data_pb/language_data.proto +14 -0
- package/src/providers/devin/proto/exa/trust_pb/trust.proto +157 -0
- package/src/providers/devin/proto/exa/user_analytics_pb/user_analytics.proto +519 -0
- package/src/providers/devin/proto/google.golang.org/appengine/internal/base/api_base.proto +28 -0
- package/src/providers/devin/proto/google.golang.org/appengine/internal/datastore/datastore_v3.proto +484 -0
- package/src/providers/devin/proto/google.golang.org/appengine/internal/log/log_service.proto +136 -0
- package/src/providers/devin/proto/google.golang.org/appengine/internal/remote_api/remote_api.proto +42 -0
- package/src/providers/devin/proto/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +61 -0
- package/src/providers/devin/proto/grpc/binlog/v1/binarylog.proto +84 -0
- package/src/providers/devin/proto/io/prometheus/client/metrics.proto +98 -0
- package/src/providers/devin.ts +679 -0
- package/src/providers/error-message.ts +23 -0
- package/src/providers/github-copilot-headers.ts +141 -0
- package/src/providers/gitlab-duo-workflow-chatml-note.md +1 -0
- package/src/providers/gitlab-duo-workflow.ts +3135 -0
- package/src/providers/gitlab-duo.ts +399 -0
- package/src/providers/google-auth.ts +330 -0
- package/src/providers/google-gemini-cli.ts +1370 -0
- package/src/providers/google-shared.ts +1122 -0
- package/src/providers/google-types.ts +180 -0
- package/src/providers/google-vertex.ts +135 -0
- package/src/providers/google.ts +47 -0
- package/src/providers/grammar.ts +70 -0
- package/src/providers/kimi.ts +51 -0
- package/src/providers/mock.ts +514 -0
- package/src/providers/ollama.ts +776 -0
- package/src/providers/openai-anthropic-shim.ts +166 -0
- package/src/providers/openai-chat-server-schema.ts +243 -0
- package/src/providers/openai-chat-server.ts +752 -0
- package/src/providers/openai-chat-wire.ts +859 -0
- package/src/providers/openai-codex/request-transformer.ts +491 -0
- package/src/providers/openai-codex/response-handler.ts +102 -0
- package/src/providers/openai-codex-responses.ts +4716 -0
- package/src/providers/openai-completions.ts +2389 -0
- package/src/providers/openai-reasoning-fallback.ts +269 -0
- package/src/providers/openai-responses-server-schema.ts +397 -0
- package/src/providers/openai-responses-server.ts +1466 -0
- package/src/providers/openai-responses-wire.ts +6416 -0
- package/src/providers/openai-responses.ts +1393 -0
- package/src/providers/openai-shared.ts +3500 -0
- package/src/providers/pi-native-client.ts +275 -0
- package/src/providers/pi-native-server.ts +245 -0
- package/src/providers/register-builtins.ts +503 -0
- package/src/providers/synthetic.ts +50 -0
- package/src/providers/transform-messages.ts +1083 -0
- package/src/providers/vision-guard.ts +54 -0
- package/src/registry/aiand.ts +22 -0
- package/src/registry/aimlapi.ts +6 -0
- package/src/registry/alibaba-coding-plan.ts +104 -0
- package/src/registry/alibaba-token-plan.ts +125 -0
- package/src/registry/amazon-bedrock.ts +22 -0
- package/src/registry/anthropic.ts +26 -0
- package/src/registry/api-key-login.ts +115 -0
- package/src/registry/api-key-validation.ts +145 -0
- package/src/registry/aws.ts +57 -0
- package/src/registry/azure.ts +6 -0
- package/src/registry/baseten.ts +22 -0
- package/src/registry/bedrock-mantle.ts +34 -0
- package/src/registry/cerebras.ts +23 -0
- package/src/registry/cloudflare-ai-gateway.ts +45 -0
- package/src/registry/coreweave.ts +40 -0
- package/src/registry/cursor.ts +20 -0
- package/src/registry/deepseek.ts +46 -0
- package/src/registry/derived.ts +9 -0
- package/src/registry/devin.ts +15 -0
- package/src/registry/exa.ts +19 -0
- package/src/registry/firepass.ts +32 -0
- package/src/registry/fireworks.ts +28 -0
- package/src/registry/github-copilot.ts +22 -0
- package/src/registry/gitlab-duo-workflow.ts +20 -0
- package/src/registry/gitlab-duo.ts +19 -0
- package/src/registry/gmi-cloud.ts +22 -0
- package/src/registry/google-antigravity.ts +22 -0
- package/src/registry/google-gemini-cli.ts +22 -0
- package/src/registry/google-vertex.ts +38 -0
- package/src/registry/google.ts +6 -0
- package/src/registry/groq.ts +6 -0
- package/src/registry/huggingface.ts +29 -0
- package/src/registry/index.ts +4 -0
- package/src/registry/kagi.ts +46 -0
- package/src/registry/kilo.ts +114 -0
- package/src/registry/kimi-code.ts +17 -0
- package/src/registry/litellm.ts +45 -0
- package/src/registry/llama-cpp.ts +35 -0
- package/src/registry/lm-studio.ts +31 -0
- package/src/registry/meta.ts +22 -0
- package/src/registry/minimax-code-cn.ts +12 -0
- package/src/registry/minimax-code.ts +12 -0
- package/src/registry/minimax.ts +6 -0
- package/src/registry/mistral.ts +6 -0
- package/src/registry/moonshot.ts +28 -0
- package/src/registry/nanogpt.ts +22 -0
- package/src/registry/novita.ts +25 -0
- package/src/registry/nvidia.ts +61 -0
- package/src/registry/oauth/anthropic-constants.ts +12 -0
- package/src/registry/oauth/anthropic.ts +346 -0
- package/src/registry/oauth/callback-server.ts +438 -0
- package/src/registry/oauth/cursor.ts +187 -0
- package/src/registry/oauth/device-code.ts +92 -0
- package/src/registry/oauth/devin.ts +124 -0
- package/src/registry/oauth/github-copilot.ts +369 -0
- package/src/registry/oauth/gitlab-duo-workflow.ts +146 -0
- package/src/registry/oauth/gitlab-duo.ts +222 -0
- package/src/registry/oauth/google-antigravity.ts +225 -0
- package/src/registry/oauth/google-gemini-cli.ts +297 -0
- package/src/registry/oauth/google-oauth-shared.ts +211 -0
- package/src/registry/oauth/index.ts +187 -0
- package/src/registry/oauth/kimi.ts +297 -0
- package/src/registry/oauth/minimax-code.ts +53 -0
- package/src/registry/oauth/oauth.html +317 -0
- package/src/registry/oauth/openai-codex.ts +384 -0
- package/src/registry/oauth/opencode.ts +50 -0
- package/src/registry/oauth/perplexity.ts +228 -0
- package/src/registry/oauth/pkce.ts +18 -0
- package/src/registry/oauth/types.ts +96 -0
- package/src/registry/oauth/wafer.ts +24 -0
- package/src/registry/oauth/xai-oauth.ts +559 -0
- package/src/registry/oauth/xiaomi.ts +211 -0
- package/src/registry/oauth/zai.ts +285 -0
- package/src/registry/ollama-cloud.ts +36 -0
- package/src/registry/ollama.ts +43 -0
- package/src/registry/openai-codex-device.ts +18 -0
- package/src/registry/openai-codex.ts +19 -0
- package/src/registry/openai.ts +6 -0
- package/src/registry/opencode-go.ts +12 -0
- package/src/registry/opencode-zen.ts +12 -0
- package/src/registry/openrouter.ts +28 -0
- package/src/registry/parallel.ts +45 -0
- package/src/registry/perplexity.ts +13 -0
- package/src/registry/qianfan.ts +27 -0
- package/src/registry/qwen-portal.ts +50 -0
- package/src/registry/registry.ts +182 -0
- package/src/registry/sakana.ts +22 -0
- package/src/registry/siliconflow-cn.ts +22 -0
- package/src/registry/siliconflow.ts +22 -0
- package/src/registry/synthetic.ts +21 -0
- package/src/registry/tavily.ts +45 -0
- package/src/registry/together.ts +22 -0
- package/src/registry/types.ts +86 -0
- package/src/registry/umans.ts +23 -0
- package/src/registry/venice.ts +33 -0
- package/src/registry/vercel-ai-gateway.ts +38 -0
- package/src/registry/vllm.ts +34 -0
- package/src/registry/wafer-serverless.ts +12 -0
- package/src/registry/xai-oauth.ts +17 -0
- package/src/registry/xai.ts +22 -0
- package/src/registry/xiaomi-token-plan-ams.ts +12 -0
- package/src/registry/xiaomi-token-plan-cn.ts +12 -0
- package/src/registry/xiaomi-token-plan-sgp.ts +12 -0
- package/src/registry/xiaomi.ts +12 -0
- package/src/registry/zai.ts +41 -0
- package/src/registry/zenmux.ts +22 -0
- package/src/registry/zhipu-coding-plan.ts +27 -0
- package/src/stream.ts +1944 -0
- package/src/types.ts +1243 -0
- package/src/usage/alibaba-token-plan.ts +230 -0
- package/src/usage/claude.ts +830 -0
- package/src/usage/cursor.ts +335 -0
- package/src/usage/gemini.ts +258 -0
- package/src/usage/github-copilot.ts +424 -0
- package/src/usage/google-antigravity.ts +497 -0
- package/src/usage/kimi.ts +277 -0
- package/src/usage/minimax-code.ts +291 -0
- package/src/usage/ollama.ts +41 -0
- package/src/usage/openai-codex-base-url.ts +35 -0
- package/src/usage/openai-codex-reset.ts +205 -0
- package/src/usage/openai-codex.ts +627 -0
- package/src/usage/opencode-go.ts +89 -0
- package/src/usage/shared.ts +10 -0
- package/src/usage/synthetic.ts +180 -0
- package/src/usage/umans.ts +192 -0
- package/src/usage/xai-oauth.ts +414 -0
- package/src/usage/zai.ts +370 -0
- package/src/usage.ts +411 -0
- package/src/utils/abort.ts +67 -0
- package/src/utils/anthropic-auth.ts +93 -0
- package/src/utils/aws-profile.ts +88 -0
- package/src/utils/block-symbols.ts +78 -0
- package/src/utils/deterministic-id.ts +20 -0
- package/src/utils/empty-completion-retry.ts +161 -0
- package/src/utils/event-stream.ts +202 -0
- package/src/utils/foundry.ts +8 -0
- package/src/utils/google-validation.ts +25 -0
- package/src/utils/harmony-leak.ts +500 -0
- package/src/utils/http-inspector.ts +196 -0
- package/src/utils/idle-iterator.ts +531 -0
- package/src/utils/leaked-thinking-stream.ts +483 -0
- package/src/utils/openai-http.ts +119 -0
- package/src/utils/openrouter-headers.ts +12 -0
- package/src/utils/parse-bind.ts +56 -0
- package/src/utils/provider-response.ts +30 -0
- package/src/utils/proxy.ts +314 -0
- package/src/utils/request-debug.ts +351 -0
- package/src/utils/retry-after.ts +121 -0
- package/src/utils/retry.ts +77 -0
- package/src/utils/schema/CONSTRAINTS.md +168 -0
- package/src/utils/schema/adapt.ts +36 -0
- package/src/utils/schema/compatibility.ts +435 -0
- package/src/utils/schema/dereference.ts +98 -0
- package/src/utils/schema/draft.ts +341 -0
- package/src/utils/schema/equality.ts +97 -0
- package/src/utils/schema/fields.ts +210 -0
- package/src/utils/schema/index.ts +14 -0
- package/src/utils/schema/json-schema-validator.ts +595 -0
- package/src/utils/schema/meta-validator.ts +167 -0
- package/src/utils/schema/normalize.ts +2314 -0
- package/src/utils/schema/spill.ts +43 -0
- package/src/utils/schema/stamps.ts +109 -0
- package/src/utils/schema/strict-tool-validation.ts +117 -0
- package/src/utils/schema/types.ts +10 -0
- package/src/utils/schema/typescript.ts +212 -0
- package/src/utils/schema/wire.ts +662 -0
- package/src/utils/sdk-stream-timeout.ts +43 -0
- package/src/utils/sse-debug.ts +18 -0
- package/src/utils/stream-markup-healing.ts +247 -0
- package/src/utils/thinking-loop.ts +552 -0
- package/src/utils/tool-call-loop-guard.ts +107 -0
- package/src/utils/tool-choice.ts +101 -0
- package/src/utils/validation.ts +1932 -0
- package/src/utils.ts +492 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Api } from "../types.js";
|
|
2
|
+
import type { AbortSourceTracker } from "../utils/abort.js";
|
|
3
|
+
import type { CapturedHttpErrorResponse, RawHttpRequestDump } from "../utils/http-inspector.js";
|
|
4
|
+
/** Context a provider catch block hands to {@link finalize}. */
|
|
5
|
+
export interface FinalizeOptions {
|
|
6
|
+
/** Wire API, for api-specific text classification (e.g. stale-responses items). */
|
|
7
|
+
api?: Api;
|
|
8
|
+
/** Provider id; forwarded to the message formatter for copilot rewrites. */
|
|
9
|
+
provider?: string;
|
|
10
|
+
/** Caller signal, for providers that don't run an abort tracker. */
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
/** Abort tracker, preferred over `signal`: distinguishes caller vs. local aborts. */
|
|
13
|
+
abortTracker?: AbortSourceTracker;
|
|
14
|
+
/** Raw request, dumped into the message for 400-class failures. */
|
|
15
|
+
rawRequestDump?: RawHttpRequestDump;
|
|
16
|
+
/** Captured non-2xx response body, used for status fallback and message detail. */
|
|
17
|
+
capturedErrorResponse?: CapturedHttpErrorResponse;
|
|
18
|
+
}
|
|
19
|
+
/** The full bundle a provider assigns onto its `AssistantMessage` error fields. */
|
|
20
|
+
export interface FinalizeResult {
|
|
21
|
+
/** Structured flag id from {@link classify}. */
|
|
22
|
+
id: number;
|
|
23
|
+
/** HTTP status, from the error or the captured response. */
|
|
24
|
+
status: number | undefined;
|
|
25
|
+
/** `"aborted"` when the caller cancelled, otherwise `"error"`. */
|
|
26
|
+
stopReason: "aborted" | "error";
|
|
27
|
+
/** User-facing message from {@link formatMessage}, or a local abort reason. */
|
|
28
|
+
message: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build the complete error bundle for a provider catch block, replacing the
|
|
32
|
+
* `stopReason` / `errorStatus` / `errorId` / `errorMessage` boilerplate.
|
|
33
|
+
*
|
|
34
|
+
* `stopReason` comes from the abort tracker (caller intent dominates) or, when
|
|
35
|
+
* no tracker is supplied, the raw `signal.aborted`. A local abort reason (e.g. a
|
|
36
|
+
* first-event timeout) supersedes the formatted message. Message formatting is
|
|
37
|
+
* wrapped so a formatter throw can never skip the caller's `stream.end()`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function finalize(error: unknown, opts?: FinalizeOptions): Promise<FinalizeResult>;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { Api, AssistantMessage } from "../types.js";
|
|
2
|
+
export declare const Flag: {
|
|
3
|
+
readonly Class: 4096;
|
|
4
|
+
readonly ThinkingLoop: 65536;
|
|
5
|
+
readonly Transient: 131072;
|
|
6
|
+
readonly Timeout: 262144;
|
|
7
|
+
readonly UsageLimit: 524288;
|
|
8
|
+
readonly StaleResponsesItem: 1048576;
|
|
9
|
+
readonly MalformedFunctionCall: 2097152;
|
|
10
|
+
readonly ProviderFinishError: 4194304;
|
|
11
|
+
readonly ContentBlocked: 32768;
|
|
12
|
+
readonly ContextOverflow: 8388608;
|
|
13
|
+
readonly AuthFailed: 16777216;
|
|
14
|
+
readonly SilentAbort: 33554432;
|
|
15
|
+
readonly UserInterrupt: 67108864;
|
|
16
|
+
readonly Abort: 134217728;
|
|
17
|
+
/** Strict-tool rejection (400): grammar too large, schema too complex, or structured outputs unsupported by the model/endpoint. */
|
|
18
|
+
readonly Grammar: 268435456;
|
|
19
|
+
/** Anthropic model/account does not support fast mode / the `speed` parameter. */
|
|
20
|
+
readonly FastModeUnsupported: 536870912;
|
|
21
|
+
/** OAuth refresh failed definitively — the stored grant is dead, re-login required. */
|
|
22
|
+
readonly OAuthExpiry: 1073741824;
|
|
23
|
+
};
|
|
24
|
+
export type Flag = (typeof Flag)[keyof typeof Flag];
|
|
25
|
+
export declare const STREAM_READ_ERROR_PATTERN: RegExp;
|
|
26
|
+
export declare const TRANSIENT_TRANSPORT_PATTERN: RegExp;
|
|
27
|
+
/**
|
|
28
|
+
* Local llama.cpp / Ollama deterministic tool-call argument JSON parse failure.
|
|
29
|
+
* The model emitted invalid JSON in a tool call and the server returned HTTP 500
|
|
30
|
+
* with this exact text — replaying the same prompt yields the same malformed
|
|
31
|
+
* output, so callers strip {@link Flag.Transient} when this matches.
|
|
32
|
+
*/
|
|
33
|
+
export declare const LLAMA_CPP_TOOL_CALL_PARSE_PATTERN: RegExp;
|
|
34
|
+
/** Whether an OAuth refresh error message means the grant is definitively dead. */
|
|
35
|
+
export declare function isOAuthExpiry(errorMessage: string): boolean;
|
|
36
|
+
export declare function create(...flags: number[]): number;
|
|
37
|
+
export declare function is(id: number | undefined, flag: Flag): boolean;
|
|
38
|
+
export declare function retriable(id: number | undefined, opts?: {
|
|
39
|
+
replayUnsafe?: boolean;
|
|
40
|
+
}): boolean;
|
|
41
|
+
export declare function status(error: unknown): number | undefined;
|
|
42
|
+
export declare function isStreamReadErrorText(text: string): boolean;
|
|
43
|
+
/** Persisted-text form of {@link isStreamEnvelopeError}: recognizes the
|
|
44
|
+
* prefix-tagged envelope diagnostic on an aborted turn's `errorMessage` /
|
|
45
|
+
* `stopDetails.explanation` so loop-level salvage can classify it after the
|
|
46
|
+
* original `Error` instance is gone. */
|
|
47
|
+
export declare function isStreamEnvelopeErrorText(text: string): boolean;
|
|
48
|
+
export declare function classify(error: unknown, api?: Api): number;
|
|
49
|
+
/**
|
|
50
|
+
* Whether an error (or message string) classifies as an account usage/quota
|
|
51
|
+
* limit — the persistent, credential-rotation-worthy kind. This is the public
|
|
52
|
+
* accessor for {@link Flag.UsageLimit}; prefer it over re-running message
|
|
53
|
+
* regexes at call sites.
|
|
54
|
+
*/
|
|
55
|
+
export declare function isUsageLimit(error: unknown, api?: Api): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Strict-tool rejection: grammar too large, schema too complex, or structured
|
|
58
|
+
* outputs unsupported by the model/endpoint.
|
|
59
|
+
* Accessor for {@link Flag.Grammar}.
|
|
60
|
+
*/
|
|
61
|
+
export declare function isGrammarError(error: unknown): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Anthropic model/account does not support fast mode / the `speed` parameter.
|
|
64
|
+
* Accessor for {@link Flag.FastModeUnsupported}.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isFastModeUnsupported(error: unknown): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* GitHub Copilot 400 `model_not_supported` response for a model advertised by
|
|
69
|
+
* `/models` — transient fleet skew, not a malformed request. Reads the
|
|
70
|
+
* structural `code` through the SDK/body envelopes, then falls back to the
|
|
71
|
+
* stringified body both SDK families put in `message`.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isCopilotTransientModelError(error: unknown): boolean;
|
|
74
|
+
export declare function classifyMessage(message: {
|
|
75
|
+
api?: Api;
|
|
76
|
+
errorId?: number;
|
|
77
|
+
errorMessage?: string;
|
|
78
|
+
errorStatus?: number;
|
|
79
|
+
}): number;
|
|
80
|
+
export declare function attach<E extends object>(error: E, id: number): E;
|
|
81
|
+
export declare function isContextOverflow(message: AssistantMessage, contextWindow?: number): boolean;
|
|
82
|
+
export declare function stringify(id: number | undefined): string;
|
|
83
|
+
/**
|
|
84
|
+
* Transient stream corruption where the response was truncated mid-JSON.
|
|
85
|
+
*
|
|
86
|
+
* Strings (persisted `stopDetails.explanation`/`errorMessage` diagnostics) are matched with the
|
|
87
|
+
* stricter {@link STREAM_PARSE_DIAGNOSTIC_PATTERN} — bare "truncated"/"end of file" text is too
|
|
88
|
+
* low-signal to trust once detached from a live transport `Error`, which keeps the broad pattern.
|
|
89
|
+
*/
|
|
90
|
+
export declare function isTransientStreamParseError(error: unknown): boolean;
|
|
91
|
+
/** Any malformed stream-envelope error (prefix-tagged or out-of-order events). */
|
|
92
|
+
export declare function isStreamEnvelopeError(error: unknown): boolean;
|
|
93
|
+
/** Stream-envelope errors safe to retry against the provider (event ordering only). */
|
|
94
|
+
export declare function isRetryableStreamEnvelopeError(error: unknown): boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type CapturedHttpErrorResponse, type RawHttpRequestDump } from "../utils/http-inspector.js";
|
|
2
|
+
/** Inputs that steer {@link formatMessage}'s formatter selection. */
|
|
3
|
+
export interface FormatMessageOptions {
|
|
4
|
+
/** When present, the raw request is dumped into the message for 400-class failures. */
|
|
5
|
+
rawRequestDump?: RawHttpRequestDump;
|
|
6
|
+
/** Captured non-2xx response body, appended to the message when available. */
|
|
7
|
+
capturedErrorResponse?: CapturedHttpErrorResponse;
|
|
8
|
+
/** Provider id; gates provider-specific user-facing rewrites. */
|
|
9
|
+
provider?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Format a provider error into a user-facing message, unifying the three
|
|
13
|
+
* formatters: lightweight retry-after extraction, the raw-dump finalizer, and
|
|
14
|
+
* the copilot rewrite.
|
|
15
|
+
*
|
|
16
|
+
* Selection is driven by inputs, not a mode flag: a `rawRequestDump` routes
|
|
17
|
+
* through {@link finalizeErrorMessage} (retry-after + raw dump + captured body),
|
|
18
|
+
* otherwise the lightweight {@link formatErrorMessageWithRetryAfter} is used.
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatMessage(error: unknown, opts?: FormatMessageOptions): Promise<string>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** A gateway-facing classification of an arbitrary upstream/internal error. */
|
|
2
|
+
export interface GatewayErrorClassification {
|
|
3
|
+
status: number;
|
|
4
|
+
type: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Classify an upstream / gateway-internal error into a status code and a
|
|
9
|
+
* format-neutral type. The order is intentional:
|
|
10
|
+
*
|
|
11
|
+
* 1. Honour an explicit numeric `status` property on the thrown error.
|
|
12
|
+
* 2. Parse a status code embedded in the message string. Provider errors
|
|
13
|
+
* virtually always carry one (`Google API error (400): …`, `HTTP 429`,
|
|
14
|
+
* `status=503`) and the embedded value is authoritative.
|
|
15
|
+
* 3. Fall through to **word-boundaried** substring heuristics. The old
|
|
16
|
+
* `lower.includes("rate")` test famously matched `GenerateContentRequest`,
|
|
17
|
+
* surfacing every Google 400 as a 429 `rate_limit_error`. The patterns here
|
|
18
|
+
* all require boundaries so they don't collide with provider field names.
|
|
19
|
+
*/
|
|
20
|
+
export declare function classifyGatewayError(err: unknown): GatewayErrorClassification;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./abort.js";
|
|
2
|
+
export * from "./auth.js";
|
|
3
|
+
export * from "./auth-classify.js";
|
|
4
|
+
export * from "./aws.js";
|
|
5
|
+
export * from "./classes.js";
|
|
6
|
+
export * from "./finalize.js";
|
|
7
|
+
export * from "./flags.js";
|
|
8
|
+
export * from "./format.js";
|
|
9
|
+
export * from "./gateway.js";
|
|
10
|
+
export * from "./oauth.js";
|
|
11
|
+
export * from "./provider.js";
|
|
12
|
+
export * from "./rate-limit.js";
|
|
13
|
+
export * from "./retryable.js";
|
|
14
|
+
export * from "./validation.js";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What stage of an OAuth / device-code login flow failed. Discriminates the
|
|
3
|
+
* single {@link OAuthError} class so login flows don't each mint a bespoke
|
|
4
|
+
* error type.
|
|
5
|
+
*/
|
|
6
|
+
export type OAuthErrorKind =
|
|
7
|
+
/** Token-exchange / refresh / discovery HTTP response was non-2xx or unparseable. */
|
|
8
|
+
"http"
|
|
9
|
+
/** Response body was missing required fields (token, account id, endpoints, …). */
|
|
10
|
+
| "validation"
|
|
11
|
+
/** Authorization-code → token exchange failed. */
|
|
12
|
+
| "token-exchange"
|
|
13
|
+
/** Refresh-token grant failed. */
|
|
14
|
+
| "token-refresh"
|
|
15
|
+
/** Device-code / authorization polling failed (server error, too many retries). */
|
|
16
|
+
| "polling"
|
|
17
|
+
/** The flow exceeded its deadline (device-code expiry, polling timeout). */
|
|
18
|
+
| "timeout"
|
|
19
|
+
/** Device authorization was denied or cancelled by the user/provider. */
|
|
20
|
+
| "device-auth"
|
|
21
|
+
/** Misconfiguration (bad redirect URI, missing projectId, callback bind, …). */
|
|
22
|
+
| "configuration"
|
|
23
|
+
/** Cloud project provisioning / onboarding (loadCodeAssist, onboardUser). */
|
|
24
|
+
| "provisioning"
|
|
25
|
+
/** OIDC / endpoint discovery failed. */
|
|
26
|
+
| "discovery";
|
|
27
|
+
export interface OAuthErrorOptions {
|
|
28
|
+
kind?: OAuthErrorKind;
|
|
29
|
+
provider?: string;
|
|
30
|
+
status?: number;
|
|
31
|
+
cause?: unknown;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A failure inside an interactive OAuth / device-code login flow. The `kind`
|
|
35
|
+
* pinpoints the stage. Timeout/polling are classified transient; everything
|
|
36
|
+
* else is a hard auth failure so the credential layer does not silently retry.
|
|
37
|
+
*/
|
|
38
|
+
export declare class OAuthError extends Error {
|
|
39
|
+
readonly kind: OAuthErrorKind;
|
|
40
|
+
readonly provider: string | undefined;
|
|
41
|
+
readonly status: number | undefined;
|
|
42
|
+
constructor(message: string, options?: OAuthErrorOptions);
|
|
43
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ProviderHttpError } from "./classes.js";
|
|
2
|
+
/** Which part of a provider exchange produced a non-HTTP error. */
|
|
3
|
+
export type ProviderResponseErrorKind =
|
|
4
|
+
/** Stream closed before a terminal completion/response event. */
|
|
5
|
+
"incomplete-stream"
|
|
6
|
+
/** Terminal event carried an error / unexpected stop reason. */
|
|
7
|
+
| "output"
|
|
8
|
+
/** Response body was empty/missing when content was required. */
|
|
9
|
+
| "empty-body"
|
|
10
|
+
/** Malformed wire envelope (unexpected message ordering / shape). */
|
|
11
|
+
| "envelope"
|
|
12
|
+
/** Content was blocked by a provider safety filter. */
|
|
13
|
+
| "content-blocked"
|
|
14
|
+
/** Runtime/namespace resolution or other provider-internal failure. */
|
|
15
|
+
| "runtime";
|
|
16
|
+
export interface ProviderResponseErrorOptions {
|
|
17
|
+
provider?: string;
|
|
18
|
+
kind?: ProviderResponseErrorKind;
|
|
19
|
+
cause?: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A non-HTTP provider failure: a truncated stream, an error stop reason, an
|
|
23
|
+
* empty body, a malformed envelope, or a runtime fault. For non-2xx HTTP
|
|
24
|
+
* responses use {@link ProviderHttpError} (or a provider subclass) instead.
|
|
25
|
+
*/
|
|
26
|
+
export declare class ProviderResponseError extends Error {
|
|
27
|
+
readonly provider: string | undefined;
|
|
28
|
+
readonly kind: ProviderResponseErrorKind;
|
|
29
|
+
constructor(message: string, options?: ProviderResponseErrorOptions);
|
|
30
|
+
}
|
|
31
|
+
/** Non-2xx response from the Devin API. */
|
|
32
|
+
export declare class DevinApiError extends ProviderHttpError {
|
|
33
|
+
readonly name = "DevinApiError";
|
|
34
|
+
}
|
|
35
|
+
/** Non-2xx response from the GitLab Duo direct-access API. */
|
|
36
|
+
export declare class GitLabDuoApiError extends ProviderHttpError {
|
|
37
|
+
readonly name = "GitLabDuoApiError";
|
|
38
|
+
}
|
|
39
|
+
/** Non-2xx response from the GitLab Duo Workflow API. */
|
|
40
|
+
export declare class GitLabDuoWorkflowApiError extends ProviderHttpError {
|
|
41
|
+
readonly name = "GitLabDuoWorkflowApiError";
|
|
42
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limit reason classification and backoff calculation utilities.
|
|
3
|
+
* Ported from opencode-antigravity-auth plugin for consistency.
|
|
4
|
+
*/
|
|
5
|
+
export type RateLimitReason = "QUOTA_EXHAUSTED" | "RATE_LIMIT_EXCEEDED" | "CONCURRENT_LIMIT" | "MODEL_CAPACITY_EXHAUSTED" | "SERVER_ERROR" | "UNKNOWN";
|
|
6
|
+
/**
|
|
7
|
+
* Classify a rate-limit error message into a reason category.
|
|
8
|
+
* Priority order: explicit details in a resource-exhausted error > QUOTA
|
|
9
|
+
* (Antigravity "quota will reset") > CONCURRENT_LIMIT > MODEL_CAPACITY >
|
|
10
|
+
* QUOTA (account) > RATE_LIMIT > QUOTA (generic) > SERVER_ERROR > bare resource-exhausted > UNKNOWN.
|
|
11
|
+
*
|
|
12
|
+
* Bare "resource exhausted" / "resource_exhausted" maps to MODEL_CAPACITY (transient, short wait).
|
|
13
|
+
* Explicit details such as "quota exceeded" retain their normal classification.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseRateLimitReason(errorMessage: string): RateLimitReason;
|
|
16
|
+
/**
|
|
17
|
+
* Calculate backoff delay in ms for a given rate limit reason.
|
|
18
|
+
* MODEL_CAPACITY gets jitter to prevent thundering herd.
|
|
19
|
+
*/
|
|
20
|
+
export declare function calculateRateLimitBackoffMs(reason: RateLimitReason): number;
|
|
21
|
+
/**
|
|
22
|
+
* HTTP status codes that, absent richer body classification, represent an
|
|
23
|
+
* account-local usage cap rather than a bad credential or a transient blip.
|
|
24
|
+
* HTTP 402 Payment Required is categorically an account-billing cap (xAI
|
|
25
|
+
* Grok Build "usage balance exhausted", DeepSeek "Insufficient Balance",
|
|
26
|
+
* OpenRouter credit exhaustion) — never a transient blip or bad credential.
|
|
27
|
+
* Always combine with {@link isUsageLimitOutcome} when a message is available
|
|
28
|
+
* — a 429 carrying transient rate-limit wording is NOT a usage cap.
|
|
29
|
+
*/
|
|
30
|
+
export declare function isUsageLimitStatus(status: number | undefined): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Returns true for failures that should burn one credential and rotate to a
|
|
33
|
+
* sibling account. Decision tree:
|
|
34
|
+
*
|
|
35
|
+
* 1. Body matches {@link isUsageLimitError} (Codex `usage_limit_reached`,
|
|
36
|
+
* Anthropic account rate-limit, Google `resource_exhausted`, OpenAI
|
|
37
|
+
* `insufficient_quota`, …) → rotate.
|
|
38
|
+
* 2. Status is not a usage-limit status (429/402) → backoff (caller's domain).
|
|
39
|
+
* 3. Body is absent or {@link isOpaqueStatusBody opaque} (just the status,
|
|
40
|
+
* empty JSON, HTTP framing only) → rotate conservatively: the server
|
|
41
|
+
* gave us nothing else to go on.
|
|
42
|
+
* 4. Body has content → defer to {@link parseRateLimitReason}. `QUOTA_EXHAUSTED`
|
|
43
|
+
* rotates; for the categorical 402 billing cap a `CONCURRENT_LIMIT` body
|
|
44
|
+
* also rotates (the cap is concurrent-worded but the status is still an
|
|
45
|
+
* exhausted billing cap). `RATE_LIMIT_EXCEEDED` (`Too many requests`,
|
|
46
|
+
* per-minute caps), `MODEL_CAPACITY_EXHAUSTED` (`Service overloaded`),
|
|
47
|
+
* `SERVER_ERROR`, and `UNKNOWN` (`Please retry in 5s`) stay in the
|
|
48
|
+
* provider's own backoff layer so transient 429s don't burn sibling
|
|
49
|
+
* credentials.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isUsageLimitOutcome(status: number | undefined, message: string | undefined): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* A usage-limit status body is opaque when it carries no signal beyond the
|
|
54
|
+
* status itself — empty, whitespace-only, the status digits with HTTP/JSON
|
|
55
|
+
* framing, or generic punctuation. Anything else (retry hints, capacity
|
|
56
|
+
* wording, error descriptions) is informative enough to defer to the
|
|
57
|
+
* classifier.
|
|
58
|
+
*/
|
|
59
|
+
export declare function isOpaqueStatusBody(message: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Internal text matcher for usage/quota-limit phrasing. NOT part of the public
|
|
62
|
+
* API — callers classify through {@link import("./flags.js").isUsageLimit} (the
|
|
63
|
+
* flag accessor). `flags.ts` consumes this to populate `Flag.UsageLimit`, and
|
|
64
|
+
* {@link isUsageLimitOutcome} uses it for the account-rotation decision.
|
|
65
|
+
*/
|
|
66
|
+
export declare function matchesUsageLimitText(errorMessage: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Account-scoped cap phrasing delivered on a 403 (or a statusless Connect
|
|
69
|
+
* trailer): "Reached overall message rate limit", "Your limit will reset in …".
|
|
70
|
+
* Kept separate from {@link matchesUsageLimitText} because the bare wording is
|
|
71
|
+
* ambiguous without the 403 / statusless-account context; consumed by both
|
|
72
|
+
* {@link isUsageLimitOutcome} (rotation decision) and `flags.ts` (Flag.UsageLimit).
|
|
73
|
+
*/
|
|
74
|
+
export declare function isAccountScopedCapText(message: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* A concurrency cap on a non-billing status is shed-and-backoff, not
|
|
77
|
+
* credential-rotatable. This mirrors the exclusion in {@link isUsageLimitOutcome}
|
|
78
|
+
* for the 403 auth-retry entry points. A 402 remains a categorical billing cap.
|
|
79
|
+
*/
|
|
80
|
+
export declare function isConcurrencyCapExclusion(status: number | undefined, message: string | undefined): boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a numeric HTTP status is in the canonical transient/retryable set:
|
|
3
|
+
* 408 (Request Timeout), 429 (Too Many Requests), and any 5xx.
|
|
4
|
+
*
|
|
5
|
+
* This is a pure predicate over a status code already in hand — distinct from
|
|
6
|
+
* {@link classify}, which inspects a whole error (including message text) and
|
|
7
|
+
* may match more. Use this when you only have a `status: number`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isTransientStatus(status: number | undefined): boolean;
|
|
10
|
+
/** Hook for provider-specific transient detection that the error module must not import directly. */
|
|
11
|
+
export interface ProviderRetryableHooks {
|
|
12
|
+
/** Provider id of the failing request, used to gate provider-specific checks. */
|
|
13
|
+
provider?: string;
|
|
14
|
+
/** Provider-specific transient predicate (e.g. Copilot model-availability 400s). */
|
|
15
|
+
isProviderTransient?: (error: Error) => boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Whether a provider stream error should be retried against the same credential.
|
|
19
|
+
*
|
|
20
|
+
* Account-level usage/quota limits are deliberately treated as **non**-retryable
|
|
21
|
+
* here — they are owned by the credential-rotation layer (auth-gateway /
|
|
22
|
+
* `streamSimple` a/b/c policy), not this seconds-scale provider backoff.
|
|
23
|
+
*
|
|
24
|
+
* Provider-specific transient cases are injected via {@link ProviderRetryableHooks}
|
|
25
|
+
* so this stays free of provider imports.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isProviderRetryableError(error: unknown, hooks?: ProviderRetryableHooks): boolean;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caller-supplied input failed validation before/while building a provider
|
|
3
|
+
* request: bad request body, malformed tool arguments, unsupported content
|
|
4
|
+
* type, a schema that cannot be normalized, an unknown tool, etc.
|
|
5
|
+
*
|
|
6
|
+
* This is a programmer/config/contract error, not a transient provider fault —
|
|
7
|
+
* it is never retried.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ValidationError extends Error {
|
|
10
|
+
constructor(message: string, options?: {
|
|
11
|
+
cause?: unknown;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/** A referenced tool was not found in the active tool set. */
|
|
15
|
+
export declare class ToolNotFoundError extends ValidationError {
|
|
16
|
+
constructor(toolName: string);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Provider/auth configuration was missing or malformed (env var pointing at a
|
|
20
|
+
* missing file, missing projectId, bad bind string, mTLS half-configured, …).
|
|
21
|
+
*/
|
|
22
|
+
export declare class ConfigurationError extends Error {
|
|
23
|
+
constructor(message: string, options?: {
|
|
24
|
+
cause?: unknown;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/** A request was abandoned because it exceeded a stream/idle/first-event deadline. */
|
|
28
|
+
export declare class StreamTimeoutError extends Error {
|
|
29
|
+
constructor(message?: string, options?: {
|
|
30
|
+
cause?: unknown;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export { type Type, type } from "@linxiraos/pi-omptype";
|
|
2
|
+
export * from "./api-registry.js";
|
|
3
|
+
export type * from "./auth-broker/index.js";
|
|
4
|
+
export type { AuthGatewayBootOptions, ModelResolver } from "./auth-gateway/server.js";
|
|
5
|
+
export * from "./auth-gateway/types.js";
|
|
6
|
+
export * from "./auth-retry.js";
|
|
7
|
+
export * from "./auth-storage.js";
|
|
8
|
+
export * from "./error/rate-limit.js";
|
|
9
|
+
export * from "./provider-details.js";
|
|
10
|
+
export * from "./providers/anthropic.js";
|
|
11
|
+
export * from "./providers/anthropic-client.js";
|
|
12
|
+
export * from "./providers/azure-openai-responses.js";
|
|
13
|
+
export type * from "./providers/cursor.js";
|
|
14
|
+
export * from "./providers/gitlab-duo.js";
|
|
15
|
+
export * from "./providers/gitlab-duo-workflow.js";
|
|
16
|
+
export type * from "./providers/google.js";
|
|
17
|
+
export type * from "./providers/google-gemini-cli.js";
|
|
18
|
+
export type * from "./providers/google-vertex.js";
|
|
19
|
+
export * from "./providers/kimi.js";
|
|
20
|
+
export * from "./providers/mock.js";
|
|
21
|
+
export * from "./providers/ollama.js";
|
|
22
|
+
export * from "./providers/openai-codex-responses.js";
|
|
23
|
+
export * from "./providers/openai-completions.js";
|
|
24
|
+
export * from "./providers/openai-responses.js";
|
|
25
|
+
export * from "./providers/synthetic.js";
|
|
26
|
+
export * from "./registry/index.js";
|
|
27
|
+
export * from "./stream.js";
|
|
28
|
+
export * from "./types.js";
|
|
29
|
+
export * from "./usage.js";
|
|
30
|
+
export * from "./usage/claude.js";
|
|
31
|
+
export * from "./usage/cursor.js";
|
|
32
|
+
export * from "./usage/gemini.js";
|
|
33
|
+
export * from "./usage/github-copilot.js";
|
|
34
|
+
export * from "./usage/google-antigravity.js";
|
|
35
|
+
export * from "./usage/kimi.js";
|
|
36
|
+
export * from "./usage/minimax-code.js";
|
|
37
|
+
export * from "./usage/ollama.js";
|
|
38
|
+
export * from "./usage/openai-codex.js";
|
|
39
|
+
export * from "./usage/openai-codex-reset.js";
|
|
40
|
+
export * from "./usage/opencode-go.js";
|
|
41
|
+
export * from "./usage/synthetic.js";
|
|
42
|
+
export * from "./usage/xai-oauth.js";
|
|
43
|
+
export * from "./usage/zai.js";
|
|
44
|
+
export * from "./utils/anthropic-auth.js";
|
|
45
|
+
export * from "./utils/event-stream.js";
|
|
46
|
+
export * from "./utils/openrouter-headers.js";
|
|
47
|
+
export * from "./utils/retry.js";
|
|
48
|
+
export * from "./utils/schema/index.js";
|
|
49
|
+
export * from "./utils/thinking-loop.js";
|
|
50
|
+
export * from "./utils/tool-call-loop-guard.js";
|
|
51
|
+
export * from "./utils/validation.js";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Api, Model, Provider, ProviderSessionState } from "./types.js";
|
|
2
|
+
export interface ProviderDetailField {
|
|
3
|
+
label: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ProviderDetails {
|
|
7
|
+
provider: Provider;
|
|
8
|
+
api: Api;
|
|
9
|
+
fields: ProviderDetailField[];
|
|
10
|
+
}
|
|
11
|
+
export interface ProviderDetailsContext {
|
|
12
|
+
model: Model<Api>;
|
|
13
|
+
sessionId?: string;
|
|
14
|
+
authMode?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Human-readable description of the active credential, e.g.
|
|
17
|
+
* `"broker http://omp.internal:8765 · oauth #5 (foo@bar.com)"`.
|
|
18
|
+
* Rendered as a `Source` field; omitted when undefined.
|
|
19
|
+
*/
|
|
20
|
+
credentialSource?: string;
|
|
21
|
+
preferWebsockets?: boolean;
|
|
22
|
+
providerSessionState?: Map<string, ProviderSessionState>;
|
|
23
|
+
}
|
|
24
|
+
export declare function getProviderDetails(context: ProviderDetailsContext): ProviderDetails;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Amazon Bedrock Converse Stream provider.
|
|
3
|
+
*
|
|
4
|
+
* Talks directly to `bedrock-runtime.{region}.amazonaws.com` over HTTPS with
|
|
5
|
+
* SigV4 signing and decodes the `application/vnd.amazon.eventstream` response.
|
|
6
|
+
* No `@aws-sdk/*`, no `@smithy/*`, no `proxy-agent`. Proxies are honored via
|
|
7
|
+
* Bun's native `HTTPS_PROXY` support.
|
|
8
|
+
*/
|
|
9
|
+
import type { Effort } from "@linxiraos/pi-catalog/effort";
|
|
10
|
+
import type { StreamFunction, StreamOptions, ThinkingBudgets } from "../types.js";
|
|
11
|
+
export type BedrockThinkingDisplay = "summarized" | "omitted";
|
|
12
|
+
export interface BedrockOptions extends StreamOptions {
|
|
13
|
+
region?: string;
|
|
14
|
+
profile?: string;
|
|
15
|
+
/** Amazon Bedrock API key sent as `Authorization: Bearer`, ahead of SigV4 credential resolution. */
|
|
16
|
+
bearerToken?: string;
|
|
17
|
+
toolChoice?: "auto" | "any" | "none" | {
|
|
18
|
+
type: "tool";
|
|
19
|
+
name: string;
|
|
20
|
+
};
|
|
21
|
+
reasoning?: Effort;
|
|
22
|
+
thinkingBudgets?: ThinkingBudgets;
|
|
23
|
+
interleavedThinking?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Controls how Claude returns thinking content in Bedrock responses.
|
|
26
|
+
* - `"summarized"`: thinking blocks include human-readable summaries (default here).
|
|
27
|
+
* - `"omitted"`: thinking content is suppressed; the encrypted signature still
|
|
28
|
+
* travels back for multi-turn continuity.
|
|
29
|
+
*
|
|
30
|
+
* Starting with Claude Opus 4.7 and Claude Fable/Mythos 5 the Anthropic API
|
|
31
|
+
* default is `"omitted"`, which leaves callers waiting on a silent stream during
|
|
32
|
+
* long reasoning runs (issue #1373). We default to `"summarized"` so adaptive-
|
|
33
|
+
* thinking models that accept the field keep producing visible thinking deltas.
|
|
34
|
+
* Older adaptive-thinking models (Opus 4.6, Sonnet 4.6+) reject the field, so
|
|
35
|
+
* we omit it for them.
|
|
36
|
+
*/
|
|
37
|
+
thinkingDisplay?: BedrockThinkingDisplay;
|
|
38
|
+
}
|
|
39
|
+
export declare const streamBedrock: StreamFunction<"bedrock-converse-stream">;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { AnthropicApiError, AnthropicConnectionError, AnthropicConnectionTimeoutError } from "../error/index.js";
|
|
2
|
+
export { AnthropicApiError, AnthropicConnectionError, AnthropicConnectionTimeoutError };
|
|
3
|
+
import type { FetchImpl } from "../types.js";
|
|
4
|
+
import type { MessageCreateParamsStreaming } from "./anthropic-wire.js";
|
|
5
|
+
/** Per-request options accepted by {@link AnthropicMessages.create}. */
|
|
6
|
+
export interface AnthropicRequestOptions {
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
/** Pre-response timeout in milliseconds. */
|
|
9
|
+
timeout?: number;
|
|
10
|
+
/** Per-request retry budget override. */
|
|
11
|
+
maxRetries?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Maximum delay in milliseconds to wait for a server-directed retry. If the
|
|
14
|
+
* server's `retry-after` hint exceeds this value, the retry is declined and
|
|
15
|
+
* the original error is surfaced. Non-positive values disable the cap. Defaults to 60000.
|
|
16
|
+
*/
|
|
17
|
+
maxRetryDelayMs?: number;
|
|
18
|
+
/** Per-request headers merged after client defaults. */
|
|
19
|
+
headers?: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Extra `RequestInit` fields merged into every fetch call. Bun extends
|
|
23
|
+
* `RequestInit` with a `tls` option used for the Claude Code TLS profile and
|
|
24
|
+
* Foundry mTLS. Core request fields (`method`, `headers`, `body`, `signal`)
|
|
25
|
+
* are owned by the client and cannot be overridden from here — the timeout
|
|
26
|
+
* controller's signal in particular must always win.
|
|
27
|
+
*/
|
|
28
|
+
export type AnthropicFetchOptions = RequestInit & {
|
|
29
|
+
tls?: {
|
|
30
|
+
rejectUnauthorized?: boolean;
|
|
31
|
+
serverName?: string;
|
|
32
|
+
ciphers?: string;
|
|
33
|
+
ca?: string | string[];
|
|
34
|
+
cert?: string;
|
|
35
|
+
key?: string;
|
|
36
|
+
};
|
|
37
|
+
/** Bun extension: see {@link FetchWithRetryOptions.timeout} — `false` disables Bun's native fetch TTFT timeout (issue #2422). */
|
|
38
|
+
timeout?: number | false;
|
|
39
|
+
};
|
|
40
|
+
export interface AnthropicClientOptions {
|
|
41
|
+
/** Sent as `X-Api-Key` unless the header is already present in `defaultHeaders`. */
|
|
42
|
+
apiKey?: string | null;
|
|
43
|
+
/** Sent as `Authorization: Bearer <token>` unless the header is already present in `defaultHeaders`. */
|
|
44
|
+
authToken?: string | null;
|
|
45
|
+
baseURL?: string | null;
|
|
46
|
+
maxRetries?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Maximum delay in milliseconds to wait for a server-directed retry. If the
|
|
49
|
+
* server's `retry-after` hint exceeds this value, the retry is declined and
|
|
50
|
+
* the original error is surfaced. Non-positive values disable the cap. Defaults to 60000.
|
|
51
|
+
*/
|
|
52
|
+
maxRetryDelayMs?: number;
|
|
53
|
+
/** Pre-response timeout in milliseconds. Defaults to 10 minutes. */
|
|
54
|
+
timeout?: number;
|
|
55
|
+
defaultHeaders?: Record<string, string>;
|
|
56
|
+
fetch?: FetchImpl;
|
|
57
|
+
fetchOptions?: AnthropicFetchOptions;
|
|
58
|
+
}
|
|
59
|
+
/** Server-suggested delay (`retry-after-ms`, then `retry-after` seconds or HTTP date). */
|
|
60
|
+
export declare function retryDelayFromHeaders(headers: Pick<Headers, "get"> | undefined): number | undefined;
|
|
61
|
+
export declare function calculateAnthropicRetryDelayMs(attempt: number): number;
|
|
62
|
+
/**
|
|
63
|
+
* Lazy in-flight request handle. The HTTP request starts on the first
|
|
64
|
+
* `asResponse()` call; subsequent calls return the same promise.
|
|
65
|
+
*
|
|
66
|
+
* Shape-compatible with the SDK's `APIPromise.asResponse()` so
|
|
67
|
+
* `getAnthropicStreamResponse` treats internal and injected clients uniformly.
|
|
68
|
+
*/
|
|
69
|
+
export declare class AnthropicApiRequest {
|
|
70
|
+
#private;
|
|
71
|
+
constructor(start: () => Promise<Response>);
|
|
72
|
+
asResponse(): Promise<Response>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* `messages` resource. `create` lives on the prototype so tests can intercept
|
|
76
|
+
* every outgoing request with `vi.spyOn(AnthropicMessages.prototype, "create")`.
|
|
77
|
+
*/
|
|
78
|
+
export declare class AnthropicMessages {
|
|
79
|
+
#private;
|
|
80
|
+
constructor(client: AnthropicMessagesClient, path: string);
|
|
81
|
+
create(params: MessageCreateParamsStreaming, options?: AnthropicRequestOptions): AnthropicApiRequest;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Structural interface satisfied by both {@link AnthropicMessagesClient} and
|
|
85
|
+
* SDK-style clients (e.g. `AnthropicVertex`), so callers can inject an
|
|
86
|
+
* alternative Messages-API client via `AnthropicOptions.client`.
|
|
87
|
+
*/
|
|
88
|
+
export interface AnthropicMessagesClientLike {
|
|
89
|
+
messages: {
|
|
90
|
+
create(params: MessageCreateParamsStreaming, options?: AnthropicRequestOptions): unknown;
|
|
91
|
+
};
|
|
92
|
+
beta?: {
|
|
93
|
+
messages: {
|
|
94
|
+
create(params: MessageCreateParamsStreaming, options?: AnthropicRequestOptions): unknown;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export declare class AnthropicMessagesClient implements AnthropicMessagesClientLike {
|
|
99
|
+
#private;
|
|
100
|
+
readonly messages: AnthropicMessages;
|
|
101
|
+
readonly beta: {
|
|
102
|
+
readonly messages: AnthropicMessages;
|
|
103
|
+
};
|
|
104
|
+
constructor(options: AnthropicClientOptions);
|
|
105
|
+
request(path: string, params: MessageCreateParamsStreaming, options?: AnthropicRequestOptions): AnthropicApiRequest;
|
|
106
|
+
}
|