openai 6.44.0 → 6.46.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 +70 -0
- package/README.md +85 -102
- 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 +41 -15
- package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.mjs +41 -15
- package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/branded.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/branded.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/catch.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/catch.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/default.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/default.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.mts +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 +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.mts +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 +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.js +3 -3
- package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.mjs +3 -3
- package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.js +3 -3
- package/_vendor/zod-to-json-schema/parsers/pipeline.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.mjs +3 -3
- package/_vendor/zod-to-json-schema/parsers/pipeline.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/promise.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/promise.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/readonly.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/readonly.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 +12 -4
- package/auth/workload-identity-auth.js.map +1 -1
- package/auth/workload-identity-auth.mjs +13 -5
- package/auth/workload-identity-auth.mjs.map +1 -1
- package/azure.d.mts +3 -1
- package/azure.d.mts.map +1 -1
- package/azure.d.ts +3 -1
- package/azure.d.ts.map +1 -1
- package/azure.js.map +1 -1
- package/azure.mjs.map +1 -1
- package/beta/realtime/internal-base.d.mts +14 -1
- package/beta/realtime/internal-base.d.mts.map +1 -1
- package/beta/realtime/internal-base.d.ts +14 -1
- package/beta/realtime/internal-base.d.ts.map +1 -1
- package/beta/realtime/internal-base.js +21 -5
- package/beta/realtime/internal-base.js.map +1 -1
- package/beta/realtime/internal-base.mjs +21 -5
- package/beta/realtime/internal-base.mjs.map +1 -1
- package/beta/realtime/websocket.d.mts +3 -5
- package/beta/realtime/websocket.d.mts.map +1 -1
- package/beta/realtime/websocket.d.ts +3 -5
- package/beta/realtime/websocket.d.ts.map +1 -1
- package/beta/realtime/websocket.js +2 -3
- package/beta/realtime/websocket.js.map +1 -1
- package/beta/realtime/websocket.mjs +3 -4
- package/beta/realtime/websocket.mjs.map +1 -1
- package/beta/realtime/ws.d.mts +3 -5
- package/beta/realtime/ws.d.mts.map +1 -1
- package/beta/realtime/ws.d.ts +3 -5
- package/beta/realtime/ws.d.ts.map +1 -1
- package/beta/realtime/ws.js +2 -3
- package/beta/realtime/ws.js.map +1 -1
- package/beta/realtime/ws.mjs +3 -4
- package/beta/realtime/ws.mjs.map +1 -1
- package/client.d.mts +9 -1
- package/client.d.mts.map +1 -1
- package/client.d.ts +9 -1
- package/client.d.ts.map +1 -1
- package/client.js +56 -9
- package/client.js.map +1 -1
- package/client.mjs +56 -9
- package/client.mjs.map +1 -1
- package/helpers/audio.d.mts.map +1 -1
- package/helpers/audio.d.ts.map +1 -1
- package/helpers/audio.js +16 -3
- package/helpers/audio.js.map +1 -1
- package/helpers/audio.mjs +17 -4
- package/helpers/audio.mjs.map +1 -1
- package/helpers/zod.d.mts.map +1 -1
- package/helpers/zod.d.ts.map +1 -1
- package/helpers/zod.js +12 -0
- package/helpers/zod.js.map +1 -1
- package/helpers/zod.mjs +12 -0
- package/helpers/zod.mjs.map +1 -1
- package/internal/bedrock.d.mts +34 -0
- package/internal/bedrock.d.mts.map +1 -0
- package/internal/bedrock.d.ts +34 -0
- package/internal/bedrock.d.ts.map +1 -0
- package/internal/bedrock.js +107 -0
- package/internal/bedrock.js.map +1 -0
- package/internal/bedrock.mjs +99 -0
- package/internal/bedrock.mjs.map +1 -0
- package/internal/provider.d.mts +23 -0
- package/internal/provider.d.mts.map +1 -0
- package/internal/provider.d.ts +23 -0
- package/internal/provider.d.ts.map +1 -0
- package/internal/provider.js +36 -0
- package/internal/provider.js.map +1 -0
- package/internal/provider.mjs +32 -0
- package/internal/provider.mjs.map +1 -0
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +1 -0
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +1 -0
- package/internal/utils/log.mjs.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.mts +15 -4
- package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.ts +15 -4
- package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
- package/lib/AbstractChatCompletionRunner.js +77 -40
- package/lib/AbstractChatCompletionRunner.js.map +1 -1
- package/lib/AbstractChatCompletionRunner.mjs +77 -40
- 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 +5 -25
- package/lib/AssistantStream.js.map +1 -1
- package/lib/AssistantStream.mjs +5 -25
- package/lib/AssistantStream.mjs.map +1 -1
- package/lib/ChatCompletionRunner.js +1 -1
- package/lib/ChatCompletionRunner.js.map +1 -1
- package/lib/ChatCompletionRunner.mjs +1 -1
- package/lib/ChatCompletionRunner.mjs.map +1 -1
- package/lib/ChatCompletionStream.d.mts.map +1 -1
- package/lib/ChatCompletionStream.d.ts.map +1 -1
- package/lib/ChatCompletionStream.js +11 -17
- package/lib/ChatCompletionStream.js.map +1 -1
- package/lib/ChatCompletionStream.mjs +11 -17
- package/lib/ChatCompletionStream.mjs.map +1 -1
- package/lib/ChatCompletionStreamingRunner.js +1 -1
- package/lib/ChatCompletionStreamingRunner.js.map +1 -1
- package/lib/ChatCompletionStreamingRunner.mjs +1 -1
- package/lib/ChatCompletionStreamingRunner.mjs.map +1 -1
- package/lib/EventEmitter.d.mts.map +1 -1
- package/lib/EventEmitter.d.ts.map +1 -1
- package/lib/EventEmitter.js +12 -2
- package/lib/EventEmitter.js.map +1 -1
- package/lib/EventEmitter.mjs +12 -2
- package/lib/EventEmitter.mjs.map +1 -1
- package/lib/EventStream.d.mts +1 -0
- package/lib/EventStream.d.mts.map +1 -1
- package/lib/EventStream.d.ts +1 -0
- package/lib/EventStream.d.ts.map +1 -1
- package/lib/EventStream.js +19 -2
- package/lib/EventStream.js.map +1 -1
- package/lib/EventStream.mjs +19 -2
- 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 +12 -4
- package/lib/ResponsesParser.js.map +1 -1
- package/lib/ResponsesParser.mjs +12 -4
- package/lib/ResponsesParser.mjs.map +1 -1
- package/lib/responses/ResponseAccumulator.d.mts +15 -0
- package/lib/responses/ResponseAccumulator.d.mts.map +1 -0
- package/lib/responses/ResponseAccumulator.d.ts +15 -0
- package/lib/responses/ResponseAccumulator.d.ts.map +1 -0
- package/lib/responses/ResponseAccumulator.js +403 -0
- package/lib/responses/ResponseAccumulator.js.map +1 -0
- package/lib/responses/ResponseAccumulator.mjs +400 -0
- package/lib/responses/ResponseAccumulator.mjs.map +1 -0
- package/lib/responses/ResponseInputItems.d.mts +19 -0
- package/lib/responses/ResponseInputItems.d.mts.map +1 -0
- package/lib/responses/ResponseInputItems.d.ts +19 -0
- package/lib/responses/ResponseInputItems.d.ts.map +1 -0
- package/lib/responses/ResponseInputItems.js +104 -0
- package/lib/responses/ResponseInputItems.js.map +1 -0
- package/lib/responses/ResponseInputItems.mjs +100 -0
- package/lib/responses/ResponseInputItems.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 +5 -90
- package/lib/responses/ResponseStream.js.map +1 -1
- package/lib/responses/ResponseStream.mjs +5 -90
- package/lib/responses/ResponseStream.mjs.map +1 -1
- package/package.json +24 -1
- package/providers/bedrock/aws.d.mts +24 -0
- package/providers/bedrock/aws.d.mts.map +1 -0
- package/providers/bedrock/aws.d.ts +24 -0
- package/providers/bedrock/aws.d.ts.map +1 -0
- package/providers/bedrock/aws.js +170 -0
- package/providers/bedrock/aws.js.map +1 -0
- package/providers/bedrock/aws.mjs +166 -0
- package/providers/bedrock/aws.mjs.map +1 -0
- package/providers/bedrock.d.mts +7 -0
- package/providers/bedrock.d.mts.map +1 -0
- package/providers/bedrock.d.ts +7 -0
- package/providers/bedrock.d.ts.map +1 -0
- package/providers/bedrock.js +26 -0
- package/providers/bedrock.js.map +1 -0
- package/providers/bedrock.mjs +22 -0
- package/providers/bedrock.mjs.map +1 -0
- package/realtime/internal-base.d.mts +28 -1
- package/realtime/internal-base.d.mts.map +1 -1
- package/realtime/internal-base.d.ts +28 -1
- package/realtime/internal-base.d.ts.map +1 -1
- package/realtime/internal-base.js +50 -7
- package/realtime/internal-base.js.map +1 -1
- package/realtime/internal-base.mjs +49 -7
- package/realtime/internal-base.mjs.map +1 -1
- package/realtime/websocket.d.mts +4 -7
- package/realtime/websocket.d.mts.map +1 -1
- package/realtime/websocket.d.ts +4 -7
- package/realtime/websocket.d.ts.map +1 -1
- package/realtime/websocket.js +4 -8
- package/realtime/websocket.js.map +1 -1
- package/realtime/websocket.mjs +5 -9
- package/realtime/websocket.mjs.map +1 -1
- package/realtime/ws.d.mts +4 -7
- package/realtime/ws.d.mts.map +1 -1
- package/realtime/ws.d.ts +4 -7
- package/realtime/ws.d.ts.map +1 -1
- package/realtime/ws.js +4 -8
- package/realtime/ws.js.map +1 -1
- package/realtime/ws.mjs +5 -9
- package/realtime/ws.mjs.map +1 -1
- package/resources/beta/assistants.d.mts +12 -26
- package/resources/beta/assistants.d.mts.map +1 -1
- package/resources/beta/assistants.d.ts +12 -26
- package/resources/beta/assistants.d.ts.map +1 -1
- package/resources/beta/beta.d.mts +6 -1
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +6 -1
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js +4 -0
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs +4 -0
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/index.d.mts +1 -0
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +1 -0
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js +5 -3
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs +1 -0
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/responses/index.d.mts +6 -0
- package/resources/beta/responses/index.d.mts.map +1 -0
- package/resources/beta/responses/index.d.ts +6 -0
- package/resources/beta/responses/index.d.ts.map +1 -0
- package/resources/beta/responses/index.js +11 -0
- package/resources/beta/responses/index.js.map +1 -0
- package/resources/beta/responses/index.mjs +5 -0
- package/resources/beta/responses/index.mjs.map +1 -0
- package/resources/beta/responses/input-items.d.mts +69 -0
- package/resources/beta/responses/input-items.d.mts.map +1 -0
- package/resources/beta/responses/input-items.d.ts +69 -0
- package/resources/beta/responses/input-items.d.ts.map +1 -0
- package/resources/beta/responses/input-items.js +37 -0
- package/resources/beta/responses/input-items.js.map +1 -0
- package/resources/beta/responses/input-items.mjs +33 -0
- package/resources/beta/responses/input-items.mjs.map +1 -0
- package/resources/beta/responses/input-tokens.d.mts +191 -0
- package/resources/beta/responses/input-tokens.d.mts.map +1 -0
- package/resources/beta/responses/input-tokens.d.ts +191 -0
- package/resources/beta/responses/input-tokens.d.ts.map +1 -0
- package/resources/beta/responses/input-tokens.js +34 -0
- package/resources/beta/responses/input-tokens.js.map +1 -0
- package/resources/beta/responses/input-tokens.mjs +30 -0
- package/resources/beta/responses/input-tokens.mjs.map +1 -0
- package/resources/beta/responses/internal-base.d.mts +71 -0
- package/resources/beta/responses/internal-base.d.mts.map +1 -0
- package/resources/beta/responses/internal-base.d.ts +71 -0
- package/resources/beta/responses/internal-base.d.ts.map +1 -0
- package/resources/beta/responses/internal-base.js +48 -0
- package/resources/beta/responses/internal-base.js.map +1 -0
- package/resources/beta/responses/internal-base.mjs +42 -0
- package/resources/beta/responses/internal-base.mjs.map +1 -0
- package/resources/beta/responses/responses.d.mts +9985 -0
- package/resources/beta/responses/responses.d.mts.map +1 -0
- package/resources/beta/responses/responses.d.ts +9985 -0
- package/resources/beta/responses/responses.d.ts.map +1 -0
- package/resources/beta/responses/responses.js +121 -0
- package/resources/beta/responses/responses.js.map +1 -0
- package/resources/beta/responses/responses.mjs +116 -0
- package/resources/beta/responses/responses.mjs.map +1 -0
- package/resources/beta/responses/ws-base.d.mts +106 -0
- package/resources/beta/responses/ws-base.d.mts.map +1 -0
- package/resources/beta/responses/ws-base.d.ts +106 -0
- package/resources/beta/responses/ws-base.d.ts.map +1 -0
- package/resources/beta/responses/ws-base.js +476 -0
- package/resources/beta/responses/ws-base.js.map +1 -0
- package/resources/beta/responses/ws-base.mjs +472 -0
- package/resources/beta/responses/ws-base.mjs.map +1 -0
- package/resources/beta/responses/ws.d.mts +13 -0
- package/resources/beta/responses/ws.d.mts.map +1 -0
- package/resources/beta/responses/ws.d.ts +13 -0
- package/resources/beta/responses/ws.d.ts.map +1 -0
- package/resources/beta/responses/ws.js +31 -0
- package/resources/beta/responses/ws.js.map +1 -0
- package/resources/beta/responses/ws.mjs +26 -0
- package/resources/beta/responses/ws.mjs.map +1 -0
- package/resources/beta/responses.d.mts +2 -0
- package/resources/beta/responses.d.mts.map +1 -0
- package/resources/beta/responses.d.ts +2 -0
- package/resources/beta/responses.d.ts.map +1 -0
- package/resources/beta/responses.js +6 -0
- package/resources/beta/responses.js.map +1 -0
- package/resources/beta/responses.mjs +3 -0
- package/resources/beta/responses.mjs.map +1 -0
- package/resources/beta/threads/runs/runs.d.mts +6 -13
- package/resources/beta/threads/runs/runs.d.mts.map +1 -1
- package/resources/beta/threads/runs/runs.d.ts +6 -13
- package/resources/beta/threads/runs/runs.d.ts.map +1 -1
- package/resources/beta/threads/runs/runs.js.map +1 -1
- package/resources/beta/threads/runs/runs.mjs.map +1 -1
- package/resources/chat/completions/completions.d.mts +155 -14
- package/resources/chat/completions/completions.d.mts.map +1 -1
- package/resources/chat/completions/completions.d.ts +155 -14
- 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/completions.d.mts +4 -0
- package/resources/completions.d.mts.map +1 -1
- package/resources/completions.d.ts +4 -0
- package/resources/completions.d.ts.map +1 -1
- package/resources/conversations/conversations.d.mts +19 -0
- package/resources/conversations/conversations.d.mts.map +1 -1
- package/resources/conversations/conversations.d.ts +19 -0
- package/resources/conversations/conversations.d.ts.map +1 -1
- package/resources/conversations/conversations.js.map +1 -1
- package/resources/conversations/conversations.mjs.map +1 -1
- package/resources/conversations/items.d.mts +45 -1
- package/resources/conversations/items.d.mts.map +1 -1
- package/resources/conversations/items.d.ts +45 -1
- package/resources/conversations/items.d.ts.map +1 -1
- package/resources/evals/runs/runs.d.mts +66 -143
- package/resources/evals/runs/runs.d.mts.map +1 -1
- package/resources/evals/runs/runs.d.ts +66 -143
- package/resources/evals/runs/runs.d.ts.map +1 -1
- package/resources/evals/runs/runs.js.map +1 -1
- package/resources/evals/runs/runs.mjs.map +1 -1
- package/resources/graders/grader-models.d.mts +6 -13
- package/resources/graders/grader-models.d.mts.map +1 -1
- package/resources/graders/grader-models.d.ts +6 -13
- package/resources/graders/grader-models.d.ts.map +1 -1
- package/resources/realtime/calls.d.mts +1 -1
- package/resources/realtime/calls.d.mts.map +1 -1
- package/resources/realtime/calls.d.ts +1 -1
- package/resources/realtime/calls.d.ts.map +1 -1
- package/resources/realtime/client-secrets.d.mts +5 -1
- package/resources/realtime/client-secrets.d.mts.map +1 -1
- package/resources/realtime/client-secrets.d.ts +5 -1
- package/resources/realtime/client-secrets.d.ts.map +1 -1
- package/resources/realtime/realtime.d.mts +9 -1
- package/resources/realtime/realtime.d.mts.map +1 -1
- package/resources/realtime/realtime.d.ts +9 -1
- 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/input-tokens.d.mts +7 -1
- package/resources/responses/input-tokens.d.mts.map +1 -1
- package/resources/responses/input-tokens.d.ts +7 -1
- package/resources/responses/input-tokens.d.ts.map +1 -1
- package/resources/responses/responses.d.mts +816 -24
- package/resources/responses/responses.d.mts.map +1 -1
- package/resources/responses/responses.d.ts +816 -24
- package/resources/responses/responses.d.ts.map +1 -1
- package/resources/responses/responses.js +1 -1
- package/resources/responses/responses.js.map +1 -1
- package/resources/responses/responses.mjs +1 -1
- package/resources/responses/responses.mjs.map +1 -1
- package/resources/shared.d.mts +20 -28
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +20 -28
- package/resources/shared.d.ts.map +1 -1
- package/resources/webhooks/webhooks.d.mts +54 -2
- package/resources/webhooks/webhooks.d.mts.map +1 -1
- package/resources/webhooks/webhooks.d.ts +54 -2
- package/resources/webhooks/webhooks.d.ts.map +1 -1
- package/src/_vendor/zod-to-json-schema/parseDef.ts +44 -16
- package/src/_vendor/zod-to-json-schema/parsers/branded.ts +2 -2
- package/src/_vendor/zod-to-json-schema/parsers/catch.ts +2 -2
- package/src/_vendor/zod-to-json-schema/parsers/default.ts +6 -2
- package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +13 -5
- package/src/_vendor/zod-to-json-schema/parsers/optional.ts +14 -6
- package/src/_vendor/zod-to-json-schema/parsers/pipeline.ts +3 -2
- package/src/_vendor/zod-to-json-schema/parsers/promise.ts +6 -2
- package/src/_vendor/zod-to-json-schema/parsers/readonly.ts +2 -2
- package/src/auth/workload-identity-auth.ts +16 -5
- package/src/azure.ts +4 -1
- package/src/beta/realtime/internal-base.ts +43 -5
- package/src/beta/realtime/websocket.ts +10 -7
- package/src/beta/realtime/ws.ts +10 -7
- package/src/client.ts +80 -18
- package/src/helpers/audio.ts +18 -4
- package/src/helpers/zod.ts +16 -0
- package/src/internal/bedrock.ts +153 -0
- package/src/internal/provider.ts +60 -0
- package/src/internal/utils/log.ts +1 -0
- package/src/lib/AbstractChatCompletionRunner.ts +111 -45
- package/src/lib/AssistantStream.ts +5 -21
- package/src/lib/ChatCompletionRunner.ts +1 -1
- package/src/lib/ChatCompletionStream.ts +11 -15
- package/src/lib/ChatCompletionStreamingRunner.ts +1 -1
- package/src/lib/EventEmitter.ts +11 -2
- package/src/lib/EventStream.ts +20 -0
- package/src/lib/ResponsesParser.ts +18 -4
- package/src/lib/responses/ResponseAccumulator.ts +421 -0
- package/src/lib/responses/ResponseInputItems.ts +129 -0
- package/src/lib/responses/ResponseStream.ts +4 -93
- package/src/providers/bedrock/aws.ts +255 -0
- package/src/providers/bedrock.ts +33 -0
- package/src/realtime/internal-base.ts +90 -7
- package/src/realtime/websocket.ts +15 -13
- package/src/realtime/ws.ts +15 -13
- package/src/resources/beta/assistants.ts +12 -26
- package/src/resources/beta/beta.ts +330 -2
- package/src/resources/beta/index.ts +163 -0
- package/src/resources/beta/responses/index.ts +169 -0
- package/src/resources/beta/responses/input-items.ts +105 -0
- package/src/resources/beta/responses/input-tokens.ts +245 -0
- package/src/resources/beta/responses/internal-base.ts +117 -0
- package/src/resources/beta/responses/responses.ts +12632 -0
- package/src/resources/beta/responses/ws-base.ts +615 -0
- package/src/resources/beta/responses/ws.ts +38 -0
- package/src/resources/beta/responses.ts +3 -0
- package/src/resources/beta/threads/runs/runs.ts +6 -13
- package/src/resources/chat/completions/completions.ts +171 -14
- package/src/resources/completions.ts +5 -0
- package/src/resources/conversations/conversations.ts +21 -0
- package/src/resources/conversations/items.ts +56 -0
- package/src/resources/evals/runs/runs.ts +66 -143
- package/src/resources/graders/grader-models.ts +6 -13
- package/src/resources/realtime/calls.ts +2 -0
- package/src/resources/realtime/client-secrets.ts +7 -0
- package/src/resources/realtime/realtime.ts +12 -0
- package/src/resources/responses/input-tokens.ts +8 -0
- package/src/resources/responses/responses.ts +950 -15
- package/src/resources/shared.ts +23 -27
- package/src/resources/webhooks/api.md +1 -0
- package/src/resources/webhooks/webhooks.ts +65 -1
- 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
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type Response,
|
|
3
|
+
type ResponseOutputText,
|
|
4
|
+
type ResponseStreamEvent,
|
|
5
|
+
} from '../../resources/responses/responses';
|
|
6
|
+
import { OpenAIError } from '../../error';
|
|
7
|
+
import { addOutputText } from '../ResponsesParser';
|
|
8
|
+
|
|
9
|
+
type ResponseKeepAliveEvent = {
|
|
10
|
+
type: 'keepalive';
|
|
11
|
+
sequence_number: number;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Applies a streaming event to a response snapshot.
|
|
16
|
+
*
|
|
17
|
+
* Always use the returned snapshot. Incremental events update the supplied snapshot
|
|
18
|
+
* in place, while response lifecycle events return a detached replacement. Event
|
|
19
|
+
* payloads are cloned, so retaining or replaying the raw events is safe.
|
|
20
|
+
*/
|
|
21
|
+
export function accumulateResponse(
|
|
22
|
+
event: ResponseStreamEvent | ResponseKeepAliveEvent,
|
|
23
|
+
snapshot?: Response,
|
|
24
|
+
): Response {
|
|
25
|
+
if (!snapshot) {
|
|
26
|
+
if (event.type !== 'response.created') {
|
|
27
|
+
throw new OpenAIError(
|
|
28
|
+
`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`,
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return cloneResponse(event.response);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
switch (event.type) {
|
|
35
|
+
case 'response.output_item.added': {
|
|
36
|
+
snapshot.output.push(structuredClone(event.item));
|
|
37
|
+
if (event.item.type === 'message') {
|
|
38
|
+
addOutputText(snapshot);
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case 'response.output_item.done': {
|
|
43
|
+
getOutput(snapshot, event.output_index);
|
|
44
|
+
snapshot.output[event.output_index] = structuredClone(event.item);
|
|
45
|
+
if (event.item.type === 'message') {
|
|
46
|
+
addOutputText(snapshot);
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case 'response.content_part.added': {
|
|
51
|
+
const output = getOutput(snapshot, event.output_index);
|
|
52
|
+
const type = output.type;
|
|
53
|
+
const part = event.part;
|
|
54
|
+
if (type === 'message' && part.type !== 'reasoning_text') {
|
|
55
|
+
output.content.push(structuredClone(part));
|
|
56
|
+
if (part.type === 'output_text') {
|
|
57
|
+
addOutputText(snapshot);
|
|
58
|
+
}
|
|
59
|
+
} else if (type === 'reasoning' && part.type === 'reasoning_text') {
|
|
60
|
+
if (!output.content) {
|
|
61
|
+
output.content = [];
|
|
62
|
+
}
|
|
63
|
+
output.content.push(structuredClone(part));
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case 'response.content_part.done': {
|
|
68
|
+
const output = getOutput(snapshot, event.output_index);
|
|
69
|
+
const part = event.part;
|
|
70
|
+
if (output.type === 'message' && part.type !== 'reasoning_text') {
|
|
71
|
+
getContent(output.content, event.content_index);
|
|
72
|
+
output.content[event.content_index] = structuredClone(part);
|
|
73
|
+
if (part.type === 'output_text') {
|
|
74
|
+
addOutputText(snapshot);
|
|
75
|
+
}
|
|
76
|
+
} else if (output.type === 'reasoning' && part.type === 'reasoning_text') {
|
|
77
|
+
const content = output.content;
|
|
78
|
+
if (!content) {
|
|
79
|
+
throw new OpenAIError(`missing content at index ${event.content_index}`);
|
|
80
|
+
}
|
|
81
|
+
getContent(content, event.content_index);
|
|
82
|
+
content[event.content_index] = structuredClone(part);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'response.output_text.delta': {
|
|
87
|
+
const output = getOutput(snapshot, event.output_index);
|
|
88
|
+
if (output.type === 'message') {
|
|
89
|
+
const content = getContent(output.content, event.content_index);
|
|
90
|
+
if (content.type !== 'output_text') {
|
|
91
|
+
throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);
|
|
92
|
+
}
|
|
93
|
+
content.text += event.delta;
|
|
94
|
+
snapshot.output_text += event.delta;
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
case 'response.output_text.done': {
|
|
99
|
+
const output = getOutput(snapshot, event.output_index);
|
|
100
|
+
if (output.type === 'message') {
|
|
101
|
+
const content = getContent(output.content, event.content_index);
|
|
102
|
+
if (content.type !== 'output_text') {
|
|
103
|
+
throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);
|
|
104
|
+
}
|
|
105
|
+
content.text = event.text;
|
|
106
|
+
addOutputText(snapshot);
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
case 'response.output_text.annotation.added': {
|
|
111
|
+
const output = getOutput(snapshot, event.output_index);
|
|
112
|
+
if (output.type === 'message') {
|
|
113
|
+
const content = getContent(output.content, event.content_index);
|
|
114
|
+
if (content.type !== 'output_text') {
|
|
115
|
+
throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);
|
|
116
|
+
}
|
|
117
|
+
content.annotations[event.annotation_index] = structuredClone(
|
|
118
|
+
event.annotation,
|
|
119
|
+
) as ResponseOutputText['annotations'][number];
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case 'response.refusal.delta': {
|
|
124
|
+
const output = getOutput(snapshot, event.output_index);
|
|
125
|
+
if (output.type === 'message') {
|
|
126
|
+
const content = getContent(output.content, event.content_index);
|
|
127
|
+
if (content.type !== 'refusal') {
|
|
128
|
+
throw new OpenAIError(`expected content to be 'refusal', got ${content.type}`);
|
|
129
|
+
}
|
|
130
|
+
content.refusal += event.delta;
|
|
131
|
+
}
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
case 'response.refusal.done': {
|
|
135
|
+
const output = getOutput(snapshot, event.output_index);
|
|
136
|
+
if (output.type === 'message') {
|
|
137
|
+
const content = getContent(output.content, event.content_index);
|
|
138
|
+
if (content.type !== 'refusal') {
|
|
139
|
+
throw new OpenAIError(`expected content to be 'refusal', got ${content.type}`);
|
|
140
|
+
}
|
|
141
|
+
content.refusal = event.refusal;
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
case 'response.function_call_arguments.delta': {
|
|
146
|
+
const output = getOutput(snapshot, event.output_index);
|
|
147
|
+
if (output.type === 'function_call') {
|
|
148
|
+
output.arguments += event.delta;
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
case 'response.function_call_arguments.done': {
|
|
153
|
+
const output = getOutput(snapshot, event.output_index);
|
|
154
|
+
if (output.type === 'function_call') {
|
|
155
|
+
output.arguments = event.arguments;
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case 'response.reasoning_text.delta': {
|
|
160
|
+
const output = getOutput(snapshot, event.output_index);
|
|
161
|
+
if (output.type === 'reasoning') {
|
|
162
|
+
if (!output.content) {
|
|
163
|
+
throw new OpenAIError(`missing content at index ${event.content_index}`);
|
|
164
|
+
}
|
|
165
|
+
const content = getContent(output.content, event.content_index);
|
|
166
|
+
if (content.type !== 'reasoning_text') {
|
|
167
|
+
throw new OpenAIError(`expected content to be 'reasoning_text', got ${content.type}`);
|
|
168
|
+
}
|
|
169
|
+
content.text += event.delta;
|
|
170
|
+
}
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case 'response.reasoning_text.done': {
|
|
174
|
+
const output = getOutput(snapshot, event.output_index);
|
|
175
|
+
if (output.type === 'reasoning') {
|
|
176
|
+
if (!output.content) {
|
|
177
|
+
throw new OpenAIError(`missing content at index ${event.content_index}`);
|
|
178
|
+
}
|
|
179
|
+
const content = getContent(output.content, event.content_index);
|
|
180
|
+
if (content.type !== 'reasoning_text') {
|
|
181
|
+
throw new OpenAIError(`expected content to be 'reasoning_text', got ${content.type}`);
|
|
182
|
+
}
|
|
183
|
+
content.text = event.text;
|
|
184
|
+
}
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case 'response.reasoning_summary_part.added': {
|
|
188
|
+
const output = getOutput(snapshot, event.output_index);
|
|
189
|
+
if (output.type === 'reasoning') {
|
|
190
|
+
output.summary.push(structuredClone(event.part));
|
|
191
|
+
}
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
case 'response.reasoning_summary_part.done': {
|
|
195
|
+
const output = getOutput(snapshot, event.output_index);
|
|
196
|
+
if (output.type === 'reasoning') {
|
|
197
|
+
getContent(output.summary, event.summary_index);
|
|
198
|
+
output.summary[event.summary_index] = structuredClone(event.part);
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
case 'response.reasoning_summary_text.delta': {
|
|
203
|
+
const output = getOutput(snapshot, event.output_index);
|
|
204
|
+
if (output.type === 'reasoning') {
|
|
205
|
+
const part = getContent(output.summary, event.summary_index);
|
|
206
|
+
part.text += event.delta;
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
case 'response.reasoning_summary_text.done': {
|
|
211
|
+
const output = getOutput(snapshot, event.output_index);
|
|
212
|
+
if (output.type === 'reasoning') {
|
|
213
|
+
const part = getContent(output.summary, event.summary_index);
|
|
214
|
+
part.text = event.text;
|
|
215
|
+
}
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
case 'response.custom_tool_call_input.delta': {
|
|
219
|
+
const output = getOutput(snapshot, event.output_index);
|
|
220
|
+
if (output.type === 'custom_tool_call') {
|
|
221
|
+
output.input += event.delta;
|
|
222
|
+
}
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case 'response.custom_tool_call_input.done': {
|
|
226
|
+
const output = getOutput(snapshot, event.output_index);
|
|
227
|
+
if (output.type === 'custom_tool_call') {
|
|
228
|
+
output.input = event.input;
|
|
229
|
+
}
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
case 'response.mcp_call_arguments.delta': {
|
|
233
|
+
const output = getOutput(snapshot, event.output_index);
|
|
234
|
+
if (output.type === 'mcp_call') {
|
|
235
|
+
output.arguments += event.delta;
|
|
236
|
+
}
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
case 'response.mcp_call_arguments.done': {
|
|
240
|
+
const output = getOutput(snapshot, event.output_index);
|
|
241
|
+
if (output.type === 'mcp_call') {
|
|
242
|
+
output.arguments = event.arguments;
|
|
243
|
+
}
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
case 'response.code_interpreter_call_code.delta': {
|
|
247
|
+
const output = getOutput(snapshot, event.output_index);
|
|
248
|
+
if (output.type === 'code_interpreter_call') {
|
|
249
|
+
output.code = (output.code ?? '') + event.delta;
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
case 'response.code_interpreter_call_code.done': {
|
|
254
|
+
const output = getOutput(snapshot, event.output_index);
|
|
255
|
+
if (output.type === 'code_interpreter_call') {
|
|
256
|
+
output.code = event.code;
|
|
257
|
+
}
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
case 'response.code_interpreter_call.in_progress': {
|
|
261
|
+
const output = getOutput(snapshot, event.output_index);
|
|
262
|
+
if (output.type === 'code_interpreter_call') {
|
|
263
|
+
output.status = 'in_progress';
|
|
264
|
+
}
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
case 'response.code_interpreter_call.interpreting': {
|
|
268
|
+
const output = getOutput(snapshot, event.output_index);
|
|
269
|
+
if (output.type === 'code_interpreter_call') {
|
|
270
|
+
output.status = 'interpreting';
|
|
271
|
+
}
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
case 'response.code_interpreter_call.completed': {
|
|
275
|
+
const output = getOutput(snapshot, event.output_index);
|
|
276
|
+
if (output.type === 'code_interpreter_call') {
|
|
277
|
+
output.status = 'completed';
|
|
278
|
+
}
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
case 'response.file_search_call.in_progress': {
|
|
282
|
+
const output = getOutput(snapshot, event.output_index);
|
|
283
|
+
if (output.type === 'file_search_call') {
|
|
284
|
+
output.status = 'in_progress';
|
|
285
|
+
}
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
case 'response.file_search_call.searching': {
|
|
289
|
+
const output = getOutput(snapshot, event.output_index);
|
|
290
|
+
if (output.type === 'file_search_call') {
|
|
291
|
+
output.status = 'searching';
|
|
292
|
+
}
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
case 'response.file_search_call.completed': {
|
|
296
|
+
const output = getOutput(snapshot, event.output_index);
|
|
297
|
+
if (output.type === 'file_search_call') {
|
|
298
|
+
output.status = 'completed';
|
|
299
|
+
}
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
case 'response.web_search_call.in_progress': {
|
|
303
|
+
const output = getOutput(snapshot, event.output_index);
|
|
304
|
+
if (output.type === 'web_search_call') {
|
|
305
|
+
output.status = 'in_progress';
|
|
306
|
+
}
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
case 'response.web_search_call.searching': {
|
|
310
|
+
const output = getOutput(snapshot, event.output_index);
|
|
311
|
+
if (output.type === 'web_search_call') {
|
|
312
|
+
output.status = 'searching';
|
|
313
|
+
}
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
case 'response.web_search_call.completed': {
|
|
317
|
+
const output = getOutput(snapshot, event.output_index);
|
|
318
|
+
if (output.type === 'web_search_call') {
|
|
319
|
+
output.status = 'completed';
|
|
320
|
+
}
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
case 'response.image_generation_call.in_progress': {
|
|
324
|
+
const output = getOutput(snapshot, event.output_index);
|
|
325
|
+
if (output.type === 'image_generation_call') {
|
|
326
|
+
output.status = 'in_progress';
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
case 'response.image_generation_call.generating': {
|
|
331
|
+
const output = getOutput(snapshot, event.output_index);
|
|
332
|
+
if (output.type === 'image_generation_call') {
|
|
333
|
+
output.status = 'generating';
|
|
334
|
+
}
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
case 'response.image_generation_call.completed': {
|
|
338
|
+
const output = getOutput(snapshot, event.output_index);
|
|
339
|
+
if (output.type === 'image_generation_call') {
|
|
340
|
+
output.status = 'completed';
|
|
341
|
+
}
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
case 'response.mcp_call.in_progress': {
|
|
345
|
+
const output = getOutput(snapshot, event.output_index);
|
|
346
|
+
if (output.type === 'mcp_call') {
|
|
347
|
+
output.status = 'in_progress';
|
|
348
|
+
}
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
case 'response.mcp_call.completed': {
|
|
352
|
+
const output = getOutput(snapshot, event.output_index);
|
|
353
|
+
if (output.type === 'mcp_call') {
|
|
354
|
+
output.status = 'completed';
|
|
355
|
+
}
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
case 'response.mcp_call.failed': {
|
|
359
|
+
const output = getOutput(snapshot, event.output_index);
|
|
360
|
+
if (output.type === 'mcp_call') {
|
|
361
|
+
output.status = 'failed';
|
|
362
|
+
}
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
case 'response.created':
|
|
366
|
+
case 'response.queued':
|
|
367
|
+
case 'response.in_progress':
|
|
368
|
+
case 'response.completed':
|
|
369
|
+
case 'response.failed':
|
|
370
|
+
case 'response.incomplete': {
|
|
371
|
+
snapshot = cloneResponse(event.response);
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
case 'response.audio.delta':
|
|
375
|
+
case 'response.audio.done':
|
|
376
|
+
case 'response.audio.transcript.delta':
|
|
377
|
+
case 'response.audio.transcript.done':
|
|
378
|
+
case 'response.image_generation_call.partial_image':
|
|
379
|
+
case 'response.mcp_list_tools.in_progress':
|
|
380
|
+
case 'response.mcp_list_tools.completed':
|
|
381
|
+
case 'response.mcp_list_tools.failed':
|
|
382
|
+
case 'keepalive':
|
|
383
|
+
case 'error': {
|
|
384
|
+
// These events do not contain state represented by the Response object.
|
|
385
|
+
break;
|
|
386
|
+
}
|
|
387
|
+
default: {
|
|
388
|
+
assertNever(event);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
return snapshot;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
function cloneResponse(response: Response): Response {
|
|
396
|
+
const snapshot = structuredClone(response);
|
|
397
|
+
if (!Object.getOwnPropertyDescriptor(snapshot, 'output_text') || snapshot.output_text == null) {
|
|
398
|
+
addOutputText(snapshot);
|
|
399
|
+
}
|
|
400
|
+
return snapshot;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function getOutput(snapshot: Response, outputIndex: number): Response['output'][number] {
|
|
404
|
+
const output = snapshot.output[outputIndex];
|
|
405
|
+
if (!output) {
|
|
406
|
+
throw new OpenAIError(`missing output at index ${outputIndex}`);
|
|
407
|
+
}
|
|
408
|
+
return output;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
function getContent<T>(content: Array<T>, contentIndex: number): T {
|
|
412
|
+
const part = content[contentIndex];
|
|
413
|
+
if (!part) {
|
|
414
|
+
throw new OpenAIError(`missing content at index ${contentIndex}`);
|
|
415
|
+
}
|
|
416
|
+
return part;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
function assertNever(value: never): never {
|
|
420
|
+
throw new OpenAIError(`Unhandled response stream event: ${JSON.stringify(value)}`);
|
|
421
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ResponseFunctionShellCallOutputContent,
|
|
3
|
+
ResponseInputItem,
|
|
4
|
+
ResponseOutputItem,
|
|
5
|
+
} from '../../resources/responses/responses';
|
|
6
|
+
|
|
7
|
+
export type ResponseInputItemLike = ResponseInputItem | ResponseOutputItem;
|
|
8
|
+
|
|
9
|
+
type ResponseShellCallOutputInputItem = Extract<ResponseInputItem, { type: 'shell_call_output' }>;
|
|
10
|
+
type ResponseComputerCallOutputInputItem = Extract<ResponseInputItem, { type: 'computer_call_output' }>;
|
|
11
|
+
type ResponseCustomToolCallOutputInputItem = Extract<ResponseInputItem, { type: 'custom_tool_call_output' }>;
|
|
12
|
+
type ResponseAdditionalToolsInputItem = Extract<ResponseInputItem, { type: 'additional_tools' }>;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Normalizes a mixed array of stored response history items into clean
|
|
16
|
+
* `ResponseInputItem`s that can be sent back to `responses.create()`. Known items
|
|
17
|
+
* that cannot be replayed without changing their meaning are omitted.
|
|
18
|
+
*
|
|
19
|
+
* @throws {TypeError} If an item type is not supported by the installed SDK.
|
|
20
|
+
*/
|
|
21
|
+
export function toResponseInputItems(items: Iterable<ResponseInputItemLike>): ResponseInputItem[] {
|
|
22
|
+
const inputItems: ResponseInputItem[] = [];
|
|
23
|
+
for (const item of items) {
|
|
24
|
+
const inputItem = toResponseInputItem(item);
|
|
25
|
+
if (inputItem) {
|
|
26
|
+
inputItems.push(inputItem);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return inputItems;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Normalizes a stored response history item into a clean `ResponseInputItem`, or
|
|
34
|
+
* returns `null` when a known item cannot be replayed without changing its
|
|
35
|
+
* meaning.
|
|
36
|
+
*
|
|
37
|
+
* @throws {TypeError} If the item type is not supported by the installed SDK.
|
|
38
|
+
*/
|
|
39
|
+
export function toResponseInputItem(item: ResponseInputItemLike): ResponseInputItem | null {
|
|
40
|
+
switch (item.type) {
|
|
41
|
+
case 'additional_tools': {
|
|
42
|
+
if (item.role !== 'developer') {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return stripCreatedBy(item) as ResponseAdditionalToolsInputItem;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
case 'shell_call_output': {
|
|
49
|
+
const output: ResponseShellCallOutputInputItem['output'] = item.output.map(
|
|
50
|
+
(chunk) => stripCreatedBy(chunk) as ResponseFunctionShellCallOutputContent,
|
|
51
|
+
);
|
|
52
|
+
return {
|
|
53
|
+
...(stripCreatedBy(item) as ResponseShellCallOutputInputItem),
|
|
54
|
+
output,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
case 'computer_call_output': {
|
|
59
|
+
const { created_by: _createdBy, ...withoutCreatedBy } = item as typeof item & {
|
|
60
|
+
created_by?: string;
|
|
61
|
+
};
|
|
62
|
+
if (withoutCreatedBy.status === 'failed') {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return withoutCreatedBy as ResponseComputerCallOutputInputItem;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
case 'custom_tool_call_output': {
|
|
69
|
+
if ('status' in item && item.status !== 'completed') {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const {
|
|
73
|
+
created_by: _createdBy,
|
|
74
|
+
status: _status,
|
|
75
|
+
...inputItem
|
|
76
|
+
} = item as typeof item & { created_by?: string; status?: string };
|
|
77
|
+
return inputItem as ResponseCustomToolCallOutputInputItem;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
case 'apply_patch_call':
|
|
81
|
+
case 'apply_patch_call_output':
|
|
82
|
+
case 'code_interpreter_call':
|
|
83
|
+
case 'compaction':
|
|
84
|
+
case 'compaction_trigger':
|
|
85
|
+
case 'computer_call':
|
|
86
|
+
case 'custom_tool_call':
|
|
87
|
+
case 'file_search_call':
|
|
88
|
+
case 'function_call':
|
|
89
|
+
case 'function_call_output':
|
|
90
|
+
case 'image_generation_call':
|
|
91
|
+
case 'item_reference':
|
|
92
|
+
case 'local_shell_call':
|
|
93
|
+
case 'local_shell_call_output':
|
|
94
|
+
case 'mcp_approval_request':
|
|
95
|
+
case 'mcp_approval_response':
|
|
96
|
+
case 'mcp_call':
|
|
97
|
+
case 'mcp_list_tools':
|
|
98
|
+
case 'message':
|
|
99
|
+
case 'program':
|
|
100
|
+
case 'program_output':
|
|
101
|
+
case 'reasoning':
|
|
102
|
+
case 'shell_call':
|
|
103
|
+
case 'tool_search_call':
|
|
104
|
+
case 'tool_search_output':
|
|
105
|
+
case 'web_search_call':
|
|
106
|
+
case null:
|
|
107
|
+
case undefined: {
|
|
108
|
+
return stripCreatedBy(item) as ResponseInputItem;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
default: {
|
|
112
|
+
return assertNever(item);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function stripCreatedBy<T extends object>(item: T): T {
|
|
118
|
+
if (!('created_by' in item)) {
|
|
119
|
+
return item;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const { created_by: _createdBy, ...rest } = item as T & { created_by?: string };
|
|
123
|
+
return rest as T;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function assertNever(value: never): never {
|
|
127
|
+
const type = (value as { type?: unknown }).type;
|
|
128
|
+
throw new TypeError(`Unsupported response item type: ${String(type)}`);
|
|
129
|
+
}
|
|
@@ -11,6 +11,7 @@ import { APIUserAbortError, OpenAIError } from '../../error';
|
|
|
11
11
|
import OpenAI from '../../index';
|
|
12
12
|
import { type BaseEvents, EventStream } from '../EventStream';
|
|
13
13
|
import { type ResponseFunctionCallArgumentsDeltaEvent, type ResponseTextDeltaEvent } from './EventTypes';
|
|
14
|
+
import { accumulateResponse } from './ResponseAccumulator';
|
|
14
15
|
import { maybeParseResponse, ParseableToolsParams } from '../ResponsesParser';
|
|
15
16
|
import { Stream } from '../../streaming';
|
|
16
17
|
|
|
@@ -103,7 +104,8 @@ export class ResponseStream<ParsedT = null>
|
|
|
103
104
|
}
|
|
104
105
|
};
|
|
105
106
|
|
|
106
|
-
const response =
|
|
107
|
+
const response = accumulateResponse(event, this.#currentResponseSnapshot);
|
|
108
|
+
this.#currentResponseSnapshot = response;
|
|
107
109
|
maybeEmit('event', event);
|
|
108
110
|
|
|
109
111
|
switch (event.type) {
|
|
@@ -167,11 +169,7 @@ export class ResponseStream<ParsedT = null>
|
|
|
167
169
|
params: ResponseStreamParams,
|
|
168
170
|
options?: RequestOptions,
|
|
169
171
|
): Promise<ParsedResponse<ParsedT>> {
|
|
170
|
-
|
|
171
|
-
if (signal) {
|
|
172
|
-
if (signal.aborted) this.controller.abort();
|
|
173
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
174
|
-
}
|
|
172
|
+
this._listenForAbort(options?.signal);
|
|
175
173
|
this.#beginRequest();
|
|
176
174
|
|
|
177
175
|
let stream: Stream<ResponseStreamEvent> | undefined;
|
|
@@ -200,93 +198,6 @@ export class ResponseStream<ParsedT = null>
|
|
|
200
198
|
return this.#endRequest();
|
|
201
199
|
}
|
|
202
200
|
|
|
203
|
-
#accumulateResponse(event: ResponseStreamEvent): Response {
|
|
204
|
-
let snapshot = this.#currentResponseSnapshot;
|
|
205
|
-
if (!snapshot) {
|
|
206
|
-
if (event.type !== 'response.created') {
|
|
207
|
-
throw new OpenAIError(
|
|
208
|
-
`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`,
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
snapshot = this.#currentResponseSnapshot = event.response;
|
|
212
|
-
return snapshot;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
switch (event.type) {
|
|
216
|
-
case 'response.output_item.added': {
|
|
217
|
-
snapshot.output.push(event.item);
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
case 'response.content_part.added': {
|
|
221
|
-
const output = snapshot.output[event.output_index];
|
|
222
|
-
if (!output) {
|
|
223
|
-
throw new OpenAIError(`missing output at index ${event.output_index}`);
|
|
224
|
-
}
|
|
225
|
-
const type = output.type;
|
|
226
|
-
const part = event.part;
|
|
227
|
-
if (type === 'message' && part.type !== 'reasoning_text') {
|
|
228
|
-
output.content.push(part);
|
|
229
|
-
} else if (type === 'reasoning' && part.type === 'reasoning_text') {
|
|
230
|
-
if (!output.content) {
|
|
231
|
-
output.content = [];
|
|
232
|
-
}
|
|
233
|
-
output.content.push(part);
|
|
234
|
-
}
|
|
235
|
-
break;
|
|
236
|
-
}
|
|
237
|
-
case 'response.output_text.delta': {
|
|
238
|
-
const output = snapshot.output[event.output_index];
|
|
239
|
-
if (!output) {
|
|
240
|
-
throw new OpenAIError(`missing output at index ${event.output_index}`);
|
|
241
|
-
}
|
|
242
|
-
if (output.type === 'message') {
|
|
243
|
-
const content = output.content[event.content_index];
|
|
244
|
-
if (!content) {
|
|
245
|
-
throw new OpenAIError(`missing content at index ${event.content_index}`);
|
|
246
|
-
}
|
|
247
|
-
if (content.type !== 'output_text') {
|
|
248
|
-
throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);
|
|
249
|
-
}
|
|
250
|
-
content.text += event.delta;
|
|
251
|
-
}
|
|
252
|
-
break;
|
|
253
|
-
}
|
|
254
|
-
case 'response.function_call_arguments.delta': {
|
|
255
|
-
const output = snapshot.output[event.output_index];
|
|
256
|
-
if (!output) {
|
|
257
|
-
throw new OpenAIError(`missing output at index ${event.output_index}`);
|
|
258
|
-
}
|
|
259
|
-
if (output.type === 'function_call') {
|
|
260
|
-
output.arguments += event.delta;
|
|
261
|
-
}
|
|
262
|
-
break;
|
|
263
|
-
}
|
|
264
|
-
case 'response.reasoning_text.delta': {
|
|
265
|
-
const output = snapshot.output[event.output_index];
|
|
266
|
-
if (!output) {
|
|
267
|
-
throw new OpenAIError(`missing output at index ${event.output_index}`);
|
|
268
|
-
}
|
|
269
|
-
if (output.type === 'reasoning') {
|
|
270
|
-
const content = output.content?.[event.content_index];
|
|
271
|
-
if (!content) {
|
|
272
|
-
throw new OpenAIError(`missing content at index ${event.content_index}`);
|
|
273
|
-
}
|
|
274
|
-
if (content.type !== 'reasoning_text') {
|
|
275
|
-
throw new OpenAIError(`expected content to be 'reasoning_text', got ${content.type}`);
|
|
276
|
-
}
|
|
277
|
-
content.text += event.delta;
|
|
278
|
-
}
|
|
279
|
-
break;
|
|
280
|
-
}
|
|
281
|
-
case 'response.completed': {
|
|
282
|
-
this.#currentResponseSnapshot = event.response;
|
|
283
|
-
break;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
return snapshot;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
201
|
[Symbol.asyncIterator](this: ResponseStream<ParsedT>): AsyncIterator<ResponseStreamEvent> {
|
|
291
202
|
const pushQueue: ResponseStreamEvent[] = [];
|
|
292
203
|
const readQueue: {
|