@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,254 @@
|
|
|
1
|
+
import { type GitLabDuoWorkflowNamespaceSelection } from "@linxiraos/pi-catalog/discovery/gitlab-duo-workflow";
|
|
2
|
+
import type { AssistantMessage, Context, FetchImpl, Model, ProviderSessionState, StreamFunction, StreamOptions, Tool, ToolChoice, ToolResultMessage } from "../types.js";
|
|
3
|
+
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
4
|
+
export declare const GITLAB_DUO_WORKFLOW_PROVIDER_ID = "gitlab-duo-agent";
|
|
5
|
+
export declare const GITLAB_DUO_WORKFLOW_API = "gitlab-duo-agent";
|
|
6
|
+
export declare const GITLAB_DUO_WORKFLOW_DEFINITION = "ambient";
|
|
7
|
+
export type GitLabDuoWorkflowDefinition = "ambient" | (string & {});
|
|
8
|
+
export declare const GITLAB_DUO_WORKFLOW_CLIENT_CAPABILITIES: readonly ["incremental_streaming", "read_file_chunked", "shell_command", "command_timeout", "tool_call_approval"];
|
|
9
|
+
export interface GitLabMcpToolArgs {
|
|
10
|
+
name?: string;
|
|
11
|
+
tool_name?: string;
|
|
12
|
+
toolName?: string;
|
|
13
|
+
providerIdentifier?: string;
|
|
14
|
+
provider_identifier?: string;
|
|
15
|
+
toolCallId?: string;
|
|
16
|
+
tool_call_id?: string;
|
|
17
|
+
args?: Record<string, unknown> | string;
|
|
18
|
+
arguments?: Record<string, unknown> | string;
|
|
19
|
+
}
|
|
20
|
+
export interface GitLabPlainTextResponse {
|
|
21
|
+
response?: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
}
|
|
24
|
+
export type PlainTextResponse = GitLabPlainTextResponse;
|
|
25
|
+
export interface GitLabDuoWorkflowOptions extends StreamOptions {
|
|
26
|
+
rootNamespaceId?: string;
|
|
27
|
+
namespaceId?: string;
|
|
28
|
+
projectId?: string;
|
|
29
|
+
projectPath?: string;
|
|
30
|
+
workflowDefinition?: GitLabDuoWorkflowDefinition;
|
|
31
|
+
workflowId?: string;
|
|
32
|
+
workflowToken?: string;
|
|
33
|
+
cwd?: string;
|
|
34
|
+
webSocketFactory?: GitLabDuoWorkflowWebSocketFactory;
|
|
35
|
+
/** Idle WebSocket deadline (ms) before aborting and resuming; defaults to {@link GITLAB_DUO_WORKFLOW_IDLE_TIMEOUT_MS}. */
|
|
36
|
+
idleTimeoutMs?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Tool-choice override forwarded from the stream layer. Only `"none"` is
|
|
39
|
+
* acted on: a side-request (e.g. handoff) keeps tool definitions in the cache
|
|
40
|
+
* prefix but disables tool use, so the provider must not advertise them to Duo.
|
|
41
|
+
*/
|
|
42
|
+
toolChoice?: ToolChoice;
|
|
43
|
+
}
|
|
44
|
+
export interface GitLabDuoWorkflowWebSocketLike {
|
|
45
|
+
readyState?: number;
|
|
46
|
+
binaryType?: string;
|
|
47
|
+
onopen: ((event: Event) => void) | null;
|
|
48
|
+
onmessage: ((event: MessageEvent) => void) | null;
|
|
49
|
+
onerror: ((event: Event) => void) | null;
|
|
50
|
+
onclose: ((event: CloseEvent) => void) | null;
|
|
51
|
+
send(data: string): void;
|
|
52
|
+
close(code?: number, reason?: string): void;
|
|
53
|
+
}
|
|
54
|
+
export interface GitLabDuoWorkflowWebSocketFactoryOptions {
|
|
55
|
+
headers: Record<string, string>;
|
|
56
|
+
protocols?: string[];
|
|
57
|
+
}
|
|
58
|
+
export type GitLabDuoWorkflowWebSocketFactory = (url: string, options: GitLabDuoWorkflowWebSocketFactoryOptions) => GitLabDuoWorkflowWebSocketLike;
|
|
59
|
+
export interface GitLabDirectAccessResponse {
|
|
60
|
+
token?: string;
|
|
61
|
+
access_token?: string;
|
|
62
|
+
jwt?: string;
|
|
63
|
+
workflow_token?: string;
|
|
64
|
+
duo_workflow_access_token?: string;
|
|
65
|
+
duo_workflow_service?: {
|
|
66
|
+
token?: string;
|
|
67
|
+
base_url?: string;
|
|
68
|
+
headers?: Record<string, string>;
|
|
69
|
+
};
|
|
70
|
+
gitlab_rails?: {
|
|
71
|
+
token?: string;
|
|
72
|
+
};
|
|
73
|
+
[key: string]: unknown;
|
|
74
|
+
}
|
|
75
|
+
interface GitLabDuoWorkflowCreateBodyOptions {
|
|
76
|
+
projectId?: string;
|
|
77
|
+
goal?: string;
|
|
78
|
+
workflowDefinition?: GitLabDuoWorkflowDefinition;
|
|
79
|
+
}
|
|
80
|
+
interface GitLabDuoWorkflowStartMetadataOptions {
|
|
81
|
+
projectId?: string;
|
|
82
|
+
projectPath?: string;
|
|
83
|
+
namespaceId?: string;
|
|
84
|
+
rootNamespaceId?: string;
|
|
85
|
+
workflowDefinition?: GitLabDuoWorkflowDefinition;
|
|
86
|
+
inlineFlow?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface GitLabMcpToolDefinition {
|
|
89
|
+
name: string;
|
|
90
|
+
originalToolName: string;
|
|
91
|
+
serverName: string;
|
|
92
|
+
description: string;
|
|
93
|
+
inputSchema: string;
|
|
94
|
+
isApproved: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface GitLabDuoWorkflowAdditionalContextItem {
|
|
97
|
+
id: string;
|
|
98
|
+
category: "agent_user_environment" | "user_rule";
|
|
99
|
+
content: string;
|
|
100
|
+
metadata: {
|
|
101
|
+
title: string;
|
|
102
|
+
enabled: boolean;
|
|
103
|
+
subType: "snippet";
|
|
104
|
+
icon: string;
|
|
105
|
+
secondaryText: string;
|
|
106
|
+
subTypeLabel: string;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export interface GitLabDuoWorkflowStartRequest {
|
|
110
|
+
workflowID: string;
|
|
111
|
+
clientVersion: "1.0";
|
|
112
|
+
workflowDefinition: GitLabDuoWorkflowDefinition;
|
|
113
|
+
goal: string;
|
|
114
|
+
workflowMetadata: string;
|
|
115
|
+
additional_context: readonly GitLabDuoWorkflowAdditionalContextItem[];
|
|
116
|
+
approval?: {
|
|
117
|
+
approval?: Record<string, never>;
|
|
118
|
+
rejection?: {
|
|
119
|
+
message?: string;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
clientCapabilities: readonly (typeof GITLAB_DUO_WORKFLOW_CLIENT_CAPABILITIES)[number][];
|
|
123
|
+
mcpTools: GitLabMcpToolDefinition[];
|
|
124
|
+
preapproved_tools: string[];
|
|
125
|
+
flowConfigSchemaVersion?: "v1";
|
|
126
|
+
flowConfigId?: string;
|
|
127
|
+
flowVersion?: string;
|
|
128
|
+
flowConfig?: GitLabDuoWorkflowInlineFlowConfig;
|
|
129
|
+
}
|
|
130
|
+
export interface GitLabDuoWorkflowInlineFlowComponent {
|
|
131
|
+
name: string;
|
|
132
|
+
type: "AgentComponent";
|
|
133
|
+
prompt_id: string;
|
|
134
|
+
toolset: string[];
|
|
135
|
+
inputs: {
|
|
136
|
+
from: string;
|
|
137
|
+
as: string;
|
|
138
|
+
}[];
|
|
139
|
+
ui_log_events: string[];
|
|
140
|
+
}
|
|
141
|
+
export interface GitLabDuoWorkflowInlineFlowPrompt {
|
|
142
|
+
name: string;
|
|
143
|
+
prompt_id: string;
|
|
144
|
+
unit_primitives: string[];
|
|
145
|
+
prompt_template: {
|
|
146
|
+
system: string;
|
|
147
|
+
user: string;
|
|
148
|
+
placeholder: string;
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
export interface GitLabDuoWorkflowInlineFlowConfig {
|
|
152
|
+
version: "v1";
|
|
153
|
+
environment: "ambient";
|
|
154
|
+
flow: {
|
|
155
|
+
entry_point: string;
|
|
156
|
+
};
|
|
157
|
+
components: GitLabDuoWorkflowInlineFlowComponent[];
|
|
158
|
+
routers: {
|
|
159
|
+
from: string;
|
|
160
|
+
to: string;
|
|
161
|
+
}[];
|
|
162
|
+
prompts: GitLabDuoWorkflowInlineFlowPrompt[];
|
|
163
|
+
}
|
|
164
|
+
export interface GitLabDuoWorkflowActionResponse {
|
|
165
|
+
actionResponse: {
|
|
166
|
+
requestID: string;
|
|
167
|
+
plainTextResponse?: GitLabPlainTextResponse;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
interface GitLabDuoWorkflowActionDescriptor {
|
|
171
|
+
requestID: string;
|
|
172
|
+
name: string;
|
|
173
|
+
args: unknown;
|
|
174
|
+
}
|
|
175
|
+
export interface GitLabDuoWorkflowActiveSession {
|
|
176
|
+
workflowId: string;
|
|
177
|
+
startPayload: GitLabDuoWorkflowStartRequest;
|
|
178
|
+
ws: GitLabDuoWorkflowWebSocketLike;
|
|
179
|
+
stop?: () => void;
|
|
180
|
+
pendingActions?: GitLabDuoWorkflowActionDescriptor[];
|
|
181
|
+
checkpointAgentContentByKey?: Record<string, string>;
|
|
182
|
+
checkpointAgentContentSignatures?: Record<string, true>;
|
|
183
|
+
paused?: boolean;
|
|
184
|
+
pauseBuffer?: unknown[];
|
|
185
|
+
lastToolBoundaryContentLength?: number;
|
|
186
|
+
}
|
|
187
|
+
export interface GitLabDuoWorkflowProviderSessionState extends ProviderSessionState {
|
|
188
|
+
active?: GitLabDuoWorkflowActiveSession;
|
|
189
|
+
}
|
|
190
|
+
export interface GitLabDuoWorkflowStreamState {
|
|
191
|
+
stream: AssistantMessageEventStream;
|
|
192
|
+
output: AssistantMessage;
|
|
193
|
+
activeTextIndex?: number;
|
|
194
|
+
activeThinkingIndex?: number;
|
|
195
|
+
activeCheckpointMessageKey?: string;
|
|
196
|
+
started: boolean;
|
|
197
|
+
checkpointAgentContentByKey?: Record<string, string>;
|
|
198
|
+
checkpointAgentContentSignatures?: Record<string, true>;
|
|
199
|
+
pauseRequested?: boolean;
|
|
200
|
+
stepLimitRequested?: boolean;
|
|
201
|
+
retryableErrorRequested?: boolean;
|
|
202
|
+
lastCheckpointContentLength?: number;
|
|
203
|
+
stalledRequested?: boolean;
|
|
204
|
+
providerSessionState?: GitLabDuoWorkflowProviderSessionState;
|
|
205
|
+
lastApprovalStatus?: string;
|
|
206
|
+
goalOverflowMessage?: string;
|
|
207
|
+
}
|
|
208
|
+
type GitLabDuoWorkflowSocketResult = "closed" | "terminal" | "approval" | "action" | "pause" | "timeout" | "step_limit" | "retryable_error" | "stalled";
|
|
209
|
+
export interface GitLabAvailableModel {
|
|
210
|
+
name?: string | null;
|
|
211
|
+
ref?: string | null;
|
|
212
|
+
}
|
|
213
|
+
export interface GitLabAvailableModelsPayload {
|
|
214
|
+
pinnedModel?: GitLabAvailableModel | null;
|
|
215
|
+
selectedModel?: GitLabAvailableModel | null;
|
|
216
|
+
defaultModel?: GitLabAvailableModel | null;
|
|
217
|
+
selectableModels?: GitLabAvailableModel[] | null;
|
|
218
|
+
}
|
|
219
|
+
export declare const streamGitLabDuoWorkflow: StreamFunction<"gitlab-duo-agent">;
|
|
220
|
+
export declare function buildGitLabDuoWorkflowDirectAccessBody(rootNamespaceId: string, projectId?: string, workflowDefinition?: GitLabDuoWorkflowDefinition): Record<string, string>;
|
|
221
|
+
export declare function buildGitLabDuoWorkflowCreateBody(namespaceId?: string, options?: GitLabDuoWorkflowCreateBodyOptions): Record<string, string | boolean | string[] | number[]>;
|
|
222
|
+
export declare function buildGitLabDuoWorkflowStopBody(): Record<string, string>;
|
|
223
|
+
export declare function buildGitLabDuoWorkflowWebSocketUrl(baseUrl: string, options?: {
|
|
224
|
+
projectId?: string;
|
|
225
|
+
namespaceId?: string;
|
|
226
|
+
rootNamespaceId?: string;
|
|
227
|
+
selectedModelIdentifier?: string;
|
|
228
|
+
workflowDefinition?: GitLabDuoWorkflowDefinition;
|
|
229
|
+
serviceEndpoint?: boolean;
|
|
230
|
+
}): string;
|
|
231
|
+
export declare function buildGitLabDuoWorkflowWebSocketHeaders(options: {
|
|
232
|
+
token: string;
|
|
233
|
+
baseUrl?: string;
|
|
234
|
+
projectId?: string;
|
|
235
|
+
namespaceId?: string;
|
|
236
|
+
rootNamespaceId?: string;
|
|
237
|
+
extraHeaders?: Record<string, string>;
|
|
238
|
+
}): Record<string, string>;
|
|
239
|
+
export declare function buildGitLabDuoWorkflowStartRequest(workflowId: string, model: Model<"gitlab-duo-agent">, context: Context, tools?: Tool[] | undefined, availableModels?: GitLabAvailableModelsPayload | null, metadataOptions?: GitLabDuoWorkflowStartMetadataOptions): GitLabDuoWorkflowStartRequest;
|
|
240
|
+
export declare function buildGitLabDuoWorkflowInlineFlowConfig(systemPrompt: string): GitLabDuoWorkflowInlineFlowConfig;
|
|
241
|
+
export declare function buildGitLabDuoWorkflowClientAdditionalContext(): GitLabDuoWorkflowAdditionalContextItem[];
|
|
242
|
+
export declare function buildGitLabDuoWorkflowMcpTools(tools: Tool[] | undefined): GitLabMcpToolDefinition[];
|
|
243
|
+
export declare function selectGitLabDuoWorkflowModelRef(selectedModel: string, availableModels?: GitLabAvailableModelsPayload | null): string;
|
|
244
|
+
export declare function buildGitLabPlainTextFromToolResult(toolResult: ToolResultMessage): GitLabPlainTextResponse;
|
|
245
|
+
export declare function gitLabDuoWorkflowErrorText(error: unknown): string;
|
|
246
|
+
export declare function buildGitLabDuoWorkflowSettingsBody(): Record<string, unknown>;
|
|
247
|
+
export declare function runGitLabDuoWorkflowSocket(ws: GitLabDuoWorkflowWebSocketLike, startPayload: GitLabDuoWorkflowStartRequest, state: GitLabDuoWorkflowStreamState, options: GitLabDuoWorkflowOptions, resumeResponse?: GitLabDuoWorkflowActionResponse | readonly GitLabDuoWorkflowActionResponse[], replayMessages?: readonly unknown[]): Promise<GitLabDuoWorkflowSocketResult>;
|
|
248
|
+
export declare function buildGitLabDuoWorkflowApprovalStartRequest(startPayload: GitLabDuoWorkflowStartRequest): GitLabDuoWorkflowStartRequest;
|
|
249
|
+
export declare function describeGitLabDuoWorkflowSocketEvent(event: unknown): string;
|
|
250
|
+
export declare function traceGitLabDuoWorkflow(event: string, data?: Record<string, unknown>): void;
|
|
251
|
+
export declare function extractGitLabWorkflowToken(payload: GitLabDirectAccessResponse): string | undefined;
|
|
252
|
+
export declare function resolveGitLabDuoWorkflowNamespaceSelection(model: Model<"gitlab-duo-agent">, options: GitLabDuoWorkflowOptions, apiKey: string, baseUrl: string, fetchImpl: FetchImpl): Promise<GitLabDuoWorkflowNamespaceSelection>;
|
|
253
|
+
export declare function resolveGitLabDuoWorkflowRootNamespaceId(model: Model<"gitlab-duo-agent">, options: GitLabDuoWorkflowOptions, apiKey: string, baseUrl: string, fetchImpl: FetchImpl): Promise<string>;
|
|
254
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Api, Context, Model, SimpleStreamOptions } from "../types.js";
|
|
2
|
+
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
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 {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Default Credentials (ADC) resolution for Vertex AI.
|
|
3
|
+
*
|
|
4
|
+
* Replaces `google-auth-library` with a direct WebCrypto + REST implementation.
|
|
5
|
+
* Sources, in priority order:
|
|
6
|
+
* 1. `GOOGLE_APPLICATION_CREDENTIALS` env → file with `type: "service_account"` (RS256 JWT exchange)
|
|
7
|
+
* or `type: "authorized_user"` (refresh-token exchange).
|
|
8
|
+
* 2. `~/.config/gcloud/application_default_credentials.json` (user ADC, same authorized_user flow).
|
|
9
|
+
* 3. GCE / Cloud Run metadata server (`metadata.google.internal`).
|
|
10
|
+
*
|
|
11
|
+
* Tokens are cached per source key and refreshed `GOOGLE_VERTEX_REFRESH_SKEW_MS` before expiry
|
|
12
|
+
* (default 60s). Concurrent callers waiting on a refresh share the same in-flight promise.
|
|
13
|
+
*/
|
|
14
|
+
import type { FetchImpl } from "../types.js";
|
|
15
|
+
/**
|
|
16
|
+
* Returns a Bearer access token suitable for the `Authorization` header on Vertex AI calls.
|
|
17
|
+
* The token is cached in module scope and refreshed `GOOGLE_VERTEX_REFRESH_SKEW_MS` ms before it expires.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getVertexAccessToken(options?: {
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
fetch?: FetchImpl;
|
|
22
|
+
}): Promise<string>;
|
|
23
|
+
/** Test seam: clears every cached token. */
|
|
24
|
+
export declare function __resetVertexTokenCache(): void;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { Context, Model, ProviderSessionState, StreamFunction, StreamOptions } from "../types.js";
|
|
2
|
+
import type { Content, FunctionCallingConfigMode, ThinkingConfig } from "./google-shared.js";
|
|
3
|
+
import { type GoogleThinkingLevel } from "./google-shared.js";
|
|
4
|
+
/**
|
|
5
|
+
* Thinking level for Gemini 3 models. Re-exported from `google-shared` so existing
|
|
6
|
+
* `import { GoogleThinkingLevel } from "./google-gemini-cli.js"` callers keep working.
|
|
7
|
+
*/
|
|
8
|
+
export type { GoogleThinkingLevel };
|
|
9
|
+
export interface GoogleGeminiCliOptions extends StreamOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Tool selection mode. String forms map directly to Gemini
|
|
12
|
+
* `FunctionCallingConfigMode`. The object form forces a single named tool —
|
|
13
|
+
* `mode: "ANY"` is wire-required when `allowedFunctionNames` is set.
|
|
14
|
+
*/
|
|
15
|
+
toolChoice?: "auto" | "none" | "any" | {
|
|
16
|
+
mode: "ANY";
|
|
17
|
+
allowedFunctionNames: [string, ...string[]];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Thinking/reasoning configuration.
|
|
21
|
+
* - Gemini 2.x models: use `budgetTokens` to set the thinking budget
|
|
22
|
+
* - Gemini 3 models (gemini-3-pro-*, gemini-3-flash-*): use `level` instead
|
|
23
|
+
*
|
|
24
|
+
* When using `streamSimple`, this is handled automatically based on the model.
|
|
25
|
+
*/
|
|
26
|
+
thinking?: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
/** Thinking budget in tokens. Use for Gemini 2.x models. */
|
|
29
|
+
budgetTokens?: number;
|
|
30
|
+
/** Thinking level. Use for Gemini 3 models (LOW/HIGH for Pro, MINIMAL/LOW/MEDIUM/HIGH for Flash). */
|
|
31
|
+
level?: GoogleThinkingLevel;
|
|
32
|
+
/**
|
|
33
|
+
* Explicit wire suppression when `enabled` is false. Cloud Code Assist
|
|
34
|
+
* re-applies the per-id baked server default when thinkingConfig is
|
|
35
|
+
* omitted, so models with `thinking.suppressWhenOff` must send
|
|
36
|
+
* `includeThoughts: false` plus a MINIMAL level (or zero budget).
|
|
37
|
+
*/
|
|
38
|
+
suppress?: {
|
|
39
|
+
level: GoogleThinkingLevel;
|
|
40
|
+
} | {
|
|
41
|
+
budget: number;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/** Request that Cloud Code Assist omit human-readable thought summaries while still allowing internal reasoning. */
|
|
45
|
+
hideThinkingSummary?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Upstream wire model id override for collapsed effort-tier variants.
|
|
48
|
+
* Serialized as `requestModelId ?? model.requestModelId ?? model.id`.
|
|
49
|
+
*/
|
|
50
|
+
requestModelId?: string;
|
|
51
|
+
projectId?: string;
|
|
52
|
+
/** Antigravity endpoint routing mode: "auto" (default with failover), "production", "sandbox". */
|
|
53
|
+
antigravityEndpointMode?: "auto" | "production" | "sandbox";
|
|
54
|
+
providerSessionState?: Map<string, ProviderSessionState>;
|
|
55
|
+
}
|
|
56
|
+
export interface AntigravityProviderSessionState extends ProviderSessionState {
|
|
57
|
+
lastGoodEndpoint?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Per-conversation request-envelope identity that mirrors the real
|
|
60
|
+
* Antigravity client. `sessionId` is the signed-decimal session id;
|
|
61
|
+
* `agentId`/`trajectoryId` are UUIDs; `stepIndex` is the monotonic step
|
|
62
|
+
* counter; `lastExecutionId` is the prior response id echoed as
|
|
63
|
+
* `labels.last_execution_id`.
|
|
64
|
+
*/
|
|
65
|
+
agentId?: string;
|
|
66
|
+
trajectoryId?: string;
|
|
67
|
+
sessionId?: string;
|
|
68
|
+
stepIndex?: number;
|
|
69
|
+
lastExecutionId?: string;
|
|
70
|
+
}
|
|
71
|
+
export declare function getAntigravityProviderSessionState(providerSessionState: Map<string, ProviderSessionState> | undefined): AntigravityProviderSessionState | undefined;
|
|
72
|
+
export { ANTIGRAVITY_SYSTEM_INSTRUCTION, getAntigravityUserAgent, getGeminiCliHeaders, getGeminiCliUserAgent, } from "@linxiraos/pi-catalog/wire/gemini-headers";
|
|
73
|
+
interface ParsedGeminiCliCredentials {
|
|
74
|
+
accessToken: string;
|
|
75
|
+
projectId: string;
|
|
76
|
+
refreshToken?: string;
|
|
77
|
+
expiresAt?: number;
|
|
78
|
+
email?: string;
|
|
79
|
+
}
|
|
80
|
+
export declare function parseGeminiCliCredentials(apiKeyRaw: string): ParsedGeminiCliCredentials;
|
|
81
|
+
export declare function shouldRefreshGeminiCliCredentials(expiresAt: number | undefined, isAntigravity: boolean, nowMs?: number): boolean;
|
|
82
|
+
interface CloudCodeAssistRequest {
|
|
83
|
+
project: string;
|
|
84
|
+
model: string;
|
|
85
|
+
request: {
|
|
86
|
+
contents: Content[];
|
|
87
|
+
sessionId?: string;
|
|
88
|
+
systemInstruction?: {
|
|
89
|
+
role?: string;
|
|
90
|
+
parts: {
|
|
91
|
+
text: string;
|
|
92
|
+
}[];
|
|
93
|
+
};
|
|
94
|
+
generationConfig?: {
|
|
95
|
+
maxOutputTokens?: number;
|
|
96
|
+
temperature?: number;
|
|
97
|
+
topP?: number;
|
|
98
|
+
topK?: number;
|
|
99
|
+
minP?: number;
|
|
100
|
+
presencePenalty?: number;
|
|
101
|
+
repetitionPenalty?: number;
|
|
102
|
+
thinkingConfig?: ThinkingConfig;
|
|
103
|
+
};
|
|
104
|
+
tools?: {
|
|
105
|
+
functionDeclarations: Record<string, unknown>[];
|
|
106
|
+
}[] | undefined;
|
|
107
|
+
toolConfig?: {
|
|
108
|
+
functionCallingConfig: {
|
|
109
|
+
mode: FunctionCallingConfigMode;
|
|
110
|
+
allowedFunctionNames?: string[];
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
labels?: Record<string, string>;
|
|
114
|
+
};
|
|
115
|
+
requestType?: string;
|
|
116
|
+
userAgent?: string;
|
|
117
|
+
requestId?: string;
|
|
118
|
+
}
|
|
119
|
+
export declare const streamGoogleGeminiCli: StreamFunction<"google-gemini-cli">;
|
|
120
|
+
export declare function buildRequest(model: Model<"google-gemini-cli">, context: Context, projectId: string, options?: GoogleGeminiCliOptions, isAntigravity?: boolean): CloudCodeAssistRequest;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for Google Generative AI and Google Cloud Code Assist providers.
|
|
3
|
+
*/
|
|
4
|
+
import type { AssistantMessage, Context, FetchImpl, Model, ServiceTier, StopReason, StreamOptions, TextContent, ThinkingContent, Tool, ToolCall } from "../types.js";
|
|
5
|
+
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
6
|
+
import { normalizeSchemaForGoogle } from "../utils/schema/index.js";
|
|
7
|
+
import type { Content, FinishReason, FunctionCallingConfigMode, GenerateContentParameters, GenerateContentResponse, Part } from "./google-types.js";
|
|
8
|
+
export type { Content, FunctionCallingConfigMode, GenerateContentParameters, GenerateContentResponse, ThinkingConfig, } from "./google-types.js";
|
|
9
|
+
export { normalizeSchemaForGoogle };
|
|
10
|
+
type GoogleApiType = "google-generative-ai" | "google-gemini-cli" | "google-vertex";
|
|
11
|
+
/**
|
|
12
|
+
* Thinking level for Gemini 3 models. Mirrors Google's `ThinkingLevel` enum values.
|
|
13
|
+
* Defined here (not in any specific provider) so all Google providers can reference it
|
|
14
|
+
* without inducing a circular dependency.
|
|
15
|
+
*/
|
|
16
|
+
export type GoogleThinkingLevel = "THINKING_LEVEL_UNSPECIFIED" | "MINIMAL" | "LOW" | "MEDIUM" | "HIGH";
|
|
17
|
+
/**
|
|
18
|
+
* Sampling/thinking options shared by `streamGoogle` and `streamGoogleVertex`.
|
|
19
|
+
* `google-gemini-cli` uses a different transport and request shape — do not extend this for it.
|
|
20
|
+
*/
|
|
21
|
+
export interface GoogleSharedStreamOptions extends StreamOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Tool selection mode. String forms map directly to Gemini
|
|
24
|
+
* `FunctionCallingConfigMode`. The object form forces a single named tool
|
|
25
|
+
* — `mode: "ANY"` is wire-required when `allowedFunctionNames` is set.
|
|
26
|
+
*/
|
|
27
|
+
toolChoice?: "auto" | "none" | "any" | {
|
|
28
|
+
mode: "ANY";
|
|
29
|
+
allowedFunctionNames: [string, ...string[]];
|
|
30
|
+
};
|
|
31
|
+
thinking?: {
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
budgetTokens?: number;
|
|
34
|
+
level?: GoogleThinkingLevel;
|
|
35
|
+
};
|
|
36
|
+
/** Request that Google omit human-readable thought summaries while still allowing internal reasoning. */
|
|
37
|
+
hideThinkingSummary?: boolean;
|
|
38
|
+
/** Gemini/Vertex serving tier (`flex`/`priority`); other values are omitted. */
|
|
39
|
+
serviceTier?: ServiceTier;
|
|
40
|
+
/**
|
|
41
|
+
* Caller-owned Google context-cache resource name for GenerateContent.
|
|
42
|
+
* Passed through opaquely as the wire `cachedContent` field on
|
|
43
|
+
* `google-generative-ai` and `google-vertex` only. OMP does not create,
|
|
44
|
+
* refresh, validate model/project/location compatibility, or delete the
|
|
45
|
+
* resource — callers own that lifecycle.
|
|
46
|
+
*
|
|
47
|
+
* @see https://ai.google.dev/api/generate-content
|
|
48
|
+
* @see `@google/genai` `GenerateContentConfig.cachedContent`
|
|
49
|
+
*/
|
|
50
|
+
cachedContent?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Determines whether a streamed Gemini `Part` should be treated as "thinking".
|
|
54
|
+
*
|
|
55
|
+
* Protocol note (Gemini / Vertex AI thought signatures):
|
|
56
|
+
* - `thought: true` is the definitive marker for thinking content (thought summaries).
|
|
57
|
+
* - `thoughtSignature` is an encrypted representation of the model's internal thought process
|
|
58
|
+
* used to preserve reasoning context across multi-turn interactions.
|
|
59
|
+
* - `thoughtSignature` can appear on ANY part type (text, functionCall, etc.) - it does NOT
|
|
60
|
+
* indicate the part itself is thinking content.
|
|
61
|
+
* - For non-functionCall responses, the signature appears on the last part for context replay.
|
|
62
|
+
* - When persisting/replaying model outputs, signature-bearing parts must be preserved as-is;
|
|
63
|
+
* do not merge/move signatures across parts.
|
|
64
|
+
*
|
|
65
|
+
* See: https://ai.google.dev/gemini-api/docs/thought-signatures
|
|
66
|
+
*/
|
|
67
|
+
export declare function isThinkingPart(part: Pick<Part, "thought" | "thoughtSignature">): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Retain thought signatures during streaming.
|
|
70
|
+
*
|
|
71
|
+
* Some backends only send `thoughtSignature` on the first delta for a given part/block; later deltas may omit it.
|
|
72
|
+
* This helper preserves the last non-empty signature for the current block.
|
|
73
|
+
*
|
|
74
|
+
* Note: this does NOT merge or move signatures across distinct response parts. It only prevents
|
|
75
|
+
* a signature from being overwritten with `undefined` within the same streamed block.
|
|
76
|
+
*/
|
|
77
|
+
export declare function retainThoughtSignature(existing: string | undefined, incoming: string | undefined): string | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Convert internal messages to Gemini Content[] format.
|
|
80
|
+
*/
|
|
81
|
+
export declare function convertMessages<T extends GoogleApiType>(model: Model<T>, context: Context): Content[];
|
|
82
|
+
/**
|
|
83
|
+
* Convert tools to Gemini function declarations format.
|
|
84
|
+
*
|
|
85
|
+
* We prefer `parametersJsonSchema` (full JSON Schema: anyOf/oneOf/const/etc.).
|
|
86
|
+
*
|
|
87
|
+
* Claude models via Cloud Code Assist require the legacy `parameters` field; the API
|
|
88
|
+
* translates it into Anthropic's `input_schema`. When using that path, we sanitize the
|
|
89
|
+
* schema to remove Google-unsupported JSON Schema keywords.
|
|
90
|
+
*/
|
|
91
|
+
export declare function convertTools(tools: Tool[], model: Model<"google-generative-ai" | "google-gemini-cli" | "google-vertex">): {
|
|
92
|
+
functionDeclarations: Record<string, unknown>[];
|
|
93
|
+
}[] | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Map tool choice string to Gemini FunctionCallingConfigMode.
|
|
96
|
+
*/
|
|
97
|
+
export declare function mapToolChoice(choice: string): FunctionCallingConfigMode;
|
|
98
|
+
/**
|
|
99
|
+
* Map Gemini FinishReason to our StopReason.
|
|
100
|
+
*/
|
|
101
|
+
export declare function mapStopReason(reason: FinishReason): StopReason;
|
|
102
|
+
/**
|
|
103
|
+
* Map string finish reason to our StopReason (for raw API responses).
|
|
104
|
+
*/
|
|
105
|
+
export declare function mapStopReasonString(reason: string): StopReason;
|
|
106
|
+
/**
|
|
107
|
+
* Bounded retries for the well-known Gemini "empty response" failure: a benign
|
|
108
|
+
* `finishReason: STOP` carrying only an empty/whitespace text part and no tool call.
|
|
109
|
+
* Shared by the public/Vertex `streamGoogleGenAI` path and the Cloud Code Assist
|
|
110
|
+
* (`google-gemini-cli`/`google-antigravity`) provider so both apply the same policy.
|
|
111
|
+
*/
|
|
112
|
+
export declare const MAX_EMPTY_STREAM_RETRIES = 2;
|
|
113
|
+
export declare const EMPTY_STREAM_BASE_DELAY_MS = 500;
|
|
114
|
+
/**
|
|
115
|
+
* Whether a completed Google assistant message carries content worth delivering.
|
|
116
|
+
*
|
|
117
|
+
* A tool call or any non-whitespace text counts as meaningful. An empty/whitespace-only
|
|
118
|
+
* text part — or thinking that never produced an answer — is the "empty response" failure:
|
|
119
|
+
* delivered as-is the agent loop has nothing to act on and silently halts, so the request
|
|
120
|
+
* must be retried instead of surfaced.
|
|
121
|
+
*/
|
|
122
|
+
export declare function hasMeaningfulGoogleContent(output: AssistantMessage): boolean;
|
|
123
|
+
export declare function nextToolCallId(name: string): string;
|
|
124
|
+
/**
|
|
125
|
+
* Push the appropriate `text_end` / `thinking_end` event for the given block.
|
|
126
|
+
* Shared between the SDK-backed stream consumer and the gemini-cli SSE consumer so
|
|
127
|
+
* the end-of-block event shape stays in lockstep.
|
|
128
|
+
*/
|
|
129
|
+
export declare function pushBlockEndEvent(block: TextContent | ThinkingContent, contentIndex: number, output: AssistantMessage, stream: AssistantMessageEventStream): void;
|
|
130
|
+
/**
|
|
131
|
+
* Push the three lifecycle events (`toolcall_start` / `toolcall_delta` / `toolcall_end`) for a
|
|
132
|
+
* fully-assembled `ToolCall`. Caller is responsible for appending the toolCall to `output.content`
|
|
133
|
+
* before invoking — this helper does not mutate `output.content`.
|
|
134
|
+
*/
|
|
135
|
+
export declare function pushToolCallEvents(toolCall: ToolCall, contentIndex: number, output: AssistantMessage, stream: AssistantMessageEventStream): void;
|
|
136
|
+
/**
|
|
137
|
+
* Append a new text- or thinking-block to `output.content` and push the matching
|
|
138
|
+
* `text_start` / `thinking_start` event. `onBeforeStartEvent` lets the SSE consumer
|
|
139
|
+
* inject its `ensureStarted()` first-token side effect into the canonical event order.
|
|
140
|
+
*/
|
|
141
|
+
export declare function startTextOrThinkingBlock(isThinking: true, output: AssistantMessage, stream: AssistantMessageEventStream, onBeforeStartEvent?: () => void): ThinkingContent;
|
|
142
|
+
export declare function startTextOrThinkingBlock(isThinking: false, output: AssistantMessage, stream: AssistantMessageEventStream, onBeforeStartEvent?: () => void): TextContent;
|
|
143
|
+
export declare function startTextOrThinkingBlock(isThinking: boolean, output: AssistantMessage, stream: AssistantMessageEventStream, onBeforeStartEvent?: () => void): TextContent | ThinkingContent;
|
|
144
|
+
/**
|
|
145
|
+
* Drives the chunked `generateContentStream` iterator into an `AssistantMessage` and
|
|
146
|
+
* the corresponding `AssistantMessageEventStream`. Shared between `streamGoogle` and
|
|
147
|
+
* `streamGoogleVertex` — every observable event order and stop-reason rule is preserved.
|
|
148
|
+
*
|
|
149
|
+
* The caller still owns: `output` construction, timing fields (`duration`/`ttft`),
|
|
150
|
+
* `rawRequestDump`, the `client.models.generateContentStream(params)` call itself,
|
|
151
|
+
* pushing `start`/`done`/`error` events, and the surrounding try/catch that translates
|
|
152
|
+
* thrown errors into `output.stopReason`/`errorMessage`.
|
|
153
|
+
*
|
|
154
|
+
* This helper handles: the chunk loop, currentBlock flush transitions, usage metadata
|
|
155
|
+
* decoding (`calculateCost` included), tool-call id collision avoidance, finish-reason
|
|
156
|
+
* mapping, and the abort/stop-reason post-checks that re-throw to bubble into the
|
|
157
|
+
* caller's catch.
|
|
158
|
+
*/
|
|
159
|
+
export declare function consumeGoogleStream<T extends GoogleApiType>(args: {
|
|
160
|
+
googleStream: AsyncIterable<GenerateContentResponse>;
|
|
161
|
+
output: AssistantMessage;
|
|
162
|
+
stream: AssistantMessageEventStream;
|
|
163
|
+
model: Model<T>;
|
|
164
|
+
options: {
|
|
165
|
+
signal?: AbortSignal;
|
|
166
|
+
} | undefined;
|
|
167
|
+
/** Vertex preserves `textSignature` on streamed text deltas; google-generative-ai does not. */
|
|
168
|
+
retainTextSignature?: boolean;
|
|
169
|
+
onFirstToken?: () => void;
|
|
170
|
+
}): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* Build the `GenerateContentParameters` payload for the public Gemini API and Vertex AI.
|
|
173
|
+
* Both surfaces accept the same `GenerateContentConfig` shape — every numeric/string knob,
|
|
174
|
+
* tool-config, thinking-config, and system-instruction conversion is identical.
|
|
175
|
+
*
|
|
176
|
+
* `google-gemini-cli` is NOT routed through here: its `CloudCodeAssistRequest` body has a
|
|
177
|
+
* distinct top-level shape (project/request/requestType) and a different thinking-config
|
|
178
|
+
* placement on `generationConfig`.
|
|
179
|
+
*/
|
|
180
|
+
export declare function buildGoogleGenerateContentParams<T extends "google-generative-ai" | "google-vertex">(model: Model<T>, context: Context, options: GoogleSharedStreamOptions): GenerateContentParameters;
|
|
181
|
+
/**
|
|
182
|
+
* Drive the `streamGoogle` / `streamGoogleVertex` event flow: build the assistant message,
|
|
183
|
+
* push start/done/error events, run `consumeGoogleStream`, and translate thrown errors into
|
|
184
|
+
* the canonical `error` event shape.
|
|
185
|
+
*
|
|
186
|
+
* Caller-supplied `prepare()` runs inside the try-block so any failure (missing project,
|
|
187
|
+
* bad auth, etc.) is funneled through the same error path as a streaming failure.
|
|
188
|
+
*/
|
|
189
|
+
export interface GoogleGenAIRequestPlan {
|
|
190
|
+
params: GenerateContentParameters;
|
|
191
|
+
url: string;
|
|
192
|
+
headers: Record<string, string>;
|
|
193
|
+
fetch?: FetchImpl;
|
|
194
|
+
/** Optional URL retried once when {@link url} returns 404 (regional Vertex endpoint missing a global-only model). */
|
|
195
|
+
fallbackUrl?: string;
|
|
196
|
+
}
|
|
197
|
+
export declare function streamGoogleGenAI<T extends "google-generative-ai" | "google-vertex">(args: {
|
|
198
|
+
model: Model<T>;
|
|
199
|
+
options: GoogleSharedStreamOptions | undefined;
|
|
200
|
+
api: T;
|
|
201
|
+
retainTextSignature?: boolean;
|
|
202
|
+
prepare: () => GoogleGenAIRequestPlan | Promise<GoogleGenAIRequestPlan>;
|
|
203
|
+
}): AssistantMessageEventStream;
|