openai 7.5.0 → 7.6.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 +105 -0
- package/README.md +46 -2
- package/auth/index.d.mts +1 -1
- package/auth/index.d.mts.map +1 -1
- package/auth/index.d.ts +1 -1
- package/auth/index.d.ts.map +1 -1
- package/auth/index.js.map +1 -1
- package/auth/index.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 +176 -4
- package/auth/subject-token-providers.js.map +1 -1
- package/auth/subject-token-providers.mjs +176 -4
- package/auth/subject-token-providers.mjs.map +1 -1
- package/auth/types.d.mts +17 -0
- package/auth/types.d.mts.map +1 -1
- package/auth/types.d.ts +17 -0
- package/auth/types.d.ts.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 +80 -7
- package/auth/workload-identity-auth.js.map +1 -1
- package/auth/workload-identity-auth.mjs +80 -7
- package/auth/workload-identity-auth.mjs.map +1 -1
- package/auth/x509-transport.d.mts +5 -0
- package/auth/x509-transport.d.mts.map +1 -0
- package/auth/x509-transport.d.ts +5 -0
- package/auth/x509-transport.d.ts.map +1 -0
- package/auth/x509-transport.js +39 -0
- package/auth/x509-transport.js.map +1 -0
- package/auth/x509-transport.mjs +36 -0
- package/auth/x509-transport.mjs.map +1 -0
- package/azure.d.mts +11 -2
- package/azure.d.mts.map +1 -1
- package/azure.d.ts +11 -2
- package/azure.d.ts.map +1 -1
- package/azure.js +7 -1
- package/azure.js.map +1 -1
- package/azure.mjs +7 -1
- package/azure.mjs.map +1 -1
- package/bedrock.d.mts +6 -2
- package/bedrock.d.mts.map +1 -1
- package/bedrock.d.ts +6 -2
- package/bedrock.d.ts.map +1 -1
- package/bedrock.js +34 -4
- package/bedrock.js.map +1 -1
- package/bedrock.mjs +35 -5
- package/bedrock.mjs.map +1 -1
- package/beta/realtime/internal-base.d.mts +2 -0
- package/beta/realtime/internal-base.d.mts.map +1 -1
- package/beta/realtime/internal-base.d.ts +2 -0
- package/beta/realtime/internal-base.d.ts.map +1 -1
- package/beta/realtime/internal-base.js +15 -0
- package/beta/realtime/internal-base.js.map +1 -1
- package/beta/realtime/internal-base.mjs +14 -0
- package/beta/realtime/internal-base.mjs.map +1 -1
- package/beta/realtime/websocket.d.mts +11 -5
- package/beta/realtime/websocket.d.mts.map +1 -1
- package/beta/realtime/websocket.d.ts +11 -5
- package/beta/realtime/websocket.d.ts.map +1 -1
- package/beta/realtime/websocket.js +106 -31
- package/beta/realtime/websocket.js.map +1 -1
- package/beta/realtime/websocket.mjs +107 -32
- package/beta/realtime/websocket.mjs.map +1 -1
- package/beta/realtime/ws.d.mts +0 -2
- package/beta/realtime/ws.d.mts.map +1 -1
- package/beta/realtime/ws.d.ts +0 -2
- package/beta/realtime/ws.d.ts.map +1 -1
- package/beta/realtime/ws.js +24 -5
- package/beta/realtime/ws.js.map +1 -1
- package/beta/realtime/ws.mjs +25 -6
- package/beta/realtime/ws.mjs.map +1 -1
- package/client.d.mts +17 -2
- package/client.d.mts.map +1 -1
- package/client.d.ts +17 -2
- package/client.d.ts.map +1 -1
- package/client.js +422 -70
- package/client.js.map +1 -1
- package/client.mjs +423 -71
- 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 +67 -9
- package/core/EventEmitter.js.map +1 -1
- package/core/EventEmitter.mjs +68 -10
- 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 +58 -19
- package/core/streaming.js.map +1 -1
- package/core/streaming.mjs +58 -19
- package/core/streaming.mjs.map +1 -1
- package/helpers/audio.d.mts +5 -5
- package/helpers/audio.d.mts.map +1 -1
- package/helpers/audio.d.ts +5 -5
- package/helpers/audio.d.ts.map +1 -1
- package/helpers/audio.js +93 -22
- package/helpers/audio.js.map +1 -1
- package/helpers/audio.mjs +93 -22
- 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 +34 -14
- package/helpers/standard-schema.js.map +1 -1
- package/helpers/standard-schema.mjs +35 -15
- package/helpers/standard-schema.mjs.map +1 -1
- package/helpers/zod-v3-strict-schema.d.mts +7 -0
- package/helpers/zod-v3-strict-schema.d.mts.map +1 -0
- package/helpers/zod-v3-strict-schema.d.ts +7 -0
- package/helpers/zod-v3-strict-schema.d.ts.map +1 -0
- package/helpers/zod-v3-strict-schema.js +403 -0
- package/helpers/zod-v3-strict-schema.js.map +1 -0
- package/helpers/zod-v3-strict-schema.mjs +399 -0
- package/helpers/zod-v3-strict-schema.mjs.map +1 -0
- package/helpers/zod.d.mts.map +1 -1
- package/helpers/zod.d.ts.map +1 -1
- package/helpers/zod.js +11 -3
- package/helpers/zod.js.map +1 -1
- package/helpers/zod.mjs +12 -4
- package/helpers/zod.mjs.map +1 -1
- package/index.d.mts +1 -1
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js.map +1 -1
- package/index.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 +28 -8
- package/internal/assistant-stream-delta.js.map +1 -1
- package/internal/assistant-stream-delta.mjs +28 -8
- package/internal/assistant-stream-delta.mjs.map +1 -1
- package/internal/auth/x509-token-exchange.d.mts +16 -0
- package/internal/auth/x509-token-exchange.d.mts.map +1 -0
- package/internal/auth/x509-token-exchange.d.ts +16 -0
- package/internal/auth/x509-token-exchange.d.ts.map +1 -0
- package/internal/auth/x509-token-exchange.js +246 -0
- package/internal/auth/x509-token-exchange.js.map +1 -0
- package/internal/auth/x509-token-exchange.mjs +243 -0
- package/internal/auth/x509-token-exchange.mjs.map +1 -0
- package/internal/auth/x509-transport-capability.d.mts +37 -0
- package/internal/auth/x509-transport-capability.d.mts.map +1 -0
- package/internal/auth/x509-transport-capability.d.ts +37 -0
- package/internal/auth/x509-transport-capability.d.ts.map +1 -0
- package/internal/auth/x509-transport-capability.js +169 -0
- package/internal/auth/x509-transport-capability.js.map +1 -0
- package/internal/auth/x509-transport-capability.mjs +164 -0
- package/internal/auth/x509-transport-capability.mjs.map +1 -0
- package/internal/auth/x509-transport-registry.d.mts +63 -0
- package/internal/auth/x509-transport-registry.d.mts.map +1 -0
- package/internal/auth/x509-transport-registry.d.ts +63 -0
- package/internal/auth/x509-transport-registry.d.ts.map +1 -0
- package/internal/auth/x509-transport-registry.js +53 -0
- package/internal/auth/x509-transport-registry.js.map +1 -0
- package/internal/auth/x509-transport-registry.mjs +48 -0
- package/internal/auth/x509-transport-registry.mjs.map +1 -0
- package/internal/auth/x509-transport-state-browser.d.mts +21 -0
- package/internal/auth/x509-transport-state-browser.d.mts.map +1 -0
- package/internal/auth/x509-transport-state-browser.d.ts +21 -0
- package/internal/auth/x509-transport-state-browser.d.ts.map +1 -0
- package/internal/auth/x509-transport-state-browser.js +30 -0
- package/internal/auth/x509-transport-state-browser.js.map +1 -0
- package/internal/auth/x509-transport-state-browser.mjs +27 -0
- package/internal/auth/x509-transport-state-browser.mjs.map +1 -0
- package/internal/auth/x509-transport-state.cjs +30 -0
- package/internal/auth/x509-transport-state.cjs.map +1 -0
- package/internal/auth/x509-transport-state.d.cts +21 -0
- package/internal/auth/x509-transport-state.d.cts.map +1 -0
- package/internal/auth/x509-workload-identity-auth.d.mts +128 -0
- package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -0
- package/internal/auth/x509-workload-identity-auth.d.ts +128 -0
- package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -0
- package/internal/auth/x509-workload-identity-auth.js +767 -0
- package/internal/auth/x509-workload-identity-auth.js.map +1 -0
- package/internal/auth/x509-workload-identity-auth.mjs +757 -0
- package/internal/auth/x509-workload-identity-auth.mjs.map +1 -0
- package/internal/bedrock.d.mts +2 -0
- package/internal/bedrock.d.mts.map +1 -1
- package/internal/bedrock.d.ts +2 -0
- package/internal/bedrock.d.ts.map +1 -1
- package/internal/bedrock.js +169 -5
- package/internal/bedrock.js.map +1 -1
- package/internal/bedrock.mjs +168 -5
- package/internal/bedrock.mjs.map +1 -1
- package/internal/data-residency.d.mts +12 -0
- package/internal/data-residency.d.mts.map +1 -0
- package/internal/data-residency.d.ts +12 -0
- package/internal/data-residency.d.ts.map +1 -0
- package/internal/data-residency.js +34 -0
- package/internal/data-residency.js.map +1 -0
- package/internal/data-residency.mjs +30 -0
- package/internal/data-residency.mjs.map +1 -0
- package/internal/multipart-encoding.d.mts +8 -0
- package/internal/multipart-encoding.d.mts.map +1 -0
- package/internal/multipart-encoding.d.ts +8 -0
- package/internal/multipart-encoding.d.ts.map +1 -0
- package/internal/multipart-encoding.js +51 -0
- package/internal/multipart-encoding.js.map +1 -0
- package/internal/multipart-encoding.mjs +48 -0
- package/internal/multipart-encoding.mjs.map +1 -0
- package/internal/qs/utils.d.mts.map +1 -1
- package/internal/qs/utils.d.ts.map +1 -1
- package/internal/qs/utils.js +307 -10
- package/internal/qs/utils.js.map +1 -1
- package/internal/qs/utils.mjs +307 -10
- package/internal/qs/utils.mjs.map +1 -1
- package/internal/request-options.d.mts +7 -0
- package/internal/request-options.d.mts.map +1 -1
- package/internal/request-options.d.ts +7 -0
- package/internal/request-options.d.ts.map +1 -1
- package/internal/request-options.js +43 -1
- package/internal/request-options.js.map +1 -1
- package/internal/request-options.mjs +42 -1
- package/internal/request-options.mjs.map +1 -1
- package/internal/responses/canonical-output-text.js +3 -3
- package/internal/responses/canonical-output-text.js.map +1 -1
- package/internal/responses/canonical-output-text.mjs +3 -3
- package/internal/responses/canonical-output-text.mjs.map +1 -1
- package/internal/responses/response-accumulator.d.mts +1 -1
- package/internal/responses/response-accumulator.d.mts.map +1 -1
- package/internal/responses/response-accumulator.d.ts +1 -1
- package/internal/responses/response-accumulator.d.ts.map +1 -1
- package/internal/responses/response-accumulator.js +331 -25
- package/internal/responses/response-accumulator.js.map +1 -1
- package/internal/responses/response-accumulator.mjs +331 -25
- package/internal/responses/response-accumulator.mjs.map +1 -1
- package/internal/tslib.js +6 -0
- package/internal/tslib.mjs +6 -1
- package/internal/uploads.d.mts +10 -6
- package/internal/uploads.d.mts.map +1 -1
- package/internal/uploads.d.ts +10 -6
- package/internal/uploads.d.ts.map +1 -1
- package/internal/uploads.js +65 -24
- package/internal/uploads.js.map +1 -1
- package/internal/uploads.mjs +65 -24
- package/internal/uploads.mjs.map +1 -1
- package/internal/utils/env.d.mts.map +1 -1
- package/internal/utils/env.d.ts.map +1 -1
- package/internal/utils/env.js +9 -4
- package/internal/utils/env.js.map +1 -1
- package/internal/utils/env.mjs +9 -4
- package/internal/utils/env.mjs.map +1 -1
- package/internal/ws.d.mts.map +1 -1
- package/internal/ws.d.ts.map +1 -1
- package/internal/ws.js +23 -1
- package/internal/ws.js.map +1 -1
- package/internal/ws.mjs +23 -1
- 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 +32 -7
- package/lib/AbstractChatCompletionRunner.js.map +1 -1
- package/lib/AbstractChatCompletionRunner.mjs +34 -9
- 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 +211 -23
- package/lib/AssistantStream.js.map +1 -1
- package/lib/AssistantStream.mjs +211 -23
- package/lib/AssistantStream.mjs.map +1 -1
- package/lib/ChatCompletionStream.d.mts +1 -1
- package/lib/ChatCompletionStream.d.mts.map +1 -1
- package/lib/ChatCompletionStream.d.ts +1 -1
- package/lib/ChatCompletionStream.d.ts.map +1 -1
- package/lib/ChatCompletionStream.js +1118 -67
- package/lib/ChatCompletionStream.js.map +1 -1
- package/lib/ChatCompletionStream.mjs +1119 -68
- 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 +67 -9
- package/lib/EventEmitter.js.map +1 -1
- package/lib/EventEmitter.mjs +68 -10
- package/lib/EventEmitter.mjs.map +1 -1
- package/lib/EventStream.d.mts +4 -0
- package/lib/EventStream.d.mts.map +1 -1
- package/lib/EventStream.d.ts +4 -0
- package/lib/EventStream.d.ts.map +1 -1
- package/lib/EventStream.js +1096 -11
- package/lib/EventStream.js.map +1 -1
- package/lib/EventStream.mjs +1097 -12
- 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 +1 -1
- package/lib/ResponsesParser.js.map +1 -1
- package/lib/ResponsesParser.mjs +1 -1
- package/lib/ResponsesParser.mjs.map +1 -1
- package/lib/Util.d.mts +2 -0
- package/lib/Util.d.mts.map +1 -1
- package/lib/Util.d.ts +2 -0
- package/lib/Util.d.ts.map +1 -1
- package/lib/Util.js +7 -4
- package/lib/Util.js.map +1 -1
- package/lib/Util.mjs +7 -4
- package/lib/Util.mjs.map +1 -1
- package/lib/assistant-run-polling.d.mts +12 -0
- package/lib/assistant-run-polling.d.mts.map +1 -0
- package/lib/assistant-run-polling.d.ts +12 -0
- package/lib/assistant-run-polling.d.ts.map +1 -0
- package/lib/assistant-run-polling.js +17 -0
- package/lib/assistant-run-polling.js.map +1 -0
- package/lib/assistant-run-polling.mjs +14 -0
- package/lib/assistant-run-polling.mjs.map +1 -0
- package/lib/embeddings.d.mts +18 -0
- package/lib/embeddings.d.mts.map +1 -0
- package/lib/embeddings.d.ts +18 -0
- package/lib/embeddings.d.ts.map +1 -0
- package/lib/embeddings.js +50 -0
- package/lib/embeddings.js.map +1 -0
- package/lib/embeddings.mjs +47 -0
- package/lib/embeddings.mjs.map +1 -0
- package/lib/file-processing.d.mts +10 -0
- package/lib/file-processing.d.mts.map +1 -0
- package/lib/file-processing.d.ts +10 -0
- package/lib/file-processing.d.ts.map +1 -0
- package/lib/file-processing.js +30 -0
- package/lib/file-processing.js.map +1 -0
- package/lib/file-processing.mjs +27 -0
- package/lib/file-processing.mjs.map +1 -0
- package/lib/parser.d.mts.map +1 -1
- package/lib/parser.d.ts.map +1 -1
- package/lib/parser.js +16 -4
- package/lib/parser.js.map +1 -1
- package/lib/parser.mjs +16 -4
- package/lib/parser.mjs.map +1 -1
- package/lib/polling.d.mts +20 -0
- package/lib/polling.d.mts.map +1 -0
- package/lib/polling.d.ts +20 -0
- package/lib/polling.d.ts.map +1 -0
- package/lib/polling.js +130 -0
- package/lib/polling.js.map +1 -0
- package/lib/polling.mjs +127 -0
- package/lib/polling.mjs.map +1 -0
- package/lib/responses/ResponseStream.d.mts.map +1 -1
- package/lib/responses/ResponseStream.d.ts.map +1 -1
- package/lib/responses/ResponseStream.js +21 -11
- package/lib/responses/ResponseStream.js.map +1 -1
- package/lib/responses/ResponseStream.mjs +21 -11
- package/lib/responses/ResponseStream.mjs.map +1 -1
- package/lib/vector-store-polling.d.mts +22 -0
- package/lib/vector-store-polling.d.mts.map +1 -0
- package/lib/vector-store-polling.d.ts +22 -0
- package/lib/vector-store-polling.d.ts.map +1 -0
- package/lib/vector-store-polling.js +24 -0
- package/lib/vector-store-polling.js.map +1 -0
- package/lib/vector-store-polling.mjs +20 -0
- package/lib/vector-store-polling.mjs.map +1 -0
- package/lib/vector-store-upload.d.mts +17 -0
- package/lib/vector-store-upload.d.mts.map +1 -0
- package/lib/vector-store-upload.d.ts +17 -0
- package/lib/vector-store-upload.d.ts.map +1 -0
- package/lib/vector-store-upload.js +37 -0
- package/lib/vector-store-upload.js.map +1 -0
- package/lib/vector-store-upload.mjs +34 -0
- package/lib/vector-store-upload.mjs.map +1 -0
- package/lib/webhook-signature.d.mts +15 -0
- package/lib/webhook-signature.d.mts.map +1 -0
- package/lib/webhook-signature.d.ts +15 -0
- package/lib/webhook-signature.d.ts.map +1 -0
- package/lib/webhook-signature.js +125 -0
- package/lib/webhook-signature.js.map +1 -0
- package/lib/webhook-signature.mjs +121 -0
- package/lib/webhook-signature.mjs.map +1 -0
- package/package.json +14 -1
- package/realtime/internal-base.d.mts +2 -0
- package/realtime/internal-base.d.mts.map +1 -1
- package/realtime/internal-base.d.ts +2 -0
- package/realtime/internal-base.d.ts.map +1 -1
- package/realtime/internal-base.js +15 -0
- package/realtime/internal-base.js.map +1 -1
- package/realtime/internal-base.mjs +14 -0
- package/realtime/internal-base.mjs.map +1 -1
- package/realtime/websocket.d.mts +3 -2
- package/realtime/websocket.d.mts.map +1 -1
- package/realtime/websocket.d.ts +3 -2
- package/realtime/websocket.d.ts.map +1 -1
- package/realtime/websocket.js +90 -26
- package/realtime/websocket.js.map +1 -1
- package/realtime/websocket.mjs +91 -27
- 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 +9 -1
- package/realtime/ws.js.map +1 -1
- package/realtime/ws.mjs +10 -2
- package/realtime/ws.mjs.map +1 -1
- package/resources/admin/organization/index.d.mts +2 -2
- package/resources/admin/organization/index.d.mts.map +1 -1
- package/resources/admin/organization/index.d.ts +2 -2
- package/resources/admin/organization/index.d.ts.map +1 -1
- package/resources/admin/organization/index.js.map +1 -1
- package/resources/admin/organization/index.mjs.map +1 -1
- package/resources/admin/organization/organization.d.mts +4 -4
- package/resources/admin/organization/organization.d.mts.map +1 -1
- package/resources/admin/organization/organization.d.ts +4 -4
- package/resources/admin/organization/organization.d.ts.map +1 -1
- package/resources/admin/organization/organization.js.map +1 -1
- package/resources/admin/organization/organization.mjs.map +1 -1
- package/resources/admin/organization/projects/index.d.mts +1 -1
- package/resources/admin/organization/projects/index.d.mts.map +1 -1
- package/resources/admin/organization/projects/index.d.ts +1 -1
- package/resources/admin/organization/projects/index.d.ts.map +1 -1
- package/resources/admin/organization/projects/index.js.map +1 -1
- package/resources/admin/organization/projects/index.mjs.map +1 -1
- package/resources/admin/organization/projects/projects.d.mts +22 -5
- package/resources/admin/organization/projects/projects.d.mts.map +1 -1
- package/resources/admin/organization/projects/projects.d.ts +22 -5
- package/resources/admin/organization/projects/projects.d.ts.map +1 -1
- package/resources/admin/organization/projects/projects.js.map +1 -1
- package/resources/admin/organization/projects/projects.mjs.map +1 -1
- package/resources/admin/organization/usage.d.mts +62 -1
- package/resources/admin/organization/usage.d.mts.map +1 -1
- package/resources/admin/organization/usage.d.ts +62 -1
- package/resources/admin/organization/usage.d.ts.map +1 -1
- package/resources/admin/organization/usage.js.map +1 -1
- package/resources/admin/organization/usage.mjs.map +1 -1
- package/resources/beta/responses/internal-base.d.mts.map +1 -1
- package/resources/beta/responses/internal-base.d.ts.map +1 -1
- package/resources/beta/responses/internal-base.js +2 -0
- package/resources/beta/responses/internal-base.js.map +1 -1
- package/resources/beta/responses/internal-base.mjs +2 -0
- package/resources/beta/responses/internal-base.mjs.map +1 -1
- package/resources/beta/responses/responses.d.mts +9 -12
- package/resources/beta/responses/responses.d.mts.map +1 -1
- package/resources/beta/responses/responses.d.ts +9 -12
- 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/threads/runs/index.d.mts +1 -1
- package/resources/beta/threads/runs/index.d.mts.map +1 -1
- package/resources/beta/threads/runs/index.d.ts +1 -1
- package/resources/beta/threads/runs/index.d.ts.map +1 -1
- package/resources/beta/threads/runs/runs.d.mts.map +1 -1
- package/resources/beta/threads/runs/runs.d.ts.map +1 -1
- package/resources/beta/threads/runs/runs.js +2 -43
- package/resources/beta/threads/runs/runs.js.map +1 -1
- package/resources/beta/threads/runs/runs.mjs +2 -43
- package/resources/beta/threads/runs/runs.mjs.map +1 -1
- package/resources/chat/completions/completions.d.mts +6 -0
- package/resources/chat/completions/completions.d.mts.map +1 -1
- package/resources/chat/completions/completions.d.ts +6 -0
- package/resources/chat/completions/completions.d.ts.map +1 -1
- package/resources/chat/completions/completions.js.map +1 -1
- package/resources/chat/completions/completions.mjs.map +1 -1
- package/resources/embeddings.d.mts.map +1 -1
- package/resources/embeddings.d.ts.map +1 -1
- package/resources/embeddings.js +2 -36
- package/resources/embeddings.js.map +1 -1
- package/resources/embeddings.mjs +2 -36
- package/resources/embeddings.mjs.map +1 -1
- package/resources/files.d.mts.map +1 -1
- package/resources/files.d.ts.map +1 -1
- package/resources/files.js +2 -15
- package/resources/files.js.map +1 -1
- package/resources/files.mjs +2 -15
- package/resources/files.mjs.map +1 -1
- package/resources/images.d.mts +12 -22
- package/resources/images.d.mts.map +1 -1
- package/resources/images.d.ts +12 -22
- package/resources/images.d.ts.map +1 -1
- package/resources/realtime/calls.d.mts +23 -1
- package/resources/realtime/calls.d.mts.map +1 -1
- package/resources/realtime/calls.d.ts +23 -1
- package/resources/realtime/calls.d.ts.map +1 -1
- package/resources/realtime/calls.js +24 -0
- package/resources/realtime/calls.js.map +1 -1
- package/resources/realtime/calls.mjs +24 -0
- package/resources/realtime/calls.mjs.map +1 -1
- package/resources/realtime/index.d.mts +1 -1
- package/resources/realtime/index.d.mts.map +1 -1
- package/resources/realtime/index.d.ts +1 -1
- package/resources/realtime/index.d.ts.map +1 -1
- package/resources/realtime/index.js.map +1 -1
- package/resources/realtime/index.mjs +1 -1
- package/resources/realtime/index.mjs.map +1 -1
- package/resources/realtime/realtime.d.mts +5 -4
- package/resources/realtime/realtime.d.mts.map +1 -1
- package/resources/realtime/realtime.d.ts +5 -4
- package/resources/realtime/realtime.d.ts.map +1 -1
- package/resources/realtime/realtime.js.map +1 -1
- package/resources/realtime/realtime.mjs.map +1 -1
- package/resources/responses/internal-base.d.mts.map +1 -1
- package/resources/responses/internal-base.d.ts.map +1 -1
- package/resources/responses/internal-base.js +2 -0
- package/resources/responses/internal-base.js.map +1 -1
- package/resources/responses/internal-base.mjs +2 -0
- package/resources/responses/internal-base.mjs.map +1 -1
- package/resources/responses/responses.d.mts +9 -12
- package/resources/responses/responses.d.mts.map +1 -1
- package/resources/responses/responses.d.ts +9 -12
- 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/vector-stores/file-batches.d.mts.map +1 -1
- package/resources/vector-stores/file-batches.d.ts.map +1 -1
- package/resources/vector-stores/file-batches.js +4 -61
- package/resources/vector-stores/file-batches.js.map +1 -1
- package/resources/vector-stores/file-batches.mjs +4 -61
- package/resources/vector-stores/file-batches.mjs.map +1 -1
- package/resources/vector-stores/files.d.mts +1 -1
- package/resources/vector-stores/files.d.mts.map +1 -1
- package/resources/vector-stores/files.d.ts +1 -1
- package/resources/vector-stores/files.d.ts.map +1 -1
- package/resources/vector-stores/files.js +2 -35
- package/resources/vector-stores/files.js.map +1 -1
- package/resources/vector-stores/files.mjs +2 -35
- package/resources/vector-stores/files.mjs.map +1 -1
- package/resources/webhooks/webhooks.d.mts.map +1 -1
- package/resources/webhooks/webhooks.d.ts.map +1 -1
- package/resources/webhooks/webhooks.js +5 -43
- package/resources/webhooks/webhooks.js.map +1 -1
- package/resources/webhooks/webhooks.mjs +5 -43
- package/resources/webhooks/webhooks.mjs.map +1 -1
- package/src/auth/index.ts +6 -1
- package/src/auth/subject-token-providers.ts +196 -4
- package/src/auth/types.ts +24 -0
- package/src/auth/workload-identity-auth.ts +104 -7
- package/src/auth/x509-transport.ts +49 -0
- package/src/azure.ts +22 -1
- package/src/bedrock.ts +49 -5
- package/src/beta/realtime/internal-base.ts +15 -0
- package/src/beta/realtime/websocket.ts +148 -40
- package/src/beta/realtime/ws.ts +31 -13
- package/src/client.ts +536 -92
- package/src/core/EventEmitter.ts +91 -7
- package/src/core/streaming.ts +71 -20
- package/src/helpers/audio.ts +93 -22
- package/src/helpers/standard-schema.ts +50 -16
- package/src/helpers/zod-v3-strict-schema.ts +514 -0
- package/src/helpers/zod.ts +17 -4
- package/src/index.ts +1 -1
- package/src/internal/assistant-stream-delta.ts +33 -10
- package/src/internal/auth/x509-token-exchange.ts +310 -0
- package/src/internal/auth/x509-transport-capability.ts +219 -0
- package/src/internal/auth/x509-transport-registry.ts +118 -0
- package/src/internal/auth/x509-transport-state-browser.ts +36 -0
- package/src/internal/auth/x509-transport-state.cts +36 -0
- package/src/internal/auth/x509-workload-identity-auth.ts +958 -0
- package/src/internal/bedrock.ts +182 -5
- package/src/internal/data-residency.ts +44 -0
- package/src/internal/multipart-encoding.ts +53 -0
- package/src/internal/qs/utils.ts +375 -13
- package/src/internal/request-options.ts +52 -1
- package/src/internal/responses/canonical-output-text.ts +3 -3
- package/src/internal/responses/response-accumulator.ts +411 -24
- package/src/internal/uploads.ts +81 -26
- package/src/internal/utils/env.ts +9 -5
- package/src/internal/ws.ts +24 -3
- package/src/lib/AbstractChatCompletionRunner.ts +33 -6
- package/src/lib/AssistantStream.ts +262 -22
- package/src/lib/ChatCompletionStream.ts +1467 -103
- package/src/lib/EventEmitter.ts +91 -7
- package/src/lib/EventStream.ts +1483 -10
- package/src/lib/ResponsesParser.ts +4 -1
- package/src/lib/Util.ts +7 -5
- package/src/lib/assistant-run-polling.ts +27 -0
- package/src/lib/embeddings.ts +65 -0
- package/src/lib/file-processing.ts +36 -0
- package/src/lib/parser.ts +19 -4
- package/src/lib/polling.ts +144 -0
- package/src/lib/responses/ResponseStream.ts +22 -10
- package/src/lib/vector-store-polling.ts +46 -0
- package/src/lib/vector-store-upload.ts +53 -0
- package/src/lib/webhook-signature.ts +164 -0
- package/src/realtime/internal-base.ts +15 -0
- package/src/realtime/websocket.ts +130 -27
- package/src/realtime/ws.ts +15 -2
- package/src/resources/admin/organization/index.ts +2 -0
- package/src/resources/admin/organization/organization.ts +4 -0
- package/src/resources/admin/organization/projects/index.ts +1 -0
- package/src/resources/admin/organization/projects/projects.ts +37 -4
- package/src/resources/admin/organization/usage.ts +83 -0
- package/src/resources/beta/responses/internal-base.ts +2 -0
- package/src/resources/beta/responses/responses.ts +9 -12
- package/src/resources/beta/threads/runs/index.ts +1 -1
- package/src/resources/beta/threads/runs/runs.ts +2 -45
- package/src/resources/chat/completions/completions.ts +7 -0
- package/src/resources/embeddings.ts +2 -42
- package/src/resources/files.ts +2 -19
- package/src/resources/images.ts +12 -22
- package/src/resources/realtime/api.md +1 -0
- package/src/resources/realtime/calls.ts +46 -0
- package/src/resources/realtime/index.ts +7 -1
- package/src/resources/realtime/realtime.ts +5 -3
- package/src/resources/responses/internal-base.ts +2 -0
- package/src/resources/responses/responses.ts +9 -12
- package/src/resources/vector-stores/file-batches.ts +8 -77
- package/src/resources/vector-stores/files.ts +3 -43
- package/src/resources/webhooks/webhooks.ts +5 -61
- 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
|
@@ -17,6 +17,7 @@ interface ResponseKeepAliveEvent {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
type ResponseAccumulatorEvent = ResponseStreamEvent | ResponseKeepAliveEvent;
|
|
20
|
+
type ResponseItemScopedEvent = Extract<ResponseAccumulatorEvent, { item_id: string; output_index: number }>;
|
|
20
21
|
type ResponseOutputItemEvent = Extract<
|
|
21
22
|
ResponseAccumulatorEvent,
|
|
22
23
|
{ type: 'response.output_item.added' | 'response.output_item.done' }
|
|
@@ -136,6 +137,15 @@ type ResponseIgnoredEvent = Extract<
|
|
|
136
137
|
}
|
|
137
138
|
>;
|
|
138
139
|
|
|
140
|
+
interface ResponseOutputIdentityIndex {
|
|
141
|
+
snapshot: Response;
|
|
142
|
+
output: Response['output'];
|
|
143
|
+
length: number;
|
|
144
|
+
identities: Set<string>;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const responseOutputIdentityIndexes = new WeakMap<ResponseAccumulatorContext, ResponseOutputIdentityIndex>();
|
|
148
|
+
|
|
139
149
|
function validateArrayIndex(
|
|
140
150
|
collection: readonly unknown[],
|
|
141
151
|
index: number,
|
|
@@ -172,6 +182,240 @@ function getOutput(snapshot: Response, outputIndex: number): Response['output'][
|
|
|
172
182
|
return output;
|
|
173
183
|
}
|
|
174
184
|
|
|
185
|
+
function hasRoutedOutputCallIdentity(
|
|
186
|
+
output: Response['output'][number],
|
|
187
|
+
): output is Extract<
|
|
188
|
+
Response['output'][number],
|
|
189
|
+
{ type: 'function_call' | 'custom_tool_call' | 'shell_call' | 'shell_call_output' }
|
|
190
|
+
> {
|
|
191
|
+
return (
|
|
192
|
+
output.type === 'function_call' ||
|
|
193
|
+
output.type === 'custom_tool_call' ||
|
|
194
|
+
output.type === 'shell_call' ||
|
|
195
|
+
output.type === 'shell_call_output'
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function getOutputItemIdentityKeys(output: Response['output'][number], eventType: string): string[] {
|
|
200
|
+
if (!hasOwn(output, 'type') || typeof output.type !== 'string') {
|
|
201
|
+
throw new OpenAIError(`expected an own output item type for ${eventType}`);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const optionalPlatformID = output.type === 'function_call' || output.type === 'custom_tool_call';
|
|
205
|
+
const identities: string[] = [];
|
|
206
|
+
|
|
207
|
+
if (hasOwn(output, 'id')) {
|
|
208
|
+
if (typeof output.id !== 'string' || output.id.length === 0) {
|
|
209
|
+
throw new OpenAIError(`expected a non-empty output item id for ${eventType}`);
|
|
210
|
+
}
|
|
211
|
+
identities.push(`id:${output.id}`);
|
|
212
|
+
} else if (!optionalPlatformID) {
|
|
213
|
+
throw new OpenAIError(`expected a non-empty output item id for ${eventType}`);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (hasRoutedOutputCallIdentity(output)) {
|
|
217
|
+
if (!hasOwn(output, 'call_id') || typeof output.call_id !== 'string' || output.call_id.length === 0) {
|
|
218
|
+
throw new OpenAIError(`expected a non-empty output item call_id for ${eventType}`);
|
|
219
|
+
}
|
|
220
|
+
identities.push(`call:${output.type}:${output.call_id}`);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return identities;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function assertOutputItemIdentitiesAvailable(identities: Set<string>, keys: readonly string[]): void {
|
|
227
|
+
for (const key of keys) {
|
|
228
|
+
if (identities.has(key)) {
|
|
229
|
+
throw new OpenAIError(`duplicate output item identity '${key}'`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function addOutputItemIdentities(identities: Set<string>, keys: readonly string[]): void {
|
|
235
|
+
assertOutputItemIdentitiesAvailable(identities, keys);
|
|
236
|
+
for (const key of keys) {
|
|
237
|
+
identities.add(key);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
function createResponseOutputIdentityIndex(snapshot: Response): ResponseOutputIdentityIndex {
|
|
242
|
+
const identityIndex: ResponseOutputIdentityIndex = {
|
|
243
|
+
snapshot,
|
|
244
|
+
output: snapshot.output,
|
|
245
|
+
length: snapshot.output.length,
|
|
246
|
+
identities: new Set(),
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
for (let index = 0; index < snapshot.output.length; index += 1) {
|
|
250
|
+
const output = getOutput(snapshot, index);
|
|
251
|
+
addOutputItemIdentities(identityIndex.identities, getOutputItemIdentityKeys(output, 'response snapshot'));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
return identityIndex;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function getResponseOutputIdentityIndex(
|
|
258
|
+
context: ResponseAccumulatorContext,
|
|
259
|
+
snapshot: Response,
|
|
260
|
+
): ResponseOutputIdentityIndex {
|
|
261
|
+
const cached = responseOutputIdentityIndexes.get(context);
|
|
262
|
+
if (
|
|
263
|
+
cached &&
|
|
264
|
+
cached.snapshot === snapshot &&
|
|
265
|
+
cached.output === snapshot.output &&
|
|
266
|
+
cached.length === snapshot.output.length
|
|
267
|
+
) {
|
|
268
|
+
return cached;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const identityIndex = createResponseOutputIdentityIndex(snapshot);
|
|
272
|
+
responseOutputIdentityIndexes.set(context, identityIndex);
|
|
273
|
+
return identityIndex;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function cloneValidatedResponse(context: ResponseAccumulatorContext, response: Response): Response {
|
|
277
|
+
const nextContext = createCanonicalResponseContext();
|
|
278
|
+
const snapshot = cloneResponse(nextContext, response);
|
|
279
|
+
const identityIndex = createResponseOutputIdentityIndex(snapshot);
|
|
280
|
+
|
|
281
|
+
context.canonicalSnapshot = nextContext.canonicalSnapshot;
|
|
282
|
+
context.outputTextLengths = nextContext.outputTextLengths;
|
|
283
|
+
context.outputTextIndex = nextContext.outputTextIndex;
|
|
284
|
+
responseOutputIdentityIndexes.set(context, identityIndex);
|
|
285
|
+
|
|
286
|
+
return snapshot;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
const expectedOutputItemTypes = {
|
|
290
|
+
'response.output_text.delta': 'message',
|
|
291
|
+
'response.output_text.done': 'message',
|
|
292
|
+
'response.output_text.annotation.added': 'message',
|
|
293
|
+
'response.refusal.delta': 'message',
|
|
294
|
+
'response.refusal.done': 'message',
|
|
295
|
+
'response.function_call_arguments.delta': 'function_call',
|
|
296
|
+
'response.function_call_arguments.done': 'function_call',
|
|
297
|
+
'response.custom_tool_call_input.delta': 'custom_tool_call',
|
|
298
|
+
'response.custom_tool_call_input.done': 'custom_tool_call',
|
|
299
|
+
'response.mcp_call_arguments.delta': 'mcp_call',
|
|
300
|
+
'response.mcp_call_arguments.done': 'mcp_call',
|
|
301
|
+
'response.mcp_call.in_progress': 'mcp_call',
|
|
302
|
+
'response.mcp_call.completed': 'mcp_call',
|
|
303
|
+
'response.mcp_call.failed': 'mcp_call',
|
|
304
|
+
'response.shell_call_output_content.delta': 'shell_call_output',
|
|
305
|
+
'response.shell_call_output_content.done': 'shell_call_output',
|
|
306
|
+
'response.reasoning_text.delta': 'reasoning',
|
|
307
|
+
'response.reasoning_text.done': 'reasoning',
|
|
308
|
+
'response.reasoning_summary_part.added': 'reasoning',
|
|
309
|
+
'response.reasoning_summary_part.done': 'reasoning',
|
|
310
|
+
'response.reasoning_summary_text.delta': 'reasoning',
|
|
311
|
+
'response.reasoning_summary_text.done': 'reasoning',
|
|
312
|
+
'response.code_interpreter_call_code.delta': 'code_interpreter_call',
|
|
313
|
+
'response.code_interpreter_call_code.done': 'code_interpreter_call',
|
|
314
|
+
'response.code_interpreter_call.in_progress': 'code_interpreter_call',
|
|
315
|
+
'response.code_interpreter_call.interpreting': 'code_interpreter_call',
|
|
316
|
+
'response.code_interpreter_call.completed': 'code_interpreter_call',
|
|
317
|
+
'response.file_search_call.in_progress': 'file_search_call',
|
|
318
|
+
'response.file_search_call.searching': 'file_search_call',
|
|
319
|
+
'response.file_search_call.completed': 'file_search_call',
|
|
320
|
+
'response.web_search_call.in_progress': 'web_search_call',
|
|
321
|
+
'response.web_search_call.searching': 'web_search_call',
|
|
322
|
+
'response.web_search_call.completed': 'web_search_call',
|
|
323
|
+
'response.image_generation_call.in_progress': 'image_generation_call',
|
|
324
|
+
'response.image_generation_call.generating': 'image_generation_call',
|
|
325
|
+
'response.image_generation_call.completed': 'image_generation_call',
|
|
326
|
+
'response.image_generation_call.partial_image': 'image_generation_call',
|
|
327
|
+
'response.mcp_list_tools.in_progress': 'mcp_list_tools',
|
|
328
|
+
'response.mcp_list_tools.completed': 'mcp_list_tools',
|
|
329
|
+
'response.mcp_list_tools.failed': 'mcp_list_tools',
|
|
330
|
+
} satisfies Record<
|
|
331
|
+
Exclude<ResponseItemScopedEvent['type'], 'response.content_part.added' | 'response.content_part.done'>,
|
|
332
|
+
Response['output'][number]['type']
|
|
333
|
+
>;
|
|
334
|
+
|
|
335
|
+
function getExpectedOutputItemType(event: ResponseItemScopedEvent): Response['output'][number]['type'] {
|
|
336
|
+
if (event.type === 'response.content_part.added' || event.type === 'response.content_part.done') {
|
|
337
|
+
return event.part.type === 'reasoning_text' ? 'reasoning' : 'message';
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return expectedOutputItemTypes[event.type];
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
function validateCompletedOutputItemIdentity(
|
|
344
|
+
event: Extract<ResponseOutputItemEvent, { type: 'response.output_item.done' }>,
|
|
345
|
+
snapshot: Response,
|
|
346
|
+
): void {
|
|
347
|
+
const output = getOutput(snapshot, event.output_index);
|
|
348
|
+
const replacement = event.item;
|
|
349
|
+
getOutputItemIdentityKeys(output, event.type);
|
|
350
|
+
getOutputItemIdentityKeys(replacement, event.type);
|
|
351
|
+
|
|
352
|
+
if (!hasOwn(replacement, 'type') || output.type !== replacement.type) {
|
|
353
|
+
throw new OpenAIError(`expected output item type '${output.type}', got '${replacement.type}'`);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
const outputID = hasOwn(output, 'id') ? output.id : undefined;
|
|
357
|
+
const replacementID = hasOwn(replacement, 'id') ? replacement.id : undefined;
|
|
358
|
+
if (outputID !== replacementID) {
|
|
359
|
+
throw new OpenAIError(`expected output item id '${outputID}', got '${replacementID}'`);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (
|
|
363
|
+
hasRoutedOutputCallIdentity(output) &&
|
|
364
|
+
hasRoutedOutputCallIdentity(replacement) &&
|
|
365
|
+
output.call_id !== replacement.call_id
|
|
366
|
+
) {
|
|
367
|
+
throw new OpenAIError(`expected output item call_id '${output.call_id}', got '${replacement.call_id}'`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
function validateOutputItemIdentity(
|
|
372
|
+
event: ResponseAccumulatorEvent,
|
|
373
|
+
snapshot: Response,
|
|
374
|
+
rejectInvalidShellTargets: boolean,
|
|
375
|
+
): void {
|
|
376
|
+
if (event.type === 'response.output_item.done') {
|
|
377
|
+
validateCompletedOutputItemIdentity(event, snapshot);
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
if (
|
|
382
|
+
rejectInvalidShellTargets &&
|
|
383
|
+
(event.type === 'response.shell_call_command.added' ||
|
|
384
|
+
event.type === 'response.shell_call_command.delta' ||
|
|
385
|
+
event.type === 'response.shell_call_command.done')
|
|
386
|
+
) {
|
|
387
|
+
const output = getOutput(snapshot, event.output_index);
|
|
388
|
+
if (!hasOwn(output, 'type') || output.type !== 'shell_call') {
|
|
389
|
+
throw new OpenAIError(`expected output item type 'shell_call', got '${output.type}'`);
|
|
390
|
+
}
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
if (
|
|
395
|
+
event.type !== 'response.content_part.added' &&
|
|
396
|
+
event.type !== 'response.content_part.done' &&
|
|
397
|
+
!hasOwn(expectedOutputItemTypes, event.type)
|
|
398
|
+
) {
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
const itemEvent = event as ResponseItemScopedEvent;
|
|
403
|
+
if (!hasOwn(event, 'item_id') || typeof itemEvent.item_id !== 'string' || itemEvent.item_id.length === 0) {
|
|
404
|
+
throw new OpenAIError(`expected a non-empty item_id for ${event.type}`);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
const output = getOutput(snapshot, itemEvent.output_index);
|
|
408
|
+
const outputID = hasOwn(output, 'id') ? output.id : undefined;
|
|
409
|
+
if (outputID !== itemEvent.item_id) {
|
|
410
|
+
throw new OpenAIError(`expected item_id '${outputID}', got '${itemEvent.item_id}'`);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
const expectedType = getExpectedOutputItemType(itemEvent);
|
|
414
|
+
if (output.type !== expectedType) {
|
|
415
|
+
throw new OpenAIError(`expected output item type '${expectedType}', got '${output.type}'`);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
175
419
|
function getContent<T>(content: T[], contentIndex: number): T {
|
|
176
420
|
validateArrayIndex(content, contentIndex, 'content');
|
|
177
421
|
const part = content[contentIndex];
|
|
@@ -208,8 +452,137 @@ function getShellOutputContent(
|
|
|
208
452
|
return getContent(output.output, commandIndex);
|
|
209
453
|
}
|
|
210
454
|
|
|
211
|
-
function
|
|
212
|
-
|
|
455
|
+
function createSupportedResponseEventTypes<EventTypes extends readonly ResponseAccumulatorEvent['type'][]>(
|
|
456
|
+
eventTypes: EventTypes &
|
|
457
|
+
(Exclude<ResponseAccumulatorEvent['type'], EventTypes[number]> extends never ? unknown : never),
|
|
458
|
+
): ReadonlySet<ResponseAccumulatorEvent['type']> {
|
|
459
|
+
return new Set(eventTypes);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
const supportedResponseEventTypes = createSupportedResponseEventTypes([
|
|
463
|
+
'response.output_item.added',
|
|
464
|
+
'response.output_item.done',
|
|
465
|
+
'response.content_part.added',
|
|
466
|
+
'response.content_part.done',
|
|
467
|
+
'response.output_text.delta',
|
|
468
|
+
'response.output_text.done',
|
|
469
|
+
'response.output_text.annotation.added',
|
|
470
|
+
'response.refusal.delta',
|
|
471
|
+
'response.refusal.done',
|
|
472
|
+
'response.function_call_arguments.delta',
|
|
473
|
+
'response.function_call_arguments.done',
|
|
474
|
+
'response.custom_tool_call_input.delta',
|
|
475
|
+
'response.custom_tool_call_input.done',
|
|
476
|
+
'response.mcp_call_arguments.delta',
|
|
477
|
+
'response.mcp_call_arguments.done',
|
|
478
|
+
'response.shell_call_command.added',
|
|
479
|
+
'response.shell_call_command.done',
|
|
480
|
+
'response.shell_call_command.delta',
|
|
481
|
+
'response.shell_call_output_content.delta',
|
|
482
|
+
'response.shell_call_output_content.done',
|
|
483
|
+
'response.reasoning_text.delta',
|
|
484
|
+
'response.reasoning_text.done',
|
|
485
|
+
'response.reasoning_summary_part.added',
|
|
486
|
+
'response.reasoning_summary_part.done',
|
|
487
|
+
'response.reasoning_summary_text.delta',
|
|
488
|
+
'response.reasoning_summary_text.done',
|
|
489
|
+
'response.code_interpreter_call_code.delta',
|
|
490
|
+
'response.code_interpreter_call_code.done',
|
|
491
|
+
'response.code_interpreter_call.in_progress',
|
|
492
|
+
'response.code_interpreter_call.interpreting',
|
|
493
|
+
'response.code_interpreter_call.completed',
|
|
494
|
+
'response.file_search_call.in_progress',
|
|
495
|
+
'response.file_search_call.searching',
|
|
496
|
+
'response.file_search_call.completed',
|
|
497
|
+
'response.web_search_call.in_progress',
|
|
498
|
+
'response.web_search_call.searching',
|
|
499
|
+
'response.web_search_call.completed',
|
|
500
|
+
'response.image_generation_call.in_progress',
|
|
501
|
+
'response.image_generation_call.generating',
|
|
502
|
+
'response.image_generation_call.completed',
|
|
503
|
+
'response.mcp_call.in_progress',
|
|
504
|
+
'response.mcp_call.completed',
|
|
505
|
+
'response.mcp_call.failed',
|
|
506
|
+
'response.created',
|
|
507
|
+
'response.queued',
|
|
508
|
+
'response.in_progress',
|
|
509
|
+
'response.completed',
|
|
510
|
+
'response.failed',
|
|
511
|
+
'response.incomplete',
|
|
512
|
+
'response.audio.delta',
|
|
513
|
+
'response.audio.done',
|
|
514
|
+
'response.audio.transcript.delta',
|
|
515
|
+
'response.audio.transcript.done',
|
|
516
|
+
'response.image_generation_call.partial_image',
|
|
517
|
+
'response.mcp_list_tools.in_progress',
|
|
518
|
+
'response.mcp_list_tools.completed',
|
|
519
|
+
'response.mcp_list_tools.failed',
|
|
520
|
+
'keepalive',
|
|
521
|
+
'error',
|
|
522
|
+
] as const);
|
|
523
|
+
|
|
524
|
+
function assertNever(_value: never): never {
|
|
525
|
+
throw new OpenAIError('Unhandled response stream event: unknown');
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
const responseEventRoutingFields = [
|
|
529
|
+
'item_id',
|
|
530
|
+
'output_index',
|
|
531
|
+
'content_index',
|
|
532
|
+
'annotation_index',
|
|
533
|
+
'command_index',
|
|
534
|
+
'summary_index',
|
|
535
|
+
] as const;
|
|
536
|
+
|
|
537
|
+
function sanitizeResponseEvent(event: ResponseAccumulatorEvent): ResponseAccumulatorEvent {
|
|
538
|
+
let descriptor: PropertyDescriptor | undefined;
|
|
539
|
+
try {
|
|
540
|
+
descriptor = Object.getOwnPropertyDescriptor(event, 'type');
|
|
541
|
+
} catch {
|
|
542
|
+
return assertNever(event as never);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
const type: unknown = descriptor?.value;
|
|
546
|
+
if (
|
|
547
|
+
typeof type !== 'string' ||
|
|
548
|
+
!supportedResponseEventTypes.has(type as ResponseAccumulatorEvent['type'])
|
|
549
|
+
) {
|
|
550
|
+
return assertNever(event as never);
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
const stableValues = new Map<PropertyKey, unknown>([['type', type]]);
|
|
554
|
+
const itemScoped =
|
|
555
|
+
type === 'response.output_item.added' ||
|
|
556
|
+
type === 'response.output_item.done' ||
|
|
557
|
+
type === 'response.content_part.added' ||
|
|
558
|
+
type === 'response.content_part.done' ||
|
|
559
|
+
type === 'response.shell_call_command.added' ||
|
|
560
|
+
type === 'response.shell_call_command.delta' ||
|
|
561
|
+
type === 'response.shell_call_command.done' ||
|
|
562
|
+
hasOwn(expectedOutputItemTypes, type);
|
|
563
|
+
|
|
564
|
+
if (itemScoped) {
|
|
565
|
+
try {
|
|
566
|
+
for (const field of responseEventRoutingFields) {
|
|
567
|
+
const routingDescriptor = Object.getOwnPropertyDescriptor(event, field);
|
|
568
|
+
stableValues.set(field, routingDescriptor ? Reflect.get(event, field, event) : undefined);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
if (type === 'response.output_item.done') {
|
|
572
|
+
stableValues.set('item', structuredClone(Reflect.get(event, 'item', event)));
|
|
573
|
+
} else if (type === 'response.content_part.added' || type === 'response.content_part.done') {
|
|
574
|
+
stableValues.set('part', structuredClone(Reflect.get(event, 'part', event)));
|
|
575
|
+
}
|
|
576
|
+
} catch {
|
|
577
|
+
return assertNever(event as never);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
return new Proxy(event, {
|
|
582
|
+
get(target, property) {
|
|
583
|
+
return stableValues.has(property) ? stableValues.get(property) : Reflect.get(target, property, target);
|
|
584
|
+
},
|
|
585
|
+
});
|
|
213
586
|
}
|
|
214
587
|
|
|
215
588
|
function accumulateOutputItemEvent(
|
|
@@ -220,11 +593,16 @@ function accumulateOutputItemEvent(
|
|
|
220
593
|
switch (event.type) {
|
|
221
594
|
case 'response.output_item.added': {
|
|
222
595
|
validateArrayAppend(snapshot.output, event.output_index, 'output');
|
|
596
|
+
const identityIndex = getResponseOutputIdentityIndex(context, snapshot);
|
|
223
597
|
const output = structuredClone(event.item);
|
|
598
|
+
const identities = getOutputItemIdentityKeys(output, event.type);
|
|
599
|
+
assertOutputItemIdentitiesAvailable(identityIndex.identities, identities);
|
|
224
600
|
if (output.type === 'message') {
|
|
225
601
|
ensureCanonicalOutputText(context, snapshot);
|
|
226
602
|
}
|
|
227
603
|
snapshot.output.push(output);
|
|
604
|
+
addOutputItemIdentities(identityIndex.identities, identities);
|
|
605
|
+
identityIndex.length = snapshot.output.length;
|
|
228
606
|
const text = getOutputText(context, output);
|
|
229
607
|
if (context.canonicalSnapshot === snapshot) {
|
|
230
608
|
context.outputTextIndex.append(text.length);
|
|
@@ -237,7 +615,7 @@ function accumulateOutputItemEvent(
|
|
|
237
615
|
case 'response.output_item.done': {
|
|
238
616
|
const output = getOutput(snapshot, event.output_index);
|
|
239
617
|
const previousText = getOutputText(context, output);
|
|
240
|
-
const replacement =
|
|
618
|
+
const replacement = event.item;
|
|
241
619
|
if (output.type === 'message' || replacement.type === 'message') {
|
|
242
620
|
ensureCanonicalOutputText(context, snapshot);
|
|
243
621
|
}
|
|
@@ -267,7 +645,7 @@ function accumulateContentPartAddedEvent(
|
|
|
267
645
|
const { part } = event;
|
|
268
646
|
if (type === 'message' && part.type !== 'reasoning_text') {
|
|
269
647
|
validateArrayAppend(output.content, event.content_index, 'content');
|
|
270
|
-
const content =
|
|
648
|
+
const content = part;
|
|
271
649
|
if (content.type === 'output_text') {
|
|
272
650
|
ensureCanonicalOutputText(context, snapshot);
|
|
273
651
|
}
|
|
@@ -282,7 +660,7 @@ function accumulateContentPartAddedEvent(
|
|
|
282
660
|
if (!output.content) {
|
|
283
661
|
output.content = content;
|
|
284
662
|
}
|
|
285
|
-
content.push(
|
|
663
|
+
content.push(part);
|
|
286
664
|
}
|
|
287
665
|
return true;
|
|
288
666
|
}
|
|
@@ -304,7 +682,7 @@ function accumulateContentPartDoneEvent(
|
|
|
304
682
|
if (output.type === 'message' && part.type !== 'reasoning_text') {
|
|
305
683
|
const content = getContent(output.content, event.content_index);
|
|
306
684
|
const previousText = content.type === 'output_text' ? content.text : '';
|
|
307
|
-
const replacement =
|
|
685
|
+
const replacement = part;
|
|
308
686
|
if (content.type === 'output_text' || replacement.type === 'output_text') {
|
|
309
687
|
ensureCanonicalOutputText(context, snapshot);
|
|
310
688
|
}
|
|
@@ -318,7 +696,7 @@ function accumulateContentPartDoneEvent(
|
|
|
318
696
|
throw new OpenAIError(`missing content at index ${event.content_index}`);
|
|
319
697
|
}
|
|
320
698
|
getContent(content, event.content_index);
|
|
321
|
-
content[event.content_index] =
|
|
699
|
+
content[event.content_index] = part;
|
|
322
700
|
}
|
|
323
701
|
return true;
|
|
324
702
|
}
|
|
@@ -794,52 +1172,61 @@ export function accumulateResponseWithContext(
|
|
|
794
1172
|
event: ResponseAccumulatorEvent,
|
|
795
1173
|
snapshot: Response | undefined,
|
|
796
1174
|
context: ResponseAccumulatorContext,
|
|
1175
|
+
rejectInvalidShellTargets = false,
|
|
1176
|
+
onSanitizedEvent?: (event: ResponseStreamEvent) => void,
|
|
797
1177
|
): Response {
|
|
1178
|
+
const dispatchEvent = sanitizeResponseEvent(event);
|
|
1179
|
+
if (onSanitizedEvent && dispatchEvent.type !== 'keepalive') {
|
|
1180
|
+
onSanitizedEvent(dispatchEvent);
|
|
1181
|
+
}
|
|
1182
|
+
|
|
798
1183
|
if (!snapshot) {
|
|
799
|
-
if (
|
|
1184
|
+
if (dispatchEvent.type !== 'response.created') {
|
|
800
1185
|
throw new OpenAIError(
|
|
801
|
-
`When snapshot hasn't been set yet, expected 'response.created' event, got ${
|
|
1186
|
+
`When snapshot hasn't been set yet, expected 'response.created' event, got ${dispatchEvent.type}`,
|
|
802
1187
|
);
|
|
803
1188
|
}
|
|
804
|
-
return
|
|
1189
|
+
return cloneValidatedResponse(context, dispatchEvent.response);
|
|
805
1190
|
}
|
|
806
1191
|
|
|
807
|
-
|
|
1192
|
+
validateOutputItemIdentity(dispatchEvent, snapshot, rejectInvalidShellTargets);
|
|
1193
|
+
|
|
1194
|
+
if (accumulateOutputItemEvent(dispatchEvent, snapshot, context)) {
|
|
808
1195
|
return snapshot;
|
|
809
1196
|
}
|
|
810
|
-
if (accumulateContentPartAddedEvent(
|
|
1197
|
+
if (accumulateContentPartAddedEvent(dispatchEvent, snapshot, context)) {
|
|
811
1198
|
return snapshot;
|
|
812
1199
|
}
|
|
813
|
-
if (accumulateContentPartDoneEvent(
|
|
1200
|
+
if (accumulateContentPartDoneEvent(dispatchEvent, snapshot, context)) {
|
|
814
1201
|
return snapshot;
|
|
815
1202
|
}
|
|
816
|
-
if (accumulateOutputTextEvent(
|
|
1203
|
+
if (accumulateOutputTextEvent(dispatchEvent, snapshot, context)) {
|
|
817
1204
|
return snapshot;
|
|
818
1205
|
}
|
|
819
|
-
if (accumulateRefusalAndArgumentsEvent(
|
|
1206
|
+
if (accumulateRefusalAndArgumentsEvent(dispatchEvent, snapshot)) {
|
|
820
1207
|
return snapshot;
|
|
821
1208
|
}
|
|
822
|
-
if (accumulateShellEvent(
|
|
1209
|
+
if (accumulateShellEvent(dispatchEvent, snapshot)) {
|
|
823
1210
|
return snapshot;
|
|
824
1211
|
}
|
|
825
|
-
if (accumulateReasoningEvent(
|
|
1212
|
+
if (accumulateReasoningEvent(dispatchEvent, snapshot)) {
|
|
826
1213
|
return snapshot;
|
|
827
1214
|
}
|
|
828
|
-
if (accumulateCodeInterpreterEvent(
|
|
1215
|
+
if (accumulateCodeInterpreterEvent(dispatchEvent, snapshot)) {
|
|
829
1216
|
return snapshot;
|
|
830
1217
|
}
|
|
831
|
-
if (accumulateSearchStatusEvent(
|
|
1218
|
+
if (accumulateSearchStatusEvent(dispatchEvent, snapshot)) {
|
|
832
1219
|
return snapshot;
|
|
833
1220
|
}
|
|
834
|
-
if (accumulateImageAndMcpStatusEvent(
|
|
1221
|
+
if (accumulateImageAndMcpStatusEvent(dispatchEvent, snapshot)) {
|
|
835
1222
|
return snapshot;
|
|
836
1223
|
}
|
|
837
1224
|
|
|
838
|
-
if (isResponseLifecycleEvent(
|
|
839
|
-
return
|
|
1225
|
+
if (isResponseLifecycleEvent(dispatchEvent)) {
|
|
1226
|
+
return cloneValidatedResponse(context, dispatchEvent.response);
|
|
840
1227
|
}
|
|
841
|
-
if (isIgnoredResponseEvent(
|
|
1228
|
+
if (isIgnoredResponseEvent(dispatchEvent)) {
|
|
842
1229
|
return snapshot;
|
|
843
1230
|
}
|
|
844
|
-
return assertNever(
|
|
1231
|
+
return assertNever(dispatchEvent);
|
|
845
1232
|
}
|