openai 7.16.0 → 7.18.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 +49 -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 +5 -0
- package/bedrock.js.map +1 -1
- package/bedrock.mjs +5 -0
- 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 +3 -0
- package/client.d.mts.map +1 -1
- package/client.d.ts +3 -0
- package/client.d.ts.map +1 -1
- package/client.js +39 -6
- package/client.js.map +1 -1
- package/client.mjs +39 -6
- 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/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.map +1 -1
- package/internal/utils/abort.d.ts.map +1 -1
- package/internal/utils/abort.js +9 -2
- package/internal/utils/abort.js.map +1 -1
- package/internal/utils/abort.mjs +9 -2
- package/internal/utils/abort.mjs.map +1 -1
- 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 +16 -0
- package/internal/ws.d.mts.map +1 -1
- package/internal/ws.d.ts +16 -0
- package/internal/ws.d.ts.map +1 -1
- package/internal/ws.js +71 -5
- package/internal/ws.js.map +1 -1
- package/internal/ws.mjs +68 -6
- 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/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/responses/responses-websocket-lane.d.mts +63 -0
- package/lib/responses/responses-websocket-lane.d.mts.map +1 -0
- package/lib/responses/responses-websocket-lane.d.ts +63 -0
- package/lib/responses/responses-websocket-lane.d.ts.map +1 -0
- package/lib/responses/responses-websocket-lane.js +314 -0
- package/lib/responses/responses-websocket-lane.js.map +1 -0
- package/lib/responses/responses-websocket-lane.mjs +309 -0
- package/lib/responses/responses-websocket-lane.mjs.map +1 -0
- package/lib/responses/responses-websocket-session.d.mts +38 -0
- package/lib/responses/responses-websocket-session.d.mts.map +1 -0
- package/lib/responses/responses-websocket-session.d.ts +38 -0
- package/lib/responses/responses-websocket-session.d.ts.map +1 -0
- package/lib/responses/responses-websocket-session.js +268 -0
- package/lib/responses/responses-websocket-session.js.map +1 -0
- package/lib/responses/responses-websocket-session.mjs +263 -0
- package/lib/responses/responses-websocket-session.mjs.map +1 -0
- 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/agents/sessions/sessions.d.mts +42 -1
- package/resources/beta/agents/sessions/sessions.d.mts.map +1 -1
- package/resources/beta/agents/sessions/sessions.d.ts +42 -1
- package/resources/beta/agents/sessions/sessions.d.ts.map +1 -1
- package/resources/beta/agents/sessions/sessions.js +2 -1
- package/resources/beta/agents/sessions/sessions.js.map +1 -1
- package/resources/beta/agents/sessions/sessions.mjs +2 -1
- package/resources/beta/agents/sessions/sessions.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 -12
- package/resources/beta/responses/internal-base.js.map +1 -1
- package/resources/beta/responses/internal-base.mjs +21 -12
- package/resources/beta/responses/internal-base.mjs.map +1 -1
- package/resources/beta/responses/responses.d.mts +65 -7
- package/resources/beta/responses/responses.d.mts.map +1 -1
- package/resources/beta/responses/responses.d.ts +65 -7
- 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 +9 -1
- package/resources/beta/responses/ws-base.d.mts.map +1 -1
- package/resources/beta/responses/ws-base.d.ts +9 -1
- package/resources/beta/responses/ws-base.d.ts.map +1 -1
- package/resources/beta/responses/ws-base.js +24 -5
- package/resources/beta/responses/ws-base.js.map +1 -1
- package/resources/beta/responses/ws-base.mjs +23 -6
- package/resources/beta/responses/ws-base.mjs.map +1 -1
- package/resources/beta/responses/ws.d.mts +2 -0
- package/resources/beta/responses/ws.d.mts.map +1 -1
- package/resources/beta/responses/ws.d.ts +2 -0
- package/resources/beta/responses/ws.d.ts.map +1 -1
- package/resources/beta/responses/ws.js +21 -8
- package/resources/beta/responses/ws.js.map +1 -1
- package/resources/beta/responses/ws.mjs +21 -8
- 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.d.mts.map +1 -1
- package/resources/live/forks/ws.d.ts.map +1 -1
- package/resources/live/forks/ws.js +2 -4
- package/resources/live/forks/ws.js.map +1 -1
- package/resources/live/forks/ws.mjs +2 -4
- 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.d.mts.map +1 -1
- package/resources/live/sideband/ws.d.ts.map +1 -1
- package/resources/live/sideband/ws.js +2 -4
- package/resources/live/sideband/ws.js.map +1 -1
- package/resources/live/sideband/ws.mjs +2 -4
- package/resources/live/sideband/ws.mjs.map +1 -1
- package/resources/live/ws.d.mts.map +1 -1
- package/resources/live/ws.d.ts.map +1 -1
- package/resources/live/ws.js +2 -4
- package/resources/live/ws.js.map +1 -1
- package/resources/live/ws.mjs +2 -4
- 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 -12
- package/resources/responses/internal-base.js.map +1 -1
- package/resources/responses/internal-base.mjs +21 -12
- package/resources/responses/internal-base.mjs.map +1 -1
- package/resources/responses/responses.d.mts +47 -4
- package/resources/responses/responses.d.mts.map +1 -1
- package/resources/responses/responses.d.ts +47 -4
- 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 +11 -1
- package/resources/responses/ws-base.d.mts.map +1 -1
- package/resources/responses/ws-base.d.ts +11 -1
- package/resources/responses/ws-base.d.ts.map +1 -1
- package/resources/responses/ws-base.js +29 -8
- package/resources/responses/ws-base.js.map +1 -1
- package/resources/responses/ws-base.mjs +28 -9
- package/resources/responses/ws-base.mjs.map +1 -1
- package/resources/responses/ws.d.mts +2 -0
- package/resources/responses/ws.d.mts.map +1 -1
- package/resources/responses/ws.d.ts +2 -0
- package/resources/responses/ws.d.ts.map +1 -1
- package/resources/responses/ws.js +21 -8
- package/resources/responses/ws.js.map +1 -1
- package/resources/responses/ws.mjs +21 -8
- package/resources/responses/ws.mjs.map +1 -1
- package/resources/shared.d.mts +1 -1
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +1 -1
- package/resources/shared.d.ts.map +1 -1
- package/resources/webhooks/webhooks.d.mts +3 -4
- package/resources/webhooks/webhooks.d.mts.map +1 -1
- package/resources/webhooks/webhooks.d.ts +3 -4
- package/resources/webhooks/webhooks.d.ts.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 +5 -0
- 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 +50 -3
- 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/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 +7 -2
- 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 +80 -6
- 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/parser.ts +16 -2
- package/src/lib/responses/ResponseInputItems.ts +11 -0
- package/src/lib/responses/ResponseStream.ts +6 -3
- package/src/lib/responses/responses-websocket-lane.ts +388 -0
- package/src/lib/responses/responses-websocket-session.ts +317 -0
- 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/agents/sessions/sessions.ts +47 -1
- 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 -11
- package/src/resources/beta/responses/responses.ts +82 -4
- package/src/resources/beta/responses/ws-base.ts +31 -6
- package/src/resources/beta/responses/ws.ts +29 -11
- package/src/resources/live/forks/internal-base.ts +24 -5
- package/src/resources/live/forks/ws.ts +4 -5
- 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.ts +4 -5
- package/src/resources/live/ws.ts +4 -5
- package/src/resources/responses/api.md +1 -0
- package/src/resources/responses/internal-base.ts +24 -11
- package/src/resources/responses/responses.ts +56 -1
- package/src/resources/responses/ws-base.ts +36 -9
- package/src/resources/responses/ws.ts +29 -11
- package/src/resources/shared.ts +4 -2
- package/src/resources/webhooks/webhooks.ts +3 -4
- 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
package/src/helpers/zod.ts
CHANGED
|
@@ -16,7 +16,7 @@ import type { ResponseFormatTextJSONSchemaConfig } from '../resources/responses/
|
|
|
16
16
|
import type { RealtimeFunctionTool } from '../resources/realtime/realtime';
|
|
17
17
|
import { forEachJSONSchemaChild, toStrictJsonSchema } from '../lib/transform';
|
|
18
18
|
import type { JSONSchema } from '../lib/jsonschema';
|
|
19
|
-
import { hasOwn } from '../internal/utils/values';
|
|
19
|
+
import { hasOwn, isObj } from '../internal/utils/values';
|
|
20
20
|
import { assertJSONSerializableSchema, assertSupportedZodV3Schema } from './zod-v3-strict-schema';
|
|
21
21
|
|
|
22
22
|
type ZodV4Schema = z4.ZodType | z4Mini.ZodMiniType;
|
|
@@ -39,6 +39,7 @@ type ZodTypeLike = (
|
|
|
39
39
|
}
|
|
40
40
|
) & {
|
|
41
41
|
/** Synchronous schema parser when the validator exposes an instance-level parse method. */
|
|
42
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- The public schema adapter accepts arbitrary validated outputs and derives their concrete type separately. Zod parsers and their recursive metadata accept untrusted values before schema validation.
|
|
42
43
|
parse?: (data: unknown) => unknown;
|
|
43
44
|
};
|
|
44
45
|
|
|
@@ -97,11 +98,12 @@ function escapeSchemaDefinitionRefs<T extends object>(
|
|
|
97
98
|
|
|
98
99
|
const visited = new Set<object>();
|
|
99
100
|
const visit = (value: unknown): void => {
|
|
100
|
-
if (!
|
|
101
|
+
if (!isObj(value) || visited.has(value)) {
|
|
101
102
|
return;
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
visited.add(value);
|
|
106
|
+
// SAFETY: The traversal has excluded primitives, null, arrays, and previously visited objects; schema property values remain unknown for validation.
|
|
105
107
|
const record = value as Record<string, unknown>;
|
|
106
108
|
const ref = record['$ref'];
|
|
107
109
|
if (typeof ref === 'string') {
|
|
@@ -134,8 +136,10 @@ function zodV3ToJsonSchema(
|
|
|
134
136
|
schema: z3.ZodType,
|
|
135
137
|
options: { name: string; schemaDefinitions?: ZodSchemaDefinitions | undefined },
|
|
136
138
|
): Record<string, unknown> {
|
|
139
|
+
// SAFETY: This is the Zod v3 conversion path; assertSupportedZodV3Schema verifies the root and named definitions before conversion.
|
|
137
140
|
assertSupportedZodV3Schema(schema, options.schemaDefinitions as Record<string, z3.ZodType> | undefined);
|
|
138
141
|
const rootName = getZodV3RootName(options.name, options.schemaDefinitions);
|
|
142
|
+
// SAFETY: This is the Zod v3 conversion path; assertSupportedZodV3Schema verifies the root and named definitions before conversion.
|
|
139
143
|
const jsonSchema = _zodToJsonSchema(schema, {
|
|
140
144
|
openaiStrictMode: true,
|
|
141
145
|
name: rootName,
|
|
@@ -143,7 +147,7 @@ function zodV3ToJsonSchema(
|
|
|
143
147
|
$refStrategy: 'extract-to-root',
|
|
144
148
|
nullableStrategy: 'property',
|
|
145
149
|
...(options.schemaDefinitions
|
|
146
|
-
? { definitions: options.schemaDefinitions as
|
|
150
|
+
? { definitions: options.schemaDefinitions as Record<string, z3.ZodType> }
|
|
147
151
|
: undefined),
|
|
148
152
|
});
|
|
149
153
|
|
|
@@ -159,15 +163,17 @@ function zodV4ToJsonSchema(
|
|
|
159
163
|
schema: ZodV4Schema,
|
|
160
164
|
options: { schemaDefinitions?: ZodSchemaDefinitions | undefined } = {},
|
|
161
165
|
): Record<string, unknown> {
|
|
162
|
-
const metadata = options.schemaDefinitions ? z4.registry<
|
|
166
|
+
const metadata = options.schemaDefinitions ? z4.registry<{ id: string }>() : undefined;
|
|
163
167
|
const definitionNames = new Map<string, string>();
|
|
164
168
|
for (const [name, definition] of Object.entries(options.schemaDefinitions ?? {})) {
|
|
165
169
|
// Avoid `/` and `~` so Zod versions that escape JSON Pointer tokens emit the same IDs.
|
|
166
170
|
const id = encodeURIComponent(name).replace(/~/g, '%7E');
|
|
167
171
|
definitionNames.set(id, name);
|
|
168
|
-
|
|
172
|
+
// SAFETY: The Zod v4 conversion path registers these definitions with the v4 metadata registry before toJSONSchema uses them.
|
|
173
|
+
metadata?.add(definition as z4.ZodType, { id });
|
|
169
174
|
}
|
|
170
175
|
|
|
176
|
+
// SAFETY: The v4 schema converter produces JSON Schema; the following normalization checks and rewrites its schema records.
|
|
171
177
|
const jsonSchema = z4.toJSONSchema(schema, {
|
|
172
178
|
target: 'draft-7',
|
|
173
179
|
...(metadata ? { metadata } : undefined),
|
|
@@ -208,6 +214,7 @@ function zodV4ToJsonSchema(
|
|
|
208
214
|
);
|
|
209
215
|
}
|
|
210
216
|
|
|
217
|
+
// SAFETY: Strict conversion returns the normalized object schema; the record view exposes keywords without trusting arbitrary values.
|
|
211
218
|
return toStrictJsonSchema(escapedSchema) as Record<string, unknown>;
|
|
212
219
|
}
|
|
213
220
|
|
|
@@ -221,6 +228,7 @@ function zodV3ToNonStrictJsonSchema(schema: z3.ZodType, options: { name: string
|
|
|
221
228
|
}
|
|
222
229
|
|
|
223
230
|
function zodV4ToNonStrictJsonSchema(schema: ZodV4Schema): Record<string, unknown> {
|
|
231
|
+
// SAFETY: Zod v4 owns this JSON Schema output; the record return preserves arbitrary supported keyword properties.
|
|
224
232
|
return z4.toJSONSchema(schema, {
|
|
225
233
|
target: 'draft-7',
|
|
226
234
|
io: 'input',
|
|
@@ -236,17 +244,20 @@ function parseZodObject<ZodInput extends ZodTypeLike>(
|
|
|
236
244
|
content: string,
|
|
237
245
|
): InferZodType<ZodInput> {
|
|
238
246
|
const parsed = parseResponseFormatContent({ type: 'json_schema', $parseRaw: undefined }, content);
|
|
239
|
-
const parser =
|
|
247
|
+
const parser = zodObject.parse;
|
|
240
248
|
|
|
241
249
|
if (typeof parser === 'function') {
|
|
250
|
+
// SAFETY: The schema's parse method is invoked with its original receiver and owns the inferred output type.
|
|
242
251
|
const result = parser.call(zodObject, parsed) as InferZodType<ZodInput>;
|
|
243
|
-
|
|
252
|
+
// SAFETY: This read only identifies the supported Zod version before applying its corresponding serialization checks.
|
|
253
|
+
if (!isZodV4(zodObject as ZodSchema)) {
|
|
244
254
|
assertJSONSerializableSchema(result);
|
|
245
255
|
}
|
|
246
256
|
return result;
|
|
247
257
|
}
|
|
248
258
|
|
|
249
|
-
|
|
259
|
+
// SAFETY: Schemas without a parse method use the supported Zod v4 core parser, which validates the input and supplies the inferred output.
|
|
260
|
+
return z4.parse(zodObject as ZodV4Schema, parsed) as InferZodType<ZodInput>;
|
|
250
261
|
}
|
|
251
262
|
|
|
252
263
|
/**
|
|
@@ -297,7 +308,8 @@ export function zodResponseFormat<ZodInput extends ZodTypeLike>(
|
|
|
297
308
|
name: string,
|
|
298
309
|
props?: ZodResponseFormatProps,
|
|
299
310
|
): AutoParseableResponseFormat<InferZodType<ZodInput>> {
|
|
300
|
-
|
|
311
|
+
// SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
|
|
312
|
+
const zodSchema = zodObject as ZodSchema;
|
|
301
313
|
const { schemaDefinitions, ...responseFormatProps } = props ?? {};
|
|
302
314
|
validateSchemaDefinitions(schemaDefinitions);
|
|
303
315
|
|
|
@@ -343,7 +355,8 @@ export function zodTextFormat<ZodInput extends ZodTypeLike>(
|
|
|
343
355
|
name: string,
|
|
344
356
|
props?: Omit<ResponseFormatTextJSONSchemaConfig, 'schema' | 'type' | 'strict' | 'name'>,
|
|
345
357
|
): AutoParseableTextFormat<InferZodType<ZodInput>> {
|
|
346
|
-
|
|
358
|
+
// SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
|
|
359
|
+
const zodSchema = zodObject as ZodSchema;
|
|
347
360
|
|
|
348
361
|
return makeParseableTextFormat<InferZodType<ZodInput>>(
|
|
349
362
|
{
|
|
@@ -366,6 +379,7 @@ interface ZodFunctionOptions<Parameters extends ZodTypeLike> {
|
|
|
366
379
|
parameters: Parameters;
|
|
367
380
|
|
|
368
381
|
/** Optional callback invoked with validated arguments by chat `runTools()`. */
|
|
382
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
|
|
369
383
|
function?: ((args: InferZodType<Parameters>) => unknown | Promise<unknown>) | undefined;
|
|
370
384
|
|
|
371
385
|
/** Optional model-visible explanation of when and how the function should be used. */
|
|
@@ -415,7 +429,8 @@ export function zodFunction<Parameters extends ZodTypeLike>(
|
|
|
415
429
|
/** Builds a strict Chat Completions function tool from the supplied Zod schema. */
|
|
416
430
|
export function zodFunction<Parameters extends ZodTypeLike>(options: ZodFunctionOptions<Parameters>) {
|
|
417
431
|
const parameters = options.parameters;
|
|
418
|
-
|
|
432
|
+
// SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
|
|
433
|
+
const zodSchema = parameters as ZodSchema;
|
|
419
434
|
|
|
420
435
|
return makeParseableTool<any>(
|
|
421
436
|
{
|
|
@@ -455,6 +470,7 @@ export function zodResponsesFunction<Parameters extends ZodTypeLike>(options: {
|
|
|
455
470
|
parameters: Parameters;
|
|
456
471
|
|
|
457
472
|
/** Optional callback retained on the tool; `responses.parse()` does not execute it. */
|
|
473
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
|
|
458
474
|
function?: ((args: InferZodType<Parameters>) => unknown | Promise<unknown>) | undefined;
|
|
459
475
|
|
|
460
476
|
/** Optional model-visible explanation of when and how the function should be used. */
|
|
@@ -467,10 +483,12 @@ export function zodResponsesFunction<Parameters extends ZodTypeLike>(options: {
|
|
|
467
483
|
name: string;
|
|
468
484
|
|
|
469
485
|
/** Callback signature associated with validated function-call arguments. */
|
|
486
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
|
|
470
487
|
function: (args: InferZodType<Parameters>) => unknown;
|
|
471
488
|
}> {
|
|
472
489
|
const parameters = options.parameters;
|
|
473
|
-
|
|
490
|
+
// SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
|
|
491
|
+
const zodSchema = parameters as ZodSchema;
|
|
474
492
|
|
|
475
493
|
return makeParseableResponseTool<any>(
|
|
476
494
|
{
|
|
@@ -510,7 +528,8 @@ export function zodRealtimeFunction<Parameters extends ZodTypeLike>(options: {
|
|
|
510
528
|
/** Optional model-visible explanation of when and how the function should be used. */
|
|
511
529
|
description?: string | undefined;
|
|
512
530
|
}): RealtimeFunctionTool {
|
|
513
|
-
|
|
531
|
+
// SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
|
|
532
|
+
const zodSchema = options.parameters as ZodSchema;
|
|
514
533
|
|
|
515
534
|
return {
|
|
516
535
|
type: 'function',
|
|
@@ -68,7 +68,7 @@ function commitAssistantStreamArrayProjection(projection: AssistantStreamDeltaPr
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
function isPrimitiveAssistantStreamValue(value: unknown):
|
|
71
|
+
function isPrimitiveAssistantStreamValue(value: unknown): value is string | number {
|
|
72
72
|
return typeof value === 'string' || typeof value === 'number';
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -118,6 +118,7 @@ function getAssistantStreamDeltaIndex(
|
|
|
118
118
|
);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
// SAFETY: Number.isSafeInteger rejects non-numbers before numeric comparisons; the remaining checks enforce the permitted index range.
|
|
121
122
|
if (
|
|
122
123
|
!Number.isSafeInteger(index) ||
|
|
123
124
|
(index as number) < 0 ||
|
|
@@ -128,6 +129,7 @@ function getAssistantStreamDeltaIndex(
|
|
|
128
129
|
throw new OpenAIError(`Assistant stream delta contains an invalid ${kind} index: ${safeIndex}`);
|
|
129
130
|
}
|
|
130
131
|
|
|
132
|
+
// SAFETY: Number.isSafeInteger rejects non-numbers before numeric comparisons; the remaining checks enforce the permitted index range.
|
|
131
133
|
return index as number;
|
|
132
134
|
}
|
|
133
135
|
|
|
@@ -323,6 +325,7 @@ function applyAssistantStreamArrayDelta(
|
|
|
323
325
|
}
|
|
324
326
|
accumulator[index] = deltaEntry;
|
|
325
327
|
} else {
|
|
328
|
+
// SAFETY: The preceding validation accepts this accumulated record before recursively merging the matching delta entry.
|
|
326
329
|
accumulator[index] = applyRecord(accumulatedEntry as AssistantStreamRecord, deltaEntry);
|
|
327
330
|
}
|
|
328
331
|
} else {
|
|
@@ -398,11 +401,14 @@ export function assertSafeAssistantStreamDelta(value: unknown): void {
|
|
|
398
401
|
|
|
399
402
|
export function accumulateAssistantStreamDelta<Accumulator extends object>(
|
|
400
403
|
accumulator: Accumulator,
|
|
404
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- This exported accumulator accepts heterogeneous partial SDK deltas and validates their properties at runtime.
|
|
401
405
|
delta: object,
|
|
402
406
|
cacheArrays = false,
|
|
403
407
|
): Accumulator {
|
|
404
408
|
assertSafeAssistantStreamDelta(delta);
|
|
409
|
+
// SAFETY: The generic accumulator uses record entries after delta validation; recursive merge retains the original accumulator's public type.
|
|
405
410
|
const accumulatorRecord = accumulator as AssistantStreamRecord;
|
|
411
|
+
// SAFETY: The generic accumulator uses record entries after delta validation; recursive merge retains the original accumulator's public type.
|
|
406
412
|
const deltaRecord = delta as AssistantStreamRecord;
|
|
407
413
|
const projection = createAssistantStreamDeltaProjection(
|
|
408
414
|
cacheArrays && !isAssistantStreamValueExternallyMutable(accumulator),
|
|
@@ -13,6 +13,7 @@ export function normalizeX509CredentialOptions(options: ClientOptions): {
|
|
|
13
13
|
} {
|
|
14
14
|
const { credential } = options;
|
|
15
15
|
if (credential === undefined) {
|
|
16
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- Preserve the exported normalization contract when no X.509 credential is configured.
|
|
16
17
|
return { credential, options };
|
|
17
18
|
}
|
|
18
19
|
|
|
@@ -32,6 +33,7 @@ export function normalizeX509CredentialOptions(options: ClientOptions): {
|
|
|
32
33
|
);
|
|
33
34
|
}
|
|
34
35
|
|
|
36
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared ClientOptions return contract supports both normalized and unchanged client options.
|
|
35
37
|
return {
|
|
36
38
|
credential,
|
|
37
39
|
options: {
|
|
@@ -142,5 +144,6 @@ export function prepareX509ClientClone(
|
|
|
142
144
|
}
|
|
143
145
|
}
|
|
144
146
|
|
|
147
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- Preserve the exported clone contract across inherited and replaced credentials and providers.
|
|
145
148
|
return { credential: nextCredential, provider: prepareProviderClone(inherited, overrides) };
|
|
146
149
|
}
|
|
@@ -74,6 +74,7 @@ function cancelResponseBody(response: Response): void {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Decoded token JSON remains untrusted until the caller validates its fields.
|
|
77
78
|
async function readResponseBody(response: Response, signal?: AbortSignal): Promise<unknown> {
|
|
78
79
|
if (!response.body) {
|
|
79
80
|
throw new OpenAIError('X.509 workload identity token exchange returned invalid JSON.');
|
|
@@ -124,12 +125,20 @@ async function readResponseBody(response: Response, signal?: AbortSignal): Promi
|
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
|
|
128
|
+
interface UnvalidatedTokenResponse {
|
|
129
|
+
access_token?: unknown;
|
|
130
|
+
token_type?: unknown;
|
|
131
|
+
issued_token_type?: unknown;
|
|
132
|
+
expires_in?: unknown;
|
|
133
|
+
}
|
|
134
|
+
|
|
127
135
|
function validateTokenResponse(value: unknown): X509ExchangedToken {
|
|
128
136
|
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
129
137
|
throw new OpenAIError('X.509 workload identity token exchange returned an invalid token response.');
|
|
130
138
|
}
|
|
131
139
|
|
|
132
|
-
|
|
140
|
+
// SAFETY: The object check above establishes a container; optional unknown fields make no claim about its values.
|
|
141
|
+
const response = value as UnvalidatedTokenResponse;
|
|
133
142
|
if (
|
|
134
143
|
!hasOwn(response, 'access_token') ||
|
|
135
144
|
typeof response['access_token'] !== 'string' ||
|
|
@@ -44,7 +44,7 @@ class NodeX509Transport implements X509Transport {
|
|
|
44
44
|
Object.freeze(this);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
static dispatcher(value:
|
|
47
|
+
static dispatcher(value: X509Transport): Agent | ProxyAgent | undefined {
|
|
48
48
|
return #dispatcher in value ? value.#dispatcher : undefined;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -66,6 +66,7 @@ export function registerX509Transport(transport: X509Transport, registered: Regi
|
|
|
66
66
|
rememberRegisteredX509Transport(transport, Object.freeze(registered));
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Own data-property values must remain untrusted until their option-specific validators run.
|
|
69
70
|
function dataOption(options: X509TransportOptions, name: keyof X509TransportOptions): unknown {
|
|
70
71
|
const descriptor = Object.getOwnPropertyDescriptor(options, name);
|
|
71
72
|
if (!descriptor || !('value' in descriptor)) {
|
|
@@ -43,10 +43,7 @@ function assertSafeHeaders(headers: Headers): void {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
function exchangeDeadline(
|
|
47
|
-
timeout: number | undefined,
|
|
48
|
-
callerSignal: AbortSignal | null | undefined,
|
|
49
|
-
): { signal: AbortSignal; dispose: () => void } {
|
|
46
|
+
function exchangeDeadline(timeout: number | undefined, callerSignal: AbortSignal | null | undefined) {
|
|
50
47
|
const deadline = new AbortController();
|
|
51
48
|
const timer =
|
|
52
49
|
timeout === undefined
|
|
@@ -104,10 +101,7 @@ interface X509TokenRequestContext {
|
|
|
104
101
|
fetchOptions: MergedRequestInit;
|
|
105
102
|
}
|
|
106
103
|
|
|
107
|
-
function waitForRefresh(
|
|
108
|
-
attempt: X509RefreshAttempt,
|
|
109
|
-
signal: AbortSignal,
|
|
110
|
-
): { result: Promise<X509ExchangedToken>; dispose: () => void } {
|
|
104
|
+
function waitForRefresh(attempt: X509RefreshAttempt, signal: AbortSignal) {
|
|
111
105
|
let abort: (() => void) | undefined;
|
|
112
106
|
// AbortSignal remains callback-only on supported TypeScript/runtime combinations.
|
|
113
107
|
// oxlint-disable-next-line promise/avoid-new -- A callback-only AbortSignal must race a shared refresh.
|
|
@@ -145,6 +139,7 @@ export function isX509WorkloadIdentity(
|
|
|
145
139
|
}
|
|
146
140
|
break;
|
|
147
141
|
}
|
|
142
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; the traversal checks descriptors rather than assuming a credential-provider subtype.
|
|
148
143
|
providerOwner = Object.getPrototypeOf(providerOwner) as object | null;
|
|
149
144
|
}
|
|
150
145
|
|
|
@@ -157,6 +152,7 @@ export function isX509WorkloadIdentity(
|
|
|
157
152
|
}
|
|
158
153
|
return discriminator.value === 'x509';
|
|
159
154
|
}
|
|
155
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; the traversal checks descriptors rather than assuming a credential-provider subtype.
|
|
160
156
|
current = Object.getPrototypeOf(current) as object | null;
|
|
161
157
|
}
|
|
162
158
|
return false;
|
|
@@ -267,9 +263,11 @@ export class X509WorkloadIdentityAuth {
|
|
|
267
263
|
type: 'x509',
|
|
268
264
|
identityProviderId: this.#identityProviderId,
|
|
269
265
|
serviceAccountId: this.#serviceAccountId,
|
|
266
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
270
267
|
...(this.#configuredRefreshBufferMs === undefined
|
|
271
268
|
? {}
|
|
272
269
|
: { refreshBufferMs: this.#configuredRefreshBufferMs }),
|
|
270
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
273
271
|
...(this.#configuredRefreshBufferSeconds === undefined
|
|
274
272
|
? {}
|
|
275
273
|
: { refreshBufferSeconds: this.#configuredRefreshBufferSeconds }),
|
|
@@ -302,6 +300,7 @@ export class X509WorkloadIdentityAuth {
|
|
|
302
300
|
if (!defaultHeaders || !requestHeaders) {
|
|
303
301
|
throw new OpenAIError('X.509 workload identity requires snapshotted request headers.');
|
|
304
302
|
}
|
|
303
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The exposed snapshot contract deliberately hides the private request-scope representation.
|
|
305
304
|
return { defaultHeaders, requestHeaders };
|
|
306
305
|
}
|
|
307
306
|
|
|
@@ -495,6 +494,7 @@ export class X509WorkloadIdentityAuth {
|
|
|
495
494
|
}
|
|
496
495
|
|
|
497
496
|
/** Establishes an independent scope even when concurrent requests share caller options. */
|
|
497
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Logical request owners are opaque identity tokens; their properties are never read.
|
|
498
498
|
runRequest<T>(operation: () => Promise<T>, requestOwner: object): Promise<T> {
|
|
499
499
|
return this.#transport.run(async () => {
|
|
500
500
|
const scope = this.#transport.current();
|
|
@@ -515,6 +515,7 @@ export class X509WorkloadIdentityAuth {
|
|
|
515
515
|
}
|
|
516
516
|
|
|
517
517
|
/** Reports whether a public request-building call already belongs to an active logical operation. */
|
|
518
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Request scope membership compares the opaque caller token by identity only.
|
|
518
519
|
inRequest(requestOwner: object): boolean {
|
|
519
520
|
const scope = this.#transport.current();
|
|
520
521
|
return scope?.owner === this && scope.requestOwner === requestOwner && scope.phase !== 'authorizing';
|
|
@@ -540,9 +541,13 @@ export class X509WorkloadIdentityAuth {
|
|
|
540
541
|
wallStartedAt,
|
|
541
542
|
monotonicStartedAt,
|
|
542
543
|
owner: this,
|
|
544
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
543
545
|
...(deadlineArmed ? { deadlineArmed } : {}),
|
|
546
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
544
547
|
...(request ? { request } : {}),
|
|
548
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
545
549
|
...(effectiveSignal ? { effectiveSignal } : {}),
|
|
550
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
546
551
|
...(requestOwner ? { requestOwner } : {}),
|
|
547
552
|
};
|
|
548
553
|
return (operation) =>
|
package/src/internal/bedrock.ts
CHANGED
|
@@ -54,6 +54,7 @@ export type BedrockAuthFactory = () => BedrockRequestAuth;
|
|
|
54
54
|
|
|
55
55
|
/** Wraps a provider failure in an SDK error while preserving its original cause. */
|
|
56
56
|
export function errorWithCause(message: string, cause: unknown): Errors.OpenAIError {
|
|
57
|
+
// SAFETY: This SDK error is created locally and receives its optional cause immediately below; no existing error shape is trusted.
|
|
57
58
|
const error = new Errors.OpenAIError(message) as Errors.OpenAIError & { cause?: unknown };
|
|
58
59
|
error.cause = cause;
|
|
59
60
|
return error;
|
|
@@ -61,6 +62,7 @@ export function errorWithCause(message: string, cause: unknown): Errors.OpenAIEr
|
|
|
61
62
|
|
|
62
63
|
/** Trims a configuration string, treating missing and whitespace-only values as absent. */
|
|
63
64
|
export function normalizeOptionalString(value: string | null | undefined): string | undefined {
|
|
65
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
|
|
64
66
|
const normalized = typeof value === 'string' ? value.trim() : undefined;
|
|
65
67
|
return normalized || undefined;
|
|
66
68
|
}
|
|
@@ -207,6 +209,7 @@ export function resolveBedrockEndpoint(options: BedrockEndpointOptions): {
|
|
|
207
209
|
const endpoint =
|
|
208
210
|
options.endpoint ?? parseBedrockEndpointHostname(new URL(baseURL).hostname)?.endpoint ?? 'mantle';
|
|
209
211
|
validateCanonicalBedrockEndpoint(baseURL, endpoint, region);
|
|
212
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- Preserve the declared endpoint resolver contract across configured URLs and inferred regions.
|
|
210
213
|
return { endpoint, region, baseURL };
|
|
211
214
|
}
|
|
212
215
|
const endpoint = options.endpoint ?? 'mantle';
|
|
@@ -220,6 +223,7 @@ export function resolveBedrockEndpoint(options: BedrockEndpointOptions): {
|
|
|
220
223
|
endpoint === 'runtime'
|
|
221
224
|
? `bedrock-runtime.${region}.${resolveRuntimeDnsSuffixes(region)[0]}`
|
|
222
225
|
: `bedrock-mantle.${region}.api.aws`;
|
|
226
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The resolver intentionally returns its declared endpoint contract across all configuration paths.
|
|
223
227
|
return { endpoint, region, baseURL: `https://${hostname}/openai/v1` };
|
|
224
228
|
}
|
|
225
229
|
|
|
@@ -245,7 +249,9 @@ export function assertBedrockRequestOrigin(baseURL: string, requestURL: string):
|
|
|
245
249
|
}
|
|
246
250
|
|
|
247
251
|
/** Validates a final WebSocket URL before a legacy Bedrock client resolves or attaches credentials. */
|
|
252
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- The WebSocket authentication boundary verifies the caller client at runtime before trusting provider metadata.
|
|
248
253
|
export function assertBedrockWebSocketOrigin(client: unknown, requestURL: URL): void {
|
|
254
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
|
|
249
255
|
if (typeof client !== 'object' || client === null || !(brand_privateBedrockClient in client)) {
|
|
250
256
|
return;
|
|
251
257
|
}
|
|
@@ -257,7 +263,9 @@ export function assertBedrockWebSocketOrigin(client: unknown, requestURL: URL):
|
|
|
257
263
|
normalizedRequestURL.protocol = 'http:';
|
|
258
264
|
}
|
|
259
265
|
|
|
266
|
+
// SAFETY: The private Bedrock brand checked above identifies the client whose baseURL is validated against the finalized request origin.
|
|
260
267
|
assertBedrockRequestOrigin(
|
|
268
|
+
// oxlint-disable-next-line anti-slop/no-chained-type-assertions -- The private Bedrock client brand checked above identifies the client baseURL contract.
|
|
261
269
|
(client as unknown as { baseURL: string }).baseURL,
|
|
262
270
|
normalizedRequestURL.toString(),
|
|
263
271
|
);
|
|
@@ -346,6 +354,7 @@ function resolveAbortableBedrockAuth<T>(
|
|
|
346
354
|
}
|
|
347
355
|
};
|
|
348
356
|
|
|
357
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- Failures and rejection reasons can be arbitrary JavaScript values; preserve them until inspection or forwarding.
|
|
349
358
|
const rejectSignalFailure = (error: unknown) => {
|
|
350
359
|
if (failure.error) {
|
|
351
360
|
return;
|
|
@@ -483,6 +492,7 @@ class BedrockBearerAuth implements BedrockRequestAuth {
|
|
|
483
492
|
resolve: () => this.tokenProvider(),
|
|
484
493
|
failureMessage: 'Failed to resolve a bearer credential for Bedrock.',
|
|
485
494
|
apply: (token) => {
|
|
495
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
|
|
486
496
|
if (typeof token !== 'string' || !token.trim()) {
|
|
487
497
|
throw new Errors.OpenAIError(
|
|
488
498
|
'The Bedrock bearer credential provider must return a non-empty string.',
|
|
@@ -533,6 +543,7 @@ export function resolveBedrockBearerAuth(
|
|
|
533
543
|
if (
|
|
534
544
|
options.apiKey !== undefined &&
|
|
535
545
|
options.apiKey !== null &&
|
|
546
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
|
|
536
547
|
(typeof options.apiKey !== 'string' || !options.apiKey.trim())
|
|
537
548
|
) {
|
|
538
549
|
throw new Errors.OpenAIError('The Bedrock bearer credential must not be empty.');
|
|
@@ -545,13 +556,16 @@ export function resolveBedrockBearerAuth(
|
|
|
545
556
|
|
|
546
557
|
if (options.tokenProvider) {
|
|
547
558
|
const tokenProvider = options.tokenProvider;
|
|
559
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared bearer-auth contract hides concrete authenticator implementations behind their factory.
|
|
548
560
|
return { factory: () => new BedrockBearerAuth(tokenProvider), explicit: true };
|
|
549
561
|
}
|
|
550
562
|
if (options.apiKey != null) {
|
|
551
563
|
const apiKey = options.apiKey;
|
|
564
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- Explicit API keys use the same declared auth-factory contract as token providers.
|
|
552
565
|
return { factory: () => new BedrockBearerAuth(async () => apiKey), explicit: true };
|
|
553
566
|
}
|
|
554
567
|
if (allowEnvironment && options.apiKey !== null && readEnv('AWS_BEARER_TOKEN_BEDROCK')) {
|
|
568
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- Environment credentials must preserve the same declared auth-factory contract as explicit options.
|
|
555
569
|
return {
|
|
556
570
|
explicit: false,
|
|
557
571
|
factory: () =>
|
|
@@ -567,5 +581,6 @@ export function resolveBedrockBearerAuth(
|
|
|
567
581
|
};
|
|
568
582
|
}
|
|
569
583
|
|
|
584
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared optional factory contract also represents the absence of bearer credentials.
|
|
570
585
|
return { factory: undefined, explicit: false };
|
|
571
586
|
}
|
|
@@ -55,6 +55,7 @@ export class LineDecoder {
|
|
|
55
55
|
let binaryChunk: Uint8Array;
|
|
56
56
|
if (chunk instanceof ArrayBuffer) {
|
|
57
57
|
binaryChunk = new Uint8Array(chunk);
|
|
58
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- The line decoder accepts both text and binary chunks and must select the matching decoding path.
|
|
58
59
|
} else if (typeof chunk === 'string') {
|
|
59
60
|
binaryChunk = encodeUTF8(chunk);
|
|
60
61
|
} else {
|
package/src/internal/parse.ts
CHANGED
package/src/internal/provider.ts
CHANGED
|
@@ -54,7 +54,9 @@ export interface ProviderDefinition {
|
|
|
54
54
|
* provider configurations.
|
|
55
55
|
*/
|
|
56
56
|
const providerDefinitionsKey = Symbol.for('openai.node.providerDefinitions.v1');
|
|
57
|
+
// SAFETY: This versioned global symbol is the SDK-owned cross-copy WeakMap registry; no provider object fields are trusted through it.
|
|
57
58
|
const providerGlobal = globalThis as any;
|
|
59
|
+
// SAFETY: This versioned global symbol is the SDK-owned cross-copy WeakMap registry; no provider object fields are trusted through it.
|
|
58
60
|
const existingProviderDefinitions = providerGlobal[providerDefinitionsKey] as
|
|
59
61
|
| WeakMap<Provider, ProviderDefinition>
|
|
60
62
|
| undefined;
|
|
@@ -70,6 +72,7 @@ if (!existingProviderDefinitions) {
|
|
|
70
72
|
* installed copy of the SDK in the same JavaScript realm.
|
|
71
73
|
*/
|
|
72
74
|
export function createProvider(definition: ProviderDefinition): Provider {
|
|
75
|
+
// SAFETY: This function creates the opaque handle and immediately registers its identity in the private WeakMap, which is the runtime brand check.
|
|
73
76
|
const provider = Object.freeze({}) as Provider;
|
|
74
77
|
providerDefinitions.set(provider, definition);
|
|
75
78
|
return provider;
|
|
@@ -22,6 +22,7 @@ const push_to_array = function push_to_array(arr: any[], value_or_array: any) {
|
|
|
22
22
|
|
|
23
23
|
let toISOString;
|
|
24
24
|
|
|
25
|
+
// SAFETY: The defaults object supplies the serializer's established non-null option values and RFC formatter; callers still merge their overrides separately.
|
|
25
26
|
const defaults = {
|
|
26
27
|
addQueryPrefix: false,
|
|
27
28
|
allowDots: false,
|
|
@@ -172,6 +173,7 @@ function inner_stringify(
|
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
for (const key of obj_keys) {
|
|
176
|
+
// SAFETY: The serializer supports its existing encoded-key wrapper or property key; the branch selects the wrapper value before indexing the object.
|
|
175
177
|
const value =
|
|
176
178
|
// @ts-ignore
|
|
177
179
|
typeof key === 'object' && key.value !== undefined ? key.value : obj[key as any];
|
|
@@ -180,6 +182,7 @@ function inner_stringify(
|
|
|
180
182
|
continue;
|
|
181
183
|
}
|
|
182
184
|
|
|
185
|
+
// SAFETY: Dot encoding applies the serializer's existing string-key protocol; this cast preserves its legacy mixed key representation.
|
|
183
186
|
// @ts-ignore
|
|
184
187
|
const encoded_key = allowDots && encodeDotInKeys ? (key as any).replace(/\./g, '%2E') : key;
|
|
185
188
|
let key_prefix: string;
|
package/src/internal/qs/utils.ts
CHANGED
|
@@ -2,16 +2,20 @@ import { RFC1738 } from './formats';
|
|
|
2
2
|
import type { DefaultEncoder, Format } from './types';
|
|
3
3
|
import { isArray } from '../utils/values';
|
|
4
4
|
|
|
5
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The cached own-property predicate accepts arrays, callable objects, and records.
|
|
5
6
|
let cachedHas: ((obj: object, key: PropertyKey) => boolean) | undefined;
|
|
6
7
|
|
|
8
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Own-property lookup is a generic object primitive and must preserve array and callable inputs.
|
|
7
9
|
export const has = (obj: object, key: PropertyKey): boolean => {
|
|
10
|
+
// SAFETY: Object.hasOwn is an optional native capability; older runtimes use the bound hasOwnProperty fallback with the same own-key semantics.
|
|
11
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The native or compatibility own-property predicate has the same generic object contract.
|
|
8
12
|
const resolvedHas: (obj: object, key: PropertyKey) => boolean =
|
|
9
13
|
cachedHas ?? (Object as any).hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty);
|
|
10
14
|
cachedHas = resolvedHas;
|
|
11
15
|
return resolvedHas(obj, key);
|
|
12
16
|
};
|
|
13
17
|
|
|
14
|
-
function isUnsafePropertyKey(key:
|
|
18
|
+
function isUnsafePropertyKey(key: PropertyKey): boolean {
|
|
15
19
|
return key === '__proto__' || key === 'constructor' || key === 'prototype';
|
|
16
20
|
}
|
|
17
21
|
|
|
@@ -39,6 +43,7 @@ interface MergeState {
|
|
|
39
43
|
const maxAdoptedRecords = 10_000;
|
|
40
44
|
|
|
41
45
|
function isIntrinsicFunctionPrototype(
|
|
46
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Prototype descriptors are inspected before deciding whether an arbitrary adopted value is callable.
|
|
42
47
|
value: object,
|
|
43
48
|
key: PropertyKey,
|
|
44
49
|
descriptor: PropertyDescriptor,
|
|
@@ -52,6 +57,7 @@ function isObjectLike(value: unknown): value is object {
|
|
|
52
57
|
return value !== null && (typeof value === 'object' || typeof value === 'function');
|
|
53
58
|
}
|
|
54
59
|
|
|
60
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Adoption records retain arbitrary merge-target identities for later descriptor validation.
|
|
55
61
|
function rememberAdoption(state: MergeState, target: object, key: PropertyKey, value: any): void {
|
|
56
62
|
if (!isObjectLike(value)) {
|
|
57
63
|
return;
|
|
@@ -77,6 +83,7 @@ function sanitizeAdoptions(state: MergeState): void {
|
|
|
77
83
|
}[] = [];
|
|
78
84
|
let inspectedProperties = 0;
|
|
79
85
|
|
|
86
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Adoption validation inspects arbitrary objects, including arrays and functions, before trusting their structure.
|
|
80
87
|
function inspect(value: object): AdoptedRecord {
|
|
81
88
|
const known = records.get(value);
|
|
82
89
|
if (known) {
|
|
@@ -131,7 +138,7 @@ function sanitizeAdoptions(state: MergeState): void {
|
|
|
131
138
|
const detached: AdoptedRecord[] = [];
|
|
132
139
|
for (const record of visited) {
|
|
133
140
|
for (const key of record.keys) {
|
|
134
|
-
const descriptor =
|
|
141
|
+
const descriptor = record.descriptors[key];
|
|
135
142
|
if (!descriptor) {
|
|
136
143
|
continue;
|
|
137
144
|
}
|
|
@@ -204,7 +211,7 @@ function sanitizeAdoptions(state: MergeState): void {
|
|
|
204
211
|
if (isUnsafePropertyKey(key)) {
|
|
205
212
|
continue;
|
|
206
213
|
}
|
|
207
|
-
const descriptor =
|
|
214
|
+
const descriptor = record.descriptors[key];
|
|
208
215
|
if (!descriptor) {
|
|
209
216
|
continue;
|
|
210
217
|
}
|
|
@@ -239,12 +246,14 @@ function readPreparedTarget(state: MergeState, target: any, key: PropertyKey): a
|
|
|
239
246
|
return target[key];
|
|
240
247
|
}
|
|
241
248
|
|
|
249
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Merge targets may contain accessors or custom prototypes, so the preview preserves the generic object boundary.
|
|
242
250
|
function previewTarget(state: MergeState, target: object, key: PropertyKey): any {
|
|
243
251
|
const descriptor = Object.getOwnPropertyDescriptor(target, key);
|
|
244
252
|
if (descriptor && 'value' in descriptor) {
|
|
245
253
|
return descriptor.value;
|
|
246
254
|
}
|
|
247
255
|
|
|
256
|
+
// oxlint-disable-next-line anti-slop/no-reflect-get -- Generic query merging snapshots arbitrary inherited/accessor keys before mutation.
|
|
248
257
|
const value = Reflect.get(target, key, target);
|
|
249
258
|
let prepared = state.preparedTargets.get(target);
|
|
250
259
|
if (!prepared) {
|
|
@@ -280,11 +289,13 @@ function prepareMergeSource(target: any, source: any, state: MergeState, assign
|
|
|
280
289
|
}
|
|
281
290
|
state.inspectedSourceProperties += sourceKeys.length;
|
|
282
291
|
const sourceIsArray = isArray(source);
|
|
292
|
+
// oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- The query merge graph preserves heterogeneous scalar, array, and object values under its existing merge contract.
|
|
283
293
|
const prepared: Record<string, any> = sourceIsArray ? [] : Object.create(null);
|
|
284
294
|
preparedTargets.set(target, prepared);
|
|
285
295
|
|
|
286
296
|
if (isArray(target) && sourceIsArray && !assign) {
|
|
287
297
|
const sourceLength = source.length;
|
|
298
|
+
// SAFETY: prepared was constructed as an array when sourceIsArray is true, which this branch requires.
|
|
288
299
|
(prepared as any[]).length = sourceLength;
|
|
289
300
|
for (let index = 0; index < sourceLength; index += 1) {
|
|
290
301
|
if (!(index in source)) {
|