openai 7.24.0 → 7.26.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 +38 -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/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/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/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/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-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/audio/speech.d.mts +1 -1
- package/resources/audio/speech.d.ts +1 -1
- package/resources/audio/speech.js +1 -1
- package/resources/audio/speech.mjs +1 -1
- package/resources/beta/agents/agents.d.mts +574 -11
- package/resources/beta/agents/agents.d.mts.map +1 -1
- package/resources/beta/agents/agents.d.ts +574 -11
- 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/templates.d.mts +56 -3
- package/resources/beta/agents/environments/templates.d.mts.map +1 -1
- package/resources/beta/agents/environments/templates.d.ts +56 -3
- package/resources/beta/agents/environments/templates.d.ts.map +1 -1
- package/resources/beta/agents/index.d.mts +1 -1
- package/resources/beta/agents/index.d.mts.map +1 -1
- package/resources/beta/agents/index.d.ts +1 -1
- package/resources/beta/agents/index.d.ts.map +1 -1
- package/resources/beta/agents/index.js.map +1 -1
- package/resources/beta/agents/index.mjs.map +1 -1
- package/resources/beta/agents/sessions/events.d.mts +16 -12
- package/resources/beta/agents/sessions/events.d.mts.map +1 -1
- package/resources/beta/agents/sessions/events.d.ts +16 -12
- package/resources/beta/agents/sessions/events.d.ts.map +1 -1
- package/resources/beta/agents/sessions/events.js +16 -12
- package/resources/beta/agents/sessions/events.js.map +1 -1
- package/resources/beta/agents/sessions/events.mjs +16 -12
- 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/beta.d.mts +2 -2
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +2 -2
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/index.d.mts +1 -1
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +1 -1
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/responses/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/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/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/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/parse-result.ts +133 -0
- package/src/lib/beta/agents/parsed-agent-turn-result.ts +12 -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/audio/speech.ts +1 -1
- package/src/resources/beta/agents/agents.ts +697 -6
- package/src/resources/beta/agents/environments/templates.ts +64 -3
- package/src/resources/beta/agents/index.ts +3 -0
- package/src/resources/beta/agents/sessions/events.ts +16 -12
- 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/beta.ts +6 -0
- package/src/resources/beta/index.ts +3 -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
|
@@ -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
|
}
|
|
@@ -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
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './tsconfig.dist-src-node';
|
|
1
2
|
// Keep published source navigation independent of consumers installing @types/node.
|
|
2
3
|
// oxlint-disable-next-line unicorn/require-module-specifiers -- keep ambient globals scoped to a module
|
|
3
4
|
export {};
|
|
@@ -21,7 +22,8 @@ declare global {
|
|
|
21
22
|
|
|
22
23
|
interface BufferConstructor {
|
|
23
24
|
from(input: string, encoding: 'base64' | 'utf-8'): Buffer<ArrayBuffer> & Uint8Array;
|
|
24
|
-
from(input: ArrayBuffer): Buffer<ArrayBuffer> & Uint8Array;
|
|
25
|
+
from(input: ArrayBuffer | ArrayLike<number>): Buffer<ArrayBuffer> & Uint8Array;
|
|
26
|
+
isBuffer(value: unknown): value is Buffer;
|
|
25
27
|
concat(list: readonly Buffer[]): Buffer<ArrayBuffer> & Uint8Array;
|
|
26
28
|
}
|
|
27
29
|
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** Version of the installed OpenAI SDK package. */
|
|
2
|
-
export const VERSION = '7.
|
|
2
|
+
export const VERSION = '7.26.0'; // x-release-please-version
|
package/version.d.mts
CHANGED
package/version.d.ts
CHANGED
package/version.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VERSION = void 0;
|
|
4
4
|
/** Version of the installed OpenAI SDK package. */
|
|
5
|
-
exports.VERSION = '7.
|
|
5
|
+
exports.VERSION = '7.26.0'; // x-release-please-version
|
|
6
6
|
//# sourceMappingURL=version.js.map
|
package/version.mjs
CHANGED