openai 7.15.0 → 7.17.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 +62 -0
- package/README.md +6 -0
- package/_vendor/zod-to-json-schema/Options.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/Options.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/Options.js +2 -0
- package/_vendor/zod-to-json-schema/Options.js.map +1 -1
- package/_vendor/zod-to-json-schema/Options.mjs +2 -0
- package/_vendor/zod-to-json-schema/Options.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.js +1 -0
- package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.mjs +1 -0
- package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/bigint.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/bigint.js +2 -0
- package/_vendor/zod-to-json-schema/parsers/bigint.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/bigint.mjs +2 -0
- package/_vendor/zod-to-json-schema/parsers/bigint.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/literal.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/literal.js +1 -0
- package/_vendor/zod-to-json-schema/parsers/literal.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/literal.mjs +1 -0
- package/_vendor/zod-to-json-schema/parsers/literal.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/null.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/null.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/null.js +1 -0
- package/_vendor/zod-to-json-schema/parsers/null.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/null.mjs +1 -0
- package/_vendor/zod-to-json-schema/parsers/null.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.js +4 -0
- package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs +4 -0
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/number.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/number.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/number.js +2 -0
- package/_vendor/zod-to-json-schema/parsers/number.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/number.mjs +2 -0
- package/_vendor/zod-to-json-schema/parsers/number.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.js +6 -7
- package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.mjs +6 -7
- package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/record.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/record.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/record.js +2 -0
- package/_vendor/zod-to-json-schema/parsers/record.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/record.mjs +2 -0
- package/_vendor/zod-to-json-schema/parsers/record.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/string.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/string.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/string.js +1 -0
- package/_vendor/zod-to-json-schema/parsers/string.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/string.mjs +1 -0
- package/_vendor/zod-to-json-schema/parsers/string.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/union.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/union.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/union.js +3 -0
- package/_vendor/zod-to-json-schema/parsers/union.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/union.mjs +3 -0
- package/_vendor/zod-to-json-schema/parsers/union.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/util.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/util.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/util.js +1 -0
- package/_vendor/zod-to-json-schema/util.js.map +1 -1
- package/_vendor/zod-to-json-schema/util.mjs +1 -0
- package/_vendor/zod-to-json-schema/util.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/zodToJsonSchema.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/zodToJsonSchema.js +2 -0
- package/_vendor/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
- package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs +2 -0
- package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs.map +1 -1
- package/auth/subject-token-providers.d.mts.map +1 -1
- package/auth/subject-token-providers.d.ts.map +1 -1
- package/auth/subject-token-providers.js +6 -1
- package/auth/subject-token-providers.js.map +1 -1
- package/auth/subject-token-providers.mjs +6 -1
- package/auth/subject-token-providers.mjs.map +1 -1
- package/auth/workload-identity-auth.d.mts.map +1 -1
- package/auth/workload-identity-auth.d.ts.map +1 -1
- package/auth/workload-identity-auth.js +9 -0
- package/auth/workload-identity-auth.js.map +1 -1
- package/auth/workload-identity-auth.mjs +9 -0
- package/auth/workload-identity-auth.mjs.map +1 -1
- package/auth/x509-transport.d.mts.map +1 -1
- package/auth/x509-transport.d.ts.map +1 -1
- package/auth/x509-transport.js +11 -0
- package/auth/x509-transport.js.map +1 -1
- package/auth/x509-transport.mjs +11 -0
- package/auth/x509-transport.mjs.map +1 -1
- package/azure.d.mts.map +1 -1
- package/azure.d.ts.map +1 -1
- package/azure.js +3 -0
- package/azure.js.map +1 -1
- package/azure.mjs +3 -0
- package/azure.mjs.map +1 -1
- package/bedrock.d.mts.map +1 -1
- package/bedrock.d.ts.map +1 -1
- package/bedrock.js +14 -6
- package/bedrock.js.map +1 -1
- package/bedrock.mjs +14 -6
- package/bedrock.mjs.map +1 -1
- package/beta/realtime/internal-base.d.mts.map +1 -1
- package/beta/realtime/internal-base.d.ts.map +1 -1
- package/beta/realtime/internal-base.js +1 -0
- package/beta/realtime/internal-base.js.map +1 -1
- package/beta/realtime/internal-base.mjs +1 -0
- package/beta/realtime/internal-base.mjs.map +1 -1
- package/beta/realtime/websocket.d.mts.map +1 -1
- package/beta/realtime/websocket.d.ts.map +1 -1
- package/beta/realtime/websocket.js +9 -1
- package/beta/realtime/websocket.js.map +1 -1
- package/beta/realtime/websocket.mjs +9 -1
- package/beta/realtime/websocket.mjs.map +1 -1
- package/beta/realtime/ws.d.mts.map +1 -1
- package/beta/realtime/ws.d.ts.map +1 -1
- package/beta/realtime/ws.js +3 -0
- package/beta/realtime/ws.js.map +1 -1
- package/beta/realtime/ws.mjs +3 -0
- package/beta/realtime/ws.mjs.map +1 -1
- package/client.d.mts +14 -3
- package/client.d.mts.map +1 -1
- package/client.d.ts +14 -3
- package/client.d.ts.map +1 -1
- package/client.js +64 -26
- package/client.js.map +1 -1
- package/client.mjs +64 -26
- package/client.mjs.map +1 -1
- package/core/EventEmitter.d.mts.map +1 -1
- package/core/EventEmitter.d.ts.map +1 -1
- package/core/EventEmitter.js +15 -0
- package/core/EventEmitter.js.map +1 -1
- package/core/EventEmitter.mjs +15 -0
- package/core/EventEmitter.mjs.map +1 -1
- package/core/streaming.d.mts +1 -0
- package/core/streaming.d.mts.map +1 -1
- package/core/streaming.d.ts +1 -0
- package/core/streaming.d.ts.map +1 -1
- package/core/streaming.js +28 -1
- package/core/streaming.js.map +1 -1
- package/core/streaming.mjs +28 -1
- package/core/streaming.mjs.map +1 -1
- package/helpers/audio.d.mts.map +1 -1
- package/helpers/audio.d.ts.map +1 -1
- package/helpers/audio.js +2 -0
- package/helpers/audio.js.map +1 -1
- package/helpers/audio.mjs +2 -0
- package/helpers/audio.mjs.map +1 -1
- package/helpers/standard-schema.d.mts.map +1 -1
- package/helpers/standard-schema.d.ts.map +1 -1
- package/helpers/standard-schema.js +28 -18
- package/helpers/standard-schema.js.map +1 -1
- package/helpers/standard-schema.mjs +28 -18
- package/helpers/standard-schema.mjs.map +1 -1
- package/helpers/zod-v3-strict-schema.d.mts.map +1 -1
- package/helpers/zod-v3-strict-schema.d.ts.map +1 -1
- package/helpers/zod-v3-strict-schema.js +5 -0
- package/helpers/zod-v3-strict-schema.js.map +1 -1
- package/helpers/zod-v3-strict-schema.mjs +5 -0
- package/helpers/zod-v3-strict-schema.mjs.map +1 -1
- package/helpers/zod.d.mts.map +1 -1
- package/helpers/zod.d.ts.map +1 -1
- package/helpers/zod.js +16 -1
- package/helpers/zod.js.map +1 -1
- package/helpers/zod.mjs +17 -2
- package/helpers/zod.mjs.map +1 -1
- package/internal/assistant-stream-delta.d.mts.map +1 -1
- package/internal/assistant-stream-delta.d.ts.map +1 -1
- package/internal/assistant-stream-delta.js +8 -1
- package/internal/assistant-stream-delta.js.map +1 -1
- package/internal/assistant-stream-delta.mjs +8 -1
- package/internal/assistant-stream-delta.mjs.map +1 -1
- package/internal/auth/x509-credential-options.d.mts.map +1 -1
- package/internal/auth/x509-credential-options.d.ts.map +1 -1
- package/internal/auth/x509-credential-options.js +3 -0
- package/internal/auth/x509-credential-options.js.map +1 -1
- package/internal/auth/x509-credential-options.mjs +3 -0
- package/internal/auth/x509-credential-options.mjs.map +1 -1
- package/internal/auth/x509-token-exchange.d.mts.map +1 -1
- package/internal/auth/x509-token-exchange.d.ts.map +1 -1
- package/internal/auth/x509-token-exchange.js +2 -0
- package/internal/auth/x509-token-exchange.js.map +1 -1
- package/internal/auth/x509-token-exchange.mjs +2 -0
- package/internal/auth/x509-token-exchange.mjs.map +1 -1
- package/internal/auth/x509-transport-capability.d.mts.map +1 -1
- package/internal/auth/x509-transport-capability.d.ts.map +1 -1
- package/internal/auth/x509-transport-capability.js +1 -0
- package/internal/auth/x509-transport-capability.js.map +1 -1
- package/internal/auth/x509-transport-capability.mjs +1 -0
- package/internal/auth/x509-transport-capability.mjs.map +1 -1
- package/internal/auth/x509-transport-state.mjs +1 -0
- package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -1
- package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -1
- package/internal/auth/x509-workload-identity-auth.js +11 -0
- package/internal/auth/x509-workload-identity-auth.js.map +1 -1
- package/internal/auth/x509-workload-identity-auth.mjs +11 -0
- package/internal/auth/x509-workload-identity-auth.mjs.map +1 -1
- package/internal/bedrock.d.mts.map +1 -1
- package/internal/bedrock.d.ts.map +1 -1
- package/internal/bedrock.js +17 -1
- package/internal/bedrock.js.map +1 -1
- package/internal/bedrock.mjs +17 -1
- package/internal/bedrock.mjs.map +1 -1
- package/internal/decoders/line.d.mts.map +1 -1
- package/internal/decoders/line.d.ts.map +1 -1
- package/internal/decoders/line.js +1 -0
- package/internal/decoders/line.js.map +1 -1
- package/internal/decoders/line.mjs +1 -0
- package/internal/decoders/line.mjs.map +1 -1
- package/internal/parse.d.mts +1 -0
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts +1 -0
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs.map +1 -1
- package/internal/provider.d.mts.map +1 -1
- package/internal/provider.d.ts.map +1 -1
- package/internal/provider.js +3 -0
- package/internal/provider.js.map +1 -1
- package/internal/provider.mjs +3 -0
- package/internal/provider.mjs.map +1 -1
- package/internal/qs/stringify.d.mts.map +1 -1
- package/internal/qs/stringify.d.ts.map +1 -1
- package/internal/qs/stringify.js +3 -0
- package/internal/qs/stringify.js.map +1 -1
- package/internal/qs/stringify.mjs +3 -0
- package/internal/qs/stringify.mjs.map +1 -1
- package/internal/qs/utils.d.mts.map +1 -1
- package/internal/qs/utils.d.ts.map +1 -1
- package/internal/qs/utils.js +15 -3
- package/internal/qs/utils.js.map +1 -1
- package/internal/qs/utils.mjs +15 -3
- package/internal/qs/utils.mjs.map +1 -1
- package/internal/realtime-credentials.d.mts +1 -1
- package/internal/realtime-credentials.d.ts +1 -1
- package/internal/realtime-credentials.js +1 -1
- package/internal/realtime-credentials.mjs +1 -1
- package/internal/responses/response-accumulator.d.mts.map +1 -1
- package/internal/responses/response-accumulator.d.ts.map +1 -1
- package/internal/responses/response-accumulator.js +20 -4
- package/internal/responses/response-accumulator.js.map +1 -1
- package/internal/responses/response-accumulator.mjs +20 -4
- package/internal/responses/response-accumulator.mjs.map +1 -1
- package/internal/to-file.js.map +1 -1
- package/internal/to-file.mjs.map +1 -1
- package/internal/uploads.d.mts.map +1 -1
- package/internal/uploads.d.ts.map +1 -1
- package/internal/uploads.js +10 -0
- package/internal/uploads.js.map +1 -1
- package/internal/uploads.mjs +10 -0
- package/internal/uploads.mjs.map +1 -1
- package/internal/utils/abort.d.mts +11 -0
- package/internal/utils/abort.d.mts.map +1 -0
- package/internal/utils/abort.d.ts +11 -0
- package/internal/utils/abort.d.ts.map +1 -0
- package/internal/utils/abort.js +94 -0
- package/internal/utils/abort.js.map +1 -0
- package/internal/utils/abort.mjs +90 -0
- package/internal/utils/abort.mjs.map +1 -0
- package/internal/utils/bytes.d.mts.map +1 -1
- package/internal/utils/bytes.d.ts.map +1 -1
- package/internal/utils/bytes.js +2 -0
- package/internal/utils/bytes.js.map +1 -1
- package/internal/utils/bytes.mjs +2 -0
- package/internal/utils/bytes.mjs.map +1 -1
- package/internal/utils/path.d.mts.map +1 -1
- package/internal/utils/path.d.ts.map +1 -1
- package/internal/utils/path.js +2 -0
- package/internal/utils/path.js.map +1 -1
- package/internal/utils/path.mjs +2 -0
- package/internal/utils/path.mjs.map +1 -1
- package/internal/utils/sleep.d.mts +1 -1
- package/internal/utils/sleep.d.mts.map +1 -1
- package/internal/utils/sleep.d.ts +1 -1
- package/internal/utils/sleep.d.ts.map +1 -1
- package/internal/utils/sleep.js +51 -1
- package/internal/utils/sleep.js.map +1 -1
- package/internal/utils/sleep.mjs +51 -1
- package/internal/utils/sleep.mjs.map +1 -1
- package/internal/ws-adapter-browser.d.mts.map +1 -1
- package/internal/ws-adapter-browser.d.ts.map +1 -1
- package/internal/ws-adapter-browser.js +2 -0
- package/internal/ws-adapter-browser.js.map +1 -1
- package/internal/ws-adapter-browser.mjs +2 -0
- package/internal/ws-adapter-browser.mjs.map +1 -1
- package/internal/ws.d.mts +22 -0
- package/internal/ws.d.mts.map +1 -1
- package/internal/ws.d.ts +22 -0
- package/internal/ws.d.ts.map +1 -1
- package/internal/ws.js +46 -4
- package/internal/ws.js.map +1 -1
- package/internal/ws.mjs +44 -4
- package/internal/ws.mjs.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
- package/lib/AbstractChatCompletionRunner.js +41 -16
- package/lib/AbstractChatCompletionRunner.js.map +1 -1
- package/lib/AbstractChatCompletionRunner.mjs +42 -17
- package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
- package/lib/AssistantStream.d.mts.map +1 -1
- package/lib/AssistantStream.d.ts.map +1 -1
- package/lib/AssistantStream.js +19 -5
- package/lib/AssistantStream.js.map +1 -1
- package/lib/AssistantStream.mjs +20 -6
- package/lib/AssistantStream.mjs.map +1 -1
- package/lib/ChatCompletionRunner.d.mts.map +1 -1
- package/lib/ChatCompletionRunner.d.ts.map +1 -1
- package/lib/ChatCompletionRunner.js +1 -0
- package/lib/ChatCompletionRunner.js.map +1 -1
- package/lib/ChatCompletionRunner.mjs +1 -0
- package/lib/ChatCompletionRunner.mjs.map +1 -1
- package/lib/ChatCompletionStream.d.mts +6 -1
- package/lib/ChatCompletionStream.d.mts.map +1 -1
- package/lib/ChatCompletionStream.d.ts +6 -1
- package/lib/ChatCompletionStream.d.ts.map +1 -1
- package/lib/ChatCompletionStream.js +63 -7
- package/lib/ChatCompletionStream.js.map +1 -1
- package/lib/ChatCompletionStream.mjs +64 -8
- package/lib/ChatCompletionStream.mjs.map +1 -1
- package/lib/EventEmitter.d.mts.map +1 -1
- package/lib/EventEmitter.d.ts.map +1 -1
- package/lib/EventEmitter.js +15 -0
- package/lib/EventEmitter.js.map +1 -1
- package/lib/EventEmitter.mjs +15 -0
- package/lib/EventEmitter.mjs.map +1 -1
- package/lib/EventStream.d.mts +2 -0
- package/lib/EventStream.d.mts.map +1 -1
- package/lib/EventStream.d.ts +2 -0
- package/lib/EventStream.d.ts.map +1 -1
- package/lib/EventStream.js +111 -14
- package/lib/EventStream.js.map +1 -1
- package/lib/EventStream.mjs +111 -14
- package/lib/EventStream.mjs.map +1 -1
- package/lib/ResponsesParser.d.mts.map +1 -1
- package/lib/ResponsesParser.d.ts.map +1 -1
- package/lib/ResponsesParser.js +4 -0
- package/lib/ResponsesParser.js.map +1 -1
- package/lib/ResponsesParser.mjs +4 -0
- package/lib/ResponsesParser.mjs.map +1 -1
- package/lib/RunnableFunction.d.mts.map +1 -1
- package/lib/RunnableFunction.d.ts.map +1 -1
- package/lib/RunnableFunction.js.map +1 -1
- package/lib/RunnableFunction.mjs.map +1 -1
- package/lib/agents/agent-session-stream.d.mts.map +1 -1
- package/lib/agents/agent-session-stream.d.ts.map +1 -1
- package/lib/agents/agent-session-stream.js +5 -2
- package/lib/agents/agent-session-stream.js.map +1 -1
- package/lib/agents/agent-session-stream.mjs +5 -2
- package/lib/agents/agent-session-stream.mjs.map +1 -1
- package/lib/embeddings.d.mts.map +1 -1
- package/lib/embeddings.d.ts.map +1 -1
- package/lib/embeddings.js +2 -0
- package/lib/embeddings.js.map +1 -1
- package/lib/embeddings.mjs +2 -0
- package/lib/embeddings.mjs.map +1 -1
- package/lib/live/transcript-grouper.d.mts.map +1 -1
- package/lib/live/transcript-grouper.d.ts.map +1 -1
- package/lib/live/transcript-grouper.js +8 -2
- package/lib/live/transcript-grouper.js.map +1 -1
- package/lib/live/transcript-grouper.mjs +8 -2
- package/lib/live/transcript-grouper.mjs.map +1 -1
- package/lib/live/transcript-grouping.d.mts +2 -2
- package/lib/live/transcript-grouping.d.mts.map +1 -1
- package/lib/live/transcript-grouping.d.ts +2 -2
- package/lib/live/transcript-grouping.d.ts.map +1 -1
- package/lib/live/transcript-grouping.js +44 -22
- package/lib/live/transcript-grouping.js.map +1 -1
- package/lib/live/transcript-grouping.mjs +44 -22
- package/lib/live/transcript-grouping.mjs.map +1 -1
- package/lib/parser.d.mts.map +1 -1
- package/lib/parser.d.ts.map +1 -1
- package/lib/parser.js +13 -0
- package/lib/parser.js.map +1 -1
- package/lib/parser.mjs +13 -0
- package/lib/parser.mjs.map +1 -1
- package/lib/responses/ResponseInputItems.d.mts.map +1 -1
- package/lib/responses/ResponseInputItems.d.ts.map +1 -1
- package/lib/responses/ResponseInputItems.js +11 -0
- package/lib/responses/ResponseInputItems.js.map +1 -1
- package/lib/responses/ResponseInputItems.mjs +11 -0
- package/lib/responses/ResponseInputItems.mjs.map +1 -1
- package/lib/responses/ResponseStream.d.mts.map +1 -1
- package/lib/responses/ResponseStream.d.ts.map +1 -1
- package/lib/responses/ResponseStream.js +7 -3
- package/lib/responses/ResponseStream.js.map +1 -1
- package/lib/responses/ResponseStream.mjs +8 -4
- package/lib/responses/ResponseStream.mjs.map +1 -1
- package/lib/transform.d.mts.map +1 -1
- package/lib/transform.d.ts.map +1 -1
- package/lib/transform.js +69 -33
- package/lib/transform.js.map +1 -1
- package/lib/transform.mjs +69 -33
- package/lib/transform.mjs.map +1 -1
- package/lib/webrtc/connection.d.mts.map +1 -1
- package/lib/webrtc/connection.d.ts.map +1 -1
- package/lib/webrtc/connection.js +6 -1
- package/lib/webrtc/connection.js.map +1 -1
- package/lib/webrtc/connection.mjs +6 -1
- package/lib/webrtc/connection.mjs.map +1 -1
- package/lib/webrtc/data-channel.d.mts.map +1 -1
- package/lib/webrtc/data-channel.d.ts.map +1 -1
- package/lib/webrtc/data-channel.js +9 -1
- package/lib/webrtc/data-channel.js.map +1 -1
- package/lib/webrtc/data-channel.mjs +9 -1
- package/lib/webrtc/data-channel.mjs.map +1 -1
- package/lib/webrtc/subscriptions.d.mts.map +1 -1
- package/lib/webrtc/subscriptions.d.ts.map +1 -1
- package/lib/webrtc/subscriptions.js +2 -0
- package/lib/webrtc/subscriptions.js.map +1 -1
- package/lib/webrtc/subscriptions.mjs +2 -0
- package/lib/webrtc/subscriptions.mjs.map +1 -1
- package/lib/webrtc/types.d.mts.map +1 -1
- package/lib/webrtc/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/providers/bedrock/aws.d.mts.map +1 -1
- package/providers/bedrock/aws.d.ts.map +1 -1
- package/providers/bedrock/aws.js +4 -0
- package/providers/bedrock/aws.js.map +1 -1
- package/providers/bedrock/aws.mjs +4 -0
- package/providers/bedrock/aws.mjs.map +1 -1
- package/realtime/internal-base.d.mts.map +1 -1
- package/realtime/internal-base.d.ts.map +1 -1
- package/realtime/internal-base.js +1 -0
- package/realtime/internal-base.js.map +1 -1
- package/realtime/internal-base.mjs +1 -0
- package/realtime/internal-base.mjs.map +1 -1
- package/realtime/websocket.d.mts.map +1 -1
- package/realtime/websocket.d.ts.map +1 -1
- package/realtime/websocket.js +9 -1
- package/realtime/websocket.js.map +1 -1
- package/realtime/websocket.mjs +9 -1
- package/realtime/websocket.mjs.map +1 -1
- package/realtime/ws.d.mts.map +1 -1
- package/realtime/ws.d.ts.map +1 -1
- package/realtime/ws.js +3 -0
- package/realtime/ws.js.map +1 -1
- package/realtime/ws.mjs +3 -0
- package/realtime/ws.mjs.map +1 -1
- package/resources/beta/agents/agents.d.mts +2 -1
- package/resources/beta/agents/agents.d.mts.map +1 -1
- package/resources/beta/agents/agents.d.ts +2 -1
- package/resources/beta/agents/agents.d.ts.map +1 -1
- package/resources/beta/agents/agents.js.map +1 -1
- package/resources/beta/agents/agents.mjs.map +1 -1
- package/resources/beta/beta.d.mts +2 -2
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +2 -2
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/index.d.mts +1 -1
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +1 -1
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/responses/index.d.mts +1 -1
- package/resources/beta/responses/index.d.mts.map +1 -1
- package/resources/beta/responses/index.d.ts +1 -1
- package/resources/beta/responses/index.d.ts.map +1 -1
- package/resources/beta/responses/index.js.map +1 -1
- package/resources/beta/responses/index.mjs.map +1 -1
- package/resources/beta/responses/internal-base.d.mts +3 -0
- package/resources/beta/responses/internal-base.d.mts.map +1 -1
- package/resources/beta/responses/internal-base.d.ts +3 -0
- package/resources/beta/responses/internal-base.d.ts.map +1 -1
- package/resources/beta/responses/internal-base.js +21 -6
- package/resources/beta/responses/internal-base.js.map +1 -1
- package/resources/beta/responses/internal-base.mjs +21 -6
- package/resources/beta/responses/internal-base.mjs.map +1 -1
- package/resources/beta/responses/responses.d.mts +51 -3
- package/resources/beta/responses/responses.d.mts.map +1 -1
- package/resources/beta/responses/responses.d.ts +51 -3
- package/resources/beta/responses/responses.d.ts.map +1 -1
- package/resources/beta/responses/responses.js.map +1 -1
- package/resources/beta/responses/responses.mjs.map +1 -1
- package/resources/beta/responses/ws-base.d.mts +18 -9
- package/resources/beta/responses/ws-base.d.mts.map +1 -1
- package/resources/beta/responses/ws-base.d.ts +18 -9
- package/resources/beta/responses/ws-base.d.ts.map +1 -1
- package/resources/beta/responses/ws-base.js +87 -18
- package/resources/beta/responses/ws-base.js.map +1 -1
- package/resources/beta/responses/ws-base.mjs +89 -20
- package/resources/beta/responses/ws-base.mjs.map +1 -1
- package/resources/beta/responses/ws.d.mts +3 -0
- package/resources/beta/responses/ws.d.mts.map +1 -1
- package/resources/beta/responses/ws.d.ts +3 -0
- package/resources/beta/responses/ws.d.ts.map +1 -1
- package/resources/beta/responses/ws.js +12 -3
- package/resources/beta/responses/ws.js.map +1 -1
- package/resources/beta/responses/ws.mjs +12 -3
- package/resources/beta/responses/ws.mjs.map +1 -1
- package/resources/live/forks/internal-base.d.mts +3 -0
- package/resources/live/forks/internal-base.d.mts.map +1 -1
- package/resources/live/forks/internal-base.d.ts +3 -0
- package/resources/live/forks/internal-base.d.ts.map +1 -1
- package/resources/live/forks/internal-base.js +21 -5
- package/resources/live/forks/internal-base.js.map +1 -1
- package/resources/live/forks/internal-base.mjs +21 -5
- package/resources/live/forks/internal-base.mjs.map +1 -1
- package/resources/live/forks/ws-base.d.mts +13 -8
- package/resources/live/forks/ws-base.d.mts.map +1 -1
- package/resources/live/forks/ws-base.d.ts +13 -8
- package/resources/live/forks/ws-base.d.ts.map +1 -1
- package/resources/live/forks/ws-base.js +85 -14
- package/resources/live/forks/ws-base.js.map +1 -1
- package/resources/live/forks/ws-base.mjs +87 -16
- package/resources/live/forks/ws-base.mjs.map +1 -1
- package/resources/live/forks/ws.d.mts +1 -0
- package/resources/live/forks/ws.d.mts.map +1 -1
- package/resources/live/forks/ws.d.ts +1 -0
- package/resources/live/forks/ws.d.ts.map +1 -1
- package/resources/live/forks/ws.js.map +1 -1
- package/resources/live/forks/ws.mjs.map +1 -1
- package/resources/live/internal-base.d.mts +3 -0
- package/resources/live/internal-base.d.mts.map +1 -1
- package/resources/live/internal-base.d.ts +3 -0
- package/resources/live/internal-base.d.ts.map +1 -1
- package/resources/live/internal-base.js +21 -5
- package/resources/live/internal-base.js.map +1 -1
- package/resources/live/internal-base.mjs +21 -5
- package/resources/live/internal-base.mjs.map +1 -1
- package/resources/live/sideband/internal-base.d.mts +3 -0
- package/resources/live/sideband/internal-base.d.mts.map +1 -1
- package/resources/live/sideband/internal-base.d.ts +3 -0
- package/resources/live/sideband/internal-base.d.ts.map +1 -1
- package/resources/live/sideband/internal-base.js +21 -5
- package/resources/live/sideband/internal-base.js.map +1 -1
- package/resources/live/sideband/internal-base.mjs +21 -5
- package/resources/live/sideband/internal-base.mjs.map +1 -1
- package/resources/live/sideband/ws-base.d.mts +13 -8
- package/resources/live/sideband/ws-base.d.mts.map +1 -1
- package/resources/live/sideband/ws-base.d.ts +13 -8
- package/resources/live/sideband/ws-base.d.ts.map +1 -1
- package/resources/live/sideband/ws-base.js +85 -14
- package/resources/live/sideband/ws-base.js.map +1 -1
- package/resources/live/sideband/ws-base.mjs +87 -16
- package/resources/live/sideband/ws-base.mjs.map +1 -1
- package/resources/live/sideband/ws.d.mts +1 -0
- package/resources/live/sideband/ws.d.mts.map +1 -1
- package/resources/live/sideband/ws.d.ts +1 -0
- package/resources/live/sideband/ws.d.ts.map +1 -1
- package/resources/live/sideband/ws.js.map +1 -1
- package/resources/live/sideband/ws.mjs.map +1 -1
- package/resources/live/ws-base.d.mts +13 -8
- package/resources/live/ws-base.d.mts.map +1 -1
- package/resources/live/ws-base.d.ts +13 -8
- package/resources/live/ws-base.d.ts.map +1 -1
- package/resources/live/ws-base.js +85 -14
- package/resources/live/ws-base.js.map +1 -1
- package/resources/live/ws-base.mjs +87 -16
- package/resources/live/ws-base.mjs.map +1 -1
- package/resources/live/ws.d.mts +1 -0
- package/resources/live/ws.d.mts.map +1 -1
- package/resources/live/ws.d.ts +1 -0
- package/resources/live/ws.d.ts.map +1 -1
- package/resources/live/ws.js.map +1 -1
- package/resources/live/ws.mjs.map +1 -1
- package/resources/responses/internal-base.d.mts +3 -0
- package/resources/responses/internal-base.d.mts.map +1 -1
- package/resources/responses/internal-base.d.ts +3 -0
- package/resources/responses/internal-base.d.ts.map +1 -1
- package/resources/responses/internal-base.js +21 -6
- package/resources/responses/internal-base.js.map +1 -1
- package/resources/responses/internal-base.mjs +21 -6
- package/resources/responses/internal-base.mjs.map +1 -1
- package/resources/responses/responses.d.mts +36 -3
- package/resources/responses/responses.d.mts.map +1 -1
- package/resources/responses/responses.d.ts +36 -3
- package/resources/responses/responses.d.ts.map +1 -1
- package/resources/responses/responses.js.map +1 -1
- package/resources/responses/responses.mjs.map +1 -1
- package/resources/responses/ws-base.d.mts +18 -9
- package/resources/responses/ws-base.d.mts.map +1 -1
- package/resources/responses/ws-base.d.ts +18 -9
- package/resources/responses/ws-base.d.ts.map +1 -1
- package/resources/responses/ws-base.js +87 -18
- package/resources/responses/ws-base.js.map +1 -1
- package/resources/responses/ws-base.mjs +89 -20
- package/resources/responses/ws-base.mjs.map +1 -1
- package/resources/responses/ws.d.mts +3 -0
- package/resources/responses/ws.d.mts.map +1 -1
- package/resources/responses/ws.d.ts +3 -0
- package/resources/responses/ws.d.ts.map +1 -1
- package/resources/responses/ws.js +12 -3
- package/resources/responses/ws.js.map +1 -1
- package/resources/responses/ws.mjs +12 -3
- package/resources/responses/ws.mjs.map +1 -1
- package/src/_vendor/zod-to-json-schema/Options.ts +2 -0
- package/src/_vendor/zod-to-json-schema/parseDef.ts +1 -0
- package/src/_vendor/zod-to-json-schema/parsers/bigint.ts +2 -0
- package/src/_vendor/zod-to-json-schema/parsers/literal.ts +1 -0
- package/src/_vendor/zod-to-json-schema/parsers/null.ts +1 -0
- package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +4 -0
- package/src/_vendor/zod-to-json-schema/parsers/number.ts +2 -0
- package/src/_vendor/zod-to-json-schema/parsers/optional.ts +6 -7
- package/src/_vendor/zod-to-json-schema/parsers/record.ts +2 -0
- package/src/_vendor/zod-to-json-schema/parsers/string.ts +1 -0
- package/src/_vendor/zod-to-json-schema/parsers/union.ts +3 -0
- package/src/_vendor/zod-to-json-schema/util.ts +1 -0
- package/src/_vendor/zod-to-json-schema/zodToJsonSchema.ts +3 -1
- package/src/auth/subject-token-providers.ts +6 -1
- package/src/auth/workload-identity-auth.ts +10 -1
- package/src/auth/x509-transport.ts +13 -2
- package/src/azure.ts +3 -0
- package/src/bedrock.ts +23 -7
- package/src/beta/realtime/internal-base.ts +2 -0
- package/src/beta/realtime/websocket.ts +11 -1
- package/src/beta/realtime/ws.ts +3 -0
- package/src/client.ts +78 -22
- package/src/core/EventEmitter.ts +15 -0
- package/src/core/streaming.ts +30 -2
- package/src/helpers/audio.ts +2 -0
- package/src/helpers/standard-schema.ts +31 -19
- package/src/helpers/zod-v3-strict-schema.ts +8 -2
- package/src/helpers/zod.ts +32 -13
- package/src/internal/assistant-stream-delta.ts +7 -1
- package/src/internal/auth/x509-credential-options.ts +3 -0
- package/src/internal/auth/x509-token-exchange.ts +10 -1
- package/src/internal/auth/x509-transport-capability.ts +2 -1
- package/src/internal/auth/x509-workload-identity-auth.ts +13 -8
- package/src/internal/bedrock.ts +15 -0
- package/src/internal/decoders/line.ts +1 -0
- package/src/internal/parse.ts +1 -0
- package/src/internal/provider.ts +3 -0
- package/src/internal/qs/stringify.ts +3 -0
- package/src/internal/qs/utils.ts +14 -3
- package/src/internal/realtime-credentials.ts +1 -1
- package/src/internal/responses/response-accumulator.ts +34 -4
- package/src/internal/to-file.ts +1 -1
- package/src/internal/uploads.ts +11 -1
- package/src/internal/utils/abort.ts +116 -0
- package/src/internal/utils/bytes.ts +2 -0
- package/src/internal/utils/path.ts +2 -0
- package/src/internal/utils/sleep.ts +52 -1
- package/src/internal/ws-adapter-browser.ts +2 -0
- package/src/internal/ws.ts +66 -4
- package/src/lib/AbstractChatCompletionRunner.ts +40 -17
- package/src/lib/AssistantStream.ts +31 -20
- package/src/lib/ChatCompletionRunner.ts +1 -0
- package/src/lib/ChatCompletionStream.ts +81 -14
- package/src/lib/EventEmitter.ts +15 -0
- package/src/lib/EventStream.ts +93 -3
- package/src/lib/ResponsesParser.ts +5 -0
- package/src/lib/RunnableFunction.ts +4 -1
- package/src/lib/agents/agent-session-stream.ts +5 -3
- package/src/lib/embeddings.ts +3 -1
- package/src/lib/live/transcript-grouper.ts +4 -0
- package/src/lib/live/transcript-grouping.ts +59 -27
- package/src/lib/parser.ts +16 -2
- package/src/lib/responses/ResponseInputItems.ts +11 -0
- package/src/lib/responses/ResponseStream.ts +6 -3
- package/src/lib/transform.ts +70 -35
- package/src/lib/webrtc/connection.ts +5 -1
- package/src/lib/webrtc/data-channel.ts +7 -0
- package/src/lib/webrtc/subscriptions.ts +3 -0
- package/src/lib/webrtc/types.ts +1 -0
- package/src/providers/bedrock/aws.ts +5 -1
- package/src/realtime/internal-base.ts +2 -0
- package/src/realtime/websocket.ts +11 -1
- package/src/realtime/ws.ts +3 -0
- package/src/resources/beta/agents/agents.ts +2 -0
- package/src/resources/beta/beta.ts +2 -0
- package/src/resources/beta/index.ts +1 -0
- package/src/resources/beta/responses/index.ts +1 -0
- package/src/resources/beta/responses/internal-base.ts +24 -6
- package/src/resources/beta/responses/responses.ts +58 -0
- package/src/resources/beta/responses/ws-base.ts +117 -26
- package/src/resources/beta/responses/ws.ts +23 -6
- package/src/resources/live/forks/internal-base.ts +24 -5
- package/src/resources/live/forks/ws-base.ts +110 -21
- package/src/resources/live/forks/ws.ts +2 -0
- package/src/resources/live/internal-base.ts +24 -5
- package/src/resources/live/sideband/internal-base.ts +24 -5
- package/src/resources/live/sideband/ws-base.ts +110 -21
- package/src/resources/live/sideband/ws.ts +2 -0
- package/src/resources/live/ws-base.ts +110 -21
- package/src/resources/live/ws.ts +2 -0
- package/src/resources/responses/api.md +1 -0
- package/src/resources/responses/internal-base.ts +24 -6
- package/src/resources/responses/responses.ts +41 -0
- package/src/resources/responses/ws-base.ts +117 -26
- package/src/resources/responses/ws.ts +23 -6
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/resources/responses/ws.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,0CAAuC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,qBAAkB;AACzE,OAAO,EAAE,MAAM,EAAE,wBAAqB;
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/resources/responses/ws.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,0CAAuC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,qBAAkB;AACzE,OAAO,EAAE,MAAM,EAAE,wBAAqB;AAKtC,YAAY,EAAE,sBAAsB,EAAE,6BAA0B;AAEhE,YAAY,EAAE,2BAA2B,EAAE,qBAAkB;AAE7D,MAAM,WAAW,wBAAyB,SAAQ,EAAE,CAAC,aAAa,EAAE,sBAAsB;IACxF,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAY,SAAQ,eAAe,CAAC,aAAa,CAAC;IAC7D,OAAO,CAAC,UAAU,CAAsC;gBAE5C,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS;IAYjF,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa;CAwBtF"}
|
|
@@ -7,6 +7,8 @@ const WS = tslib_1.__importStar(require("ws"));
|
|
|
7
7
|
const ws_adapter_node_1 = require("../../internal/ws-adapter-node.js");
|
|
8
8
|
const ws_base_1 = require("./ws-base.js");
|
|
9
9
|
const version_1 = require("../../version.js");
|
|
10
|
+
const error_1 = require("../../core/error.js");
|
|
11
|
+
const ws_1 = require("../../internal/ws.js");
|
|
10
12
|
class ResponsesWS extends ws_base_1.ResponsesWSBase {
|
|
11
13
|
constructor(client, options) {
|
|
12
14
|
if (!WS?.WebSocket) {
|
|
@@ -18,15 +20,22 @@ class ResponsesWS extends ws_base_1.ResponsesWSBase {
|
|
|
18
20
|
this._connectInitial();
|
|
19
21
|
}
|
|
20
22
|
_createSocket(url, authHeaders) {
|
|
21
|
-
const
|
|
23
|
+
const capturedAuthHeaders = { ...authHeaders };
|
|
24
|
+
const socketOptions = {
|
|
22
25
|
...this._wsOptions,
|
|
23
26
|
headers: {
|
|
24
27
|
'User-Agent': `${this._client.constructor.name}/JS ${version_1.VERSION}`,
|
|
25
|
-
...
|
|
28
|
+
...capturedAuthHeaders,
|
|
26
29
|
...this._wsOptions?.headers,
|
|
27
30
|
},
|
|
28
31
|
followRedirects: false,
|
|
29
|
-
}
|
|
32
|
+
};
|
|
33
|
+
if (this._client._hasApiKeyProvider() &&
|
|
34
|
+
!capturedAuthHeaders['Authorization'] &&
|
|
35
|
+
!(0, ws_1.snapshotWebSocketCredentials)(socketOptions)) {
|
|
36
|
+
throw new error_1.OpenAIError('Cannot open a Responses WebSocket with an unresolved function-based apiKey. Resolve it before constructing the WebSocket or provide explicit WebSocket credentials.');
|
|
37
|
+
}
|
|
38
|
+
const ws = new WS.WebSocket(url, socketOptions);
|
|
30
39
|
return new ws_adapter_node_1.NodeWebSocket(ws);
|
|
31
40
|
}
|
|
32
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/resources/responses/ws.ts"],"names":[],"mappings":";AAAA,qFAAqF;;;;AAErF,+CAAyB;AACzB,uEAA+D;AAC/D,0CAAyE;AAEzE,8CAAwC;
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/resources/responses/ws.ts"],"names":[],"mappings":";AAAA,qFAAqF;;;;AAErF,+CAAyB;AACzB,uEAA+D;AAC/D,0CAAyE;AAEzE,8CAAwC;AACxC,+CAA+C;AAC/C,6CAAiE;AAWjE,MAAa,WAAY,SAAQ,yBAA8B;IAG7D,YAAY,MAAc,EAAE,OAAqD;QAC/E,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,wGAAwG,CACzG,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAChE,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAES,aAAa,CAAC,GAAQ,EAAE,WAAmC;QACnE,MAAM,mBAAmB,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,MAAM,aAAa,GAA6B;YAC9C,GAAG,IAAI,CAAC,UAAU;YAClB,OAAO,EAAE;gBACP,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,iBAAO,EAAE;gBAC9D,GAAG,mBAAmB;gBACtB,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO;aAC5B;YACD,eAAe,EAAE,KAAK;SACvB,CAAC;QACF,IACE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACjC,CAAC,mBAAmB,CAAC,eAAe,CAAC;YACrC,CAAC,IAAA,iCAA4B,EAAC,aAAa,CAAC,EAC5C,CAAC;YACD,MAAM,IAAI,mBAAW,CACnB,qKAAqK,CACtK,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,IAAI,+BAAa,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;CACF;AAvCD,kCAuCC"}
|
|
@@ -3,6 +3,8 @@ import * as WS from 'ws';
|
|
|
3
3
|
import { NodeWebSocket } from "../../internal/ws-adapter-node.mjs";
|
|
4
4
|
import { ResponsesWSBase } from "./ws-base.mjs";
|
|
5
5
|
import { VERSION } from "../../version.mjs";
|
|
6
|
+
import { OpenAIError } from "../../core/error.mjs";
|
|
7
|
+
import { snapshotWebSocketCredentials } from "../../internal/ws.mjs";
|
|
6
8
|
export class ResponsesWS extends ResponsesWSBase {
|
|
7
9
|
constructor(client, options) {
|
|
8
10
|
if (!WS?.WebSocket) {
|
|
@@ -14,15 +16,22 @@ export class ResponsesWS extends ResponsesWSBase {
|
|
|
14
16
|
this._connectInitial();
|
|
15
17
|
}
|
|
16
18
|
_createSocket(url, authHeaders) {
|
|
17
|
-
const
|
|
19
|
+
const capturedAuthHeaders = { ...authHeaders };
|
|
20
|
+
const socketOptions = {
|
|
18
21
|
...this._wsOptions,
|
|
19
22
|
headers: {
|
|
20
23
|
'User-Agent': `${this._client.constructor.name}/JS ${VERSION}`,
|
|
21
|
-
...
|
|
24
|
+
...capturedAuthHeaders,
|
|
22
25
|
...this._wsOptions?.headers,
|
|
23
26
|
},
|
|
24
27
|
followRedirects: false,
|
|
25
|
-
}
|
|
28
|
+
};
|
|
29
|
+
if (this._client._hasApiKeyProvider() &&
|
|
30
|
+
!capturedAuthHeaders['Authorization'] &&
|
|
31
|
+
!snapshotWebSocketCredentials(socketOptions)) {
|
|
32
|
+
throw new OpenAIError('Cannot open a Responses WebSocket with an unresolved function-based apiKey. Resolve it before constructing the WebSocket or provide explicit WebSocket credentials.');
|
|
33
|
+
}
|
|
34
|
+
const ws = new WS.WebSocket(url, socketOptions);
|
|
26
35
|
return new NodeWebSocket(ws);
|
|
27
36
|
}
|
|
28
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.mjs","sourceRoot":"","sources":["../../src/resources/responses/ws.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,2CAAuC;AAC/D,OAAO,EAAE,eAAe,EAA+B,sBAAkB;AAEzE,OAAO,EAAE,OAAO,EAAE,0BAAsB;
|
|
1
|
+
{"version":3,"file":"ws.mjs","sourceRoot":"","sources":["../../src/resources/responses/ws.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,2CAAuC;AAC/D,OAAO,EAAE,eAAe,EAA+B,sBAAkB;AAEzE,OAAO,EAAE,OAAO,EAAE,0BAAsB;AACxC,OAAO,EAAE,WAAW,EAAE,6BAAyB;AAC/C,OAAO,EAAE,4BAA4B,EAAE,8BAA0B;AAWjE,MAAM,OAAO,WAAY,SAAQ,eAA8B;IAG7D,YAAY,MAAc,EAAE,OAAqD;QAC/E,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,wGAAwG,CACzG,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAChE,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAES,aAAa,CAAC,GAAQ,EAAE,WAAmC;QACnE,MAAM,mBAAmB,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,MAAM,aAAa,GAA6B;YAC9C,GAAG,IAAI,CAAC,UAAU;YAClB,OAAO,EAAE;gBACP,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,OAAO,EAAE;gBAC9D,GAAG,mBAAmB;gBACtB,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO;aAC5B;YACD,eAAe,EAAE,KAAK;SACvB,CAAC;QACF,IACE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACjC,CAAC,mBAAmB,CAAC,eAAe,CAAC;YACrC,CAAC,4BAA4B,CAAC,aAAa,CAAC,EAC5C,CAAC;YACD,MAAM,IAAI,WAAW,CACnB,qKAAqK,CACtK,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -63,6 +63,8 @@ export const getDefaultOptions = <Target extends Targets>(
|
|
|
63
63
|
options: Partial<Options<Target>> | string | undefined,
|
|
64
64
|
): Options<Target> => {
|
|
65
65
|
// We need to add `definitions` here as we may mutate it
|
|
66
|
+
// Preserve the public string-name overload alongside object options.
|
|
67
|
+
// SAFETY: Defaults and the supplied options are merged into the vendored converter's target-specific options contract, with fresh mutable definitions.
|
|
66
68
|
const resolvedOptions = (
|
|
67
69
|
typeof options === 'string'
|
|
68
70
|
? {
|
|
@@ -125,6 +125,7 @@ export function parseDef(
|
|
|
125
125
|
refs.seen.set(def, newItem);
|
|
126
126
|
|
|
127
127
|
try {
|
|
128
|
+
// SAFETY: The vendored Zod definition carries its typeName discriminator; selectParser dispatches on that discriminator and handles unsupported definitions.
|
|
128
129
|
const jsonSchema = selectParser(def, (def as any).typeName, refs, forceResolution);
|
|
129
130
|
|
|
130
131
|
if (jsonSchema) {
|
|
@@ -35,6 +35,7 @@ export function parseBigintDef(def: ZodBigIntDef, refs: Refs): JsonSchema7Bigint
|
|
|
35
35
|
}
|
|
36
36
|
} else {
|
|
37
37
|
if (!check.inclusive) {
|
|
38
|
+
// SAFETY: This target uses the draft's boolean exclusive-bound keyword instead of the numeric keyword represented by the shared schema type.
|
|
38
39
|
res.exclusiveMinimum = true as any;
|
|
39
40
|
}
|
|
40
41
|
setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs);
|
|
@@ -50,6 +51,7 @@ export function parseBigintDef(def: ZodBigIntDef, refs: Refs): JsonSchema7Bigint
|
|
|
50
51
|
}
|
|
51
52
|
} else {
|
|
52
53
|
if (!check.inclusive) {
|
|
54
|
+
// SAFETY: This target uses the draft's boolean exclusive-bound keyword instead of the numeric keyword represented by the shared schema type.
|
|
53
55
|
res.exclusiveMaximum = true as any;
|
|
54
56
|
}
|
|
55
57
|
setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs);
|
|
@@ -33,6 +33,7 @@ export function parseLiteralDef(def: ZodLiteralDef, refs: Refs): JsonSchema7Lite
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
if (refs.target === 'openApi3') {
|
|
36
|
+
// SAFETY: The OpenAPI branch represents a primitive literal with enum instead of const, retaining the vendored converter's target compatibility.
|
|
36
37
|
return {
|
|
37
38
|
type: parsedType === 'bigint' ? 'integer' : parsedType,
|
|
38
39
|
enum: [def.value],
|
|
@@ -5,6 +5,7 @@ export type JsonSchema7NullType = {
|
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
export function parseNullDef(refs: Refs): JsonSchema7NullType {
|
|
8
|
+
// SAFETY: The OpenAPI target uses nullable plus enum because its null representation differs from the JSON Schema return type.
|
|
8
9
|
return refs.target === 'openApi3'
|
|
9
10
|
? ({
|
|
10
11
|
enum: ['null'],
|
|
@@ -23,12 +23,14 @@ export function parseNullableDef(
|
|
|
23
23
|
(!def.innerType._def.checks || !def.innerType._def.checks.length)
|
|
24
24
|
) {
|
|
25
25
|
if (refs.target === 'openApi3' || refs.nullableStrategy === 'property') {
|
|
26
|
+
// SAFETY: The preceding primitive discriminator check permits the mapping lookup; the nullable-property target uses its existing extension representation.
|
|
26
27
|
return {
|
|
27
28
|
type: primitiveMappings[def.innerType._def.typeName as keyof typeof primitiveMappings],
|
|
28
29
|
nullable: true,
|
|
29
30
|
} as any;
|
|
30
31
|
}
|
|
31
32
|
|
|
33
|
+
// SAFETY: The preceding primitive discriminator check permits the mapping lookup; the nullable-property target uses its existing extension representation.
|
|
32
34
|
return {
|
|
33
35
|
type: [primitiveMappings[def.innerType._def.typeName as keyof typeof primitiveMappings], 'null'],
|
|
34
36
|
};
|
|
@@ -45,9 +47,11 @@ export function parseNullableDef(
|
|
|
45
47
|
);
|
|
46
48
|
|
|
47
49
|
if (base && '$ref' in base) {
|
|
50
|
+
// SAFETY: The OpenAPI branch adds nullable to the converted base schema, an extension not represented by the shared JSON Schema union.
|
|
48
51
|
return { allOf: [base], nullable: true } as any;
|
|
49
52
|
}
|
|
50
53
|
|
|
54
|
+
// SAFETY: The OpenAPI branch adds nullable to the converted base schema, an extension not represented by the shared JSON Schema union.
|
|
51
55
|
return base && ({ ...base, nullable: true } as any);
|
|
52
56
|
}
|
|
53
57
|
|
|
@@ -38,6 +38,7 @@ export function parseNumberDef(def: ZodNumberDef, refs: Refs): JsonSchema7Number
|
|
|
38
38
|
}
|
|
39
39
|
} else {
|
|
40
40
|
if (!check.inclusive) {
|
|
41
|
+
// SAFETY: This target uses the draft's boolean exclusive-bound keyword instead of the numeric keyword represented by the shared schema type.
|
|
41
42
|
res.exclusiveMinimum = true as any;
|
|
42
43
|
}
|
|
43
44
|
setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs);
|
|
@@ -53,6 +54,7 @@ export function parseNumberDef(def: ZodNumberDef, refs: Refs): JsonSchema7Number
|
|
|
53
54
|
}
|
|
54
55
|
} else {
|
|
55
56
|
if (!check.inclusive) {
|
|
57
|
+
// SAFETY: This target uses the draft's boolean exclusive-bound keyword instead of the numeric keyword represented by the shared schema type.
|
|
56
58
|
res.exclusiveMaximum = true as any;
|
|
57
59
|
}
|
|
58
60
|
setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs);
|
|
@@ -15,23 +15,22 @@ export const parseOptionalDef = (
|
|
|
15
15
|
return parseDef(def.innerType._def, { ...refs, currentPath: refs.currentPath }, forceResolution);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
// `not: {}` accepts no JSON values and is unsupported by strict Structured Outputs.
|
|
19
|
+
// Keep the wrapper, but generate only its real branch at the correct reference path.
|
|
20
|
+
// Override callbacks retain their existing output and path contract.
|
|
21
|
+
const omitNeverBranch = refs.openaiStrictMode && !refs.override;
|
|
18
22
|
const innerSchema = parseDef(
|
|
19
23
|
def.innerType._def,
|
|
20
24
|
{
|
|
21
25
|
...refs,
|
|
22
|
-
currentPath: [...refs.currentPath, 'anyOf', '1'],
|
|
26
|
+
currentPath: [...refs.currentPath, 'anyOf', omitNeverBranch ? '0' : '1'],
|
|
23
27
|
},
|
|
24
28
|
forceResolution,
|
|
25
29
|
);
|
|
26
30
|
|
|
27
31
|
return innerSchema
|
|
28
32
|
? {
|
|
29
|
-
anyOf: [
|
|
30
|
-
{
|
|
31
|
-
not: {},
|
|
32
|
-
},
|
|
33
|
-
innerSchema,
|
|
34
|
-
],
|
|
33
|
+
anyOf: omitNeverBranch ? [innerSchema] : [{ not: {} }, innerSchema],
|
|
35
34
|
}
|
|
36
35
|
: {};
|
|
37
36
|
};
|
|
@@ -23,6 +23,7 @@ export function parseRecordDef(
|
|
|
23
23
|
refs: Refs,
|
|
24
24
|
): JsonSchema7RecordType {
|
|
25
25
|
if (refs.target === 'openApi3' && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {
|
|
26
|
+
// SAFETY: The OpenAPI enum-key path emits an explicitly checked object schema while preserving the vendored record parser's public return type.
|
|
26
27
|
return {
|
|
27
28
|
type: 'object',
|
|
28
29
|
required: def.keyType._def.values,
|
|
@@ -53,6 +54,7 @@ export function parseRecordDef(
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.checks?.length) {
|
|
57
|
+
// SAFETY: Removing only type from the parsed string schema leaves the keyword subset allowed in propertyNames.
|
|
56
58
|
const keyType = Object.fromEntries(
|
|
57
59
|
Object.entries(parseStringDef(def.keyType._def, refs)).filter(([key]) => key !== 'type'),
|
|
58
60
|
) as JsonSchema7RecordPropertyNamesType;
|
|
@@ -222,6 +222,7 @@ export function parseStringDef(def: ZodStringDef, refs: Refs): JsonSchema7String
|
|
|
222
222
|
case 'base64': {
|
|
223
223
|
switch (refs.base64Strategy) {
|
|
224
224
|
case 'format:binary': {
|
|
225
|
+
// SAFETY: The explicit OpenAPI binary strategy uses format: binary, an extension to the vendored JSON Schema string-format type.
|
|
225
226
|
addFormat(res, 'binary' as any, check.message, refs);
|
|
226
227
|
break;
|
|
227
228
|
}
|
|
@@ -46,6 +46,7 @@ export function parseUnionDef(
|
|
|
46
46
|
|
|
47
47
|
const types: JsonSchema7Primitive[] = [];
|
|
48
48
|
for (const x of options) {
|
|
49
|
+
// SAFETY: The preceding every check restricts each option to a primitive mapping key with no additional checks.
|
|
49
50
|
const type = primitiveMappings[x._def.typeName as ZodPrimitive]; //Can be safely casted due to row 43
|
|
50
51
|
if (type && !types.includes(type)) {
|
|
51
52
|
types.push(type);
|
|
@@ -59,6 +60,7 @@ export function parseUnionDef(
|
|
|
59
60
|
// all options literals
|
|
60
61
|
|
|
61
62
|
const types: JsonSchema7Primitive[] = [];
|
|
63
|
+
// SAFETY: The preceding every check establishes that every union option is a Zod literal definition.
|
|
62
64
|
for (const x of options as readonly { _def: ZodLiteralDef }[]) {
|
|
63
65
|
const type = typeof x._def.value;
|
|
64
66
|
switch (type) {
|
|
@@ -118,6 +120,7 @@ const asAnyOf = (
|
|
|
118
120
|
def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,
|
|
119
121
|
refs: Refs,
|
|
120
122
|
): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined => {
|
|
123
|
+
// SAFETY: Zod union options are either the discriminated-union map values or the ordinary option array; both contain schema definitions for parseDef.
|
|
121
124
|
const anyOf = ((def.options instanceof Map ? [...def.options.values()] : def.options) as any[])
|
|
122
125
|
.map((x, i) =>
|
|
123
126
|
parseDef(x._def, {
|
|
@@ -3,6 +3,7 @@ import type { ZodSchema, ZodTypeDef } from 'zod/v3';
|
|
|
3
3
|
export const zodDef = (zodSchema: ZodSchema | ZodTypeDef): ZodTypeDef =>
|
|
4
4
|
'_def' in zodSchema ? zodSchema._def : zodSchema;
|
|
5
5
|
|
|
6
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Preserve the upstream utility contract: any object can have enumerable own or inherited keys.
|
|
6
7
|
export function isEmptyObj(obj: object | null | undefined): boolean {
|
|
7
8
|
if (!obj) {
|
|
8
9
|
return true;
|
|
@@ -14,6 +14,7 @@ function ownStrictRootSchema(
|
|
|
14
14
|
throw new TypeError('Root schema must be a plain JSON-schema record');
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; the following comparison permits only plain or null-prototype schemas.
|
|
17
18
|
const prototype = Object.getPrototypeOf(schema) as object | null;
|
|
18
19
|
if (![null, Object.prototype].includes(prototype)) {
|
|
19
20
|
throw new TypeError('Root schema must be a plain JSON-schema record');
|
|
@@ -67,6 +68,7 @@ function ownStrictRootSchema(
|
|
|
67
68
|
throw new Error("Root schema must have type: 'object' but got type: undefined");
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
// SAFETY: The copied schema preserves the validated JSON fields while taking ownership of the mutable converter result.
|
|
70
72
|
return owned as JsonSchema7Type;
|
|
71
73
|
}
|
|
72
74
|
|
|
@@ -120,7 +122,7 @@ const zodToJsonSchema = <Target extends Targets = 'jsonSchema7'>(
|
|
|
120
122
|
return undefined;
|
|
121
123
|
}
|
|
122
124
|
|
|
123
|
-
const definitions: Record<string,
|
|
125
|
+
const definitions: Record<string, JsonSchema7Type> = {};
|
|
124
126
|
const processedDefinitions = new Set();
|
|
125
127
|
|
|
126
128
|
// the call to `parseDef()` here might itself add more entries to `.definitions`
|
|
@@ -16,15 +16,18 @@ const errorFunctionToString = Function.prototype.toString;
|
|
|
16
16
|
const nativeErrorSource = errorFunctionToString.call(Error);
|
|
17
17
|
const nativeSyntaxErrorSource = errorFunctionToString.call(SyntaxError);
|
|
18
18
|
const nativeErrorBrandDescriptor = getOwnErrorDescriptor(Error, 'isError');
|
|
19
|
+
// SAFETY: The captured Error.isError data property was checked to be callable and follows the native error-brand predicate contract.
|
|
19
20
|
const nativeErrorBrand =
|
|
20
21
|
nativeErrorBrandDescriptor &&
|
|
21
22
|
'value' in nativeErrorBrandDescriptor &&
|
|
22
23
|
typeof nativeErrorBrandDescriptor.value === 'function'
|
|
23
|
-
?
|
|
24
|
+
? // oxlint-disable-next-line anti-slop/no-object-parameters -- The native error-brand predicate inspects arbitrary objects without trusting their properties.
|
|
25
|
+
(nativeErrorBrandDescriptor.value as (error: object) => boolean)
|
|
24
26
|
: undefined;
|
|
25
27
|
|
|
26
28
|
type AzureJSONErrorKind = 'error' | 'syntax' | 'tagged-wrapper' | 'unknown' | 'unsafe';
|
|
27
29
|
|
|
30
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Cross-realm prototypes are inspected through descriptors before any error contract is trusted.
|
|
28
31
|
function hasNativeErrorPrototype(prototype: object, kind: 'Error' | 'SyntaxError'): boolean {
|
|
29
32
|
const name = getOwnErrorDescriptor(prototype, 'name');
|
|
30
33
|
const constructor = getOwnErrorDescriptor(prototype, 'constructor');
|
|
@@ -49,10 +52,12 @@ function hasNativeErrorPrototype(prototype: object, kind: 'Error' | 'SyntaxError
|
|
|
49
52
|
);
|
|
50
53
|
}
|
|
51
54
|
|
|
55
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Untrusted thrown objects, including proxies, must be classified before treating them as errors.
|
|
52
56
|
function classifyCrossRealmAzureError(error: object): AzureJSONErrorKind {
|
|
53
57
|
try {
|
|
54
58
|
const prototypes: object[] = [];
|
|
55
59
|
let tagged = false;
|
|
60
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; the traversal never treats the prototype as a more specific instance.
|
|
56
61
|
for (
|
|
57
62
|
let prototype: object | null = error;
|
|
58
63
|
prototype !== null;
|
|
@@ -53,6 +53,7 @@ function calculateRefreshAt(
|
|
|
53
53
|
const NATIVE_RESPONSE_PROTOTYPE = Response.prototype;
|
|
54
54
|
const READ_NATIVE_RESPONSE_BODY = NATIVE_RESPONSE_PROTOTYPE.arrayBuffer;
|
|
55
55
|
|
|
56
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Custom fetch response prototypes are verified through descriptors before trusting their native contract.
|
|
56
57
|
function isResponsePrototype(response: Response, prototype: object): boolean {
|
|
57
58
|
const constructor = Object.getOwnPropertyDescriptor(prototype, 'constructor')?.value;
|
|
58
59
|
if (
|
|
@@ -73,6 +74,7 @@ function isResponsePrototype(response: Response, prototype: object): boolean {
|
|
|
73
74
|
);
|
|
74
75
|
}
|
|
75
76
|
|
|
77
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The prototype walk compares untrusted cross-realm objects by identity and descriptor metadata.
|
|
76
78
|
function isResponseBodyPrototype(prototype: object, responsePrototype: object | null): boolean {
|
|
77
79
|
if (prototype === responsePrototype) {
|
|
78
80
|
return true;
|
|
@@ -89,10 +91,12 @@ function isResponseBodyPrototype(prototype: object, responsePrototype: object |
|
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
function decodeNativeResponseBody(body: ArrayBuffer): string {
|
|
94
|
+
// SAFETY: Bun is an optional runtime global; its version is checked before selecting Bun-specific decoding behavior.
|
|
92
95
|
const scope = globalThis as typeof globalThis & { Bun?: { version?: unknown } };
|
|
93
96
|
return new TextDecoder('utf-8', { ignoreBOM: typeof scope.Bun?.version === 'string' }).decode(body);
|
|
94
97
|
}
|
|
95
98
|
|
|
99
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Decoded token JSON remains untrusted until the caller validates its fields.
|
|
96
100
|
async function parseOAuthTokenResponse(response: Response): Promise<unknown> {
|
|
97
101
|
let readText: ((this: Response) => Promise<string>) | undefined;
|
|
98
102
|
let responsePrototype: object | null = null;
|
|
@@ -140,6 +144,7 @@ async function parseOAuthTokenResponse(response: Response): Promise<unknown> {
|
|
|
140
144
|
}
|
|
141
145
|
|
|
142
146
|
function isUnsafeAccessToken(accessToken: string): boolean {
|
|
147
|
+
// SAFETY: Bun is an optional runtime global; its version is checked before selecting Bun-specific decoding behavior.
|
|
143
148
|
const scope = globalThis as typeof globalThis & { Bun?: { version?: unknown } };
|
|
144
149
|
if (typeof scope.Bun?.version === 'string') {
|
|
145
150
|
return /[^\t\u0020-\u007E]|^[\t ]|[\t ]$/u.test(accessToken);
|
|
@@ -173,7 +178,9 @@ export class WorkloadIdentityAuth {
|
|
|
173
178
|
this.config = {
|
|
174
179
|
identityProviderId,
|
|
175
180
|
serviceAccountId,
|
|
181
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
176
182
|
...(clientId === undefined ? {} : { clientId }),
|
|
183
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
177
184
|
...(refreshBufferSeconds === undefined ? {} : { refreshBufferSeconds }),
|
|
178
185
|
provider: {
|
|
179
186
|
tokenType: provider.tokenType,
|
|
@@ -226,6 +233,7 @@ export class WorkloadIdentityAuth {
|
|
|
226
233
|
|
|
227
234
|
private async refreshToken(generation: number): Promise<string> {
|
|
228
235
|
const subjectToken = await this.config.provider.getToken();
|
|
236
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The token-exchange field dictionary gains an optional client_id after its required fields are initialized.
|
|
229
237
|
const body: Record<string, string> = {
|
|
230
238
|
grant_type: TOKEN_EXCHANGE_GRANT_TYPE,
|
|
231
239
|
subject_token: subjectToken,
|
|
@@ -260,7 +268,7 @@ export class WorkloadIdentityAuth {
|
|
|
260
268
|
}
|
|
261
269
|
|
|
262
270
|
if (response.status === 400 || response.status === 401 || response.status === 403) {
|
|
263
|
-
throw new OAuthError(response.status
|
|
271
|
+
throw new OAuthError(response.status, body, response.headers);
|
|
264
272
|
}
|
|
265
273
|
throw APIError.generate(
|
|
266
274
|
response.status,
|
|
@@ -283,6 +291,7 @@ export class WorkloadIdentityAuth {
|
|
|
283
291
|
throw new OpenAIError("Token exchange response missing 'access_token' field");
|
|
284
292
|
}
|
|
285
293
|
|
|
294
|
+
// SAFETY: The token response was checked as an object with a valid access token; expires_in is still validated by calculateExpiresAt.
|
|
286
295
|
const expiresIn = (tokenResponse as Partial<TokenExchangeResponse>).expires_in ?? 3600;
|
|
287
296
|
const expiresAt = calculateExpiresAt(expiresIn, exchangeStartedAt);
|
|
288
297
|
|
|
@@ -82,6 +82,7 @@ function safeOptionRecord(
|
|
|
82
82
|
if (prototype !== Object.prototype && prototype !== null) {
|
|
83
83
|
throw new Error(`X.509 ${label} options must have only own plain data properties.`);
|
|
84
84
|
}
|
|
85
|
+
// SAFETY: The snapshot starts empty with no prototype; only checked own data properties are copied into it below.
|
|
85
86
|
const snapshot = Object.create(null) as Record<string, unknown>;
|
|
86
87
|
for (const name of Reflect.ownKeys(value)) {
|
|
87
88
|
if (typeof name !== 'string' || !allowed.has(name)) {
|
|
@@ -179,6 +180,7 @@ function validatedCredentialOptions(options: X509CredentialOptions): ValidatedX5
|
|
|
179
180
|
const leaf = new X509Certificate(certificateChain);
|
|
180
181
|
const privateKey = createPrivateKey({
|
|
181
182
|
key: privateKeyPEM,
|
|
183
|
+
// Create an own data property so an inherited setter cannot intercept the private-key passphrase.
|
|
182
184
|
...(passphrase === undefined ? {} : { passphrase }),
|
|
183
185
|
});
|
|
184
186
|
if (!leaf.checkPrivateKey(privateKey)) {
|
|
@@ -239,6 +241,7 @@ function credentialDispatcher(
|
|
|
239
241
|
requestTls: VerifiedX509TLSOptions,
|
|
240
242
|
): { dispatcher: Agent | ProxyAgent; proxy: X509ProxyMode } {
|
|
241
243
|
if (proxyOptionsInput === undefined) {
|
|
244
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The dispatcher owner returns one contract for direct Agents and both supported CONNECT proxy modes.
|
|
242
245
|
return { dispatcher: new Agent({ connect: requestTls }), proxy: 'direct' };
|
|
243
246
|
}
|
|
244
247
|
|
|
@@ -262,16 +265,20 @@ function credentialDispatcher(
|
|
|
262
265
|
}
|
|
263
266
|
const auth = proxyAuthentication(url);
|
|
264
267
|
|
|
268
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared transport contract preserves the same dispatcher and proxy types across both construction paths.
|
|
265
269
|
return {
|
|
266
270
|
proxy,
|
|
267
271
|
dispatcher: new ProxyAgent({
|
|
268
272
|
uri: url.href,
|
|
273
|
+
// Define proxy credentials as own data without invoking inherited setters.
|
|
269
274
|
...(auth === undefined ? {} : { auth }),
|
|
270
275
|
requestTls,
|
|
276
|
+
// Keep the optional proxy TLS configuration as an own data property.
|
|
271
277
|
...(proxy === 'https-connect'
|
|
272
278
|
? {
|
|
273
279
|
proxyTls: {
|
|
274
280
|
rejectUnauthorized: true,
|
|
281
|
+
// Define explicit proxy trust roots as own data without invoking inherited setters.
|
|
275
282
|
...(proxyCA === undefined ? {} : { ca: proxyCA }),
|
|
276
283
|
},
|
|
277
284
|
}
|
|
@@ -300,6 +307,7 @@ export function createX509Transport(options: X509TransportOptions): X509Transpor
|
|
|
300
307
|
transport: capability,
|
|
301
308
|
identityProviderId,
|
|
302
309
|
serviceAccountId,
|
|
310
|
+
// Preserve the cancellation signal as own data without invoking inherited setters.
|
|
303
311
|
...(signal ? { signal } : {}),
|
|
304
312
|
}),
|
|
305
313
|
run: (operation) =>
|
|
@@ -315,11 +323,13 @@ export function createX509Transport(options: X509TransportOptions): X509Transpor
|
|
|
315
323
|
export function fromX509(options: X509CredentialOptions): X509Credential {
|
|
316
324
|
const configured = validatedCredentialOptions(options);
|
|
317
325
|
|
|
318
|
-
const requestTls = {
|
|
326
|
+
const requestTls: VerifiedX509TLSOptions = {
|
|
319
327
|
cert: configured.certificateChain,
|
|
320
328
|
key: configured.privateKey,
|
|
321
|
-
rejectUnauthorized: true
|
|
329
|
+
rejectUnauthorized: true,
|
|
330
|
+
// Define the TLS passphrase as own data so inherited setters cannot intercept it.
|
|
322
331
|
...(configured.passphrase === undefined ? {} : { passphrase: configured.passphrase }),
|
|
332
|
+
// Define explicit workload trust roots as own data without invoking inherited setters.
|
|
323
333
|
...(configured.ca === undefined ? {} : { ca: configured.ca }),
|
|
324
334
|
};
|
|
325
335
|
const { dispatcher, proxy } = credentialDispatcher(configured.proxy, requestTls);
|
|
@@ -335,6 +345,7 @@ export function fromX509(options: X509CredentialOptions): X509Credential {
|
|
|
335
345
|
type: 'x509',
|
|
336
346
|
identityProviderId: configured.identityProviderId,
|
|
337
347
|
serviceAccountId: configured.serviceAccountId,
|
|
348
|
+
// Preserve the optional refresh setting as own data without invoking inherited setters.
|
|
338
349
|
...(configured.refreshBufferSeconds === undefined
|
|
339
350
|
? {}
|
|
340
351
|
: { refreshBufferSeconds: configured.refreshBufferSeconds }),
|
package/src/azure.ts
CHANGED
|
@@ -101,6 +101,7 @@ export class AzureOpenAI extends OpenAI {
|
|
|
101
101
|
);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Azure accepts JavaScript credential configuration; distinguish static keys from callable token providers.
|
|
104
105
|
if (typeof azureADTokenProvider === 'function') {
|
|
105
106
|
dangerouslyAllowBrowser ??= true;
|
|
106
107
|
}
|
|
@@ -143,6 +144,7 @@ export class AzureOpenAI extends OpenAI {
|
|
|
143
144
|
apiKey: azureADTokenProvider ?? apiKey,
|
|
144
145
|
baseURL,
|
|
145
146
|
...opts,
|
|
147
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
146
148
|
...(dangerouslyAllowBrowser === undefined ? {} : { dangerouslyAllowBrowser }),
|
|
147
149
|
});
|
|
148
150
|
|
|
@@ -224,6 +226,7 @@ export class AzureOpenAI extends OpenAI {
|
|
|
224
226
|
schemes?: { bearerAuth?: boolean; adminAPIKeyAuth?: boolean },
|
|
225
227
|
): Promise<NullableHeaders | undefined> {
|
|
226
228
|
const security = schemes ?? { bearerAuth: true, adminAPIKeyAuth: true };
|
|
229
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Azure accepts JavaScript credential configuration; distinguish static keys from callable token providers.
|
|
227
230
|
if (security.bearerAuth && typeof this._options.apiKey === 'string') {
|
|
228
231
|
return buildHeaders([{ 'api-key': this.apiKey }]);
|
|
229
232
|
}
|
package/src/bedrock.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Errors from './error';
|
|
2
2
|
import { OpenAI } from './client';
|
|
3
|
+
import { resolveRealtimeAPIKey } from './internal/realtime-credentials';
|
|
3
4
|
import type { ApiKeySetter, ClientOptions } from './client';
|
|
4
5
|
import { assertNoDataResidency } from './internal/data-residency';
|
|
5
6
|
import {
|
|
@@ -111,6 +112,7 @@ function addBedrockOutputText<ResponseT extends ResponsesAPI.Response>(response:
|
|
|
111
112
|
function restoreBedrockStreamOutputText(responses: API.Responses): API.Responses {
|
|
112
113
|
const stream = responses.stream.bind(responses);
|
|
113
114
|
|
|
115
|
+
// SAFETY: The wrapper forwards the original stream parameters and preserves its generic result, only repairing the final response's output_text property.
|
|
114
116
|
responses.stream = ((body: ResponseStreamParams, options?: RequestOptions) => {
|
|
115
117
|
const responseStream = stream(body, options);
|
|
116
118
|
const finalResponse = responseStream.finalResponse.bind(responseStream);
|
|
@@ -161,6 +163,8 @@ export class BedrockOpenAI extends OpenAI {
|
|
|
161
163
|
apiKey = readEnv('AWS_BEARER_TOKEN_BEDROCK') ?? null;
|
|
162
164
|
}
|
|
163
165
|
|
|
166
|
+
// SAFETY: The widening keeps a runtime guard for JavaScript callers that supply an API-key function despite the declared string contract.
|
|
167
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Reject a JavaScript function supplied as a static Bedrock API key before it can become a credential.
|
|
164
168
|
if (typeof (apiKey as unknown) === 'function') {
|
|
165
169
|
throw new Errors.OpenAIError(
|
|
166
170
|
'Pass refreshable Bedrock credentials via `bedrockTokenProvider`, not `apiKey`.',
|
|
@@ -225,11 +229,6 @@ export class BedrockOpenAI extends OpenAI {
|
|
|
225
229
|
const configuredBaseURL = this._options.baseURL ?? this.baseURL;
|
|
226
230
|
assertBedrockRequestOrigin(configuredBaseURL, this.buildURL(options.path, null, options.defaultBaseURL));
|
|
227
231
|
|
|
228
|
-
const security = options.__security ?? { bearerAuth: true };
|
|
229
|
-
if (security.adminAPIKeyAuth && !security.bearerAuth) {
|
|
230
|
-
await this._callApiKey();
|
|
231
|
-
}
|
|
232
|
-
|
|
233
232
|
await super.prepareOptions(options);
|
|
234
233
|
assertBedrockRequestOrigin(configuredBaseURL, this.buildURL(options.path, null, options.defaultBaseURL));
|
|
235
234
|
}
|
|
@@ -240,6 +239,10 @@ export class BedrockOpenAI extends OpenAI {
|
|
|
240
239
|
): Promise<void> {
|
|
241
240
|
assertBedrockRequestOrigin(this._options.baseURL ?? this.baseURL, context.url);
|
|
242
241
|
await super.prepareRequest(request, context);
|
|
242
|
+
assertBedrockRequestOrigin(
|
|
243
|
+
this._options.baseURL ?? this.baseURL,
|
|
244
|
+
this.buildURL(context.options.path, null, context.options.defaultBaseURL),
|
|
245
|
+
);
|
|
243
246
|
request.redirect = 'manual';
|
|
244
247
|
}
|
|
245
248
|
|
|
@@ -248,8 +251,19 @@ export class BedrockOpenAI extends OpenAI {
|
|
|
248
251
|
schemes?: { bearerAuth?: boolean; adminAPIKeyAuth?: boolean },
|
|
249
252
|
): Promise<NullableHeaders | undefined> {
|
|
250
253
|
const security = schemes ?? { bearerAuth: true, adminAPIKeyAuth: true };
|
|
251
|
-
|
|
252
|
-
|
|
254
|
+
if (security.bearerAuth || security.adminAPIKeyAuth) {
|
|
255
|
+
assertBedrockRequestOrigin(
|
|
256
|
+
this._options.baseURL ?? this.baseURL,
|
|
257
|
+
this.buildURL(opts.path, null, opts.defaultBaseURL),
|
|
258
|
+
);
|
|
259
|
+
const { apiKey: credential } = await resolveRealtimeAPIKey(this);
|
|
260
|
+
assertBedrockRequestOrigin(
|
|
261
|
+
this._options.baseURL ?? this.baseURL,
|
|
262
|
+
this.buildURL(opts.path, null, opts.defaultBaseURL),
|
|
263
|
+
);
|
|
264
|
+
if (credential === null) {
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
253
267
|
assertValidBedrockBearerCredential(credential);
|
|
254
268
|
try {
|
|
255
269
|
return buildHeaders([{ Authorization: `Bearer ${credential}` }]);
|
|
@@ -270,8 +284,10 @@ export class BedrockOpenAI extends OpenAI {
|
|
|
270
284
|
const bedrockTokenProvider =
|
|
271
285
|
options.apiKey === undefined ? (options.bedrockTokenProvider ?? this.bedrockTokenProvider) : undefined;
|
|
272
286
|
|
|
287
|
+
// SAFETY: Bedrock options extend the base client options; forwarding them preserves the subclass's existing withOptions construction behavior.
|
|
273
288
|
return super.withOptions({
|
|
274
289
|
...options,
|
|
290
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
275
291
|
...(bedrockTokenProvider ? { apiKey: undefined, bedrockTokenProvider } : {}),
|
|
276
292
|
} as Partial<ClientOptions>);
|
|
277
293
|
}
|
|
@@ -12,6 +12,7 @@ import { assertX509WebSocketSupported } from '../../internal/auth/x509-workload-
|
|
|
12
12
|
/** Parses frame data without exposing malformed payloads through JSON syntax errors. */
|
|
13
13
|
export function parseRealtimeEvent(data: string): RealtimeServerEvent {
|
|
14
14
|
try {
|
|
15
|
+
// SAFETY: RealtimeServerEvent is the API wire contract; JSON syntax is checked here while future event types remain accepted at runtime.
|
|
15
16
|
return JSON.parse(data) as RealtimeServerEvent;
|
|
16
17
|
} catch (error) {
|
|
17
18
|
if (error instanceof SyntaxError) {
|
|
@@ -86,6 +87,7 @@ type RealtimeEvents = Simplify<
|
|
|
86
87
|
type: EventType;
|
|
87
88
|
}
|
|
88
89
|
>,
|
|
90
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Preserve the published event-callback contract, which accepts and ignores arbitrary return values.
|
|
89
91
|
) => unknown;
|
|
90
92
|
}
|
|
91
93
|
>;
|