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,52 @@
|
|
|
1
|
-
export const sleep = (ms: number
|
|
1
|
+
export const sleep = (ms: number, ...signals: (AbortSignal | null | undefined)[]): Promise<void> =>
|
|
2
|
+
new Promise((resolve, reject) => {
|
|
3
|
+
const activeSignals = [...new Set(signals.filter((signal): signal is AbortSignal => signal != null))];
|
|
4
|
+
let timeout: ReturnType<typeof setTimeout> | undefined;
|
|
5
|
+
let settled = false;
|
|
6
|
+
const cleanup = () => {
|
|
7
|
+
for (const signal of activeSignals) {
|
|
8
|
+
try {
|
|
9
|
+
signal.removeEventListener('abort', abort);
|
|
10
|
+
} catch {
|
|
11
|
+
// Structural signal cleanup must not prevent the promise from settling.
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const settle = (callback: () => void) => {
|
|
16
|
+
if (settled) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
settled = true;
|
|
20
|
+
if (timeout !== undefined) {
|
|
21
|
+
clearTimeout(timeout);
|
|
22
|
+
timeout = undefined;
|
|
23
|
+
}
|
|
24
|
+
cleanup();
|
|
25
|
+
callback();
|
|
26
|
+
};
|
|
27
|
+
const abort = () => {
|
|
28
|
+
settle(() => reject());
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
if (activeSignals.some((signal) => signal.aborted)) {
|
|
32
|
+
abort();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
timeout = setTimeout(() => {
|
|
37
|
+
settle(resolve);
|
|
38
|
+
}, ms);
|
|
39
|
+
for (const signal of activeSignals) {
|
|
40
|
+
if (settled) {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
45
|
+
} catch (error) {
|
|
46
|
+
settle(() => reject(error));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (activeSignals.some((signal) => signal.aborted)) {
|
|
50
|
+
abort();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
@@ -166,6 +166,7 @@ export class BrowserWebSocket implements WebSocketLike {
|
|
|
166
166
|
const message = ev?.message || ev?.error?.message || 'WebSocket error';
|
|
167
167
|
const err = new Error(message);
|
|
168
168
|
if (ev?.error) {
|
|
169
|
+
// SAFETY: The locally created Error receives the browser error event's cause; the cast avoids requiring newer Error ambient declarations.
|
|
169
170
|
(err as any).cause = ev.error;
|
|
170
171
|
}
|
|
171
172
|
listener(err);
|
|
@@ -173,6 +174,7 @@ export class BrowserWebSocket implements WebSocketLike {
|
|
|
173
174
|
}
|
|
174
175
|
|
|
175
176
|
default: {
|
|
177
|
+
// SAFETY: Non-special events use the native DOM handler contract directly; the adapter only wraps message, close, and error variants above.
|
|
176
178
|
return listener as DOMEventHandler;
|
|
177
179
|
}
|
|
178
180
|
}
|
package/src/internal/ws.ts
CHANGED
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
import { concatBytes, encodeUTF8 } from './utils/bytes';
|
|
2
|
+
import { OpenAIError } from '../core/error';
|
|
3
|
+
|
|
4
|
+
/** Options for an independently buffered WebSocket stream iterator. */
|
|
5
|
+
export interface WebSocketStreamOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Maximum queued records, including raw data, errors and lifecycle events.
|
|
8
|
+
* Must be a positive safe integer. Omitted means unlimited. Overflow discards
|
|
9
|
+
* this iterator's backlog and rejects its next() calls with a WebSocketError,
|
|
10
|
+
* without closing the shared socket or affecting other iterators.
|
|
11
|
+
* This bounds event count, not payload bytes or total memory.
|
|
12
|
+
*/
|
|
13
|
+
maxBufferedEvents?: number | undefined;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Snapshots and validates the iterator's limit before listeners are attached. */
|
|
17
|
+
export function getMaxBufferedEvents(options?: WebSocketStreamOptions): number | undefined {
|
|
18
|
+
const limit = options?.maxBufferedEvents;
|
|
19
|
+
if (limit !== undefined && (!Number.isSafeInteger(limit) || limit <= 0)) {
|
|
20
|
+
throw new OpenAIError('maxBufferedEvents must be a positive safe integer');
|
|
21
|
+
}
|
|
22
|
+
return limit;
|
|
23
|
+
}
|
|
2
24
|
|
|
3
25
|
/** Reconnection event passed to the `onReconnecting` handler and event listeners. */
|
|
4
26
|
export interface ReconnectingEvent<Parameters = Record<string, unknown>> {
|
|
@@ -64,14 +86,53 @@ const REDIRECT_SAFE_WEBSOCKET_HEADERS = new Set([
|
|
|
64
86
|
'x-trace-id',
|
|
65
87
|
]);
|
|
66
88
|
|
|
89
|
+
function isWebSocketCredentialHeader(name: string): boolean {
|
|
90
|
+
return !REDIRECT_SAFE_WEBSOCKET_HEADERS.has(name.toLowerCase().split('_').join('-'));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Snapshots credential values in final socket options before validation and dispatch.
|
|
95
|
+
* Reports potential caller authentication, including custom headers; the server
|
|
96
|
+
* remains responsible for validating credentials. Noncredential headers are left intact.
|
|
97
|
+
*/
|
|
98
|
+
export function snapshotWebSocketCredentials(options: {
|
|
99
|
+
auth?: unknown;
|
|
100
|
+
headers?: Record<string, unknown> | undefined;
|
|
101
|
+
}): boolean {
|
|
102
|
+
if (options.auth !== null && options.auth !== undefined) {
|
|
103
|
+
options.auth = String(options.auth);
|
|
104
|
+
}
|
|
105
|
+
const credentials = new Map<string, boolean>();
|
|
106
|
+
const headers = options.headers ?? {};
|
|
107
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
108
|
+
if (!isWebSocketCredentialHeader(name)) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
let snapshot = value;
|
|
112
|
+
if (Array.isArray(value)) {
|
|
113
|
+
snapshot = value.map(String);
|
|
114
|
+
} else if (value !== null && value !== undefined) {
|
|
115
|
+
snapshot = String(value);
|
|
116
|
+
}
|
|
117
|
+
headers[name] = snapshot;
|
|
118
|
+
const values = Array.isArray(snapshot) ? snapshot : [snapshot];
|
|
119
|
+
credentials.set(
|
|
120
|
+
name.toLowerCase(),
|
|
121
|
+
values.some((item) => typeof item === 'string' && item.trim().length > 0),
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
// Node applies header names case-insensitively, and Authorization overrides Basic auth.
|
|
125
|
+
return (
|
|
126
|
+
[...credentials.values()].some(Boolean) ||
|
|
127
|
+
(!credentials.has('authorization') && typeof options.auth === 'string' && options.auth.trim().length > 0)
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
67
131
|
/** Prevents WebSocket redirects from forwarding caller or SDK credentials to another origin. */
|
|
68
132
|
export function protectWebSocketOptionsFromCredentialRedirects<Options extends CredentialedWebSocketOptions>(
|
|
69
133
|
options: Options,
|
|
70
134
|
): Options {
|
|
71
|
-
const hasSensitiveHeader = Object.keys(options.headers ?? {}).some(
|
|
72
|
-
const normalized = name.toLowerCase().split('_').join('-');
|
|
73
|
-
return !REDIRECT_SAFE_WEBSOCKET_HEADERS.has(normalized);
|
|
74
|
-
});
|
|
135
|
+
const hasSensitiveHeader = Object.keys(options.headers ?? {}).some(isWebSocketCredentialHeader);
|
|
75
136
|
|
|
76
137
|
if (!options.auth && !hasSensitiveHeader) {
|
|
77
138
|
return options;
|
|
@@ -230,6 +291,7 @@ export class SendQueue<T = unknown> {
|
|
|
230
291
|
if (entry.kind === 'raw') {
|
|
231
292
|
return { type: 'raw', data: entry.data };
|
|
232
293
|
}
|
|
294
|
+
// SAFETY: T is the transport caller's event contract; JSON syntax is parsed here without imposing a runtime schema on forward-compatible events.
|
|
233
295
|
return { type: 'message', message: JSON.parse(entry.data) as T };
|
|
234
296
|
});
|
|
235
297
|
this._queue = [];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OpenAIError } from '../error';
|
|
2
2
|
import type OpenAI from '../index';
|
|
3
3
|
import type { RequestOptions } from '../internal/request-options';
|
|
4
4
|
import { uuid4 } from '../internal/utils/uuid';
|
|
@@ -142,6 +142,7 @@ export class AbstractChatCompletionRunner<
|
|
|
142
142
|
this._emit('chatCompletion', chatCompletion);
|
|
143
143
|
const message = chatCompletion.choices[0]?.message;
|
|
144
144
|
if (message) {
|
|
145
|
+
// SAFETY: An API assistant message is also accepted as a subsequent conversation message; this preserves that existing input/output bridge.
|
|
145
146
|
this._addMessage(message as ChatCompletionMessageParam);
|
|
146
147
|
}
|
|
147
148
|
return chatCompletion;
|
|
@@ -163,6 +164,7 @@ export class AbstractChatCompletionRunner<
|
|
|
163
164
|
this._emit('message', message);
|
|
164
165
|
if (isToolMessage(message) && message.content) {
|
|
165
166
|
// Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.
|
|
167
|
+
// SAFETY: The legacy function-tool result event assumes textual tool output, as documented by the adjacent compatibility comment.
|
|
166
168
|
this._emit('functionToolCallResult', message.content as string);
|
|
167
169
|
} else if (isAssistantMessage(message) && message.tool_calls) {
|
|
168
170
|
for (const tool_call of message.tool_calls) {
|
|
@@ -206,6 +208,7 @@ export class AbstractChatCompletionRunner<
|
|
|
206
208
|
const message = this.messages[i];
|
|
207
209
|
if (isAssistantMessage(message)) {
|
|
208
210
|
// Audio is intentionally omitted from the final message snapshot.
|
|
211
|
+
// SAFETY: The assistant-message branch normalizes missing content and refusal to null when constructing the completed message.
|
|
209
212
|
const ret: Omit<ChatCompletionMessage, 'audio'> = {
|
|
210
213
|
...message,
|
|
211
214
|
content: (message as ChatCompletionMessage).content ?? null,
|
|
@@ -257,6 +260,7 @@ export class AbstractChatCompletionRunner<
|
|
|
257
260
|
if (
|
|
258
261
|
isToolMessage(message) &&
|
|
259
262
|
message.content != null &&
|
|
263
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Chat history and tool-choice inputs can contain runtime variants that select different runner behavior.
|
|
260
264
|
typeof message.content === 'string' &&
|
|
261
265
|
this.messages.some(
|
|
262
266
|
(x) =>
|
|
@@ -340,13 +344,7 @@ export class AbstractChatCompletionRunner<
|
|
|
340
344
|
|
|
341
345
|
#throwIfAborted() {
|
|
342
346
|
if (this.controller.signal.aborted) {
|
|
343
|
-
|
|
344
|
-
Object.defineProperty(error, 'cause', {
|
|
345
|
-
value: this.controller.signal.reason,
|
|
346
|
-
writable: true,
|
|
347
|
-
configurable: true,
|
|
348
|
-
});
|
|
349
|
-
throw error;
|
|
347
|
+
throw this._userAbortError();
|
|
350
348
|
}
|
|
351
349
|
}
|
|
352
350
|
|
|
@@ -397,8 +395,10 @@ export class AbstractChatCompletionRunner<
|
|
|
397
395
|
) {
|
|
398
396
|
const role = 'tool' as const;
|
|
399
397
|
const { tool_choice = 'auto', stream, toolContext: inputToolContext, ...restParams } = params;
|
|
398
|
+
// SAFETY: The generic runner parameters tie toolContext to ToolContext; undefined remains valid when the caller omits it under that contract.
|
|
400
399
|
const toolContext = inputToolContext as ToolContext;
|
|
401
400
|
const singleFunctionToCall =
|
|
401
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Chat history and tool-choice inputs can contain runtime variants that select different runner behavior.
|
|
402
402
|
typeof tool_choice !== 'string' && tool_choice.type === 'function' && tool_choice?.function?.name;
|
|
403
403
|
const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS, afterCompletion } = options || {};
|
|
404
404
|
const runAfterCompletion = async (completion: ChatCompletion) => {
|
|
@@ -417,6 +417,7 @@ export class AbstractChatCompletionRunner<
|
|
|
417
417
|
throw new OpenAIError('Tool given to `.runTools()` that does not have an associated function');
|
|
418
418
|
}
|
|
419
419
|
|
|
420
|
+
// SAFETY: The auto-parseable tool supplies its own validated parameter schema and parser; this bridges the legacy runnable-tool parameter type.
|
|
420
421
|
return {
|
|
421
422
|
type: 'function',
|
|
422
423
|
function: {
|
|
@@ -430,7 +431,8 @@ export class AbstractChatCompletionRunner<
|
|
|
430
431
|
};
|
|
431
432
|
}
|
|
432
433
|
|
|
433
|
-
|
|
434
|
+
// SAFETY: Unbranded tools follow the existing runnable-tool contract; the function-tool branch below performs its normal dispatch.
|
|
435
|
+
return tool as RunnableToolFunction<any>;
|
|
434
436
|
});
|
|
435
437
|
|
|
436
438
|
const functionsByName: Record<string, RunnableFunction<any, ToolContext>> = Object.create(null);
|
|
@@ -440,6 +442,9 @@ export class AbstractChatCompletionRunner<
|
|
|
440
442
|
}
|
|
441
443
|
}
|
|
442
444
|
|
|
445
|
+
// SAFETY: The runnable function's parameter schema is forwarded as JSON keyword properties without changing or inspecting its values.
|
|
446
|
+
// SAFETY: This is the intentional non-function tool pass-through; the runnable and wire types differ in index signatures, not the forwarded value.
|
|
447
|
+
// SAFETY: Omitting the tools list preserves the optional wire field; the existing conditional result type is broader than the runnable helper's declaration.
|
|
443
448
|
const tools: ChatCompletionTool[] =
|
|
444
449
|
'tools' in params
|
|
445
450
|
? inputTools.map((t) =>
|
|
@@ -448,12 +453,14 @@ export class AbstractChatCompletionRunner<
|
|
|
448
453
|
type: 'function',
|
|
449
454
|
function: {
|
|
450
455
|
name: t.function.name || t.function.function.name,
|
|
456
|
+
// oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- Tool parameter schemas use the published open JSON Schema dictionary contract, including arbitrary extensions.
|
|
451
457
|
parameters: t.function.parameters as Record<string, unknown>,
|
|
452
458
|
description: t.function.description,
|
|
453
459
|
strict: t.function.strict,
|
|
454
460
|
},
|
|
455
461
|
}
|
|
456
|
-
:
|
|
462
|
+
: // oxlint-disable-next-line anti-slop/no-chained-type-assertions -- Preserve the existing non-function tool pass-through; runnable and wire schema interfaces have incompatible index signatures.
|
|
463
|
+
(t as unknown as ChatCompletionTool),
|
|
457
464
|
)
|
|
458
465
|
: (undefined as any);
|
|
459
466
|
|
|
@@ -504,20 +511,34 @@ export class AbstractChatCompletionRunner<
|
|
|
504
511
|
parsed = await fn.parse(args);
|
|
505
512
|
} catch (error) {
|
|
506
513
|
if (this.controller.signal.aborted) {
|
|
507
|
-
throw
|
|
514
|
+
throw this._userAbortError();
|
|
508
515
|
}
|
|
509
516
|
const content = error instanceof Error ? error.message : String(error);
|
|
510
517
|
return { message: { role, tool_call_id, content }, functionCalled: false };
|
|
511
518
|
}
|
|
512
519
|
if (this.controller.signal.aborted) {
|
|
513
|
-
throw
|
|
520
|
+
throw this._userAbortError();
|
|
521
|
+
}
|
|
522
|
+
try {
|
|
523
|
+
rawContent = await fn.function(parsed, runner, toolContext);
|
|
524
|
+
} catch (error) {
|
|
525
|
+
if (this.controller.signal.aborted && Object.is(error, this.controller.signal.reason)) {
|
|
526
|
+
throw this._userAbortError();
|
|
527
|
+
}
|
|
528
|
+
throw error;
|
|
514
529
|
}
|
|
515
|
-
rawContent = await fn.function(parsed, runner, toolContext);
|
|
516
530
|
} else {
|
|
517
531
|
if (this.controller.signal.aborted && !bufferedToolCall) {
|
|
518
|
-
throw
|
|
532
|
+
throw this._userAbortError();
|
|
533
|
+
}
|
|
534
|
+
try {
|
|
535
|
+
rawContent = await fn.function(args, runner, toolContext);
|
|
536
|
+
} catch (error) {
|
|
537
|
+
if (this.controller.signal.aborted && Object.is(error, this.controller.signal.reason)) {
|
|
538
|
+
throw this._userAbortError();
|
|
539
|
+
}
|
|
540
|
+
throw error;
|
|
519
541
|
}
|
|
520
|
-
rawContent = await fn.function(args, runner, toolContext);
|
|
521
542
|
}
|
|
522
543
|
|
|
523
544
|
const content = AbstractChatCompletionRunner.#stringifyFunctionCallResult(rawContent);
|
|
@@ -555,7 +576,7 @@ export class AbstractChatCompletionRunner<
|
|
|
555
576
|
this._addMessage(result.message);
|
|
556
577
|
}
|
|
557
578
|
if (this.controller.signal.aborted) {
|
|
558
|
-
throw
|
|
579
|
+
throw this._userAbortError();
|
|
559
580
|
}
|
|
560
581
|
|
|
561
582
|
if (singleFunctionToCall && result.functionCalled) {
|
|
@@ -584,7 +605,7 @@ export class AbstractChatCompletionRunner<
|
|
|
584
605
|
}
|
|
585
606
|
}
|
|
586
607
|
if (this.controller.signal.aborted) {
|
|
587
|
-
throw
|
|
608
|
+
throw this._userAbortError();
|
|
588
609
|
}
|
|
589
610
|
}
|
|
590
611
|
|
|
@@ -592,7 +613,9 @@ export class AbstractChatCompletionRunner<
|
|
|
592
613
|
}
|
|
593
614
|
}
|
|
594
615
|
|
|
616
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- Public tool callbacks can return any JavaScript value; this boundary normalizes their results for the API.
|
|
595
617
|
static #stringifyFunctionCallResult(rawContent: unknown): string {
|
|
618
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Chat history and tool-choice inputs can contain runtime variants that select different runner behavior.
|
|
596
619
|
if (typeof rawContent === 'string') {
|
|
597
620
|
return rawContent;
|
|
598
621
|
}
|
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
} from '../resources/beta/threads/runs/runs';
|
|
21
21
|
import type { ReadableStream } from '../internal/shim-types';
|
|
22
22
|
import { Stream } from '../streaming';
|
|
23
|
-
import { APIError,
|
|
23
|
+
import { APIError, OpenAIError } from '../error';
|
|
24
24
|
import type {
|
|
25
25
|
AssistantStreamEvent,
|
|
26
26
|
MessageStreamEvent,
|
|
@@ -99,14 +99,13 @@ export type RunSubmitToolOutputsParamsStream = Omit<RunSubmitToolOutputsParamsBa
|
|
|
99
99
|
stream?: true;
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
function stabilizeAssistantStreamEvent(event: AssistantStreamEvent)
|
|
103
|
-
event: AssistantStreamEvent;
|
|
104
|
-
exposedEvent: AssistantStreamEvent;
|
|
105
|
-
} {
|
|
102
|
+
function stabilizeAssistantStreamEvent(event: AssistantStreamEvent) {
|
|
106
103
|
const eventDescriptor = Object.getOwnPropertyDescriptor(event, 'event');
|
|
107
104
|
const dataDescriptor = Object.getOwnPropertyDescriptor(event, 'data');
|
|
108
|
-
|
|
109
|
-
const
|
|
105
|
+
// oxlint-disable-next-line anti-slop/no-reflect-get -- Reflective wire reads reject primitive frames and preserve the original event receiver.
|
|
106
|
+
const eventType: AssistantStreamEvent['event'] = Reflect.get(event, 'event', event);
|
|
107
|
+
// oxlint-disable-next-line anti-slop/no-reflect-get -- Keep the paired wire-data read on the original receiver after reading the event discriminator.
|
|
108
|
+
const data: AssistantStreamEvent['data'] = Reflect.get(event, 'data', event);
|
|
110
109
|
let stableData = data;
|
|
111
110
|
if (
|
|
112
111
|
eventType === 'thread.message.created' ||
|
|
@@ -123,15 +122,24 @@ function stabilizeAssistantStreamEvent(event: AssistantStreamEvent): {
|
|
|
123
122
|
eventType === 'thread.run.step.expired'
|
|
124
123
|
) {
|
|
125
124
|
const messageID = Object.getOwnPropertyDescriptor(data, 'id');
|
|
126
|
-
if (
|
|
125
|
+
if (
|
|
126
|
+
messageID &&
|
|
127
|
+
'value' in messageID &&
|
|
128
|
+
// SAFETY: The own id descriptor was found above; keep its live read unknown while comparing it with the captured descriptor value.
|
|
129
|
+
(data as { id: unknown }).id !== messageID.value
|
|
130
|
+
) {
|
|
131
|
+
// SAFETY: Descriptor values are untyped; retaining this value as unknown avoids trusting a mutable message identifier.
|
|
127
132
|
const canonicalID = messageID.value as unknown;
|
|
133
|
+
// SAFETY: The proxy retains the event data and substitutes only its captured own id; all other properties forward to the original receiver.
|
|
128
134
|
stableData = new Proxy(data, {
|
|
129
135
|
get(target, property) {
|
|
136
|
+
// oxlint-disable-next-line anti-slop/no-reflect-get -- Proxy forwarding must preserve arbitrary keys with the original target as accessor receiver.
|
|
130
137
|
return property === 'id' ? canonicalID : Reflect.get(target, property, target);
|
|
131
138
|
},
|
|
132
139
|
}) as AssistantStreamEvent['data'];
|
|
133
140
|
}
|
|
134
141
|
}
|
|
142
|
+
// SAFETY: The captured event discriminator and data originate from the same event; TypeScript loses their correlation when constructing the stabilized copy.
|
|
135
143
|
const stableEvent = Object.freeze({ event: eventType, data: stableData }) as AssistantStreamEvent;
|
|
136
144
|
const ordinaryEvent =
|
|
137
145
|
eventDescriptor !== undefined &&
|
|
@@ -142,6 +150,7 @@ function stabilizeAssistantStreamEvent(event: AssistantStreamEvent): {
|
|
|
142
150
|
dataDescriptor.value === data &&
|
|
143
151
|
stableData === data;
|
|
144
152
|
|
|
153
|
+
// SAFETY: The captured event discriminator and data originate from the same event; TypeScript loses their correlation when constructing the stabilized copy.
|
|
145
154
|
return {
|
|
146
155
|
event: stableEvent,
|
|
147
156
|
exposedEvent: ordinaryEvent ? event : ({ event: eventType, data: stableData } as AssistantStreamEvent),
|
|
@@ -204,7 +213,7 @@ export class AssistantStream
|
|
|
204
213
|
this.#addEvent(event);
|
|
205
214
|
}
|
|
206
215
|
if (stream.controller.signal?.aborted) {
|
|
207
|
-
throw
|
|
216
|
+
throw this._userAbortError();
|
|
208
217
|
}
|
|
209
218
|
return this._addRun(this.#endRequest());
|
|
210
219
|
}
|
|
@@ -252,7 +261,7 @@ export class AssistantStream
|
|
|
252
261
|
this.#addEvent(event);
|
|
253
262
|
}
|
|
254
263
|
if (stream.controller.signal?.aborted) {
|
|
255
|
-
throw
|
|
264
|
+
throw this._userAbortError();
|
|
256
265
|
}
|
|
257
266
|
|
|
258
267
|
return this._addRun(this.#endRequest());
|
|
@@ -358,7 +367,7 @@ export class AssistantStream
|
|
|
358
367
|
this.#addEvent(event);
|
|
359
368
|
}
|
|
360
369
|
if (stream.controller.signal?.aborted) {
|
|
361
|
-
throw
|
|
370
|
+
throw this._userAbortError();
|
|
362
371
|
}
|
|
363
372
|
|
|
364
373
|
return this._addRun(this.#endRequest());
|
|
@@ -381,7 +390,7 @@ export class AssistantStream
|
|
|
381
390
|
this.#addEvent(event);
|
|
382
391
|
}
|
|
383
392
|
if (stream.controller.signal?.aborted) {
|
|
384
|
-
throw
|
|
393
|
+
throw this._userAbortError();
|
|
385
394
|
}
|
|
386
395
|
|
|
387
396
|
return this._addRun(this.#endRequest());
|
|
@@ -777,6 +786,7 @@ export class AssistantStream
|
|
|
777
786
|
) {
|
|
778
787
|
for (const toolCall of delta.step_details.tool_calls) {
|
|
779
788
|
if (toolCall.index === this.#currentToolCallIndex) {
|
|
789
|
+
// SAFETY: The indexed tool call comes from this run-step snapshot after applying the delta for the same tool-call index.
|
|
780
790
|
this.#emitExposed(
|
|
781
791
|
'toolCallDelta',
|
|
782
792
|
toolCall,
|
|
@@ -807,7 +817,7 @@ export class AssistantStream
|
|
|
807
817
|
this.#activeRunStepID = undefined;
|
|
808
818
|
const details = event.data.step_details;
|
|
809
819
|
if (details.type === 'tool_calls' && this.#currentToolCall) {
|
|
810
|
-
this.#emitExposed('toolCallDone', this.#currentToolCall
|
|
820
|
+
this.#emitExposed('toolCallDone', this.#currentToolCall);
|
|
811
821
|
}
|
|
812
822
|
this.#emitExposed('runStepDone', event.data, accumulatedRunStep);
|
|
813
823
|
this.#currentToolCallIndex = undefined;
|
|
@@ -844,6 +854,7 @@ export class AssistantStream
|
|
|
844
854
|
}
|
|
845
855
|
|
|
846
856
|
case 'thread.run.step.delta': {
|
|
857
|
+
// SAFETY: Run-step snapshots are stored by their canonical run-step id; the delta path checks that the snapshot exists before updating it.
|
|
847
858
|
const snapshot = this.#runStepSnapshots[runStepID] as Runs.RunStep;
|
|
848
859
|
if (!snapshot) {
|
|
849
860
|
throw new Error('Received a RunStepDelta before creation of a snapshot');
|
|
@@ -856,10 +867,11 @@ export class AssistantStream
|
|
|
856
867
|
if (hasOwn(delta, 'id')) {
|
|
857
868
|
throw new OpenAIError('Run-step deltas must not contain an id field');
|
|
858
869
|
}
|
|
859
|
-
const accumulated = accumulateAssistantStreamDelta(snapshot, delta, true)
|
|
870
|
+
const accumulated = accumulateAssistantStreamDelta(snapshot, delta, true);
|
|
860
871
|
this.#runStepSnapshots[runStepID] = accumulated;
|
|
861
872
|
}
|
|
862
873
|
|
|
874
|
+
// SAFETY: Run-step snapshots are stored by their canonical run-step id; the delta path checks that the snapshot exists before updating it.
|
|
863
875
|
return this.#runStepSnapshots[runStepID] as Runs.RunStep;
|
|
864
876
|
}
|
|
865
877
|
|
|
@@ -874,7 +886,7 @@ export class AssistantStream
|
|
|
874
886
|
}
|
|
875
887
|
|
|
876
888
|
if (this.#runStepSnapshots[runStepID]) {
|
|
877
|
-
return this.#runStepSnapshots[runStepID]
|
|
889
|
+
return this.#runStepSnapshots[runStepID];
|
|
878
890
|
}
|
|
879
891
|
throw new Error('No snapshot available');
|
|
880
892
|
}
|
|
@@ -951,11 +963,10 @@ export class AssistantStream
|
|
|
951
963
|
currentContent: MessageContent | undefined,
|
|
952
964
|
cacheArrays: boolean,
|
|
953
965
|
): TextContentBlock | ImageFileContentBlock {
|
|
954
|
-
return
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
) as TextContentBlock | ImageFileContentBlock;
|
|
966
|
+
// SAFETY: The accumulator merges the matching message-content delta into its existing block; the public return remains the text/image block union.
|
|
967
|
+
return accumulateAssistantStreamDelta(currentContent as Record<any, any>, contentElement, cacheArrays) as
|
|
968
|
+
| TextContentBlock
|
|
969
|
+
| ImageFileContentBlock;
|
|
959
970
|
}
|
|
960
971
|
|
|
961
972
|
/**
|
|
@@ -100,6 +100,7 @@ export class ChatCompletionRunner<ParsedT = null> extends AbstractChatCompletion
|
|
|
100
100
|
) {
|
|
101
101
|
super._addMessage(message, emit, normalizeContent);
|
|
102
102
|
if (emit && isAssistantMessage(message) && message.content) {
|
|
103
|
+
// SAFETY: The runner's content event preserves the existing string-content contract for assistant messages supplied by the API or caller.
|
|
103
104
|
this._emit('content', message.content as string);
|
|
104
105
|
}
|
|
105
106
|
}
|