openai 7.16.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 +28 -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 +1 -0
- package/client.d.mts.map +1 -1
- package/client.d.ts +1 -0
- package/client.d.ts.map +1 -1
- package/client.js +27 -6
- package/client.js.map +1 -1
- package/client.mjs +27 -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 +9 -0
- package/internal/ws.d.mts.map +1 -1
- package/internal/ws.d.ts +9 -0
- package/internal/ws.d.ts.map +1 -1
- package/internal/ws.js +36 -4
- package/internal/ws.js.map +1 -1
- package/internal/ws.mjs +35 -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/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 -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 +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 +5 -1
- package/resources/beta/responses/ws-base.d.mts.map +1 -1
- package/resources/beta/responses/ws-base.d.ts +5 -1
- package/resources/beta/responses/ws-base.d.ts.map +1 -1
- package/resources/beta/responses/ws-base.js +2 -4
- package/resources/beta/responses/ws-base.js.map +1 -1
- package/resources/beta/responses/ws-base.mjs +2 -4
- 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 +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/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/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 +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 +5 -1
- package/resources/responses/ws-base.d.mts.map +1 -1
- package/resources/responses/ws-base.d.ts +5 -1
- package/resources/responses/ws-base.d.ts.map +1 -1
- package/resources/responses/ws-base.js +2 -4
- package/resources/responses/ws-base.js.map +1 -1
- package/resources/responses/ws-base.mjs +2 -4
- 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 +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 +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 +35 -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 +44 -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/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 -11
- package/src/resources/beta/responses/responses.ts +58 -0
- package/src/resources/beta/responses/ws-base.ts +7 -5
- package/src/resources/beta/responses/ws.ts +21 -6
- package/src/resources/live/forks/internal-base.ts +24 -5
- package/src/resources/live/internal-base.ts +24 -5
- package/src/resources/live/sideband/internal-base.ts +24 -5
- package/src/resources/responses/api.md +1 -0
- package/src/resources/responses/internal-base.ts +24 -11
- package/src/resources/responses/responses.ts +41 -0
- package/src/resources/responses/ws-base.ts +7 -5
- package/src/resources/responses/ws.ts +21 -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
package/src/lib/EventStream.ts
CHANGED
|
@@ -30,10 +30,12 @@ const bufferedJSONStringify = JSON.stringify;
|
|
|
30
30
|
const bufferedJSONParse = JSON.parse;
|
|
31
31
|
const sdkOwnedBufferedEventArguments = new WeakSet<object>();
|
|
32
32
|
|
|
33
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
33
34
|
const typedArrayBufferGetter = Object.getOwnPropertyDescriptor(
|
|
34
35
|
Object.getPrototypeOf(Uint8Array.prototype) as object,
|
|
35
36
|
'buffer',
|
|
36
37
|
)?.get;
|
|
38
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
37
39
|
const typedArrayLengthGetter = Object.getOwnPropertyDescriptor(
|
|
38
40
|
Object.getPrototypeOf(Uint8Array.prototype) as object,
|
|
39
41
|
'length',
|
|
@@ -51,6 +53,8 @@ const errorStackDescriptor = Object.getOwnPropertyDescriptor(new Error('native s
|
|
|
51
53
|
const functionToString = Function.prototype.toString;
|
|
52
54
|
const objectToString = Object.prototype.toString;
|
|
53
55
|
const errorBrandDescriptor = Object.getOwnPropertyDescriptor(Error, 'isError');
|
|
56
|
+
// The native Error.isError predicate brands arbitrary values before an Error contract can be assumed.
|
|
57
|
+
// SAFETY: The captured native Error.isError property was checked to be a function before it is used as a brand predicate.
|
|
54
58
|
const nativeErrorBrand =
|
|
55
59
|
errorBrandDescriptor && 'value' in errorBrandDescriptor && typeof errorBrandDescriptor.value === 'function'
|
|
56
60
|
? (errorBrandDescriptor.value as (value: unknown) => boolean)
|
|
@@ -82,8 +86,10 @@ const trustedNativeConstructorSources = new Set<string>();
|
|
|
82
86
|
const canonicalIntrinsicDescriptors = new Map<string, ReadonlyMap<PropertyKey, PropertyDescriptor>>();
|
|
83
87
|
const foreignErrorStackDescriptors = new WeakMap<object, PropertyDescriptor>();
|
|
84
88
|
|
|
89
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Native and cross-realm constructor identities are inspected without assuming an unvalidated result type.
|
|
85
90
|
type NativeErrorConstructor = (...args: never[]) => unknown;
|
|
86
91
|
|
|
92
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The native proxy predicate accepts arbitrary object identities without invoking their handlers.
|
|
87
93
|
function captureNativeProxyDetector(): ((value: object) => boolean) | undefined {
|
|
88
94
|
if (typeof process === 'undefined') {
|
|
89
95
|
return undefined;
|
|
@@ -94,6 +100,7 @@ function captureNativeProxyDetector(): ((value: object) => boolean) | undefined
|
|
|
94
100
|
if (!loader || !('value' in loader) || typeof loader.value !== 'function') {
|
|
95
101
|
return undefined;
|
|
96
102
|
}
|
|
103
|
+
// oxlint-disable-next-line anti-slop/no-reflect-apply -- Invoke the descriptor value without reading a potentially overridden call property.
|
|
97
104
|
const util: unknown = Reflect.apply(loader.value, process, ['node:util']);
|
|
98
105
|
if (typeof util !== 'object' || util === null) {
|
|
99
106
|
return undefined;
|
|
@@ -106,6 +113,8 @@ function captureNativeProxyDetector(): ((value: object) => boolean) | undefined
|
|
|
106
113
|
if (!detector || !('value' in detector) || typeof detector.value !== 'function') {
|
|
107
114
|
return undefined;
|
|
108
115
|
}
|
|
116
|
+
// SAFETY: The native detector data property was checked to be callable; it is invoked only to test the corresponding intrinsic object brand.
|
|
117
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The captured native predicate is called only for objects, before their properties are inspected.
|
|
109
118
|
return detector.value as (value: object) => boolean;
|
|
110
119
|
} catch {
|
|
111
120
|
return undefined;
|
|
@@ -130,6 +139,7 @@ function rememberTrustedIntrinsic(constructor: unknown): void {
|
|
|
130
139
|
return;
|
|
131
140
|
}
|
|
132
141
|
|
|
142
|
+
// SAFETY: The prototype data descriptor was checked as a non-null object before adding its identity to the trusted-intrinsic set.
|
|
133
143
|
trustedIntrinsicPrototypes.add(prototypeDescriptor.value as object);
|
|
134
144
|
const source = functionToString.call(constructor);
|
|
135
145
|
if (
|
|
@@ -194,6 +204,7 @@ for (const name of [
|
|
|
194
204
|
}
|
|
195
205
|
}
|
|
196
206
|
|
|
207
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
197
208
|
const typedArrayConstructorDescriptor = Object.getOwnPropertyDescriptor(
|
|
198
209
|
Object.getPrototypeOf(Uint8Array.prototype) as object,
|
|
199
210
|
'constructor',
|
|
@@ -216,6 +227,7 @@ const blobInternalHandlePrototype = (() => {
|
|
|
216
227
|
for (const key of Object.getOwnPropertySymbols(blob)) {
|
|
217
228
|
const descriptor = Object.getOwnPropertyDescriptor(blob, key);
|
|
218
229
|
if (descriptor && 'value' in descriptor && typeof descriptor.value === 'object' && descriptor.value) {
|
|
230
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
219
231
|
return Object.getPrototypeOf(descriptor.value) as object;
|
|
220
232
|
}
|
|
221
233
|
}
|
|
@@ -229,6 +241,7 @@ const mapEntries = Map.prototype.entries;
|
|
|
229
241
|
const setValues = Set.prototype.values;
|
|
230
242
|
const headersEntriesDescriptor =
|
|
231
243
|
typeof Headers === 'function' ? Object.getOwnPropertyDescriptor(Headers.prototype, 'entries') : undefined;
|
|
244
|
+
// SAFETY: The own Headers entries data property was checked to be callable and retains the native method signature.
|
|
232
245
|
const headersEntries =
|
|
233
246
|
headersEntriesDescriptor &&
|
|
234
247
|
'value' in headersEntriesDescriptor &&
|
|
@@ -252,12 +265,14 @@ interface TrustedForeignIntrinsic {
|
|
|
252
265
|
functionPrototype: object;
|
|
253
266
|
}
|
|
254
267
|
|
|
268
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Foreign prototypes are untrusted objects until their constructor descriptors are verified.
|
|
255
269
|
function getTrustedForeignIntrinsic(prototype: object): TrustedForeignIntrinsic | undefined {
|
|
256
270
|
const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
|
|
257
271
|
if (!descriptor || !('value' in descriptor) || typeof descriptor.value !== 'function') {
|
|
258
272
|
return undefined;
|
|
259
273
|
}
|
|
260
274
|
|
|
275
|
+
// SAFETY: The descriptor contains a function; the following native-source and prototype checks verify the Error constructor before use.
|
|
261
276
|
const constructor = descriptor.value as NativeErrorConstructor;
|
|
262
277
|
const source = functionToString.call(constructor);
|
|
263
278
|
const descriptors = canonicalIntrinsicDescriptors.get(source);
|
|
@@ -276,9 +291,11 @@ function getTrustedForeignIntrinsic(prototype: object): TrustedForeignIntrinsic
|
|
|
276
291
|
return undefined;
|
|
277
292
|
}
|
|
278
293
|
|
|
294
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
279
295
|
return { constructor, descriptors, functionPrototype: Object.getPrototypeOf(constructor) as object };
|
|
280
296
|
}
|
|
281
297
|
|
|
298
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Intrinsic trust is established by object identity or verified cross-realm descriptors.
|
|
282
299
|
function isTrustedIntrinsicPrototype(prototype: object): boolean {
|
|
283
300
|
return trustedIntrinsicPrototypes.has(prototype) || getTrustedForeignIntrinsic(prototype) !== undefined;
|
|
284
301
|
}
|
|
@@ -286,6 +303,7 @@ function isTrustedIntrinsicPrototype(prototype: object): boolean {
|
|
|
286
303
|
function isCanonicalIntrinsicFunction(
|
|
287
304
|
value: unknown,
|
|
288
305
|
canonical: unknown,
|
|
306
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Cross-realm function prototypes are compared by identity without trusting a callable signature.
|
|
289
307
|
functionPrototype: object,
|
|
290
308
|
): boolean {
|
|
291
309
|
if (canonical === undefined) {
|
|
@@ -301,6 +319,7 @@ function isCanonicalIntrinsicFunction(
|
|
|
301
319
|
return false;
|
|
302
320
|
}
|
|
303
321
|
|
|
322
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
304
323
|
const actualFunctionPrototype = Object.getPrototypeOf(value) as object;
|
|
305
324
|
if (actualFunctionPrototype === functionPrototype) {
|
|
306
325
|
return true;
|
|
@@ -319,6 +338,7 @@ function isCanonicalIntrinsicFunction(
|
|
|
319
338
|
function isCanonicalIntrinsicDescriptor(
|
|
320
339
|
descriptor: PropertyDescriptor,
|
|
321
340
|
canonical: PropertyDescriptor | undefined,
|
|
341
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Descriptor validation compares the verified function-prototype identity without reading its fields.
|
|
322
342
|
functionPrototype: object,
|
|
323
343
|
): boolean {
|
|
324
344
|
if (
|
|
@@ -349,6 +369,7 @@ function isCanonicalIntrinsicDescriptor(
|
|
|
349
369
|
);
|
|
350
370
|
}
|
|
351
371
|
|
|
372
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Native error branding must inspect arbitrary objects before assuming an Error contract.
|
|
352
373
|
function hasNativeErrorBrand(current: object): boolean {
|
|
353
374
|
if (nativeErrorBrand) {
|
|
354
375
|
return nativeErrorBrand.call(Error, current);
|
|
@@ -359,6 +380,7 @@ function hasNativeErrorBrand(current: object): boolean {
|
|
|
359
380
|
if (Object.getOwnPropertyDescriptor(prototype, Symbol.toStringTag)) {
|
|
360
381
|
return false;
|
|
361
382
|
}
|
|
383
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
362
384
|
prototype = Object.getPrototypeOf(prototype) as object | null;
|
|
363
385
|
}
|
|
364
386
|
|
|
@@ -366,6 +388,7 @@ function hasNativeErrorBrand(current: object): boolean {
|
|
|
366
388
|
}
|
|
367
389
|
|
|
368
390
|
function getVerifiedForeignErrorConstructor(
|
|
391
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Foreign error constructors are verified from descriptors of an otherwise untrusted object.
|
|
369
392
|
current: object,
|
|
370
393
|
stackDescriptor: PropertyDescriptor,
|
|
371
394
|
): { constructor: NativeErrorConstructor; prototype: object } | undefined {
|
|
@@ -373,15 +396,18 @@ function getVerifiedForeignErrorConstructor(
|
|
|
373
396
|
return undefined;
|
|
374
397
|
}
|
|
375
398
|
|
|
399
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
376
400
|
let prototype = Object.getPrototypeOf(current) as object | null;
|
|
377
401
|
for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
|
|
378
402
|
const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
|
|
379
403
|
if (descriptor && 'value' in descriptor && typeof descriptor.value === 'function') {
|
|
404
|
+
// SAFETY: The descriptor contains a function; the following intrinsic and constructor-prototype checks decide whether it is a trusted Error constructor.
|
|
380
405
|
const constructor = descriptor.value as NativeErrorConstructor;
|
|
381
406
|
if (
|
|
382
407
|
functionToString.call(constructor) === nativeErrorConstructorSource &&
|
|
383
408
|
isTrustedIntrinsicPrototype(prototype)
|
|
384
409
|
) {
|
|
410
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
385
411
|
const functionPrototype = Object.getPrototypeOf(constructor) as object;
|
|
386
412
|
if (
|
|
387
413
|
Object.getPrototypeOf(stackDescriptor.get) === functionPrototype &&
|
|
@@ -392,12 +418,14 @@ function getVerifiedForeignErrorConstructor(
|
|
|
392
418
|
return undefined;
|
|
393
419
|
}
|
|
394
420
|
}
|
|
421
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
395
422
|
prototype = Object.getPrototypeOf(prototype) as object | null;
|
|
396
423
|
}
|
|
397
424
|
|
|
398
425
|
return undefined;
|
|
399
426
|
}
|
|
400
427
|
|
|
428
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Stack accessors are trusted only after the object passes native error branding.
|
|
401
429
|
function isTrustedNativeErrorStack(current: object, descriptor: PropertyDescriptor): boolean {
|
|
402
430
|
if (!hasNativeErrorBrand(current)) {
|
|
403
431
|
return false;
|
|
@@ -421,6 +449,7 @@ function isTrustedNativeErrorStack(current: object, descriptor: PropertyDescript
|
|
|
421
449
|
|
|
422
450
|
let canonicalDescriptor = foreignErrorStackDescriptors.get(verified.prototype);
|
|
423
451
|
if (!canonicalDescriptor) {
|
|
452
|
+
// SAFETY: Reflect.construct returns an untyped value; unknown preserves that uncertainty for the descriptor checks below.
|
|
424
453
|
const canonical = Reflect.construct(verified.constructor, []) as unknown;
|
|
425
454
|
if (
|
|
426
455
|
typeof canonical !== 'object' ||
|
|
@@ -495,7 +524,9 @@ function createEventQueue<Value>(): EventQueue<Value> {
|
|
|
495
524
|
};
|
|
496
525
|
}
|
|
497
526
|
|
|
527
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Retained storage branding walks arbitrary object prototypes without assuming their native type.
|
|
498
528
|
function getRetainedStorageBrand(current: object): string | undefined {
|
|
529
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
499
530
|
let prototype = Object.getPrototypeOf(current) as object | null;
|
|
500
531
|
|
|
501
532
|
for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
|
|
@@ -524,6 +555,7 @@ function getRetainedStorageBrand(current: object): string | undefined {
|
|
|
524
555
|
) {
|
|
525
556
|
return descriptor.value;
|
|
526
557
|
}
|
|
558
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
527
559
|
prototype = Object.getPrototypeOf(prototype) as object | null;
|
|
528
560
|
}
|
|
529
561
|
|
|
@@ -531,6 +563,7 @@ function getRetainedStorageBrand(current: object): string | undefined {
|
|
|
531
563
|
}
|
|
532
564
|
|
|
533
565
|
function estimateRetainedBufferBytes(
|
|
566
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Memory accounting inspects arbitrary retained objects and detects native backing storage at runtime.
|
|
534
567
|
current: object,
|
|
535
568
|
visit: (value: unknown, depth: number) => void,
|
|
536
569
|
depth: number,
|
|
@@ -540,9 +573,11 @@ function estimateRetainedBufferBytes(
|
|
|
540
573
|
let kind: RetainedStorage['kind'] = 'typed-array';
|
|
541
574
|
|
|
542
575
|
try {
|
|
576
|
+
// SAFETY: The captured intrinsic getter performs its own receiver brand check; its result stays unknown until the ArrayBuffer validation below.
|
|
543
577
|
buffer = typedArrayBufferGetter?.call(current) as unknown;
|
|
544
578
|
} catch {
|
|
545
579
|
kind = 'data-view';
|
|
580
|
+
// SAFETY: The DataView intrinsic getter performs its receiver brand check; its result stays unknown until the ArrayBuffer validation below.
|
|
546
581
|
buffer = dataViewBufferGetter?.call(current) as unknown;
|
|
547
582
|
}
|
|
548
583
|
|
|
@@ -560,6 +595,7 @@ function estimateRetainedBufferBytes(
|
|
|
560
595
|
return undefined;
|
|
561
596
|
}
|
|
562
597
|
|
|
598
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Captured native accessors are checked for a finite numeric result before retained-size accounting.
|
|
563
599
|
let getter: (() => unknown) | undefined;
|
|
564
600
|
const kind: RetainedStorage['kind'] = 'buffer';
|
|
565
601
|
switch (brand) {
|
|
@@ -582,6 +618,7 @@ function estimateRetainedBufferBytes(
|
|
|
582
618
|
return { bytes: 0, kind: 'map' };
|
|
583
619
|
}
|
|
584
620
|
case 'Date': {
|
|
621
|
+
// oxlint-disable-next-line anti-slop/no-reflect-apply -- Invoke the captured intrinsic without reading its mutable call property.
|
|
585
622
|
Reflect.apply(dateTimestampGetter, current, []);
|
|
586
623
|
return { bytes: 8, kind: 'date' };
|
|
587
624
|
}
|
|
@@ -607,6 +644,7 @@ function estimateRetainedBufferBytes(
|
|
|
607
644
|
}
|
|
608
645
|
|
|
609
646
|
function visitHiddenEventValues(
|
|
647
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Native collection contents are inspected only after storage branding, without trusting structural fields.
|
|
610
648
|
current: object,
|
|
611
649
|
kind: RetainedStorage['kind'] | undefined,
|
|
612
650
|
visit: (value: unknown, overhead: number) => boolean,
|
|
@@ -631,6 +669,7 @@ function visitHiddenEventValues(
|
|
|
631
669
|
if (!headersEntries) {
|
|
632
670
|
return false;
|
|
633
671
|
}
|
|
672
|
+
// SAFETY: The captured native Headers.entries method performs its receiver brand check inside the enclosing try/catch.
|
|
634
673
|
for (const [name, value] of headersEntries.call(current as Headers)) {
|
|
635
674
|
if (!visit(name, 8) || !visit(value, 8)) {
|
|
636
675
|
return false;
|
|
@@ -642,6 +681,7 @@ function visitHiddenEventValues(
|
|
|
642
681
|
}
|
|
643
682
|
|
|
644
683
|
function getInspectableEventKeys(
|
|
684
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Event key inspection must accept arbitrary retained objects, arrays, and native storage views.
|
|
645
685
|
current: object,
|
|
646
686
|
kind: RetainedStorage['kind'] | undefined,
|
|
647
687
|
availableBytes: number,
|
|
@@ -684,6 +724,7 @@ function getInspectableEventKeys(
|
|
|
684
724
|
}
|
|
685
725
|
|
|
686
726
|
function visitInspectableEventProperties(
|
|
727
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Retained event properties are inspected through descriptors on arbitrary object identities.
|
|
687
728
|
current: object,
|
|
688
729
|
kind: RetainedStorage['kind'] | undefined,
|
|
689
730
|
depth: number,
|
|
@@ -721,6 +762,7 @@ function visitInspectableEventProperties(
|
|
|
721
762
|
}
|
|
722
763
|
|
|
723
764
|
function visitRetainedEventPrototypes(
|
|
765
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Retention accounting follows arbitrary object prototypes without assuming their properties.
|
|
724
766
|
current: object,
|
|
725
767
|
depth: number,
|
|
726
768
|
isBlobInternalHandle: boolean,
|
|
@@ -728,8 +770,10 @@ function visitRetainedEventPrototypes(
|
|
|
728
770
|
availableBytes: () => number,
|
|
729
771
|
charge: (bytes: number) => boolean,
|
|
730
772
|
visit: (value: unknown, depth: number, isBlobInternalHandle?: boolean) => void,
|
|
773
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The retention callback records prototype identity before inspecting its descriptors.
|
|
731
774
|
retainPrototype: (prototype: object, inspect: () => boolean) => boolean,
|
|
732
775
|
): boolean {
|
|
776
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
733
777
|
let prototype = Object.getPrototypeOf(current) as object | null;
|
|
734
778
|
|
|
735
779
|
for (let prototypeDepth = depth + 1; prototype !== null; prototypeDepth += 1) {
|
|
@@ -795,6 +839,7 @@ function visitRetainedEventPrototypes(
|
|
|
795
839
|
return false;
|
|
796
840
|
}
|
|
797
841
|
|
|
842
|
+
// SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
|
|
798
843
|
prototype = Object.getPrototypeOf(retainedPrototype) as object | null;
|
|
799
844
|
}
|
|
800
845
|
|
|
@@ -861,6 +906,7 @@ function inspectBufferedEventGraph(
|
|
|
861
906
|
}
|
|
862
907
|
return bytes <= remainingBytes;
|
|
863
908
|
};
|
|
909
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The ledger records object and symbol identities, which have no shared structural contract.
|
|
864
910
|
const addIdentity = (identity: BufferedRetainedIdentity): void => {
|
|
865
911
|
if (activeNode) {
|
|
866
912
|
activeNode.edges.add(identity);
|
|
@@ -868,6 +914,7 @@ function inspectBufferedEventGraph(
|
|
|
868
914
|
roots.add(identity);
|
|
869
915
|
}
|
|
870
916
|
};
|
|
917
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Retained graph nodes are identified by object or symbol identity independently of their fields.
|
|
871
918
|
const retainIdentity = (identity: BufferedRetainedIdentity, inspect: () => boolean): boolean => {
|
|
872
919
|
addIdentity(identity);
|
|
873
920
|
const node: BufferedInspectedNode = { bytes: 0, edges: new Set() };
|
|
@@ -894,6 +941,8 @@ function inspectBufferedEventGraph(
|
|
|
894
941
|
if (!symbolDescriptionGetter) {
|
|
895
942
|
return false;
|
|
896
943
|
}
|
|
944
|
+
// SAFETY: The captured Symbol description getter is called after the symbol branch and returns a string or undefined by its native contract.
|
|
945
|
+
// oxlint-disable-next-line anti-slop/no-reflect-apply -- Invoke the captured intrinsic without reading its mutable call property.
|
|
897
946
|
const description = Reflect.apply(symbolDescriptionGetter, current, []) as string | undefined;
|
|
898
947
|
return charge(8 + (description?.length ?? 0) * 2);
|
|
899
948
|
})
|
|
@@ -1065,6 +1114,7 @@ function collectBufferedLedgerIdentities(
|
|
|
1065
1114
|
}
|
|
1066
1115
|
|
|
1067
1116
|
function getBufferedLedgerChange(
|
|
1117
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- Ledger changes are keyed by object or symbol identity, not a structural event type.
|
|
1068
1118
|
identity: BufferedRetainedIdentity,
|
|
1069
1119
|
graph: BufferedInspectedGraph,
|
|
1070
1120
|
records: Map<BufferedRetainedIdentity, BufferedLedgerRecord>,
|
|
@@ -1313,6 +1363,7 @@ function createBufferedEventLedger(): {
|
|
|
1313
1363
|
entry.identities.clear();
|
|
1314
1364
|
};
|
|
1315
1365
|
|
|
1366
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- The ledger contract contextually types its callbacks and keeps retained-identity internals private.
|
|
1316
1367
|
return {
|
|
1317
1368
|
retain(graph) {
|
|
1318
1369
|
const entry: BufferedLedgerEntry = { scalarBytes: 0, roots: new Set(), identities: new Set() };
|
|
@@ -1444,19 +1495,38 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1444
1495
|
this.controller.abort();
|
|
1445
1496
|
}
|
|
1446
1497
|
|
|
1498
|
+
/** Creates a user-abort error retaining this runner's cancellation reason. */
|
|
1499
|
+
protected _userAbortError(): APIUserAbortError {
|
|
1500
|
+
const error = new APIUserAbortError();
|
|
1501
|
+
Object.defineProperty(error, 'cause', {
|
|
1502
|
+
value: this.controller.signal.reason,
|
|
1503
|
+
writable: true,
|
|
1504
|
+
configurable: true,
|
|
1505
|
+
});
|
|
1506
|
+
return error;
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
#abortFromSignal(signal: AbortSignal) {
|
|
1510
|
+
try {
|
|
1511
|
+
this.controller.abort(signal.reason);
|
|
1512
|
+
} catch {
|
|
1513
|
+
this.controller.abort();
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1447
1517
|
protected _listenForAbort(signal: AbortSignal | null | undefined) {
|
|
1448
1518
|
if (!signal || this.ended) {
|
|
1449
1519
|
return;
|
|
1450
1520
|
}
|
|
1451
1521
|
if (signal.aborted) {
|
|
1452
|
-
this
|
|
1522
|
+
this.#abortFromSignal(signal);
|
|
1453
1523
|
return;
|
|
1454
1524
|
}
|
|
1455
1525
|
if (this.#abortListeners.some((registration) => registration.signal === signal)) {
|
|
1456
1526
|
return;
|
|
1457
1527
|
}
|
|
1458
1528
|
|
|
1459
|
-
const listener = () => this
|
|
1529
|
+
const listener = () => this.#abortFromSignal(signal);
|
|
1460
1530
|
signal.addEventListener('abort', listener, { once: true });
|
|
1461
1531
|
this.#abortListeners.push({ signal, listener });
|
|
1462
1532
|
}
|
|
@@ -1493,12 +1563,14 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1493
1563
|
return this;
|
|
1494
1564
|
}
|
|
1495
1565
|
|
|
1566
|
+
// SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
|
|
1496
1567
|
const emittedRegistration = this.#emittedListenerRegistrations.get(listener as object);
|
|
1497
1568
|
if (
|
|
1498
1569
|
emittedRegistration?.event === event &&
|
|
1499
1570
|
!emittedRegistration.registration.removed &&
|
|
1500
1571
|
!emittedRegistration.registration.detached
|
|
1501
1572
|
) {
|
|
1573
|
+
// SAFETY: The stored registration event was compared with this event above, preserving the event/listener type correlation.
|
|
1502
1574
|
this.#removeEmittedListener(
|
|
1503
1575
|
event,
|
|
1504
1576
|
emittedRegistration.registration as EventListeners<EventTypes, Event>[number],
|
|
@@ -1539,6 +1611,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1539
1611
|
registration?.listener === listener &&
|
|
1540
1612
|
registration.once
|
|
1541
1613
|
) {
|
|
1614
|
+
// SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
|
|
1542
1615
|
this.#emittedListenerRegistrations.set(listener as object, { event, registration });
|
|
1543
1616
|
}
|
|
1544
1617
|
}
|
|
@@ -1552,6 +1625,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1552
1625
|
}
|
|
1553
1626
|
|
|
1554
1627
|
registration.removed = true;
|
|
1628
|
+
// SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
|
|
1555
1629
|
this.#emittedListenerRegistrations.delete(registration.listener as object);
|
|
1556
1630
|
this.#pendingListenerCleanup.add(event);
|
|
1557
1631
|
if (this.#listenerDispatchDepth === 0) {
|
|
@@ -1561,9 +1635,11 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1561
1635
|
|
|
1562
1636
|
#cleanupEmittedListeners(): void {
|
|
1563
1637
|
for (const event of this.#pendingListenerCleanup) {
|
|
1638
|
+
// SAFETY: Pending cleanup keys are added only from registered EventTypes events; the key retains its event-map membership.
|
|
1564
1639
|
const eventType = event as keyof EventTypes;
|
|
1565
1640
|
const listeners = this.#listeners[eventType];
|
|
1566
1641
|
if (listeners) {
|
|
1642
|
+
// SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
|
|
1567
1643
|
this.#listeners[eventType] = listeners.filter((listener) => !listener.removed) as any;
|
|
1568
1644
|
}
|
|
1569
1645
|
}
|
|
@@ -1589,6 +1665,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1589
1665
|
return new Promise((resolve, reject) => {
|
|
1590
1666
|
this.#catchingPromiseCreated = true;
|
|
1591
1667
|
const onError = (error: OpenAIError) => {
|
|
1668
|
+
// SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
|
|
1592
1669
|
this.off(event, onEvent as EventListener<EventTypes, Event>);
|
|
1593
1670
|
reject(error);
|
|
1594
1671
|
};
|
|
@@ -1596,12 +1673,15 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1596
1673
|
if (event !== 'error') {
|
|
1597
1674
|
this.off('error', onError);
|
|
1598
1675
|
}
|
|
1676
|
+
// SAFETY: The emitted API returns the sole argument or the full tuple according to its existing EventTypes-dependent result contract.
|
|
1599
1677
|
resolve((values.length > 1 ? values : values[0]) as any);
|
|
1600
1678
|
};
|
|
1601
1679
|
|
|
1602
1680
|
if (event !== 'error') {
|
|
1681
|
+
// SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
|
|
1603
1682
|
this.#onceForEmitted('error', onError as EventListener<EventTypes, 'error'>);
|
|
1604
1683
|
}
|
|
1684
|
+
// SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
|
|
1605
1685
|
this.#onceForEmitted(event, onEvent as EventListener<EventTypes, Event>);
|
|
1606
1686
|
});
|
|
1607
1687
|
}
|
|
@@ -1632,7 +1712,9 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1632
1712
|
sdkOwnedBufferedEventArguments.delete(args);
|
|
1633
1713
|
}
|
|
1634
1714
|
};
|
|
1715
|
+
// SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
|
|
1635
1716
|
this.on(event, onEvent as EventListener<EventTypes, Event>);
|
|
1717
|
+
// SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
|
|
1636
1718
|
return () => this.off(event, onEvent as EventListener<EventTypes, Event>);
|
|
1637
1719
|
},
|
|
1638
1720
|
{
|
|
@@ -1685,6 +1767,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1685
1767
|
let failureDelivered = false;
|
|
1686
1768
|
let detach: () => void = () => undefined;
|
|
1687
1769
|
|
|
1770
|
+
// SAFETY: A completed iterator result has no yielded value; never preserves the iterator public result type for done: true.
|
|
1688
1771
|
const doneResult = (): Result => ({ value: undefined as never, done: true });
|
|
1689
1772
|
const finishReaders = () => {
|
|
1690
1773
|
while (readQueue.length) {
|
|
@@ -1766,10 +1849,12 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1766
1849
|
}
|
|
1767
1850
|
|
|
1768
1851
|
if (typeof value === 'object' && value !== null && sdkOwnedBufferedEventArguments.has(value)) {
|
|
1852
|
+
// SAFETY: Only SDK-created argument tuples are inserted into this private WeakSet, so membership establishes the array identity.
|
|
1769
1853
|
const argumentsTuple = value as unknown[];
|
|
1770
1854
|
for (let index = 0; index < argumentsTuple.length; index += 1) {
|
|
1771
1855
|
const argument = argumentsTuple[index];
|
|
1772
1856
|
if (typeof argument === 'string') {
|
|
1857
|
+
// SAFETY: The branch checked argument is a string; JSON stringify/parse returns that same string value while detaching retained storage.
|
|
1773
1858
|
argumentsTuple[index] = bufferedJSONParse(bufferedJSONStringify(argument)) as string;
|
|
1774
1859
|
}
|
|
1775
1860
|
}
|
|
@@ -1897,7 +1982,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1897
1982
|
#handleError(this: EventStream<EventTypes>, error: unknown) {
|
|
1898
1983
|
this.#errored = true;
|
|
1899
1984
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
1900
|
-
error =
|
|
1985
|
+
error = this._userAbortError();
|
|
1901
1986
|
}
|
|
1902
1987
|
if (error instanceof APIUserAbortError) {
|
|
1903
1988
|
this.#aborted = true;
|
|
@@ -1926,6 +2011,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1926
2011
|
hasListeners: boolean,
|
|
1927
2012
|
): void {
|
|
1928
2013
|
if (event === 'abort') {
|
|
2014
|
+
// SAFETY: The abort event key selects the APIUserAbortError argument tuple established by the typed emit contract.
|
|
1929
2015
|
const error = args[0] as APIUserAbortError;
|
|
1930
2016
|
this.#terminalFailure ??= { kind: 'abort', error };
|
|
1931
2017
|
if (!this.#catchingPromiseCreated && !hasListeners) {
|
|
@@ -1940,6 +2026,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1940
2026
|
if (event === 'error') {
|
|
1941
2027
|
// NOTE: _emit('error', error) should only be called from #handleError().
|
|
1942
2028
|
|
|
2029
|
+
// SAFETY: The error event is emitted by the error-normalization path, which supplies an OpenAIError as its first argument.
|
|
1943
2030
|
const error = args[0] as OpenAIError;
|
|
1944
2031
|
this.#terminalFailure ??= { kind: 'error', error };
|
|
1945
2032
|
if (!this.#catchingPromiseCreated && !hasListeners) {
|
|
@@ -1983,6 +2070,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1983
2070
|
let dispatchThrew = false;
|
|
1984
2071
|
try {
|
|
1985
2072
|
if (listeners) {
|
|
2073
|
+
// SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
|
|
1986
2074
|
this.#listeners[event] = listeners.filter((listener) => {
|
|
1987
2075
|
if (listener.once) {
|
|
1988
2076
|
listener.detached = true;
|
|
@@ -1991,9 +2079,11 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
1991
2079
|
}) as any;
|
|
1992
2080
|
this.#listenerDispatchDepth += 1;
|
|
1993
2081
|
try {
|
|
2082
|
+
// SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
|
|
1994
2083
|
for (const registration of listeners as any) {
|
|
1995
2084
|
if (!registration.removed) {
|
|
1996
2085
|
const { listener } = registration;
|
|
2086
|
+
// SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
|
|
1997
2087
|
listener(...(args as any));
|
|
1998
2088
|
}
|
|
1999
2089
|
}
|
|
@@ -88,6 +88,7 @@ export function maybeParseResponse<
|
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
if (needsOutputText(response, parsed)) {
|
|
91
|
+
// SAFETY: The copy retains every response field and only adds parsed metadata; addOutputText accepts that original response structure.
|
|
91
92
|
addOutputText(parsed as Response);
|
|
92
93
|
}
|
|
93
94
|
|
|
@@ -160,6 +161,7 @@ export function parseResponse<
|
|
|
160
161
|
},
|
|
161
162
|
});
|
|
162
163
|
|
|
164
|
+
// SAFETY: The output_parsed getter was installed immediately above and returns the first parsed content or null.
|
|
163
165
|
return parsed as ParsedResponse<ParsedT>;
|
|
164
166
|
}
|
|
165
167
|
|
|
@@ -203,6 +205,7 @@ type ToolOptions = {
|
|
|
203
205
|
/** A Responses API function tool with an argument parser and optional executable callback. */
|
|
204
206
|
export type AutoParseableResponseTool<
|
|
205
207
|
OptionsT extends ToolOptions,
|
|
208
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- This public conditional type detects any callable callback without constraining its return type.
|
|
206
209
|
HasFunction = OptionsT['function'] extends (...args: never[]) => unknown ? true : false,
|
|
207
210
|
> = FunctionTool & {
|
|
208
211
|
/** Type-only marker for parsed tool arguments; this property does not exist at runtime. */
|
|
@@ -248,6 +251,7 @@ export function makeParseableResponseTool<OptionsT extends ToolOptions>(
|
|
|
248
251
|
},
|
|
249
252
|
});
|
|
250
253
|
|
|
254
|
+
// SAFETY: The non-enumerable parser brand and callbacks were installed on this copied tool immediately above.
|
|
251
255
|
return obj as AutoParseableResponseTool<OptionsT>;
|
|
252
256
|
}
|
|
253
257
|
|
|
@@ -281,6 +285,7 @@ function parseToolCall<Params extends ResponseCreateParamsBase>(
|
|
|
281
285
|
): ParsedResponseFunctionToolCall {
|
|
282
286
|
const inputTool = getInputToolByName(params.tools ?? [], toolCall.name, toolCall.namespace);
|
|
283
287
|
|
|
288
|
+
// oxlint-disable-next-line anti-slop/no-known-value-widening -- Parsing replaces the initial null with an arbitrary caller-parser result, so unknown is required.
|
|
284
289
|
let parsedArguments: unknown = null;
|
|
285
290
|
if (isAutoParsableTool(inputTool)) {
|
|
286
291
|
parsedArguments = inputTool.$parseRaw(toolCall.arguments);
|
|
@@ -17,6 +17,7 @@ export type RunnableFunctionWithParse<Args extends object, ToolContext = unknown
|
|
|
17
17
|
args: Args,
|
|
18
18
|
runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
|
|
19
19
|
toolContext: ToolContext,
|
|
20
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
|
|
20
21
|
) => PromiseOrValue<unknown>;
|
|
21
22
|
/**
|
|
22
23
|
* @param input the raw args from the OpenAI function call.
|
|
@@ -51,6 +52,7 @@ export type RunnableFunctionWithoutParse<ToolContext = unknown> = {
|
|
|
51
52
|
args: string,
|
|
52
53
|
runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
|
|
53
54
|
toolContext: ToolContext,
|
|
55
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
|
|
54
56
|
) => PromiseOrValue<unknown>;
|
|
55
57
|
/**
|
|
56
58
|
* The parameters the function accepts, described as a JSON Schema object.
|
|
@@ -110,6 +112,7 @@ export type RunnableToolFunctionWithContext<ToolContext> = {
|
|
|
110
112
|
args: any,
|
|
111
113
|
runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
|
|
112
114
|
toolContext: ToolContext,
|
|
115
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
|
|
113
116
|
) => PromiseOrValue<unknown>;
|
|
114
117
|
/** Optionally converts raw JSON arguments into the callback's argument value. */
|
|
115
118
|
parse?: (input: string) => PromiseOrValue<any>;
|
|
@@ -128,7 +131,7 @@ export type RunnableToolFunctionWithContext<ToolContext> = {
|
|
|
128
131
|
export function isRunnableFunctionWithParse<Args extends object, ToolContext = unknown>(
|
|
129
132
|
fn: any,
|
|
130
133
|
): fn is RunnableFunctionWithParse<Args, ToolContext> {
|
|
131
|
-
return typeof
|
|
134
|
+
return typeof fn.parse === 'function';
|
|
132
135
|
}
|
|
133
136
|
|
|
134
137
|
/** The ordered raw-string or parsed-object argument types accepted by runnable functions. */
|
|
@@ -60,9 +60,9 @@ function normalizedOutput(value: unknown): AgentFunctionCallOutputParam | null {
|
|
|
60
60
|
throw new OpenAIError('Tool output must be text, content, a JSON object, or null');
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters -- The public AgentToolOutput contract accepts arbitrary JSON-serializable object results.
|
|
63
64
|
function toolResult(call: AgentFunctionCallItem, value: AgentToolOutput): ToolResult {
|
|
64
|
-
const output =
|
|
65
|
-
value !== null && typeof value === 'object' && !Array.isArray(value) ? JSON.stringify(value) : value;
|
|
65
|
+
const output = isObj(value) ? JSON.stringify(value) : value;
|
|
66
66
|
// Detect unserializable callback results inside the redacted failure boundary.
|
|
67
67
|
const serialized = JSON.stringify(output);
|
|
68
68
|
if (serialized === undefined) {
|
|
@@ -188,6 +188,7 @@ export class AgentSessionStream implements AsyncIterable<AgentSessionEvent> {
|
|
|
188
188
|
this.#sessionID,
|
|
189
189
|
{
|
|
190
190
|
events: [this.#input],
|
|
191
|
+
// Spread creates an own data property without invoking inherited setters or changing the object prototype.
|
|
191
192
|
...(this.#inputKey === undefined ? {} : { 'Idempotency-Key': this.#inputKey }),
|
|
192
193
|
},
|
|
193
194
|
{
|
|
@@ -234,9 +235,10 @@ export class AgentSessionStream implements AsyncIterable<AgentSessionEvent> {
|
|
|
234
235
|
async #result(call: AgentFunctionCallItem, handler: AgentToolHandler): Promise<ToolResult> {
|
|
235
236
|
try {
|
|
236
237
|
const args: unknown = typeof call.arguments === 'string' ? JSON.parse(call.arguments) : call.arguments;
|
|
237
|
-
if (
|
|
238
|
+
if (!isObj(args)) {
|
|
238
239
|
throw new OpenAIError('Function arguments must be a JSON object');
|
|
239
240
|
}
|
|
241
|
+
// SAFETY: Arguments were parsed as JSON and checked to be a non-null non-array object before invoking the handler.
|
|
240
242
|
return toolResult(call, await this.#wait(() => handler(args as Record<string, unknown>)));
|
|
241
243
|
} catch {
|
|
242
244
|
this.#checkAbort();
|
package/src/lib/embeddings.ts
CHANGED
|
@@ -55,13 +55,15 @@ export function createEmbedding(
|
|
|
55
55
|
// Preserve the original iteration length and skip sparse-array holes.
|
|
56
56
|
for (let index = 0; index < length; index += 1) {
|
|
57
57
|
if (index in embeddings) {
|
|
58
|
+
// SAFETY: This indexed entry belongs to the API embedding data array; sparse entries are skipped by the preceding membership check.
|
|
58
59
|
const embeddingBase64Obj = embeddings[index] as Embedding;
|
|
59
60
|
const { embedding } = embeddingBase64Obj;
|
|
60
61
|
// Request hooks and serialization can also select float embeddings.
|
|
61
62
|
if (Array.isArray(embedding)) {
|
|
62
63
|
continue;
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
+
// SAFETY: The Array.isArray branch already handled decoded vectors; this request explicitly asked the server for base64 encoding.
|
|
66
|
+
embeddingBase64Obj.embedding = toFloat32Array(embedding as string);
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
69
|
}
|
|
@@ -73,8 +73,10 @@ function normalizeTranscript(
|
|
|
73
73
|
const { event_id: id, delta: text, start_ms: startMs, end_ms: endMs } = event;
|
|
74
74
|
const speaker = event.type === 'session.input_transcript.delta' ? 'user' : 'assistant';
|
|
75
75
|
if (
|
|
76
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
|
|
76
77
|
typeof id !== 'string' ||
|
|
77
78
|
!id ||
|
|
79
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
|
|
78
80
|
typeof text !== 'string' ||
|
|
79
81
|
!Number.isSafeInteger(startMs) ||
|
|
80
82
|
startMs < 0 ||
|
|
@@ -272,9 +274,11 @@ export class TranscriptGrouper extends EventEmitter<TranscriptGrouperEvents> {
|
|
|
272
274
|
);
|
|
273
275
|
const timer: unknown = this.timer;
|
|
274
276
|
if (
|
|
277
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
|
|
275
278
|
typeof timer === 'object' &&
|
|
276
279
|
timer !== null &&
|
|
277
280
|
'unref' in timer &&
|
|
281
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
|
|
278
282
|
typeof timer.unref === 'function'
|
|
279
283
|
) {
|
|
280
284
|
timer.unref();
|