@gajae-code/ai 0.1.1
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 +2644 -0
- package/README.md +1181 -0
- package/dist/types/api-registry.d.ts +30 -0
- package/dist/types/auth-broker/client.d.ts +66 -0
- package/dist/types/auth-broker/index.d.ts +5 -0
- package/dist/types/auth-broker/refresher.d.ts +25 -0
- package/dist/types/auth-broker/remote-store.d.ts +96 -0
- package/dist/types/auth-broker/server.d.ts +32 -0
- package/dist/types/auth-broker/types.d.ts +105 -0
- package/dist/types/auth-broker/wire-schemas.d.ts +412 -0
- package/dist/types/auth-gateway/http.d.ts +39 -0
- package/dist/types/auth-gateway/index.d.ts +3 -0
- package/dist/types/auth-gateway/server.d.ts +17 -0
- package/dist/types/auth-gateway/types.d.ts +115 -0
- package/dist/types/auth-storage.d.ts +641 -0
- package/dist/types/cli.d.ts +2 -0
- package/dist/types/index.d.ts +49 -0
- package/dist/types/model-cache.d.ts +17 -0
- package/dist/types/model-manager.d.ts +62 -0
- package/dist/types/model-thinking.d.ts +71 -0
- package/dist/types/models.d.ts +12 -0
- package/dist/types/provider-details.d.ts +24 -0
- package/dist/types/provider-models/bundled-references.d.ts +4 -0
- package/dist/types/provider-models/descriptors.d.ts +48 -0
- package/dist/types/provider-models/google.d.ts +20 -0
- package/dist/types/provider-models/index.d.ts +5 -0
- package/dist/types/provider-models/ollama.d.ts +7 -0
- package/dist/types/provider-models/openai-compat.d.ts +237 -0
- package/dist/types/provider-models/special.d.ts +16 -0
- package/dist/types/providers/amazon-bedrock.d.ts +36 -0
- package/dist/types/providers/anthropic-messages-server-schema.d.ts +450 -0
- package/dist/types/providers/anthropic-messages-server.d.ts +17 -0
- package/dist/types/providers/anthropic.d.ts +188 -0
- package/dist/types/providers/aws-credentials.d.ts +43 -0
- package/dist/types/providers/aws-eventstream.d.ts +38 -0
- package/dist/types/providers/aws-sigv4.d.ts +55 -0
- package/dist/types/providers/azure-openai-responses.d.ts +15 -0
- package/dist/types/providers/cursor/gen/agent_pb.d.ts +13022 -0
- package/dist/types/providers/cursor.d.ts +42 -0
- package/dist/types/providers/error-message.d.ts +27 -0
- package/dist/types/providers/github-copilot-headers.d.ts +40 -0
- package/dist/types/providers/gitlab-duo.d.ts +27 -0
- package/dist/types/providers/google-auth.d.ts +24 -0
- package/dist/types/providers/google-gemini-cli.d.ts +72 -0
- package/dist/types/providers/google-gemini-headers.d.ts +18 -0
- package/dist/types/providers/google-shared.d.ts +163 -0
- package/dist/types/providers/google-types.d.ts +138 -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 +175 -0
- package/dist/types/providers/ollama.d.ts +6 -0
- package/dist/types/providers/openai-anthropic-shim.d.ts +31 -0
- package/dist/types/providers/openai-chat-server-schema.d.ts +814 -0
- package/dist/types/providers/openai-chat-server.d.ts +16 -0
- package/dist/types/providers/openai-codex/constants.d.ts +26 -0
- package/dist/types/providers/openai-codex/request-transformer.d.ts +49 -0
- package/dist/types/providers/openai-codex/response-handler.d.ts +17 -0
- package/dist/types/providers/openai-codex-responses.d.ts +67 -0
- package/dist/types/providers/openai-completions-compat.d.ts +25 -0
- package/dist/types/providers/openai-completions.d.ts +33 -0
- package/dist/types/providers/openai-responses-server-schema.d.ts +392 -0
- package/dist/types/providers/openai-responses-server.d.ts +17 -0
- package/dist/types/providers/openai-responses-shared.d.ts +89 -0
- package/dist/types/providers/openai-responses.d.ts +32 -0
- package/dist/types/providers/pi-native-client.d.ts +13 -0
- package/dist/types/providers/pi-native-server.d.ts +68 -0
- package/dist/types/providers/register-builtins.d.ts +31 -0
- package/dist/types/providers/synthetic.d.ts +26 -0
- package/dist/types/providers/transform-messages.d.ts +12 -0
- package/dist/types/providers/vision-guard.d.ts +8 -0
- package/dist/types/rate-limit-utils.d.ts +19 -0
- package/dist/types/stream.d.ts +24 -0
- package/dist/types/types.d.ts +746 -0
- package/dist/types/usage/claude.d.ts +3 -0
- package/dist/types/usage/gemini.d.ts +2 -0
- package/dist/types/usage/github-copilot.d.ts +7 -0
- package/dist/types/usage/google-antigravity.d.ts +2 -0
- package/dist/types/usage/kimi.d.ts +2 -0
- package/dist/types/usage/minimax-code.d.ts +2 -0
- package/dist/types/usage/openai-codex.d.ts +3 -0
- package/dist/types/usage/shared.d.ts +1 -0
- package/dist/types/usage/zai.d.ts +2 -0
- package/dist/types/usage.d.ts +258 -0
- package/dist/types/utils/abort.d.ts +19 -0
- package/dist/types/utils/anthropic-auth.d.ts +31 -0
- package/dist/types/utils/discovery/antigravity.d.ts +61 -0
- package/dist/types/utils/discovery/codex.d.ts +38 -0
- package/dist/types/utils/discovery/cursor.d.ts +23 -0
- package/dist/types/utils/discovery/gemini.d.ts +25 -0
- package/dist/types/utils/discovery/index.d.ts +4 -0
- package/dist/types/utils/discovery/openai-compatible.d.ts +72 -0
- package/dist/types/utils/event-stream.d.ts +28 -0
- package/dist/types/utils/fireworks-model-id.d.ts +10 -0
- package/dist/types/utils/foundry.d.ts +1 -0
- package/dist/types/utils/h2-fetch.d.ts +22 -0
- package/dist/types/utils/http-inspector.d.ts +31 -0
- package/dist/types/utils/idle-iterator.d.ts +67 -0
- package/dist/types/utils/json-parse.d.ts +10 -0
- package/dist/types/utils/oauth/alibaba-coding-plan.d.ts +18 -0
- package/dist/types/utils/oauth/anthropic.d.ts +22 -0
- package/dist/types/utils/oauth/api-key-login.d.ts +35 -0
- package/dist/types/utils/oauth/api-key-validation.d.ts +27 -0
- package/dist/types/utils/oauth/callback-server.d.ts +57 -0
- package/dist/types/utils/oauth/cerebras.d.ts +1 -0
- package/dist/types/utils/oauth/cloudflare-ai-gateway.d.ts +18 -0
- package/dist/types/utils/oauth/cursor.d.ts +15 -0
- package/dist/types/utils/oauth/deepseek.d.ts +10 -0
- package/dist/types/utils/oauth/firepass.d.ts +1 -0
- package/dist/types/utils/oauth/fireworks.d.ts +1 -0
- package/dist/types/utils/oauth/github-copilot.d.ts +38 -0
- package/dist/types/utils/oauth/gitlab-duo.d.ts +3 -0
- package/dist/types/utils/oauth/google-antigravity.d.ts +11 -0
- package/dist/types/utils/oauth/google-gemini-cli.d.ts +10 -0
- package/dist/types/utils/oauth/google-oauth-shared.d.ts +28 -0
- package/dist/types/utils/oauth/huggingface.d.ts +19 -0
- package/dist/types/utils/oauth/index.d.ts +38 -0
- package/dist/types/utils/oauth/kagi.d.ts +17 -0
- package/dist/types/utils/oauth/kilo.d.ts +5 -0
- package/dist/types/utils/oauth/kimi.d.ts +21 -0
- package/dist/types/utils/oauth/litellm.d.ts +18 -0
- package/dist/types/utils/oauth/lm-studio.d.ts +17 -0
- package/dist/types/utils/oauth/minimax-code.d.ts +28 -0
- package/dist/types/utils/oauth/moonshot.d.ts +1 -0
- package/dist/types/utils/oauth/nanogpt.d.ts +1 -0
- package/dist/types/utils/oauth/nvidia.d.ts +18 -0
- package/dist/types/utils/oauth/ollama-cloud.d.ts +2 -0
- package/dist/types/utils/oauth/ollama.d.ts +18 -0
- package/dist/types/utils/oauth/openai-codex.d.ts +21 -0
- package/dist/types/utils/oauth/opencode.d.ts +18 -0
- package/dist/types/utils/oauth/parallel.d.ts +17 -0
- package/dist/types/utils/oauth/perplexity.d.ts +9 -0
- package/dist/types/utils/oauth/pkce.d.ts +8 -0
- package/dist/types/utils/oauth/qianfan.d.ts +17 -0
- package/dist/types/utils/oauth/qwen-portal.d.ts +19 -0
- package/dist/types/utils/oauth/synthetic.d.ts +1 -0
- package/dist/types/utils/oauth/tavily.d.ts +17 -0
- package/dist/types/utils/oauth/together.d.ts +1 -0
- package/dist/types/utils/oauth/types.d.ts +44 -0
- package/dist/types/utils/oauth/venice.d.ts +18 -0
- package/dist/types/utils/oauth/vercel-ai-gateway.d.ts +18 -0
- package/dist/types/utils/oauth/vllm.d.ts +16 -0
- package/dist/types/utils/oauth/xiaomi.d.ts +19 -0
- package/dist/types/utils/oauth/zai.d.ts +18 -0
- package/dist/types/utils/oauth/zenmux.d.ts +1 -0
- package/dist/types/utils/overflow.d.ts +54 -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/retry-after.d.ts +3 -0
- package/dist/types/utils/retry.d.ts +26 -0
- package/dist/types/utils/schema/adapt.d.ts +24 -0
- package/dist/types/utils/schema/compatibility.d.ts +30 -0
- package/dist/types/utils/schema/dereference.d.ts +11 -0
- package/dist/types/utils/schema/draft.d.ts +10 -0
- package/dist/types/utils/schema/equality.d.ts +4 -0
- package/dist/types/utils/schema/fields.d.ts +49 -0
- package/dist/types/utils/schema/index.d.ts +13 -0
- package/dist/types/utils/schema/json-schema-validator.d.ts +12 -0
- package/dist/types/utils/schema/meta-validator.d.ts +2 -0
- package/dist/types/utils/schema/normalize.d.ts +93 -0
- package/dist/types/utils/schema/spill.d.ts +8 -0
- package/dist/types/utils/schema/stamps.d.ts +25 -0
- package/dist/types/utils/schema/types.d.ts +4 -0
- package/dist/types/utils/schema/wire.d.ts +54 -0
- package/dist/types/utils/schema/zod-decontaminate.d.ts +31 -0
- package/dist/types/utils/sse-debug.d.ts +10 -0
- package/dist/types/utils/tool-call-healing.d.ts +71 -0
- package/dist/types/utils/tool-choice.d.ts +50 -0
- package/dist/types/utils/validation.d.ts +17 -0
- package/dist/types/utils.d.ts +28 -0
- package/package.json +146 -0
- package/src/api-registry.ts +96 -0
- package/src/auth-broker/client.ts +358 -0
- package/src/auth-broker/index.ts +5 -0
- package/src/auth-broker/refresher.ts +127 -0
- package/src/auth-broker/remote-store.ts +623 -0
- package/src/auth-broker/server.ts +644 -0
- package/src/auth-broker/types.ts +127 -0
- package/src/auth-broker/wire-schemas.ts +200 -0
- package/src/auth-gateway/http.ts +194 -0
- package/src/auth-gateway/index.ts +3 -0
- package/src/auth-gateway/server.ts +717 -0
- package/src/auth-gateway/types.ts +134 -0
- package/src/auth-storage.ts +4104 -0
- package/src/cli.ts +262 -0
- package/src/index.ts +54 -0
- package/src/model-cache.ts +129 -0
- package/src/model-manager.ts +450 -0
- package/src/model-thinking.ts +691 -0
- package/src/models.json +73853 -0
- package/src/models.json.d.ts +9 -0
- package/src/models.ts +56 -0
- package/src/prompts/turn-aborted-guidance.md +4 -0
- package/src/provider-details.ts +90 -0
- package/src/provider-models/bundled-references.ts +38 -0
- package/src/provider-models/descriptors.ts +308 -0
- package/src/provider-models/google.ts +91 -0
- package/src/provider-models/index.ts +5 -0
- package/src/provider-models/ollama.ts +153 -0
- package/src/provider-models/openai-compat.ts +2275 -0
- package/src/provider-models/special.ts +67 -0
- package/src/providers/amazon-bedrock.ts +849 -0
- package/src/providers/anthropic-messages-server-schema.ts +229 -0
- package/src/providers/anthropic-messages-server.ts +677 -0
- package/src/providers/anthropic.ts +2696 -0
- package/src/providers/aws-credentials.ts +501 -0
- package/src/providers/aws-eventstream.ts +185 -0
- package/src/providers/aws-sigv4.ts +218 -0
- package/src/providers/azure-openai-responses.ts +337 -0
- package/src/providers/cursor/gen/agent_pb.ts +15274 -0
- package/src/providers/cursor/proto/agent.proto +3526 -0
- package/src/providers/cursor/proto/buf.gen.yaml +6 -0
- package/src/providers/cursor/proto/buf.yaml +17 -0
- package/src/providers/cursor.ts +2561 -0
- package/src/providers/error-message.ts +21 -0
- package/src/providers/github-copilot-headers.ts +140 -0
- package/src/providers/gitlab-duo.ts +372 -0
- package/src/providers/google-auth.ts +252 -0
- package/src/providers/google-gemini-cli.ts +795 -0
- package/src/providers/google-gemini-headers.ts +41 -0
- package/src/providers/google-shared.ts +902 -0
- package/src/providers/google-types.ts +167 -0
- package/src/providers/google-vertex.ts +88 -0
- package/src/providers/google.ts +41 -0
- package/src/providers/grammar.ts +70 -0
- package/src/providers/kimi.ts +52 -0
- package/src/providers/mock.ts +500 -0
- package/src/providers/ollama.ts +544 -0
- package/src/providers/openai-anthropic-shim.ts +138 -0
- package/src/providers/openai-chat-server-schema.ts +243 -0
- package/src/providers/openai-chat-server.ts +628 -0
- package/src/providers/openai-codex/constants.ts +43 -0
- package/src/providers/openai-codex/request-transformer.ts +161 -0
- package/src/providers/openai-codex/response-handler.ts +81 -0
- package/src/providers/openai-codex-responses.ts +2598 -0
- package/src/providers/openai-completions-compat.ts +279 -0
- package/src/providers/openai-completions.ts +1853 -0
- package/src/providers/openai-responses-server-schema.ts +290 -0
- package/src/providers/openai-responses-server.ts +1183 -0
- package/src/providers/openai-responses-shared.ts +800 -0
- package/src/providers/openai-responses.ts +621 -0
- package/src/providers/pi-native-client.ts +228 -0
- package/src/providers/pi-native-server.ts +210 -0
- package/src/providers/register-builtins.ts +412 -0
- package/src/providers/synthetic.ts +50 -0
- package/src/providers/transform-messages.ts +309 -0
- package/src/providers/vision-guard.ts +31 -0
- package/src/rate-limit-utils.ts +84 -0
- package/src/stream.ts +895 -0
- package/src/types.ts +884 -0
- package/src/usage/claude.ts +431 -0
- package/src/usage/gemini.ts +250 -0
- package/src/usage/github-copilot.ts +421 -0
- package/src/usage/google-antigravity.ts +201 -0
- package/src/usage/kimi.ts +271 -0
- package/src/usage/minimax-code.ts +31 -0
- package/src/usage/openai-codex.ts +503 -0
- package/src/usage/shared.ts +10 -0
- package/src/usage/zai.ts +247 -0
- package/src/usage.ts +183 -0
- package/src/utils/abort.ts +51 -0
- package/src/utils/anthropic-auth.ts +87 -0
- package/src/utils/discovery/antigravity.ts +261 -0
- package/src/utils/discovery/codex.ts +371 -0
- package/src/utils/discovery/cursor.ts +306 -0
- package/src/utils/discovery/gemini.ts +248 -0
- package/src/utils/discovery/index.ts +4 -0
- package/src/utils/discovery/openai-compatible.ts +224 -0
- package/src/utils/event-stream.ts +142 -0
- package/src/utils/fireworks-model-id.ts +30 -0
- package/src/utils/foundry.ts +8 -0
- package/src/utils/h2-fetch.ts +60 -0
- package/src/utils/http-inspector.ts +176 -0
- package/src/utils/idle-iterator.ts +250 -0
- package/src/utils/json-parse.ts +148 -0
- package/src/utils/oauth/alibaba-coding-plan.ts +59 -0
- package/src/utils/oauth/anthropic.ts +200 -0
- package/src/utils/oauth/api-key-login.ts +87 -0
- package/src/utils/oauth/api-key-validation.ts +92 -0
- package/src/utils/oauth/callback-server.ts +276 -0
- package/src/utils/oauth/cerebras.ts +16 -0
- package/src/utils/oauth/cloudflare-ai-gateway.ts +48 -0
- package/src/utils/oauth/cursor.ts +157 -0
- package/src/utils/oauth/deepseek.ts +53 -0
- package/src/utils/oauth/firepass.ts +24 -0
- package/src/utils/oauth/fireworks.ts +15 -0
- package/src/utils/oauth/github-copilot.ts +362 -0
- package/src/utils/oauth/gitlab-duo.ts +123 -0
- package/src/utils/oauth/google-antigravity.ts +200 -0
- package/src/utils/oauth/google-gemini-cli.ts +256 -0
- package/src/utils/oauth/google-oauth-shared.ts +110 -0
- package/src/utils/oauth/huggingface.ts +62 -0
- package/src/utils/oauth/index.ts +444 -0
- package/src/utils/oauth/kagi.ts +47 -0
- package/src/utils/oauth/kilo.ts +87 -0
- package/src/utils/oauth/kimi.ts +254 -0
- package/src/utils/oauth/litellm.ts +47 -0
- package/src/utils/oauth/lm-studio.ts +38 -0
- package/src/utils/oauth/minimax-code.ts +78 -0
- package/src/utils/oauth/moonshot.ts +16 -0
- package/src/utils/oauth/nanogpt.ts +15 -0
- package/src/utils/oauth/nvidia.ts +70 -0
- package/src/utils/oauth/oauth.html +199 -0
- package/src/utils/oauth/ollama-cloud.ts +28 -0
- package/src/utils/oauth/ollama.ts +47 -0
- package/src/utils/oauth/openai-codex.ts +299 -0
- package/src/utils/oauth/opencode.ts +49 -0
- package/src/utils/oauth/parallel.ts +46 -0
- package/src/utils/oauth/perplexity.ts +206 -0
- package/src/utils/oauth/pkce.ts +18 -0
- package/src/utils/oauth/qianfan.ts +58 -0
- package/src/utils/oauth/qwen-portal.ts +60 -0
- package/src/utils/oauth/synthetic.ts +16 -0
- package/src/utils/oauth/tavily.ts +46 -0
- package/src/utils/oauth/together.ts +16 -0
- package/src/utils/oauth/types.ts +94 -0
- package/src/utils/oauth/venice.ts +59 -0
- package/src/utils/oauth/vercel-ai-gateway.ts +47 -0
- package/src/utils/oauth/vllm.ts +40 -0
- package/src/utils/oauth/xiaomi.ts +137 -0
- package/src/utils/oauth/zai.ts +60 -0
- package/src/utils/oauth/zenmux.ts +15 -0
- package/src/utils/overflow.ts +137 -0
- package/src/utils/parse-bind.ts +54 -0
- package/src/utils/provider-response.ts +30 -0
- package/src/utils/retry-after.ts +110 -0
- package/src/utils/retry.ts +54 -0
- package/src/utils/schema/CONSTRAINTS.md +164 -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 +190 -0
- package/src/utils/schema/index.ts +13 -0
- package/src/utils/schema/json-schema-validator.ts +577 -0
- package/src/utils/schema/meta-validator.ts +167 -0
- package/src/utils/schema/normalize.ts +1588 -0
- package/src/utils/schema/spill.ts +43 -0
- package/src/utils/schema/stamps.ts +97 -0
- package/src/utils/schema/types.ts +11 -0
- package/src/utils/schema/wire.ts +213 -0
- package/src/utils/schema/zod-decontaminate.ts +331 -0
- package/src/utils/sse-debug.ts +289 -0
- package/src/utils/tool-call-healing.ts +271 -0
- package/src/utils/tool-choice.ts +99 -0
- package/src/utils/validation.ts +1019 -0
- package/src/utils.ts +166 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parsed inbound OpenAI chat-completions request, ready to feed into pi-ai
|
|
3
|
+
* `stream(model, context, options)`.
|
|
4
|
+
*/
|
|
5
|
+
import type { AuthGatewayParsedRequest as ParsedRequest } from "../auth-gateway/types";
|
|
6
|
+
import type { AssistantMessage, AssistantMessageEventStream } from "../types";
|
|
7
|
+
export type { ParsedRequest };
|
|
8
|
+
export declare function parseRequest(body: unknown, headers?: Headers): ParsedRequest;
|
|
9
|
+
export declare function encodeResponse(message: AssistantMessage, requestedModelId: string): Record<string, unknown>;
|
|
10
|
+
export declare function encodeStream(events: AssistantMessageEventStream, requestedModelId: string, options?: ParsedRequest["options"]): ReadableStream<Uint8Array>;
|
|
11
|
+
/**
|
|
12
|
+
* OpenAI chat-completions error envelope:
|
|
13
|
+
* `{ error: { message, type } }`
|
|
14
|
+
* Matches the shape the official SDK auto-parses into `APIError`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function formatError(status: number, type: string, message: string): Response;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for OpenAI code provider (ChatGPT OAuth) backend
|
|
3
|
+
*/
|
|
4
|
+
export declare const CODEX_BASE_URL = "https://chatgpt.com/backend-api";
|
|
5
|
+
export declare const OPENAI_HEADERS: {
|
|
6
|
+
readonly BETA: "OpenAI-Beta";
|
|
7
|
+
readonly ACCOUNT_ID: "chatgpt-account-id";
|
|
8
|
+
readonly ORIGINATOR: "originator";
|
|
9
|
+
readonly SESSION_ID: "session_id";
|
|
10
|
+
readonly CONVERSATION_ID: "conversation_id";
|
|
11
|
+
};
|
|
12
|
+
export declare const OPENAI_HEADER_VALUES: {
|
|
13
|
+
readonly BETA_RESPONSES: "responses=experimental";
|
|
14
|
+
readonly BETA_RESPONSES_WEBSOCKETS_V2: "responses_websockets=2026-02-06";
|
|
15
|
+
readonly ORIGINATOR_CODEX: "pi";
|
|
16
|
+
};
|
|
17
|
+
export declare const URL_PATHS: {
|
|
18
|
+
readonly RESPONSES: "/responses";
|
|
19
|
+
readonly CODEX_RESPONSES: "/codex/responses";
|
|
20
|
+
};
|
|
21
|
+
export declare const JWT_CLAIM_PATH: "https://api.openai.com/auth";
|
|
22
|
+
/**
|
|
23
|
+
* Extract account ID from a OpenAI code backend JWT access token.
|
|
24
|
+
* Returns undefined if the token is not a valid OpenAI code backend JWT.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getCodexAccountId(accessToken: string): string | undefined;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Api, Model } from "../../types";
|
|
2
|
+
export interface ReasoningConfig {
|
|
3
|
+
effort: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
4
|
+
summary?: "auto" | "concise" | "detailed";
|
|
5
|
+
}
|
|
6
|
+
export interface CodexRequestOptions {
|
|
7
|
+
reasoningEffort?: ReasoningConfig["effort"];
|
|
8
|
+
reasoningSummary?: ReasoningConfig["summary"] | null;
|
|
9
|
+
textVerbosity?: "low" | "medium" | "high";
|
|
10
|
+
include?: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface InputItem {
|
|
13
|
+
id?: string | null;
|
|
14
|
+
type?: string | null;
|
|
15
|
+
role?: string;
|
|
16
|
+
content?: unknown;
|
|
17
|
+
call_id?: string | null;
|
|
18
|
+
name?: string;
|
|
19
|
+
output?: unknown;
|
|
20
|
+
arguments?: unknown;
|
|
21
|
+
}
|
|
22
|
+
export interface RequestBody {
|
|
23
|
+
model: string;
|
|
24
|
+
store?: boolean;
|
|
25
|
+
stream?: boolean;
|
|
26
|
+
instructions?: string;
|
|
27
|
+
input?: InputItem[];
|
|
28
|
+
tools?: unknown;
|
|
29
|
+
tool_choice?: unknown;
|
|
30
|
+
temperature?: number;
|
|
31
|
+
top_p?: number;
|
|
32
|
+
top_k?: number;
|
|
33
|
+
min_p?: number;
|
|
34
|
+
presence_penalty?: number;
|
|
35
|
+
repetition_penalty?: number;
|
|
36
|
+
reasoning?: Partial<ReasoningConfig>;
|
|
37
|
+
text?: {
|
|
38
|
+
verbosity?: "low" | "medium" | "high";
|
|
39
|
+
};
|
|
40
|
+
include?: string[];
|
|
41
|
+
prompt_cache_key?: string;
|
|
42
|
+
prompt_cache_retention?: "in_memory" | "24h";
|
|
43
|
+
max_output_tokens?: number;
|
|
44
|
+
max_completion_tokens?: number;
|
|
45
|
+
[key: string]: unknown;
|
|
46
|
+
}
|
|
47
|
+
export declare function transformRequestBody(body: RequestBody, model: Model<Api>, options?: CodexRequestOptions, prompt?: {
|
|
48
|
+
developerMessages: string[];
|
|
49
|
+
}): Promise<RequestBody>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type CodexRateLimit = {
|
|
2
|
+
used_percent?: number;
|
|
3
|
+
window_minutes?: number;
|
|
4
|
+
resets_at?: number;
|
|
5
|
+
};
|
|
6
|
+
export type CodexRateLimits = {
|
|
7
|
+
primary?: CodexRateLimit;
|
|
8
|
+
secondary?: CodexRateLimit;
|
|
9
|
+
};
|
|
10
|
+
export type CodexErrorInfo = {
|
|
11
|
+
message: string;
|
|
12
|
+
status: number;
|
|
13
|
+
friendlyMessage?: string;
|
|
14
|
+
rateLimits?: CodexRateLimits;
|
|
15
|
+
raw?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function parseCodexError(response: Response): Promise<CodexErrorInfo>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ResponseInput } from "openai/resources/responses/responses";
|
|
2
|
+
import { type Context, type Model, type ProviderSessionState, type ServiceTier, type StreamFunction, type StreamOptions, type Tool, type ToolChoice } from "../types";
|
|
3
|
+
export interface OpenAICodexResponsesOptions extends StreamOptions {
|
|
4
|
+
reasoning?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
5
|
+
reasoningSummary?: "auto" | "concise" | "detailed" | null;
|
|
6
|
+
textVerbosity?: "low" | "medium" | "high";
|
|
7
|
+
include?: string[];
|
|
8
|
+
codexMode?: boolean;
|
|
9
|
+
toolChoice?: ToolChoice;
|
|
10
|
+
preferWebsockets?: boolean;
|
|
11
|
+
serviceTier?: ServiceTier;
|
|
12
|
+
}
|
|
13
|
+
type CodexTransport = "sse" | "websocket";
|
|
14
|
+
export interface OpenAICodexWebSocketDebugStats {
|
|
15
|
+
fullContextRequests: number;
|
|
16
|
+
deltaRequests: number;
|
|
17
|
+
lastInputItems: number;
|
|
18
|
+
lastDeltaInputItems?: number;
|
|
19
|
+
lastPreviousResponseId?: string;
|
|
20
|
+
}
|
|
21
|
+
/** @internal Exported for tests. */
|
|
22
|
+
export declare function normalizeCodexToolChoice(choice: ToolChoice | undefined, tools?: Tool[], model?: Model<"openai-codex-responses">): string | Record<string, unknown> | undefined;
|
|
23
|
+
export declare const streamOpenAICodexResponses: StreamFunction<"openai-codex-responses">;
|
|
24
|
+
export declare function prewarmOpenAICodexResponses(model: Model<"openai-codex-responses">, options?: Pick<OpenAICodexResponsesOptions, "apiKey" | "headers" | "sessionId" | "signal" | "preferWebsockets" | "providerSessionState">): Promise<void>;
|
|
25
|
+
export interface OpenAICodexTransportDetails {
|
|
26
|
+
websocketPreferred: boolean;
|
|
27
|
+
lastTransport?: CodexTransport;
|
|
28
|
+
websocketDisabled: boolean;
|
|
29
|
+
websocketConnected: boolean;
|
|
30
|
+
fallbackCount: number;
|
|
31
|
+
canAppend: boolean;
|
|
32
|
+
prewarmed: boolean;
|
|
33
|
+
hasSessionState: boolean;
|
|
34
|
+
lastFallbackAt?: number;
|
|
35
|
+
}
|
|
36
|
+
export declare function getOpenAICodexWebSocketDebugStats(model: Model<"openai-codex-responses">, options?: {
|
|
37
|
+
sessionId?: string;
|
|
38
|
+
baseUrl?: string;
|
|
39
|
+
providerSessionState?: Map<string, ProviderSessionState>;
|
|
40
|
+
}): OpenAICodexWebSocketDebugStats | undefined;
|
|
41
|
+
export declare function getOpenAICodexTransportDetails(model: Model<"openai-codex-responses">, options?: {
|
|
42
|
+
sessionId?: string;
|
|
43
|
+
baseUrl?: string;
|
|
44
|
+
preferWebsockets?: boolean;
|
|
45
|
+
providerSessionState?: Map<string, ProviderSessionState>;
|
|
46
|
+
}): OpenAICodexTransportDetails;
|
|
47
|
+
declare function convertMessages(model: Model<"openai-codex-responses">, context: Context): ResponseInput;
|
|
48
|
+
/** @internal Exported for tests. */
|
|
49
|
+
export { convertMessages as convertCodexResponsesMessages };
|
|
50
|
+
type CodexToolPayload = {
|
|
51
|
+
type: "function";
|
|
52
|
+
name: string;
|
|
53
|
+
description: string;
|
|
54
|
+
parameters: Record<string, unknown>;
|
|
55
|
+
strict?: boolean;
|
|
56
|
+
} | {
|
|
57
|
+
type: "custom";
|
|
58
|
+
name: string;
|
|
59
|
+
description: string;
|
|
60
|
+
format: {
|
|
61
|
+
type: "grammar";
|
|
62
|
+
syntax: "lark" | "regex";
|
|
63
|
+
definition: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
/** @internal Exported for tests. */
|
|
67
|
+
export declare function convertOpenAICodexResponsesTools(tools: Tool[], model: Model<"openai-codex-responses">): CodexToolPayload[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Model, OpenAICompat } from "../types";
|
|
2
|
+
type ResolvedToolStrictMode = NonNullable<OpenAICompat["toolStrictMode"]> | "mixed";
|
|
3
|
+
export type ResolvedOpenAICompat = Required<Omit<OpenAICompat, "openRouterRouting" | "vercelGatewayRouting" | "extraBody" | "toolStrictMode">> & {
|
|
4
|
+
openRouterRouting?: OpenAICompat["openRouterRouting"];
|
|
5
|
+
vercelGatewayRouting?: OpenAICompat["vercelGatewayRouting"];
|
|
6
|
+
extraBody?: OpenAICompat["extraBody"];
|
|
7
|
+
toolStrictMode: ResolvedToolStrictMode;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Detect compatibility settings from provider and baseUrl for known providers.
|
|
11
|
+
* Provider takes precedence over URL-based detection since it's explicitly configured.
|
|
12
|
+
* @param model - The model configuration
|
|
13
|
+
* @param resolvedBaseUrl - Optional resolved base URL (e.g., after GitHub Copilot proxy-ep resolution).
|
|
14
|
+
* If provided, this takes precedence over model.baseUrl for URL-based checks.
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectOpenAICompat(model: Model<"openai-completions">, resolvedBaseUrl?: string): ResolvedOpenAICompat;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve compatibility settings by layering explicit model.compat overrides onto
|
|
19
|
+
* the detected defaults. This is the canonical compat view for both metadata and transport.
|
|
20
|
+
* @param model - The model configuration
|
|
21
|
+
* @param resolvedBaseUrl - Optional resolved base URL (e.g., after GitHub Copilot proxy-ep resolution).
|
|
22
|
+
* If provided, this takes precedence over model.baseUrl for URL-based checks.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveOpenAICompat(model: Model<"openai-completions">, resolvedBaseUrl?: string): ResolvedOpenAICompat;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ChatCompletionMessageParam } from "openai/resources/chat/completions";
|
|
2
|
+
import { type AssistantMessage, type Context, type Model, type ServiceTier, type StreamFunction, type StreamOptions, type ToolChoice } from "../types";
|
|
3
|
+
import { type ResolvedOpenAICompat } from "./openai-completions-compat";
|
|
4
|
+
/**
|
|
5
|
+
* Identify "real progress" stream chunks vs. keepalives, role-only preambles,
|
|
6
|
+
* and empty `{choices:[]}` no-ops emitted by some OpenAI-compatible endpoints.
|
|
7
|
+
* Without this filter, every keepalive resets `iterateWithIdleTimeout`'s
|
|
8
|
+
* deadline, so a provider that streams nothing but pings keeps the watchdog
|
|
9
|
+
* asleep indefinitely — observed against z.ai/GLM via OpenRouter where a
|
|
10
|
+
* subagent stalled for hours with no error surfaced.
|
|
11
|
+
*
|
|
12
|
+
* A chunk counts as progress when it carries terminal usage, a finish reason,
|
|
13
|
+
* or any model-produced delta (content / tool calls / reasoning / refusal).
|
|
14
|
+
* Role-only `delta: { role: "assistant" }` preambles do NOT count; we want the
|
|
15
|
+
* (longer) first-event timeout to keep governing until real output appears.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isOpenAICompletionsProgressChunk(chunk: unknown): boolean;
|
|
18
|
+
export interface OpenAICompletionsOptions extends StreamOptions {
|
|
19
|
+
toolChoice?: ToolChoice;
|
|
20
|
+
reasoning?: "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
21
|
+
/** Force-disable reasoning where supported, or request the lowest effort on generic effort endpoints. */
|
|
22
|
+
disableReasoning?: boolean;
|
|
23
|
+
serviceTier?: ServiceTier;
|
|
24
|
+
}
|
|
25
|
+
export declare const streamOpenAICompletions: StreamFunction<"openai-completions">;
|
|
26
|
+
export declare function parseChunkUsage(rawUsage: object, model: Model<"openai-completions">, premiumRequests: number | undefined): AssistantMessage["usage"];
|
|
27
|
+
export declare function convertMessages(model: Model<"openai-completions">, context: Context, compat: ResolvedOpenAICompat): ChatCompletionMessageParam[];
|
|
28
|
+
/**
|
|
29
|
+
* Detect compatibility settings from provider and baseUrl for known providers.
|
|
30
|
+
* Provider takes precedence over URL-based detection since it's explicitly configured.
|
|
31
|
+
* Returns a fully resolved OpenAICompat object with all fields set.
|
|
32
|
+
*/
|
|
33
|
+
export declare function detectCompat(model: Model<"openai-completions">): ResolvedOpenAICompat;
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for the OpenAI Responses API request shape we accept on the
|
|
3
|
+
* gateway. Mirrors https://platform.openai.com/docs/api-reference/responses.
|
|
4
|
+
*
|
|
5
|
+
* Unsupported / opaque controls (background/include/metadata/prompt/…) are
|
|
6
|
+
* accepted as `z.unknown().optional()` so we silently ignore rather than 400.
|
|
7
|
+
* Real clients (OpenAI code backend, openai-python, llm-git) routinely send these and a 400
|
|
8
|
+
* is a worse outcome than dropping them on the floor.
|
|
9
|
+
*/
|
|
10
|
+
import type { EasyInputMessage, ResponseCreateParams, ResponseFunctionToolCall, ResponseInputContent, ResponseInputItem, ResponseOutputMessage, ResponseReasoningItem, Tool as ResponsesTool } from "openai/resources/responses/responses";
|
|
11
|
+
import * as z from "zod/v4";
|
|
12
|
+
declare const inputImageBlockSchema: z.ZodObject<{
|
|
13
|
+
type: z.ZodLiteral<"input_image">;
|
|
14
|
+
detail: z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
auto: "auto";
|
|
16
|
+
high: "high";
|
|
17
|
+
low: "low";
|
|
18
|
+
}>>;
|
|
19
|
+
image_url: z.ZodOptional<z.ZodString>;
|
|
20
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
declare const inputFileBlockSchema: z.ZodObject<{
|
|
23
|
+
type: z.ZodLiteral<"input_file">;
|
|
24
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
25
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
26
|
+
file_data: z.ZodOptional<z.ZodString>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
declare const outputRefusalSchema: z.ZodObject<{
|
|
29
|
+
type: z.ZodLiteral<"refusal">;
|
|
30
|
+
refusal: z.ZodString;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
declare const customToolCallItemSchema: z.ZodObject<{
|
|
33
|
+
type: z.ZodLiteral<"custom_tool_call">;
|
|
34
|
+
id: z.ZodOptional<z.ZodString>;
|
|
35
|
+
call_id: z.ZodString;
|
|
36
|
+
name: z.ZodString;
|
|
37
|
+
input: z.ZodString;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
declare const customToolCallOutputItemSchema: z.ZodObject<{
|
|
40
|
+
type: z.ZodLiteral<"custom_tool_call_output">;
|
|
41
|
+
call_id: z.ZodString;
|
|
42
|
+
output: z.ZodString;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
/**
|
|
45
|
+
* An input item is one of the union members below. The convenience shape
|
|
46
|
+
* `{role, content}` (no `type`) is mapped to "message" before validation in
|
|
47
|
+
* the walker — schemas here only handle the canonical {type, ...} forms.
|
|
48
|
+
*/
|
|
49
|
+
export declare const inputItemSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
50
|
+
type: z.ZodOptional<z.ZodLiteral<"message">>;
|
|
51
|
+
role: z.ZodUnion<readonly [z.ZodLiteral<"user">, z.ZodLiteral<"developer">]>;
|
|
52
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
53
|
+
type: z.ZodLiteral<"input_text">;
|
|
54
|
+
text: z.ZodString;
|
|
55
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
56
|
+
type: z.ZodLiteral<"text">;
|
|
57
|
+
text: z.ZodString;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
type: z.ZodLiteral<"input_image">;
|
|
60
|
+
detail: z.ZodOptional<z.ZodEnum<{
|
|
61
|
+
auto: "auto";
|
|
62
|
+
high: "high";
|
|
63
|
+
low: "low";
|
|
64
|
+
}>>;
|
|
65
|
+
image_url: z.ZodOptional<z.ZodString>;
|
|
66
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
68
|
+
type: z.ZodLiteral<"input_file">;
|
|
69
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
70
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
71
|
+
file_data: z.ZodOptional<z.ZodString>;
|
|
72
|
+
}, z.core.$strip>]>>]>>;
|
|
73
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
74
|
+
type: z.ZodOptional<z.ZodLiteral<"message">>;
|
|
75
|
+
role: z.ZodLiteral<"system">;
|
|
76
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
77
|
+
type: z.ZodLiteral<"input_text">;
|
|
78
|
+
text: z.ZodString;
|
|
79
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
80
|
+
type: z.ZodLiteral<"text">;
|
|
81
|
+
text: z.ZodString;
|
|
82
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
83
|
+
type: z.ZodLiteral<"input_image">;
|
|
84
|
+
detail: z.ZodOptional<z.ZodEnum<{
|
|
85
|
+
auto: "auto";
|
|
86
|
+
high: "high";
|
|
87
|
+
low: "low";
|
|
88
|
+
}>>;
|
|
89
|
+
image_url: z.ZodOptional<z.ZodString>;
|
|
90
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
91
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
92
|
+
type: z.ZodLiteral<"input_file">;
|
|
93
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
94
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
95
|
+
file_data: z.ZodOptional<z.ZodString>;
|
|
96
|
+
}, z.core.$strip>]>>]>>;
|
|
97
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
98
|
+
type: z.ZodOptional<z.ZodLiteral<"message">>;
|
|
99
|
+
role: z.ZodLiteral<"assistant">;
|
|
100
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
101
|
+
type: z.ZodLiteral<"output_text">;
|
|
102
|
+
text: z.ZodString;
|
|
103
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
104
|
+
type: z.ZodLiteral<"text">;
|
|
105
|
+
text: z.ZodString;
|
|
106
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
107
|
+
type: z.ZodLiteral<"refusal">;
|
|
108
|
+
refusal: z.ZodString;
|
|
109
|
+
}, z.core.$strip>]>>]>>;
|
|
110
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
111
|
+
type: z.ZodLiteral<"reasoning">;
|
|
112
|
+
id: z.ZodOptional<z.ZodString>;
|
|
113
|
+
summary: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
114
|
+
type: z.ZodLiteral<"summary_text">;
|
|
115
|
+
text: z.ZodString;
|
|
116
|
+
}, z.core.$strip>>>;
|
|
117
|
+
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
118
|
+
type: z.ZodLiteral<"reasoning_text">;
|
|
119
|
+
text: z.ZodString;
|
|
120
|
+
}, z.core.$strip>>>;
|
|
121
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
122
|
+
type: z.ZodLiteral<"function_call">;
|
|
123
|
+
id: z.ZodOptional<z.ZodString>;
|
|
124
|
+
call_id: z.ZodString;
|
|
125
|
+
name: z.ZodString;
|
|
126
|
+
arguments: z.ZodOptional<z.ZodString>;
|
|
127
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
128
|
+
type: z.ZodLiteral<"function_call_output">;
|
|
129
|
+
call_id: z.ZodString;
|
|
130
|
+
output: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
131
|
+
type: z.ZodLiteral<"output_text">;
|
|
132
|
+
text: z.ZodString;
|
|
133
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
134
|
+
type: z.ZodLiteral<"text">;
|
|
135
|
+
text: z.ZodString;
|
|
136
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
137
|
+
type: z.ZodLiteral<"refusal">;
|
|
138
|
+
refusal: z.ZodString;
|
|
139
|
+
}, z.core.$strip>]>>]>>;
|
|
140
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
141
|
+
type: z.ZodLiteral<"custom_tool_call">;
|
|
142
|
+
id: z.ZodOptional<z.ZodString>;
|
|
143
|
+
call_id: z.ZodString;
|
|
144
|
+
name: z.ZodString;
|
|
145
|
+
input: z.ZodString;
|
|
146
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
147
|
+
type: z.ZodLiteral<"custom_tool_call_output">;
|
|
148
|
+
call_id: z.ZodString;
|
|
149
|
+
output: z.ZodString;
|
|
150
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
151
|
+
type: z.ZodString;
|
|
152
|
+
}, z.core.$loose>]>;
|
|
153
|
+
export type OpenAIResponsesUserItem = EasyInputMessage | ResponseInputItem.Message;
|
|
154
|
+
export type OpenAIResponsesSystemItem = EasyInputMessage | ResponseInputItem.Message;
|
|
155
|
+
export type OpenAIResponsesAssistantItem = EasyInputMessage | ResponseOutputMessage;
|
|
156
|
+
export type OpenAIResponsesReasoningItem = ResponseReasoningItem;
|
|
157
|
+
export type OpenAIResponsesFunctionCallItem = ResponseFunctionToolCall;
|
|
158
|
+
export type OpenAIResponsesFunctionCallOutputItem = ResponseInputItem.FunctionCallOutput;
|
|
159
|
+
/** Inferred shape of the custom tool call input item (no canonical SDK alias). */
|
|
160
|
+
export type OpenAIResponsesCustomToolCallItem = z.infer<typeof customToolCallItemSchema>;
|
|
161
|
+
export type OpenAIResponsesCustomToolCallOutputItem = z.infer<typeof customToolCallOutputItemSchema>;
|
|
162
|
+
export type OpenAIResponsesInputImageBlock = z.infer<typeof inputImageBlockSchema>;
|
|
163
|
+
export type OpenAIResponsesInputFileBlock = z.infer<typeof inputFileBlockSchema>;
|
|
164
|
+
export type OpenAIResponsesOutputRefusalBlock = z.infer<typeof outputRefusalSchema>;
|
|
165
|
+
export declare const toolSchema: z.ZodObject<{
|
|
166
|
+
type: z.ZodLiteral<"function">;
|
|
167
|
+
name: z.ZodString;
|
|
168
|
+
description: z.ZodOptional<z.ZodString>;
|
|
169
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
170
|
+
strict: z.ZodOptional<z.ZodBoolean>;
|
|
171
|
+
}, z.core.$strip>;
|
|
172
|
+
export declare const toolChoiceSchema: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<"none">, z.ZodLiteral<"required">, z.ZodObject<{
|
|
173
|
+
type: z.ZodLiteral<"function">;
|
|
174
|
+
name: z.ZodString;
|
|
175
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
176
|
+
type: z.ZodLiteral<"custom">;
|
|
177
|
+
name: z.ZodString;
|
|
178
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
179
|
+
type: z.ZodEnum<{
|
|
180
|
+
code_interpreter: "code_interpreter";
|
|
181
|
+
computer_use_preview: "computer_use_preview";
|
|
182
|
+
file_search: "file_search";
|
|
183
|
+
image_generation: "image_generation";
|
|
184
|
+
mcp: "mcp";
|
|
185
|
+
web_search_preview: "web_search_preview";
|
|
186
|
+
}>;
|
|
187
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
188
|
+
type: z.ZodLiteral<"allowed_tools">;
|
|
189
|
+
mode: z.ZodEnum<{
|
|
190
|
+
auto: "auto";
|
|
191
|
+
required: "required";
|
|
192
|
+
}>;
|
|
193
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
194
|
+
type: z.ZodString;
|
|
195
|
+
name: z.ZodOptional<z.ZodString>;
|
|
196
|
+
}, z.core.$strip>>;
|
|
197
|
+
}, z.core.$strip>]>;
|
|
198
|
+
export declare const reasoningConfigSchema: z.ZodObject<{
|
|
199
|
+
effort: z.ZodOptional<z.ZodString>;
|
|
200
|
+
summary: z.ZodOptional<z.ZodEnum<{
|
|
201
|
+
auto: "auto";
|
|
202
|
+
concise: "concise";
|
|
203
|
+
detailed: "detailed";
|
|
204
|
+
none: "none";
|
|
205
|
+
}>>;
|
|
206
|
+
}, z.core.$strip>;
|
|
207
|
+
export declare const stopSchema: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodNull]>;
|
|
208
|
+
export declare const openaiResponsesRequestSchema: z.ZodObject<{
|
|
209
|
+
model: z.ZodString;
|
|
210
|
+
input: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
211
|
+
type: z.ZodOptional<z.ZodLiteral<"message">>;
|
|
212
|
+
role: z.ZodUnion<readonly [z.ZodLiteral<"user">, z.ZodLiteral<"developer">]>;
|
|
213
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
214
|
+
type: z.ZodLiteral<"input_text">;
|
|
215
|
+
text: z.ZodString;
|
|
216
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
217
|
+
type: z.ZodLiteral<"text">;
|
|
218
|
+
text: z.ZodString;
|
|
219
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
220
|
+
type: z.ZodLiteral<"input_image">;
|
|
221
|
+
detail: z.ZodOptional<z.ZodEnum<{
|
|
222
|
+
auto: "auto";
|
|
223
|
+
high: "high";
|
|
224
|
+
low: "low";
|
|
225
|
+
}>>;
|
|
226
|
+
image_url: z.ZodOptional<z.ZodString>;
|
|
227
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
228
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
229
|
+
type: z.ZodLiteral<"input_file">;
|
|
230
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
231
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
232
|
+
file_data: z.ZodOptional<z.ZodString>;
|
|
233
|
+
}, z.core.$strip>]>>]>>;
|
|
234
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
235
|
+
type: z.ZodOptional<z.ZodLiteral<"message">>;
|
|
236
|
+
role: z.ZodLiteral<"system">;
|
|
237
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
238
|
+
type: z.ZodLiteral<"input_text">;
|
|
239
|
+
text: z.ZodString;
|
|
240
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
241
|
+
type: z.ZodLiteral<"text">;
|
|
242
|
+
text: z.ZodString;
|
|
243
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
244
|
+
type: z.ZodLiteral<"input_image">;
|
|
245
|
+
detail: z.ZodOptional<z.ZodEnum<{
|
|
246
|
+
auto: "auto";
|
|
247
|
+
high: "high";
|
|
248
|
+
low: "low";
|
|
249
|
+
}>>;
|
|
250
|
+
image_url: z.ZodOptional<z.ZodString>;
|
|
251
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
252
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
253
|
+
type: z.ZodLiteral<"input_file">;
|
|
254
|
+
file_id: z.ZodOptional<z.ZodString>;
|
|
255
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
256
|
+
file_data: z.ZodOptional<z.ZodString>;
|
|
257
|
+
}, z.core.$strip>]>>]>>;
|
|
258
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
259
|
+
type: z.ZodOptional<z.ZodLiteral<"message">>;
|
|
260
|
+
role: z.ZodLiteral<"assistant">;
|
|
261
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
262
|
+
type: z.ZodLiteral<"output_text">;
|
|
263
|
+
text: z.ZodString;
|
|
264
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
265
|
+
type: z.ZodLiteral<"text">;
|
|
266
|
+
text: z.ZodString;
|
|
267
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
268
|
+
type: z.ZodLiteral<"refusal">;
|
|
269
|
+
refusal: z.ZodString;
|
|
270
|
+
}, z.core.$strip>]>>]>>;
|
|
271
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
272
|
+
type: z.ZodLiteral<"reasoning">;
|
|
273
|
+
id: z.ZodOptional<z.ZodString>;
|
|
274
|
+
summary: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
275
|
+
type: z.ZodLiteral<"summary_text">;
|
|
276
|
+
text: z.ZodString;
|
|
277
|
+
}, z.core.$strip>>>;
|
|
278
|
+
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
279
|
+
type: z.ZodLiteral<"reasoning_text">;
|
|
280
|
+
text: z.ZodString;
|
|
281
|
+
}, z.core.$strip>>>;
|
|
282
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
283
|
+
type: z.ZodLiteral<"function_call">;
|
|
284
|
+
id: z.ZodOptional<z.ZodString>;
|
|
285
|
+
call_id: z.ZodString;
|
|
286
|
+
name: z.ZodString;
|
|
287
|
+
arguments: z.ZodOptional<z.ZodString>;
|
|
288
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
289
|
+
type: z.ZodLiteral<"function_call_output">;
|
|
290
|
+
call_id: z.ZodString;
|
|
291
|
+
output: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
292
|
+
type: z.ZodLiteral<"output_text">;
|
|
293
|
+
text: z.ZodString;
|
|
294
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
295
|
+
type: z.ZodLiteral<"text">;
|
|
296
|
+
text: z.ZodString;
|
|
297
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
298
|
+
type: z.ZodLiteral<"refusal">;
|
|
299
|
+
refusal: z.ZodString;
|
|
300
|
+
}, z.core.$strip>]>>]>>;
|
|
301
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
302
|
+
type: z.ZodLiteral<"custom_tool_call">;
|
|
303
|
+
id: z.ZodOptional<z.ZodString>;
|
|
304
|
+
call_id: z.ZodString;
|
|
305
|
+
name: z.ZodString;
|
|
306
|
+
input: z.ZodString;
|
|
307
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
308
|
+
type: z.ZodLiteral<"custom_tool_call_output">;
|
|
309
|
+
call_id: z.ZodString;
|
|
310
|
+
output: z.ZodString;
|
|
311
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
312
|
+
type: z.ZodString;
|
|
313
|
+
}, z.core.$loose>]>>]>>;
|
|
314
|
+
instructions: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
|
|
315
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
316
|
+
type: z.ZodLiteral<"function">;
|
|
317
|
+
name: z.ZodString;
|
|
318
|
+
description: z.ZodOptional<z.ZodString>;
|
|
319
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
320
|
+
strict: z.ZodOptional<z.ZodBoolean>;
|
|
321
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
322
|
+
type: z.ZodString;
|
|
323
|
+
}, z.core.$loose>]>>>;
|
|
324
|
+
tool_choice: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<"none">, z.ZodLiteral<"required">, z.ZodObject<{
|
|
325
|
+
type: z.ZodLiteral<"function">;
|
|
326
|
+
name: z.ZodString;
|
|
327
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
328
|
+
type: z.ZodLiteral<"custom">;
|
|
329
|
+
name: z.ZodString;
|
|
330
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
331
|
+
type: z.ZodEnum<{
|
|
332
|
+
code_interpreter: "code_interpreter";
|
|
333
|
+
computer_use_preview: "computer_use_preview";
|
|
334
|
+
file_search: "file_search";
|
|
335
|
+
image_generation: "image_generation";
|
|
336
|
+
mcp: "mcp";
|
|
337
|
+
web_search_preview: "web_search_preview";
|
|
338
|
+
}>;
|
|
339
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
340
|
+
type: z.ZodLiteral<"allowed_tools">;
|
|
341
|
+
mode: z.ZodEnum<{
|
|
342
|
+
auto: "auto";
|
|
343
|
+
required: "required";
|
|
344
|
+
}>;
|
|
345
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
346
|
+
type: z.ZodString;
|
|
347
|
+
name: z.ZodOptional<z.ZodString>;
|
|
348
|
+
}, z.core.$strip>>;
|
|
349
|
+
}, z.core.$strip>]>>;
|
|
350
|
+
max_output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
351
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
352
|
+
top_p: z.ZodOptional<z.ZodNumber>;
|
|
353
|
+
stop: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodNull]>>;
|
|
354
|
+
stream: z.ZodOptional<z.ZodBoolean>;
|
|
355
|
+
reasoning: z.ZodOptional<z.ZodObject<{
|
|
356
|
+
effort: z.ZodOptional<z.ZodString>;
|
|
357
|
+
summary: z.ZodOptional<z.ZodEnum<{
|
|
358
|
+
auto: "auto";
|
|
359
|
+
concise: "concise";
|
|
360
|
+
detailed: "detailed";
|
|
361
|
+
none: "none";
|
|
362
|
+
}>>;
|
|
363
|
+
}, z.core.$strip>>;
|
|
364
|
+
store: z.ZodOptional<z.ZodBoolean>;
|
|
365
|
+
previous_response_id: z.ZodOptional<z.ZodString>;
|
|
366
|
+
parallel_tool_calls: z.ZodOptional<z.ZodBoolean>;
|
|
367
|
+
prompt_cache_key: z.ZodOptional<z.ZodString>;
|
|
368
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
369
|
+
user: z.ZodOptional<z.ZodString>;
|
|
370
|
+
service_tier: z.ZodOptional<z.ZodString>;
|
|
371
|
+
presence_penalty: z.ZodOptional<z.ZodNumber>;
|
|
372
|
+
frequency_penalty: z.ZodOptional<z.ZodNumber>;
|
|
373
|
+
background: z.ZodOptional<z.ZodUnknown>;
|
|
374
|
+
include: z.ZodOptional<z.ZodUnknown>;
|
|
375
|
+
prompt: z.ZodOptional<z.ZodUnknown>;
|
|
376
|
+
safety_identifier: z.ZodOptional<z.ZodUnknown>;
|
|
377
|
+
text: z.ZodOptional<z.ZodUnknown>;
|
|
378
|
+
top_logprobs: z.ZodOptional<z.ZodUnknown>;
|
|
379
|
+
truncation: z.ZodOptional<z.ZodUnknown>;
|
|
380
|
+
}, z.core.$strip>;
|
|
381
|
+
/**
|
|
382
|
+
* Public types are sourced from the OpenAI SDK so the gateway stays in
|
|
383
|
+
* lock-step with the canonical API surface; the schemas above are runtime
|
|
384
|
+
* validators for the subset we actually accept.
|
|
385
|
+
*/
|
|
386
|
+
export type OpenAIResponsesRequest = ResponseCreateParams;
|
|
387
|
+
export type OpenAIResponsesInputItem = ResponseInputItem;
|
|
388
|
+
export type OpenAIResponsesTool = ResponsesTool;
|
|
389
|
+
export type OpenAIResponsesToolChoice = NonNullable<ResponseCreateParams["tool_choice"]>;
|
|
390
|
+
export type OpenAIResponsesInputContent = ResponseInputContent;
|
|
391
|
+
export type OpenAIResponsesOutputContent = ResponseOutputMessage["content"][number];
|
|
392
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Responses HTTP wire-format ↔ gjc Context bridge for the auth-gateway.
|
|
3
|
+
*
|
|
4
|
+
* Inbound: parses `POST /v1/responses` request bodies into a {@link ParsedRequest}.
|
|
5
|
+
* Outbound: encodes gjc's {@link AssistantMessage} (and event stream) back into
|
|
6
|
+
* the documented `response.*` SSE taxonomy or the non-streaming JSON shape.
|
|
7
|
+
*
|
|
8
|
+
* Spec: https://platform.openai.com/docs/api-reference/responses
|
|
9
|
+
* Inverse direction (source-of-truth for item shapes): ../../providers/openai-responses.ts
|
|
10
|
+
*/
|
|
11
|
+
import type { AuthGatewayParsedRequest as ParsedRequest } from "../auth-gateway/types";
|
|
12
|
+
import type { AssistantMessage, AssistantMessageEventStream } from "../types";
|
|
13
|
+
export type { ParsedRequest };
|
|
14
|
+
export declare function parseRequest(body: unknown, headers?: Headers): ParsedRequest;
|
|
15
|
+
export declare function formatError(status: number, type: string, message: string): Response;
|
|
16
|
+
export declare function encodeResponse(message: AssistantMessage, requestedModelId: string): Record<string, unknown>;
|
|
17
|
+
export declare function encodeStream(events: AssistantMessageEventStream, requestedModelId: string): ReadableStream<Uint8Array>;
|