openai 7.25.0 → 7.27.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 +40 -0
- package/client.d.mts +5 -6
- package/client.d.mts.map +1 -1
- package/client.d.ts +5 -6
- package/client.d.ts.map +1 -1
- package/client.js +38 -10
- package/client.js.map +1 -1
- package/client.mjs +39 -11
- package/client.mjs.map +1 -1
- package/core/streaming.d.mts +4 -0
- package/core/streaming.d.mts.map +1 -1
- package/core/streaming.d.ts +4 -0
- package/core/streaming.d.ts.map +1 -1
- package/core/streaming.js +6 -0
- package/core/streaming.js.map +1 -1
- package/core/streaming.mjs +6 -0
- package/core/streaming.mjs.map +1 -1
- package/helpers/beta/agents/filesystem.d.mts +17 -0
- package/helpers/beta/agents/filesystem.d.mts.map +1 -0
- package/helpers/beta/agents/filesystem.d.ts +17 -0
- package/helpers/beta/agents/filesystem.d.ts.map +1 -0
- package/helpers/beta/agents/filesystem.js +168 -0
- package/helpers/beta/agents/filesystem.js.map +1 -0
- package/helpers/beta/agents/filesystem.mjs +162 -0
- package/helpers/beta/agents/filesystem.mjs.map +1 -0
- package/helpers/beta/agents/standard-schema.d.mts +7 -0
- package/helpers/beta/agents/standard-schema.d.mts.map +1 -0
- package/helpers/beta/agents/standard-schema.d.ts +7 -0
- package/helpers/beta/agents/standard-schema.d.ts.map +1 -0
- package/helpers/beta/agents/standard-schema.js +12 -0
- package/helpers/beta/agents/standard-schema.js.map +1 -0
- package/helpers/beta/agents/standard-schema.mjs +9 -0
- package/helpers/beta/agents/standard-schema.mjs.map +1 -0
- package/helpers/beta/agents/zod.d.mts +10 -0
- package/helpers/beta/agents/zod.d.mts.map +1 -0
- package/helpers/beta/agents/zod.d.ts +10 -0
- package/helpers/beta/agents/zod.d.ts.map +1 -0
- package/helpers/beta/agents/zod.js +12 -0
- package/helpers/beta/agents/zod.js.map +1 -0
- package/helpers/beta/agents/zod.mjs +9 -0
- package/helpers/beta/agents/zod.mjs.map +1 -0
- package/internal/realtime-credentials.d.mts +22 -1
- package/internal/realtime-credentials.d.mts.map +1 -1
- package/internal/realtime-credentials.d.ts +22 -1
- package/internal/realtime-credentials.d.ts.map +1 -1
- package/internal/realtime-credentials.js +48 -4
- package/internal/realtime-credentials.js.map +1 -1
- package/internal/realtime-credentials.mjs +45 -4
- package/internal/realtime-credentials.mjs.map +1 -1
- package/internal/responses-ws-credentials.d.mts +23 -0
- package/internal/responses-ws-credentials.d.mts.map +1 -0
- package/internal/responses-ws-credentials.d.ts +23 -0
- package/internal/responses-ws-credentials.d.ts.map +1 -0
- package/internal/responses-ws-credentials.js +108 -0
- package/internal/responses-ws-credentials.js.map +1 -0
- package/internal/responses-ws-credentials.mjs +104 -0
- package/internal/responses-ws-credentials.mjs.map +1 -0
- package/internal/shim-types.d.mts +9 -0
- package/internal/shim-types.d.mts.map +1 -1
- package/internal/shim-types.d.ts +9 -0
- package/internal/shim-types.d.ts.map +1 -1
- package/internal/tslib.js +4 -0
- package/internal/ws-adapter-node.d.mts +4 -0
- package/internal/ws-adapter-node.d.mts.map +1 -1
- package/internal/ws-adapter-node.d.ts +4 -0
- package/internal/ws-adapter-node.d.ts.map +1 -1
- package/internal/ws-adapter-node.js +56 -0
- package/internal/ws-adapter-node.js.map +1 -1
- package/internal/ws-adapter-node.mjs +55 -0
- package/internal/ws-adapter-node.mjs.map +1 -1
- package/internal/ws.d.mts +27 -4
- package/internal/ws.d.mts.map +1 -1
- package/internal/ws.d.ts +27 -4
- package/internal/ws.d.ts.map +1 -1
- package/internal/ws.js +105 -5
- package/internal/ws.js.map +1 -1
- package/internal/ws.mjs +102 -4
- package/internal/ws.mjs.map +1 -1
- package/lib/agents/agent-session-stream.d.mts +13 -4
- package/lib/agents/agent-session-stream.d.mts.map +1 -1
- package/lib/agents/agent-session-stream.d.ts +13 -4
- package/lib/agents/agent-session-stream.d.ts.map +1 -1
- package/lib/agents/agent-session-stream.js +24 -21
- package/lib/agents/agent-session-stream.js.map +1 -1
- package/lib/agents/agent-session-stream.mjs +24 -21
- package/lib/agents/agent-session-stream.mjs.map +1 -1
- package/lib/beta/agents/agent-session-create-stream.d.mts +15 -0
- package/lib/beta/agents/agent-session-create-stream.d.mts.map +1 -0
- package/lib/beta/agents/agent-session-create-stream.d.ts +15 -0
- package/lib/beta/agents/agent-session-create-stream.d.ts.map +1 -0
- package/lib/beta/agents/agent-session-create-stream.js +25 -0
- package/lib/beta/agents/agent-session-create-stream.js.map +1 -0
- package/lib/beta/agents/agent-session-create-stream.mjs +22 -0
- package/lib/beta/agents/agent-session-create-stream.mjs.map +1 -0
- package/lib/beta/agents/agent-turn-result-collector.d.mts +17 -0
- package/lib/beta/agents/agent-turn-result-collector.d.mts.map +1 -0
- package/lib/beta/agents/agent-turn-result-collector.d.ts +17 -0
- package/lib/beta/agents/agent-turn-result-collector.d.ts.map +1 -0
- package/lib/beta/agents/agent-turn-result-collector.js +99 -0
- package/lib/beta/agents/agent-turn-result-collector.js.map +1 -0
- package/lib/beta/agents/agent-turn-result-collector.mjs +95 -0
- package/lib/beta/agents/agent-turn-result-collector.mjs.map +1 -0
- package/lib/beta/agents/agent-turn-result-error.d.mts +16 -0
- package/lib/beta/agents/agent-turn-result-error.d.mts.map +1 -0
- package/lib/beta/agents/agent-turn-result-error.d.ts +16 -0
- package/lib/beta/agents/agent-turn-result-error.d.ts.map +1 -0
- package/lib/beta/agents/agent-turn-result-error.js +22 -0
- package/lib/beta/agents/agent-turn-result-error.js.map +1 -0
- package/lib/beta/agents/agent-turn-result-error.mjs +18 -0
- package/lib/beta/agents/agent-turn-result-error.mjs.map +1 -0
- package/lib/beta/agents/agent-turn-result.d.mts +12 -0
- package/lib/beta/agents/agent-turn-result.d.mts.map +1 -0
- package/lib/beta/agents/agent-turn-result.d.ts +12 -0
- package/lib/beta/agents/agent-turn-result.d.ts.map +1 -0
- package/lib/beta/agents/agent-turn-result.js +22 -0
- package/lib/beta/agents/agent-turn-result.js.map +1 -0
- package/lib/beta/agents/agent-turn-result.mjs +18 -0
- package/lib/beta/agents/agent-turn-result.mjs.map +1 -0
- package/lib/beta/agents/files.d.mts +33 -0
- package/lib/beta/agents/files.d.mts.map +1 -0
- package/lib/beta/agents/files.d.ts +33 -0
- package/lib/beta/agents/files.d.ts.map +1 -0
- package/lib/beta/agents/files.js +93 -0
- package/lib/beta/agents/files.js.map +1 -0
- package/lib/beta/agents/files.mjs +86 -0
- package/lib/beta/agents/files.mjs.map +1 -0
- package/lib/beta/agents/function-tool.d.mts +27 -0
- package/lib/beta/agents/function-tool.d.mts.map +1 -0
- package/lib/beta/agents/function-tool.d.ts +27 -0
- package/lib/beta/agents/function-tool.d.ts.map +1 -0
- package/lib/beta/agents/function-tool.js +48 -0
- package/lib/beta/agents/function-tool.js.map +1 -0
- package/lib/beta/agents/function-tool.mjs +45 -0
- package/lib/beta/agents/function-tool.mjs.map +1 -0
- package/lib/beta/agents/output-format-types.d.mts +11 -0
- package/lib/beta/agents/output-format-types.d.mts.map +1 -0
- package/lib/beta/agents/output-format-types.d.ts +11 -0
- package/lib/beta/agents/output-format-types.d.ts.map +1 -0
- package/lib/beta/agents/output-format-types.js +3 -0
- package/lib/beta/agents/output-format-types.js.map +1 -0
- package/lib/beta/agents/output-format-types.mjs +2 -0
- package/lib/beta/agents/output-format-types.mjs.map +1 -0
- package/lib/beta/agents/output-format.d.mts +8 -0
- package/lib/beta/agents/output-format.d.mts.map +1 -0
- package/lib/beta/agents/output-format.d.ts +8 -0
- package/lib/beta/agents/output-format.d.ts.map +1 -0
- package/lib/beta/agents/output-format.js +20 -0
- package/lib/beta/agents/output-format.js.map +1 -0
- package/lib/beta/agents/output-format.mjs +14 -0
- package/lib/beta/agents/output-format.mjs.map +1 -0
- package/lib/beta/agents/output-parse-error.d.mts +11 -0
- package/lib/beta/agents/output-parse-error.d.mts.map +1 -0
- package/lib/beta/agents/output-parse-error.d.ts +11 -0
- package/lib/beta/agents/output-parse-error.d.ts.map +1 -0
- package/lib/beta/agents/output-parse-error.js +22 -0
- package/lib/beta/agents/output-parse-error.js.map +1 -0
- package/lib/beta/agents/output-parse-error.mjs +18 -0
- package/lib/beta/agents/output-parse-error.mjs.map +1 -0
- package/lib/beta/agents/pages.d.mts +9 -0
- package/lib/beta/agents/pages.d.mts.map +1 -0
- package/lib/beta/agents/pages.d.ts +9 -0
- package/lib/beta/agents/pages.d.ts.map +1 -0
- package/lib/beta/agents/pages.js +32 -0
- package/lib/beta/agents/pages.js.map +1 -0
- package/lib/beta/agents/pages.mjs +29 -0
- package/lib/beta/agents/pages.mjs.map +1 -0
- package/lib/beta/agents/parse-result.d.mts +95 -0
- package/lib/beta/agents/parse-result.d.mts.map +1 -0
- package/lib/beta/agents/parse-result.d.ts +95 -0
- package/lib/beta/agents/parse-result.d.ts.map +1 -0
- package/lib/beta/agents/parse-result.js +116 -0
- package/lib/beta/agents/parse-result.js.map +1 -0
- package/lib/beta/agents/parse-result.mjs +110 -0
- package/lib/beta/agents/parse-result.mjs.map +1 -0
- package/lib/beta/agents/parsed-agent-turn-result.d.mts +8 -0
- package/lib/beta/agents/parsed-agent-turn-result.d.mts.map +1 -0
- package/lib/beta/agents/parsed-agent-turn-result.d.ts +8 -0
- package/lib/beta/agents/parsed-agent-turn-result.d.ts.map +1 -0
- package/lib/beta/agents/parsed-agent-turn-result.js +14 -0
- package/lib/beta/agents/parsed-agent-turn-result.js.map +1 -0
- package/lib/beta/agents/parsed-agent-turn-result.mjs +10 -0
- package/lib/beta/agents/parsed-agent-turn-result.mjs.map +1 -0
- package/lib/beta/agents/result-artifacts.d.mts +19 -0
- package/lib/beta/agents/result-artifacts.d.mts.map +1 -0
- package/lib/beta/agents/result-artifacts.d.ts +19 -0
- package/lib/beta/agents/result-artifacts.d.ts.map +1 -0
- package/lib/beta/agents/result-artifacts.js +67 -0
- package/lib/beta/agents/result-artifacts.js.map +1 -0
- package/lib/beta/agents/result-artifacts.mjs +63 -0
- package/lib/beta/agents/result-artifacts.mjs.map +1 -0
- package/lib/beta/agents/result-collection.d.mts +15 -0
- package/lib/beta/agents/result-collection.d.mts.map +1 -0
- package/lib/beta/agents/result-collection.d.ts +15 -0
- package/lib/beta/agents/result-collection.d.ts.map +1 -0
- package/lib/beta/agents/result-collection.js +110 -0
- package/lib/beta/agents/result-collection.js.map +1 -0
- package/lib/beta/agents/result-collection.mjs +106 -0
- package/lib/beta/agents/result-collection.mjs.map +1 -0
- package/lib/beta/agents/tool-output.d.mts +7 -0
- package/lib/beta/agents/tool-output.d.mts.map +1 -0
- package/lib/beta/agents/tool-output.d.ts +7 -0
- package/lib/beta/agents/tool-output.d.ts.map +1 -0
- package/lib/beta/agents/tool-output.js +26 -0
- package/lib/beta/agents/tool-output.js.map +1 -0
- package/lib/beta/agents/tool-output.mjs +23 -0
- package/lib/beta/agents/tool-output.mjs.map +1 -0
- package/lib/responses/responses-websocket-session.d.mts +1 -1
- package/lib/responses/responses-websocket-session.d.mts.map +1 -1
- package/lib/responses/responses-websocket-session.d.ts +1 -1
- package/lib/responses/responses-websocket-session.d.ts.map +1 -1
- package/lib/responses/responses-websocket-session.js +12 -2
- package/lib/responses/responses-websocket-session.js.map +1 -1
- package/lib/responses/responses-websocket-session.mjs +12 -2
- package/lib/responses/responses-websocket-session.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/beta/agents/agents.d.mts +9 -0
- package/resources/beta/agents/agents.d.mts.map +1 -1
- package/resources/beta/agents/agents.d.ts +9 -0
- package/resources/beta/agents/agents.d.ts.map +1 -1
- package/resources/beta/agents/agents.js.map +1 -1
- package/resources/beta/agents/agents.mjs.map +1 -1
- package/resources/beta/agents/environments/files.d.mts +12 -0
- package/resources/beta/agents/environments/files.d.mts.map +1 -1
- package/resources/beta/agents/environments/files.d.ts +12 -0
- package/resources/beta/agents/environments/files.d.ts.map +1 -1
- package/resources/beta/agents/environments/files.js +9 -0
- package/resources/beta/agents/environments/files.js.map +1 -1
- package/resources/beta/agents/environments/files.mjs +9 -0
- package/resources/beta/agents/environments/files.mjs.map +1 -1
- package/resources/beta/agents/sessions/artifacts.d.mts +4 -0
- package/resources/beta/agents/sessions/artifacts.d.mts.map +1 -1
- package/resources/beta/agents/sessions/artifacts.d.ts +4 -0
- package/resources/beta/agents/sessions/artifacts.d.ts.map +1 -1
- package/resources/beta/agents/sessions/artifacts.js +5 -0
- package/resources/beta/agents/sessions/artifacts.js.map +1 -1
- package/resources/beta/agents/sessions/artifacts.mjs +5 -0
- package/resources/beta/agents/sessions/artifacts.mjs.map +1 -1
- package/resources/beta/agents/sessions/events.d.mts +6 -5
- package/resources/beta/agents/sessions/events.d.mts.map +1 -1
- package/resources/beta/agents/sessions/events.d.ts +6 -5
- package/resources/beta/agents/sessions/events.d.ts.map +1 -1
- package/resources/beta/agents/sessions/events.js +6 -5
- package/resources/beta/agents/sessions/events.js.map +1 -1
- package/resources/beta/agents/sessions/events.mjs +6 -5
- package/resources/beta/agents/sessions/events.mjs.map +1 -1
- package/resources/beta/agents/sessions/index.d.mts +1 -0
- package/resources/beta/agents/sessions/index.d.mts.map +1 -1
- package/resources/beta/agents/sessions/index.d.ts +1 -0
- package/resources/beta/agents/sessions/index.d.ts.map +1 -1
- package/resources/beta/agents/sessions/index.js +3 -1
- package/resources/beta/agents/sessions/index.js.map +1 -1
- package/resources/beta/agents/sessions/index.mjs +1 -0
- package/resources/beta/agents/sessions/index.mjs.map +1 -1
- package/resources/beta/agents/sessions/sessions.d.mts +16 -4
- package/resources/beta/agents/sessions/sessions.d.mts.map +1 -1
- package/resources/beta/agents/sessions/sessions.d.ts +16 -4
- package/resources/beta/agents/sessions/sessions.d.ts.map +1 -1
- package/resources/beta/agents/sessions/sessions.js +17 -4
- package/resources/beta/agents/sessions/sessions.js.map +1 -1
- package/resources/beta/agents/sessions/sessions.mjs +17 -4
- package/resources/beta/agents/sessions/sessions.mjs.map +1 -1
- package/resources/beta/agents/sessions/traces.d.mts +68 -0
- package/resources/beta/agents/sessions/traces.d.mts.map +1 -0
- package/resources/beta/agents/sessions/traces.d.ts +68 -0
- package/resources/beta/agents/sessions/traces.d.ts.map +1 -0
- package/resources/beta/agents/sessions/traces.js +81 -0
- package/resources/beta/agents/sessions/traces.js.map +1 -0
- package/resources/beta/agents/sessions/traces.mjs +77 -0
- package/resources/beta/agents/sessions/traces.mjs.map +1 -0
- package/resources/beta/responses/ws-base.d.mts +3 -1
- package/resources/beta/responses/ws-base.d.mts.map +1 -1
- package/resources/beta/responses/ws-base.d.ts +3 -1
- package/resources/beta/responses/ws-base.d.ts.map +1 -1
- package/resources/beta/responses/ws-base.js +35 -6
- package/resources/beta/responses/ws-base.js.map +1 -1
- package/resources/beta/responses/ws-base.mjs +35 -6
- package/resources/beta/responses/ws-base.mjs.map +1 -1
- package/resources/beta/responses/ws.d.mts +10 -0
- package/resources/beta/responses/ws.d.mts.map +1 -1
- package/resources/beta/responses/ws.d.ts +10 -0
- package/resources/beta/responses/ws.d.ts.map +1 -1
- package/resources/beta/responses/ws.js +23 -22
- package/resources/beta/responses/ws.js.map +1 -1
- package/resources/beta/responses/ws.mjs +24 -23
- package/resources/beta/responses/ws.mjs.map +1 -1
- package/resources/chat/completions/completions.d.mts +1 -1
- package/resources/chat/completions/completions.d.mts.map +1 -1
- package/resources/chat/completions/completions.d.ts +1 -1
- package/resources/chat/completions/completions.d.ts.map +1 -1
- package/resources/evals/runs/runs.js +1 -1
- package/resources/evals/runs/runs.js.map +1 -1
- package/resources/evals/runs/runs.mjs +1 -1
- package/resources/evals/runs/runs.mjs.map +1 -1
- package/resources/live/forks/forks.d.mts +5 -1
- package/resources/live/forks/forks.d.mts.map +1 -1
- package/resources/live/forks/forks.d.ts +5 -1
- package/resources/live/forks/forks.d.ts.map +1 -1
- package/resources/live/live.d.mts +5 -1
- package/resources/live/live.d.mts.map +1 -1
- package/resources/live/live.d.ts +5 -1
- package/resources/live/live.d.ts.map +1 -1
- package/resources/live/live.js.map +1 -1
- package/resources/live/live.mjs.map +1 -1
- package/resources/responses/ws-base.d.mts +3 -1
- package/resources/responses/ws-base.d.mts.map +1 -1
- package/resources/responses/ws-base.d.ts +3 -1
- package/resources/responses/ws-base.d.ts.map +1 -1
- package/resources/responses/ws-base.js +35 -6
- package/resources/responses/ws-base.js.map +1 -1
- package/resources/responses/ws-base.mjs +35 -6
- package/resources/responses/ws-base.mjs.map +1 -1
- package/resources/responses/ws.d.mts +10 -0
- package/resources/responses/ws.d.mts.map +1 -1
- package/resources/responses/ws.d.ts +10 -0
- package/resources/responses/ws.d.ts.map +1 -1
- package/resources/responses/ws.js +23 -22
- package/resources/responses/ws.js.map +1 -1
- package/resources/responses/ws.mjs +24 -23
- package/resources/responses/ws.mjs.map +1 -1
- package/src/client.ts +55 -19
- package/src/core/streaming.ts +9 -0
- package/src/helpers/beta/agents/filesystem.ts +187 -0
- package/src/helpers/beta/agents/standard-schema.ts +13 -0
- package/src/helpers/beta/agents/zod.ts +10 -0
- package/src/internal/realtime-credentials.ts +70 -4
- package/src/internal/responses-ws-credentials.ts +160 -0
- package/src/internal/shim-types.ts +17 -0
- package/src/internal/ws-adapter-node.ts +66 -0
- package/src/internal/ws.ts +139 -11
- package/src/lib/agents/agent-session-stream.ts +36 -24
- package/src/lib/beta/agents/agent-session-create-stream.ts +36 -0
- package/src/lib/beta/agents/agent-turn-result-collector.ts +122 -0
- package/src/lib/beta/agents/agent-turn-result-error.ts +33 -0
- package/src/lib/beta/agents/agent-turn-result.ts +22 -0
- package/src/lib/beta/agents/files.ts +119 -0
- package/src/lib/beta/agents/function-tool.ts +60 -0
- package/src/lib/beta/agents/output-format-types.ts +12 -0
- package/src/lib/beta/agents/output-format.ts +20 -0
- package/src/lib/beta/agents/output-parse-error.ts +16 -0
- package/src/lib/beta/agents/pages.ts +32 -0
- package/src/lib/beta/agents/parse-result.ts +133 -0
- package/src/lib/beta/agents/parsed-agent-turn-result.ts +12 -0
- package/src/lib/beta/agents/result-artifacts.ts +76 -0
- package/src/lib/beta/agents/result-collection.ts +115 -0
- package/src/lib/beta/agents/tool-output.ts +22 -0
- package/src/lib/responses/responses-websocket-session.ts +14 -3
- package/src/resources/beta/agents/agents.ts +11 -0
- package/src/resources/beta/agents/environments/files.ts +16 -0
- package/src/resources/beta/agents/sessions/artifacts.ts +7 -0
- package/src/resources/beta/agents/sessions/events.ts +6 -5
- package/src/resources/beta/agents/sessions/index.ts +1 -0
- package/src/resources/beta/agents/sessions/sessions.ts +48 -18
- package/src/resources/beta/agents/sessions/traces.ts +298 -0
- package/src/resources/beta/responses/ws-base.ts +40 -6
- package/src/resources/beta/responses/ws.ts +37 -27
- package/src/resources/chat/completions/completions.ts +1 -1
- package/src/resources/evals/runs/runs.ts +1 -1
- package/src/resources/live/forks/forks.ts +6 -1
- package/src/resources/live/live.ts +6 -1
- package/src/resources/responses/ws-base.ts +40 -6
- package/src/resources/responses/ws.ts +37 -27
- package/src/tsconfig.dist-src-node.d.ts +7 -0
- package/src/tsconfig.dist-src.d.ts +3 -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,298 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Castiron. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
import { APIResource } from '../../../../core/resource';
|
|
4
|
+
import { CursorPage, type CursorPageParams, PagePromise } from '../../../../core/pagination';
|
|
5
|
+
import { buildHeaders } from '../../../../internal/headers';
|
|
6
|
+
import { RequestOptions } from '../../../../internal/request-options';
|
|
7
|
+
import { path } from '../../../../internal/utils/path';
|
|
8
|
+
|
|
9
|
+
function resolveResourceRequestOptions(
|
|
10
|
+
options: RequestOptions | undefined,
|
|
11
|
+
buildOptions: (options: RequestOptions | undefined) => RequestOptions | Promise<RequestOptions>,
|
|
12
|
+
): Promise<RequestOptions> {
|
|
13
|
+
return Promise.resolve(options).then(buildOptions);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Recognizable options across SDK runtime versions. Keep this independent of
|
|
17
|
+
// private RequestOptions fields so older handwritten runtimes still compile.
|
|
18
|
+
const normalizeRequestOptionsForQueryKeys = new Set([
|
|
19
|
+
'method',
|
|
20
|
+
'path',
|
|
21
|
+
'query',
|
|
22
|
+
'body',
|
|
23
|
+
'headers',
|
|
24
|
+
'maxRetries',
|
|
25
|
+
'stream',
|
|
26
|
+
'timeout',
|
|
27
|
+
'httpAgent',
|
|
28
|
+
'fetchOptions',
|
|
29
|
+
'signal',
|
|
30
|
+
'idempotencyKey',
|
|
31
|
+
'defaultBaseURL',
|
|
32
|
+
'__metadata',
|
|
33
|
+
'__binaryRequest',
|
|
34
|
+
'__binaryResponse',
|
|
35
|
+
'__streamClass',
|
|
36
|
+
'__security',
|
|
37
|
+
'__synthesizeEventData',
|
|
38
|
+
]);
|
|
39
|
+
|
|
40
|
+
function normalizeRequestOptionsForQuery(
|
|
41
|
+
value: unknown,
|
|
42
|
+
queryKeys: ReadonlyArray<string>,
|
|
43
|
+
options: RequestOptions | undefined,
|
|
44
|
+
):
|
|
45
|
+
| ({
|
|
46
|
+
[K in 'headers' | 'maxRetries' | 'timeout' | 'signal' | 'idempotencyKey' | 'query']?: RequestOptions[K];
|
|
47
|
+
} & {
|
|
48
|
+
[
|
|
49
|
+
K in
|
|
50
|
+
| 'method'
|
|
51
|
+
| 'path'
|
|
52
|
+
| 'body'
|
|
53
|
+
| 'stream'
|
|
54
|
+
| 'httpAgent'
|
|
55
|
+
| 'fetchOptions'
|
|
56
|
+
| 'defaultBaseURL'
|
|
57
|
+
| '__metadata'
|
|
58
|
+
| '__binaryRequest'
|
|
59
|
+
| '__binaryResponse'
|
|
60
|
+
| '__streamClass'
|
|
61
|
+
| '__security'
|
|
62
|
+
| '__synthesizeEventData'
|
|
63
|
+
]?: never;
|
|
64
|
+
})
|
|
65
|
+
| undefined {
|
|
66
|
+
if (typeof value !== 'object' || value === null) return undefined;
|
|
67
|
+
// Optional never fields can still be explicitly undefined unless consumers
|
|
68
|
+
// enable exactOptionalPropertyTypes. Snapshot data without invoking getters.
|
|
69
|
+
const entries = Object.entries(Object.getOwnPropertyDescriptors(value)).filter(
|
|
70
|
+
([, descriptor]) => descriptor.enumerable && (!('value' in descriptor) || descriptor.value !== undefined),
|
|
71
|
+
);
|
|
72
|
+
const keys = entries.map(([key]) => key);
|
|
73
|
+
const requestOnly = keys.some(
|
|
74
|
+
(key) => normalizeRequestOptionsForQueryKeys.has(key) && !queryKeys.includes(key),
|
|
75
|
+
);
|
|
76
|
+
if (!requestOnly) return undefined;
|
|
77
|
+
// Declared query fields, including stream, must use the query argument.
|
|
78
|
+
// Mixing them with request-only options is ambiguous and could change the return type.
|
|
79
|
+
if (
|
|
80
|
+
options !== undefined ||
|
|
81
|
+
keys.some((key) => !normalizeRequestOptionsForQueryKeys.has(key) || queryKeys.includes(key))
|
|
82
|
+
) {
|
|
83
|
+
throw new TypeError('Query parameters and request options must be passed as separate arguments.');
|
|
84
|
+
}
|
|
85
|
+
// The query position must not gain authority to change the request destination
|
|
86
|
+
// or transport. Those overrides require the explicit request options argument.
|
|
87
|
+
if (
|
|
88
|
+
keys.some(
|
|
89
|
+
(key) => !['headers', 'maxRetries', 'timeout', 'signal', 'idempotencyKey', 'query'].includes(key),
|
|
90
|
+
)
|
|
91
|
+
) {
|
|
92
|
+
throw new TypeError('Pass transport overrides in the explicit request options argument.');
|
|
93
|
+
}
|
|
94
|
+
// Copy only the validated fields. Spreading value would reintroduce undefined
|
|
95
|
+
// transport overrides, and deleting them would mutate the caller's object.
|
|
96
|
+
return Object.fromEntries(
|
|
97
|
+
entries.map(([key, descriptor]) => {
|
|
98
|
+
if ('value' in descriptor) return [key, descriptor.value];
|
|
99
|
+
return [key, descriptor.get ? Reflect.apply(descriptor.get, value, []) : undefined];
|
|
100
|
+
}),
|
|
101
|
+
) as {
|
|
102
|
+
[K in 'headers' | 'maxRetries' | 'timeout' | 'signal' | 'idempotencyKey' | 'query']?: RequestOptions[K];
|
|
103
|
+
} & {
|
|
104
|
+
[
|
|
105
|
+
K in
|
|
106
|
+
| 'method'
|
|
107
|
+
| 'path'
|
|
108
|
+
| 'body'
|
|
109
|
+
| 'stream'
|
|
110
|
+
| 'httpAgent'
|
|
111
|
+
| 'fetchOptions'
|
|
112
|
+
| 'defaultBaseURL'
|
|
113
|
+
| '__metadata'
|
|
114
|
+
| '__binaryRequest'
|
|
115
|
+
| '__binaryResponse'
|
|
116
|
+
| '__streamClass'
|
|
117
|
+
| '__security'
|
|
118
|
+
| '__synthesizeEventData'
|
|
119
|
+
]?: never;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export class Traces extends APIResource {
|
|
124
|
+
/**
|
|
125
|
+
* Lists published root-turn traces as OTLP JSON, ordered by turn creation time and
|
|
126
|
+
* ID. Unpublished traces are skipped. Each page returns data available when read;
|
|
127
|
+
* it does not wait for late traces. Trace reads and the JSON response are limited
|
|
128
|
+
* to 16 MiB per request. If the limit is exceeded, request fewer traces.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```ts
|
|
132
|
+
* // Automatically fetches more pages as needed.
|
|
133
|
+
* for await (const sessionTrace of client.beta.agents.sessions.traces.list(
|
|
134
|
+
* 'session_id',
|
|
135
|
+
* )) {
|
|
136
|
+
* // ...
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
list(
|
|
141
|
+
sessionID: string,
|
|
142
|
+
query?:
|
|
143
|
+
| (TraceListParams &
|
|
144
|
+
(
|
|
145
|
+
| {
|
|
146
|
+
[
|
|
147
|
+
K in
|
|
148
|
+
| 'method'
|
|
149
|
+
| 'path'
|
|
150
|
+
| 'query'
|
|
151
|
+
| 'body'
|
|
152
|
+
| 'headers'
|
|
153
|
+
| 'maxRetries'
|
|
154
|
+
| 'stream'
|
|
155
|
+
| 'timeout'
|
|
156
|
+
| 'httpAgent'
|
|
157
|
+
| 'fetchOptions'
|
|
158
|
+
| 'signal'
|
|
159
|
+
| 'idempotencyKey'
|
|
160
|
+
| 'defaultBaseURL'
|
|
161
|
+
| '__metadata'
|
|
162
|
+
| '__binaryRequest'
|
|
163
|
+
| '__binaryResponse'
|
|
164
|
+
| '__streamClass'
|
|
165
|
+
| '__security'
|
|
166
|
+
| '__synthesizeEventData'
|
|
167
|
+
]?: never;
|
|
168
|
+
}
|
|
169
|
+
| null
|
|
170
|
+
| undefined
|
|
171
|
+
))
|
|
172
|
+
| null
|
|
173
|
+
| undefined,
|
|
174
|
+
options?: RequestOptions,
|
|
175
|
+
): PagePromise<SessionTracesPage, SessionTrace>;
|
|
176
|
+
list(
|
|
177
|
+
sessionID: string,
|
|
178
|
+
options?: {
|
|
179
|
+
[K in 'headers' | 'maxRetries' | 'timeout' | 'signal' | 'idempotencyKey' | 'query']?: RequestOptions[K];
|
|
180
|
+
} & {
|
|
181
|
+
[
|
|
182
|
+
K in
|
|
183
|
+
| 'method'
|
|
184
|
+
| 'path'
|
|
185
|
+
| 'body'
|
|
186
|
+
| 'stream'
|
|
187
|
+
| 'httpAgent'
|
|
188
|
+
| 'fetchOptions'
|
|
189
|
+
| 'defaultBaseURL'
|
|
190
|
+
| '__metadata'
|
|
191
|
+
| '__binaryRequest'
|
|
192
|
+
| '__binaryResponse'
|
|
193
|
+
| '__streamClass'
|
|
194
|
+
| '__security'
|
|
195
|
+
| '__synthesizeEventData'
|
|
196
|
+
]?: never;
|
|
197
|
+
},
|
|
198
|
+
): PagePromise<SessionTracesPage, SessionTrace>;
|
|
199
|
+
list(
|
|
200
|
+
sessionID: string,
|
|
201
|
+
query:
|
|
202
|
+
| TraceListParams
|
|
203
|
+
| ({
|
|
204
|
+
[
|
|
205
|
+
K in 'headers' | 'maxRetries' | 'timeout' | 'signal' | 'idempotencyKey' | 'query'
|
|
206
|
+
]?: RequestOptions[K];
|
|
207
|
+
} & {
|
|
208
|
+
[
|
|
209
|
+
K in
|
|
210
|
+
| 'method'
|
|
211
|
+
| 'path'
|
|
212
|
+
| 'body'
|
|
213
|
+
| 'stream'
|
|
214
|
+
| 'httpAgent'
|
|
215
|
+
| 'fetchOptions'
|
|
216
|
+
| 'defaultBaseURL'
|
|
217
|
+
| '__metadata'
|
|
218
|
+
| '__binaryRequest'
|
|
219
|
+
| '__binaryResponse'
|
|
220
|
+
| '__streamClass'
|
|
221
|
+
| '__security'
|
|
222
|
+
| '__synthesizeEventData'
|
|
223
|
+
]?: never;
|
|
224
|
+
})
|
|
225
|
+
| null
|
|
226
|
+
| undefined = {},
|
|
227
|
+
options?: RequestOptions,
|
|
228
|
+
): PagePromise<SessionTracesPage, SessionTrace> {
|
|
229
|
+
const normalizeRequestOptionsForQueryOptions = normalizeRequestOptionsForQuery(
|
|
230
|
+
query,
|
|
231
|
+
['after', 'limit', 'order'],
|
|
232
|
+
options,
|
|
233
|
+
);
|
|
234
|
+
if (normalizeRequestOptionsForQueryOptions !== undefined) {
|
|
235
|
+
options = normalizeRequestOptionsForQueryOptions;
|
|
236
|
+
query = {};
|
|
237
|
+
}
|
|
238
|
+
query = query as TraceListParams | null | undefined;
|
|
239
|
+
return this._client.getAPIList(
|
|
240
|
+
path`/agents/sessions/${sessionID}/traces`,
|
|
241
|
+
CursorPage<SessionTrace>,
|
|
242
|
+
resolveResourceRequestOptions(options, (options) => ({
|
|
243
|
+
query,
|
|
244
|
+
...options,
|
|
245
|
+
headers: buildHeaders([{ 'OpenAI-Beta': 'agents=v1' }, options?.headers]),
|
|
246
|
+
__security: { bearerAuth: true },
|
|
247
|
+
})),
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export type SessionTracesPage = CursorPage<SessionTrace>;
|
|
253
|
+
|
|
254
|
+
export interface SessionTrace {
|
|
255
|
+
/**
|
|
256
|
+
* The root turn ID. Use this ID as the pagination anchor.
|
|
257
|
+
*/
|
|
258
|
+
id: string;
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* The Unix timestamp in seconds when the root turn was created.
|
|
262
|
+
*/
|
|
263
|
+
created_at: number;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* The object type, which is always `agent.session.trace`.
|
|
267
|
+
*/
|
|
268
|
+
object: 'agent.session.trace';
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* An OTLP JSON ExportTraceServiceRequest containing resourceSpans. Only currently
|
|
272
|
+
* published data is returned; later trace updates are not awaited.
|
|
273
|
+
*/
|
|
274
|
+
otlp: { [key: string]: unknown };
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* The session that owns this trace.
|
|
278
|
+
*/
|
|
279
|
+
session_id: string;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export interface TraceListParams extends CursorPageParams {
|
|
283
|
+
/**
|
|
284
|
+
* The order in which resources are returned. Defaults to `desc`.
|
|
285
|
+
*
|
|
286
|
+
* - `asc` - Returns resources in ascending order.
|
|
287
|
+
* - `desc` - Returns resources in descending order.
|
|
288
|
+
*/
|
|
289
|
+
order?: 'asc' | 'desc';
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export declare namespace Traces {
|
|
293
|
+
export {
|
|
294
|
+
type SessionTrace as SessionTrace,
|
|
295
|
+
type SessionTracesPage as SessionTracesPage,
|
|
296
|
+
type TraceListParams as TraceListParams,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
@@ -125,6 +125,8 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
125
125
|
*/
|
|
126
126
|
protected abstract _createSocket(url: URL, authHeaders: Record<string, string>): TSocket;
|
|
127
127
|
|
|
128
|
+
private _cancelRefresh: (() => void) | undefined;
|
|
129
|
+
|
|
128
130
|
send(event: ResponsesAPI.BetaResponsesClientEvent) {
|
|
129
131
|
if (!this.socket) {
|
|
130
132
|
throw new OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
|
|
@@ -177,6 +179,7 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
177
179
|
this._intentionallyClosed = true;
|
|
178
180
|
this._closeCode = props?.code ?? 1000;
|
|
179
181
|
this._closeReason = props?.reason ?? 'OK';
|
|
182
|
+
this._cancelRefresh?.();
|
|
180
183
|
try {
|
|
181
184
|
this.socket.close(this._closeCode, this._closeReason);
|
|
182
185
|
} catch (err) {
|
|
@@ -421,10 +424,13 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
421
424
|
};
|
|
422
425
|
}
|
|
423
426
|
|
|
424
|
-
private _connect(
|
|
425
|
-
|
|
427
|
+
private _connect(
|
|
428
|
+
createSocket: (url: URL) => TSocket = (url) => this._createSocket(url, this._authHeaders()),
|
|
429
|
+
url: URL = buildURL(this._client, this._parameters ?? {}),
|
|
430
|
+
): TSocket {
|
|
431
|
+
this.url = url;
|
|
426
432
|
|
|
427
|
-
const socket =
|
|
433
|
+
const socket = createSocket(this.url);
|
|
428
434
|
|
|
429
435
|
socket.on('message', (data: string | ArrayBuffer | ArrayBufferView, isBinary: boolean) => {
|
|
430
436
|
if (isBinary) {
|
|
@@ -632,7 +638,22 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
632
638
|
let closeCodePromise: Promise<number> | undefined;
|
|
633
639
|
try {
|
|
634
640
|
const oldSocket = this.socket;
|
|
635
|
-
|
|
641
|
+
const url = buildURL(this._client, this._parameters ?? {});
|
|
642
|
+
const canceled = new Promise<undefined>((resolve) => {
|
|
643
|
+
this._cancelRefresh = () => resolve(undefined);
|
|
644
|
+
});
|
|
645
|
+
let createSocket: ((url: URL) => TSocket) | undefined;
|
|
646
|
+
try {
|
|
647
|
+
createSocket = await Promise.race([this._prepareReconnectSocket(), canceled]);
|
|
648
|
+
} finally {
|
|
649
|
+
this._cancelRefresh = undefined;
|
|
650
|
+
}
|
|
651
|
+
if (!this._canReconnect(closeCode)) {
|
|
652
|
+
this._isReconnecting = false;
|
|
653
|
+
this._emitPermanentClose(this._closeCode, this._closeReason);
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
656
|
+
this.socket = this._connect(createSocket, url);
|
|
636
657
|
// Registered synchronously after _connect() and before any
|
|
637
658
|
// await so the code is captured even when ws emits 'close'
|
|
638
659
|
// in the same tick as 'error' (e.g. abortHandshake).
|
|
@@ -649,6 +670,15 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
649
670
|
this._internalEvents._emit('reconnected');
|
|
650
671
|
return;
|
|
651
672
|
} catch {
|
|
673
|
+
if (this._intentionallyClosed) {
|
|
674
|
+
// A public close observer may have thrown after lifecycle cleanup.
|
|
675
|
+
// Only emit here if the reconnect itself had not already closed.
|
|
676
|
+
if (this._isReconnecting) {
|
|
677
|
+
this._isReconnecting = false;
|
|
678
|
+
this._emitPermanentClose(this._closeCode, this._closeReason);
|
|
679
|
+
}
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
652
682
|
if (closeCodePromise) {
|
|
653
683
|
// ws may emit 'error' before 'close', so await the code
|
|
654
684
|
// rather than reading it synchronously.
|
|
@@ -722,8 +752,12 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
722
752
|
this._emit('close', code, reason, unsent);
|
|
723
753
|
}
|
|
724
754
|
|
|
725
|
-
protected
|
|
726
|
-
const
|
|
755
|
+
protected _prepareReconnectSocket(): Promise<(url: URL) => TSocket> {
|
|
756
|
+
const authHeaders = this._authHeaders();
|
|
757
|
+
return Promise.resolve((url) => this._createSocket(url, authHeaders));
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
protected _authHeaders(apiKey = this._client.apiKey): Record<string, string> {
|
|
727
761
|
return typeof apiKey === 'string' && apiKey ? { Authorization: `Bearer ${apiKey}` } : {};
|
|
728
762
|
}
|
|
729
763
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Castiron. See CONTRIBUTING.md for details.
|
|
2
2
|
|
|
3
3
|
import * as WS from 'ws';
|
|
4
|
-
import { NodeWebSocket } from '../../../internal/ws-adapter-node';
|
|
4
|
+
import { NodeWebSocket, snapshotNodeWebSocketOptions } from '../../../internal/ws-adapter-node';
|
|
5
5
|
import { ResponsesWSBase, type ResponsesWSBaseOptions } from './ws-base';
|
|
6
6
|
import { OpenAI } from '../../../client';
|
|
7
|
-
import {
|
|
8
|
-
import { snapshotWebSocketCredentials } from '../../../internal/ws';
|
|
7
|
+
import { ResponsesWebSocketCredentials } from '../../../internal/responses-ws-credentials';
|
|
9
8
|
|
|
10
9
|
export type { WebSocketStreamOptions } from '../../../internal/ws';
|
|
11
10
|
|
|
@@ -18,6 +17,7 @@ export interface ResponsesWSClientOptions extends WS.ClientOptions, ResponsesWSB
|
|
|
18
17
|
|
|
19
18
|
export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
|
|
20
19
|
private _wsOptions: WS.ClientOptions | null | undefined;
|
|
20
|
+
private _credentials = new ResponsesWebSocketCredentials();
|
|
21
21
|
|
|
22
22
|
constructor(client: OpenAI, options?: ResponsesWSClientOptions | null | undefined) {
|
|
23
23
|
if (!WS?.WebSocket) {
|
|
@@ -31,32 +31,42 @@ export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
|
|
|
31
31
|
this._connectInitial();
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
protected override _authHeaders(apiKey?: string | null): Record<string, string> {
|
|
35
|
+
const headers = super._authHeaders(apiKey === undefined ? this._credentials.preparedAPIKey : apiKey);
|
|
36
|
+
this._credentials.trackInitialHeaders(this._client, headers, () => !!this.socket);
|
|
37
|
+
return headers;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Whether credentials passed to the Node transport use the SDK key.
|
|
42
|
+
* The SDK recognizes its key, including copies and additions in credential headers.
|
|
43
|
+
* Override and return true if your socket hook signs or otherwise irreversibly transforms it.
|
|
44
|
+
* Explicit caller options and header removals still take precedence on reconnect.
|
|
45
|
+
*/
|
|
46
|
+
protected _usesSDKAPIKey(authHeaders: Record<string, string>): boolean {
|
|
47
|
+
return this._credentials.usesAPIKey(this._client, authHeaders);
|
|
48
|
+
}
|
|
49
|
+
|
|
34
50
|
protected _createSocket(url: URL, authHeaders: Record<string, string>): NodeWebSocket {
|
|
35
51
|
const capturedAuthHeaders = { ...authHeaders };
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const socketOptions: ResponsesWSClientOptions = {
|
|
45
|
-
...this._wsOptions,
|
|
46
|
-
headers: Object.fromEntries(headers),
|
|
47
|
-
followRedirects: false,
|
|
48
|
-
};
|
|
49
|
-
if (
|
|
50
|
-
this._client._hasApiKeyProvider() &&
|
|
51
|
-
!capturedAuthHeaders['Authorization'] &&
|
|
52
|
-
!snapshotWebSocketCredentials(socketOptions)
|
|
53
|
-
) {
|
|
54
|
-
throw new OpenAIError(
|
|
55
|
-
'Cannot open a Responses WebSocket with an unresolved function-based apiKey. Resolve it before constructing the WebSocket or provide explicit WebSocket credentials.',
|
|
56
|
-
);
|
|
57
|
-
}
|
|
52
|
+
const socketOptions = this._credentials.build(
|
|
53
|
+
this._client,
|
|
54
|
+
capturedAuthHeaders,
|
|
55
|
+
this._wsOptions,
|
|
56
|
+
!this.socket ? this._usesSDKAPIKey(capturedAuthHeaders) : undefined,
|
|
57
|
+
);
|
|
58
|
+
return new NodeWebSocket(new WS.WebSocket(url, socketOptions));
|
|
59
|
+
}
|
|
58
60
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
protected override async _prepareReconnectSocket(): Promise<(url: URL) => NodeWebSocket> {
|
|
62
|
+
if (!this._client._hasApiKeyProvider()) {
|
|
63
|
+
return super._prepareReconnectSocket();
|
|
64
|
+
}
|
|
65
|
+
return this._credentials.prepare(
|
|
66
|
+
this._client,
|
|
67
|
+
snapshotNodeWebSocketOptions(this._wsOptions),
|
|
68
|
+
(...args) => this._authHeaders(...args),
|
|
69
|
+
(url, headers) => this._createSocket(url, headers),
|
|
70
|
+
);
|
|
61
71
|
}
|
|
62
72
|
}
|
|
@@ -1524,7 +1524,7 @@ export namespace ChatCompletionContentPartImage {
|
|
|
1524
1524
|
* Specifies the detail level of the image. Learn more in the
|
|
1525
1525
|
* [Vision guide](https://developers.openai.com/api/docs/guides/images-vision#choose-an-image-detail-level).
|
|
1526
1526
|
*/
|
|
1527
|
-
detail?: 'auto' | 'low' | 'high';
|
|
1527
|
+
detail?: 'auto' | 'low' | 'high' | 'original';
|
|
1528
1528
|
}
|
|
1529
1529
|
|
|
1530
1530
|
/**
|
|
@@ -300,7 +300,7 @@ export class Runs extends APIResource {
|
|
|
300
300
|
cancel(runID: string, params: RunCancelParams, options?: RequestOptions): APIPromise<RunCancelResponse> {
|
|
301
301
|
const { eval_id } = params;
|
|
302
302
|
return this._client.post(
|
|
303
|
-
path`/evals/${eval_id}/runs/${runID}`,
|
|
303
|
+
path`/evals/${eval_id}/runs/${runID}/cancel`,
|
|
304
304
|
resolveResourceRequestOptions(options, (options) => ({ ...options, __security: { bearerAuth: true } })),
|
|
305
305
|
);
|
|
306
306
|
}
|
|
@@ -87,7 +87,7 @@ export namespace ForkServerEvent {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
/**
|
|
90
|
-
* A SIP DTMF keypress successfully sent
|
|
90
|
+
* A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to
|
|
91
91
|
* sideband observers; this is not a client command.
|
|
92
92
|
*/
|
|
93
93
|
export interface TransportDtmfSend {
|
|
@@ -96,6 +96,11 @@ export namespace ForkServerEvent {
|
|
|
96
96
|
event_id: string;
|
|
97
97
|
|
|
98
98
|
type: 'transport.dtmf.send';
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* The event_id of the client command, when supplied.
|
|
102
|
+
*/
|
|
103
|
+
client_event_id?: string;
|
|
99
104
|
}
|
|
100
105
|
|
|
101
106
|
/**
|
|
@@ -1520,7 +1520,7 @@ export namespace ServerEvent {
|
|
|
1520
1520
|
}
|
|
1521
1521
|
|
|
1522
1522
|
/**
|
|
1523
|
-
* A SIP DTMF keypress successfully sent
|
|
1523
|
+
* A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to
|
|
1524
1524
|
* sideband observers; this is not a client command.
|
|
1525
1525
|
*/
|
|
1526
1526
|
export interface TransportDtmfSend {
|
|
@@ -1529,6 +1529,11 @@ export namespace ServerEvent {
|
|
|
1529
1529
|
event_id: string;
|
|
1530
1530
|
|
|
1531
1531
|
type: 'transport.dtmf.send';
|
|
1532
|
+
|
|
1533
|
+
/**
|
|
1534
|
+
* The event_id of the client command, when supplied.
|
|
1535
|
+
*/
|
|
1536
|
+
client_event_id?: string;
|
|
1532
1537
|
}
|
|
1533
1538
|
|
|
1534
1539
|
/**
|
|
@@ -123,6 +123,8 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
123
123
|
*/
|
|
124
124
|
protected abstract _createSocket(url: URL, authHeaders: Record<string, string>): TSocket;
|
|
125
125
|
|
|
126
|
+
private _cancelRefresh: (() => void) | undefined;
|
|
127
|
+
|
|
126
128
|
send(event: ResponsesAPI.ResponsesClientEvent) {
|
|
127
129
|
if (!this.socket) {
|
|
128
130
|
throw new OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
|
|
@@ -175,6 +177,7 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
175
177
|
this._intentionallyClosed = true;
|
|
176
178
|
this._closeCode = props?.code ?? 1000;
|
|
177
179
|
this._closeReason = props?.reason ?? 'OK';
|
|
180
|
+
this._cancelRefresh?.();
|
|
178
181
|
try {
|
|
179
182
|
this.socket.close(this._closeCode, this._closeReason);
|
|
180
183
|
} catch (err) {
|
|
@@ -419,10 +422,13 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
419
422
|
};
|
|
420
423
|
}
|
|
421
424
|
|
|
422
|
-
private _connect(
|
|
423
|
-
|
|
425
|
+
private _connect(
|
|
426
|
+
createSocket: (url: URL) => TSocket = (url) => this._createSocket(url, this._authHeaders()),
|
|
427
|
+
url: URL = buildURL(this._client, this._parameters ?? {}),
|
|
428
|
+
): TSocket {
|
|
429
|
+
this.url = url;
|
|
424
430
|
|
|
425
|
-
const socket =
|
|
431
|
+
const socket = createSocket(this.url);
|
|
426
432
|
|
|
427
433
|
socket.on('message', (data: string | ArrayBuffer | ArrayBufferView, isBinary: boolean) => {
|
|
428
434
|
if (isBinary) {
|
|
@@ -630,7 +636,22 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
630
636
|
let closeCodePromise: Promise<number> | undefined;
|
|
631
637
|
try {
|
|
632
638
|
const oldSocket = this.socket;
|
|
633
|
-
|
|
639
|
+
const url = buildURL(this._client, this._parameters ?? {});
|
|
640
|
+
const canceled = new Promise<undefined>((resolve) => {
|
|
641
|
+
this._cancelRefresh = () => resolve(undefined);
|
|
642
|
+
});
|
|
643
|
+
let createSocket: ((url: URL) => TSocket) | undefined;
|
|
644
|
+
try {
|
|
645
|
+
createSocket = await Promise.race([this._prepareReconnectSocket(), canceled]);
|
|
646
|
+
} finally {
|
|
647
|
+
this._cancelRefresh = undefined;
|
|
648
|
+
}
|
|
649
|
+
if (!this._canReconnect(closeCode)) {
|
|
650
|
+
this._isReconnecting = false;
|
|
651
|
+
this._emitPermanentClose(this._closeCode, this._closeReason);
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
this.socket = this._connect(createSocket, url);
|
|
634
655
|
// Registered synchronously after _connect() and before any
|
|
635
656
|
// await so the code is captured even when ws emits 'close'
|
|
636
657
|
// in the same tick as 'error' (e.g. abortHandshake).
|
|
@@ -647,6 +668,15 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
647
668
|
this._internalEvents._emit('reconnected');
|
|
648
669
|
return;
|
|
649
670
|
} catch {
|
|
671
|
+
if (this._intentionallyClosed) {
|
|
672
|
+
// A public close observer may have thrown after lifecycle cleanup.
|
|
673
|
+
// Only emit here if the reconnect itself had not already closed.
|
|
674
|
+
if (this._isReconnecting) {
|
|
675
|
+
this._isReconnecting = false;
|
|
676
|
+
this._emitPermanentClose(this._closeCode, this._closeReason);
|
|
677
|
+
}
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
650
680
|
if (closeCodePromise) {
|
|
651
681
|
// ws may emit 'error' before 'close', so await the code
|
|
652
682
|
// rather than reading it synchronously.
|
|
@@ -720,8 +750,12 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
|
|
|
720
750
|
this._emit('close', code, reason, unsent);
|
|
721
751
|
}
|
|
722
752
|
|
|
723
|
-
protected
|
|
724
|
-
const
|
|
753
|
+
protected _prepareReconnectSocket(): Promise<(url: URL) => TSocket> {
|
|
754
|
+
const authHeaders = this._authHeaders();
|
|
755
|
+
return Promise.resolve((url) => this._createSocket(url, authHeaders));
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
protected _authHeaders(apiKey = this._client.apiKey): Record<string, string> {
|
|
725
759
|
return typeof apiKey === 'string' && apiKey ? { Authorization: `Bearer ${apiKey}` } : {};
|
|
726
760
|
}
|
|
727
761
|
}
|