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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.standardAgentTextFormat = standardAgentTextFormat;
|
|
4
|
+
const standard_schema_1 = require("../../standard-schema.js");
|
|
5
|
+
const output_format_1 = require("../../../lib/beta/agents/output-format.js");
|
|
6
|
+
/** Beta: bind a synchronous Standard Schema validator to Agents output. */
|
|
7
|
+
function standardAgentTextFormat(schema, jsonSchema) {
|
|
8
|
+
const format = (0, standard_schema_1.standardTextFormat)(schema, 'agent_output', { schema: jsonSchema });
|
|
9
|
+
// SAFETY: The native Responses helper owns Standard Schema conversion and validation.
|
|
10
|
+
return (0, output_format_1.agentOutputFormat)(format.schema, format.$parseRaw);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=standard-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../../../src/helpers/beta/agents/standard-schema.ts"],"names":[],"mappings":";;AAKA,0DAOC;AAZD,8DAA2D;AAE3D,6EAA2E;AAE3E,2EAA2E;AAC3E,SAAgB,uBAAuB,CACrC,MAAS,EACT,UAAuB;IAEvB,MAAM,MAAM,GAAG,IAAA,oCAAkB,EAAC,MAAM,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAClF,sFAAsF;IACtF,OAAO,IAAA,iCAAiB,EAAC,MAAM,CAAC,MAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { standardTextFormat } from "../../standard-schema.mjs";
|
|
2
|
+
import { agentOutputFormat } from "../../../lib/beta/agents/output-format.mjs";
|
|
3
|
+
/** Beta: bind a synchronous Standard Schema validator to Agents output. */
|
|
4
|
+
export function standardAgentTextFormat(schema, jsonSchema) {
|
|
5
|
+
const format = standardTextFormat(schema, 'agent_output', { schema: jsonSchema });
|
|
6
|
+
// SAFETY: The native Responses helper owns Standard Schema conversion and validation.
|
|
7
|
+
return agentOutputFormat(format.schema, format.$parseRaw);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=standard-schema.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-schema.mjs","sourceRoot":"","sources":["../../../src/helpers/beta/agents/standard-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kCAA8B;AAE3D,OAAO,EAAE,iBAAiB,EAAE,mDAA+C;AAE3E,2EAA2E;AAC3E,MAAM,UAAU,uBAAuB,CACrC,MAAS,EACT,UAAuB;IAEvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAClF,sFAAsF;IACtF,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { zodTextFormat } from "../../zod.mjs";
|
|
2
|
+
/** Beta: bind a Zod v3/v4/Mini schema to an Agents text format and completed result. */
|
|
3
|
+
export declare function zodAgentTextFormat<S extends Parameters<typeof zodTextFormat>[0]>(schema: S): import("../../../lib/beta/agents/output-format-types.mjs").AgentOutputFormat<S extends {
|
|
4
|
+
_output: infer Output;
|
|
5
|
+
} ? Output : S extends {
|
|
6
|
+
_zod: {
|
|
7
|
+
output: infer Output_1;
|
|
8
|
+
};
|
|
9
|
+
} ? Output_1 : never>;
|
|
10
|
+
//# sourceMappingURL=zod.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.mts","sourceRoot":"","sources":["../../../src/helpers/beta/agents/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAI1C,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;;;;;;sBAI1F"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { zodTextFormat } from "../../zod.js";
|
|
2
|
+
/** Beta: bind a Zod v3/v4/Mini schema to an Agents text format and completed result. */
|
|
3
|
+
export declare function zodAgentTextFormat<S extends Parameters<typeof zodTextFormat>[0]>(schema: S): import("../../../lib/beta/agents/output-format-types.js").AgentOutputFormat<S extends {
|
|
4
|
+
_output: infer Output;
|
|
5
|
+
} ? Output : S extends {
|
|
6
|
+
_zod: {
|
|
7
|
+
output: infer Output_1;
|
|
8
|
+
};
|
|
9
|
+
} ? Output_1 : never>;
|
|
10
|
+
//# sourceMappingURL=zod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../../src/helpers/beta/agents/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAkB;AAI1C,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;;;;;;sBAI1F"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zodAgentTextFormat = zodAgentTextFormat;
|
|
4
|
+
const zod_1 = require("../../zod.js");
|
|
5
|
+
const output_format_1 = require("../../../lib/beta/agents/output-format.js");
|
|
6
|
+
/** Beta: bind a Zod v3/v4/Mini schema to an Agents text format and completed result. */
|
|
7
|
+
function zodAgentTextFormat(schema) {
|
|
8
|
+
const format = (0, zod_1.zodTextFormat)(schema, 'agent_output');
|
|
9
|
+
// SAFETY: The native Responses helper owns Zod schema conversion and validation.
|
|
10
|
+
return (0, output_format_1.agentOutputFormat)(format.schema, format.$parseRaw);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../../src/helpers/beta/agents/zod.ts"],"names":[],"mappings":";;AAKA,gDAIC;AATD,sCAA0C;AAE1C,6EAA2E;AAE3E,wFAAwF;AACxF,SAAgB,kBAAkB,CAAgD,MAAS;IACzF,MAAM,MAAM,GAAG,IAAA,mBAAa,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrD,iFAAiF;IACjF,OAAO,IAAA,iCAAiB,EAAC,MAAM,CAAC,MAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { zodTextFormat } from "../../zod.mjs";
|
|
2
|
+
import { agentOutputFormat } from "../../../lib/beta/agents/output-format.mjs";
|
|
3
|
+
/** Beta: bind a Zod v3/v4/Mini schema to an Agents text format and completed result. */
|
|
4
|
+
export function zodAgentTextFormat(schema) {
|
|
5
|
+
const format = zodTextFormat(schema, 'agent_output');
|
|
6
|
+
// SAFETY: The native Responses helper owns Zod schema conversion and validation.
|
|
7
|
+
return agentOutputFormat(format.schema, format.$parseRaw);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=zod.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.mjs","sourceRoot":"","sources":["../../../src/helpers/beta/agents/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAE1C,OAAO,EAAE,iBAAiB,EAAE,mDAA+C;AAE3E,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAgD,MAAS;IACzF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrD,iFAAiF;IACjF,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import type { OpenAI } from "../client.mjs";
|
|
2
|
+
export interface DeferredAPIKeyCache {
|
|
3
|
+
client: Pick<OpenAI, 'apiKey'>;
|
|
4
|
+
providerKey?: string;
|
|
5
|
+
commit: () => string | null;
|
|
6
|
+
}
|
|
7
|
+
interface RealtimeAPIKeyCacheContext {
|
|
8
|
+
run: <T>(cache: DeferredAPIKeyCache | undefined, operation: () => T) => T;
|
|
9
|
+
getStore: () => DeferredAPIKeyCache | undefined;
|
|
10
|
+
}
|
|
11
|
+
declare const realtimeCacheContext: unique symbol;
|
|
12
|
+
type CredentialClient = Pick<OpenAI, 'apiKey'> & {
|
|
13
|
+
[realtimeCacheContext]?: RealtimeAPIKeyCacheContext;
|
|
14
|
+
};
|
|
15
|
+
/** Installs the Node transport's invocation context without loading Node in the base client. @internal */
|
|
16
|
+
export declare function setRealtimeAPIKeyCacheContext(context: RealtimeAPIKeyCacheContext): void;
|
|
17
|
+
/** Reserves a deferred commit when the base hook is entered for this invocation. @internal */
|
|
18
|
+
export declare function getDeferredRealtimeAPIKeyCache(client: CredentialClient): DeferredAPIKeyCache | undefined;
|
|
19
|
+
/** Applies the Bedrock getter's validation when a captured credential does not enter the cache. @internal */
|
|
20
|
+
export declare function validateCapturedAPIKey(client: Pick<OpenAI, 'apiKey'>, credential: string | null): string | null;
|
|
2
21
|
/** Selects a captured credential without treating an explicit null as absent. @internal */
|
|
3
22
|
export declare function getRealtimeAPIKey(client: Pick<OpenAI, 'apiKey'> | undefined, captured: string | null | undefined): string | null | undefined;
|
|
4
23
|
/**
|
|
@@ -8,8 +27,10 @@ export declare function getRealtimeAPIKey(client: Pick<OpenAI, 'apiKey'> | undef
|
|
|
8
27
|
* synchronizing concurrent credential updates.
|
|
9
28
|
* @internal
|
|
10
29
|
*/
|
|
11
|
-
export declare function resolveRealtimeAPIKey(client: Pick<OpenAI, '
|
|
30
|
+
export declare function resolveRealtimeAPIKey(client: CredentialClient & Pick<OpenAI, '_callApiKey'>, deferCache?: boolean): Promise<{
|
|
12
31
|
apiKey: string | null;
|
|
13
32
|
isProvider: boolean;
|
|
33
|
+
commit: () => string | null;
|
|
14
34
|
}>;
|
|
35
|
+
export {};
|
|
15
36
|
//# sourceMappingURL=realtime-credentials.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-credentials.d.mts","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAkB;
|
|
1
|
+
{"version":3,"file":"realtime-credentials.d.mts","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAkB;AAIxC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC7B;AACD,UAAU,0BAA0B;IAClC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,mBAAmB,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,QAAQ,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;CACjD;AAED,QAAA,MAAM,oBAAoB,eAAkD,CAAC;AAC7E,KAAK,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG;IAC/C,CAAC,oBAAoB,CAAC,CAAC,EAAE,0BAA0B,CAAC;CACrD,CAAC;AAGF,0GAA0G;AAC1G,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAEvF;AAED,8FAA8F;AAC9F,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,SAAS,CAGxG;AAED,6GAA6G;AAC7G,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,GAAG,IAAI,CAKf;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,SAAS,EAC1C,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,GAAG,IAAI,GAAG,SAAS,CAE3B;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACtD,UAAU,UAAQ,GACjB,OAAO,CAAC;IACT,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC,CA4BD"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import type { OpenAI } from "../client.js";
|
|
2
|
+
export interface DeferredAPIKeyCache {
|
|
3
|
+
client: Pick<OpenAI, 'apiKey'>;
|
|
4
|
+
providerKey?: string;
|
|
5
|
+
commit: () => string | null;
|
|
6
|
+
}
|
|
7
|
+
interface RealtimeAPIKeyCacheContext {
|
|
8
|
+
run: <T>(cache: DeferredAPIKeyCache | undefined, operation: () => T) => T;
|
|
9
|
+
getStore: () => DeferredAPIKeyCache | undefined;
|
|
10
|
+
}
|
|
11
|
+
declare const realtimeCacheContext: unique symbol;
|
|
12
|
+
type CredentialClient = Pick<OpenAI, 'apiKey'> & {
|
|
13
|
+
[realtimeCacheContext]?: RealtimeAPIKeyCacheContext;
|
|
14
|
+
};
|
|
15
|
+
/** Installs the Node transport's invocation context without loading Node in the base client. @internal */
|
|
16
|
+
export declare function setRealtimeAPIKeyCacheContext(context: RealtimeAPIKeyCacheContext): void;
|
|
17
|
+
/** Reserves a deferred commit when the base hook is entered for this invocation. @internal */
|
|
18
|
+
export declare function getDeferredRealtimeAPIKeyCache(client: CredentialClient): DeferredAPIKeyCache | undefined;
|
|
19
|
+
/** Applies the Bedrock getter's validation when a captured credential does not enter the cache. @internal */
|
|
20
|
+
export declare function validateCapturedAPIKey(client: Pick<OpenAI, 'apiKey'>, credential: string | null): string | null;
|
|
2
21
|
/** Selects a captured credential without treating an explicit null as absent. @internal */
|
|
3
22
|
export declare function getRealtimeAPIKey(client: Pick<OpenAI, 'apiKey'> | undefined, captured: string | null | undefined): string | null | undefined;
|
|
4
23
|
/**
|
|
@@ -8,8 +27,10 @@ export declare function getRealtimeAPIKey(client: Pick<OpenAI, 'apiKey'> | undef
|
|
|
8
27
|
* synchronizing concurrent credential updates.
|
|
9
28
|
* @internal
|
|
10
29
|
*/
|
|
11
|
-
export declare function resolveRealtimeAPIKey(client: Pick<OpenAI, '
|
|
30
|
+
export declare function resolveRealtimeAPIKey(client: CredentialClient & Pick<OpenAI, '_callApiKey'>, deferCache?: boolean): Promise<{
|
|
12
31
|
apiKey: string | null;
|
|
13
32
|
isProvider: boolean;
|
|
33
|
+
commit: () => string | null;
|
|
14
34
|
}>;
|
|
35
|
+
export {};
|
|
15
36
|
//# sourceMappingURL=realtime-credentials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-credentials.d.ts","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAkB;
|
|
1
|
+
{"version":3,"file":"realtime-credentials.d.ts","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAkB;AAIxC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC7B;AACD,UAAU,0BAA0B;IAClC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,mBAAmB,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,QAAQ,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;CACjD;AAED,QAAA,MAAM,oBAAoB,eAAkD,CAAC;AAC7E,KAAK,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG;IAC/C,CAAC,oBAAoB,CAAC,CAAC,EAAE,0BAA0B,CAAC;CACrD,CAAC;AAGF,0GAA0G;AAC1G,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAEvF;AAED,8FAA8F;AAC9F,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,SAAS,CAGxG;AAED,6GAA6G;AAC7G,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,GAAG,IAAI,CAKf;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,SAAS,EAC1C,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,GAAG,IAAI,GAAG,SAAS,CAE3B;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EACtD,UAAU,UAAQ,GACjB,OAAO,CAAC;IACT,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC,CA4BD"}
|
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setRealtimeAPIKeyCacheContext = setRealtimeAPIKeyCacheContext;
|
|
4
|
+
exports.getDeferredRealtimeAPIKeyCache = getDeferredRealtimeAPIKeyCache;
|
|
5
|
+
exports.validateCapturedAPIKey = validateCapturedAPIKey;
|
|
3
6
|
exports.getRealtimeAPIKey = getRealtimeAPIKey;
|
|
4
7
|
exports.resolveRealtimeAPIKey = resolveRealtimeAPIKey;
|
|
8
|
+
const bedrock_1 = require("./bedrock.js");
|
|
9
|
+
// Only the key crosses module formats: the context belongs to each participating client.
|
|
10
|
+
const realtimeCacheContext = Symbol.for('openai.realtimeAPIKeyCacheContext');
|
|
11
|
+
let cacheContext;
|
|
12
|
+
/** Installs the Node transport's invocation context without loading Node in the base client. @internal */
|
|
13
|
+
function setRealtimeAPIKeyCacheContext(context) {
|
|
14
|
+
cacheContext = context;
|
|
15
|
+
}
|
|
16
|
+
/** Reserves a deferred commit when the base hook is entered for this invocation. @internal */
|
|
17
|
+
function getDeferredRealtimeAPIKeyCache(client) {
|
|
18
|
+
const deferred = client[realtimeCacheContext]?.getStore();
|
|
19
|
+
return deferred?.client === client ? deferred : undefined;
|
|
20
|
+
}
|
|
21
|
+
/** Applies the Bedrock getter's validation when a captured credential does not enter the cache. @internal */
|
|
22
|
+
function validateCapturedAPIKey(client, credential) {
|
|
23
|
+
if (credential !== null && bedrock_1.brand_privateBedrockClient in client) {
|
|
24
|
+
(0, bedrock_1.assertValidBedrockBearerCredential)(credential);
|
|
25
|
+
}
|
|
26
|
+
return credential;
|
|
27
|
+
}
|
|
5
28
|
/** Selects a captured credential without treating an explicit null as absent. @internal */
|
|
6
29
|
function getRealtimeAPIKey(client, captured) {
|
|
7
30
|
return captured === undefined ? client?.apiKey : captured;
|
|
@@ -13,11 +36,32 @@ function getRealtimeAPIKey(client, captured) {
|
|
|
13
36
|
* synchronizing concurrent credential updates.
|
|
14
37
|
* @internal
|
|
15
38
|
*/
|
|
16
|
-
async function resolveRealtimeAPIKey(client) {
|
|
39
|
+
async function resolveRealtimeAPIKey(client, deferCache = false) {
|
|
17
40
|
let apiKey;
|
|
18
|
-
const
|
|
41
|
+
const current = {
|
|
42
|
+
client,
|
|
43
|
+
commit: () => (apiKey === undefined ? client.apiKey : apiKey),
|
|
44
|
+
};
|
|
45
|
+
const capture = (resolved) => {
|
|
19
46
|
apiKey = resolved;
|
|
20
|
-
}
|
|
21
|
-
|
|
47
|
+
};
|
|
48
|
+
const invoke = () => client._callApiKey(capture);
|
|
49
|
+
const context = client[realtimeCacheContext] ?? cacheContext;
|
|
50
|
+
if (deferCache && context && !client[realtimeCacheContext]) {
|
|
51
|
+
Object.defineProperty(client, realtimeCacheContext, { value: context });
|
|
52
|
+
}
|
|
53
|
+
// An HTTP or ordinary Realtime request nested inside a WebSocket hook owns its own cache writes.
|
|
54
|
+
const isProvider = await (context ? context.run(deferCache ? current : undefined, invoke) : invoke());
|
|
55
|
+
return {
|
|
56
|
+
apiKey: apiKey === undefined ? client.apiKey : apiKey,
|
|
57
|
+
isProvider,
|
|
58
|
+
commit: () => {
|
|
59
|
+
const hookKey = current.providerKey !== undefined && apiKey !== undefined && apiKey !== current.providerKey
|
|
60
|
+
? validateCapturedAPIKey(client, apiKey)
|
|
61
|
+
: undefined;
|
|
62
|
+
const cached = current.commit();
|
|
63
|
+
return hookKey === undefined ? validateCapturedAPIKey(client, cached) : hookKey;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
22
66
|
}
|
|
23
67
|
//# sourceMappingURL=realtime-credentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-credentials.js","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"realtime-credentials.js","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
import { assertValidBedrockBearerCredential, brand_privateBedrockClient } from "./bedrock.mjs";
|
|
2
|
+
// Only the key crosses module formats: the context belongs to each participating client.
|
|
3
|
+
const realtimeCacheContext = Symbol.for('openai.realtimeAPIKeyCacheContext');
|
|
4
|
+
let cacheContext;
|
|
5
|
+
/** Installs the Node transport's invocation context without loading Node in the base client. @internal */
|
|
6
|
+
export function setRealtimeAPIKeyCacheContext(context) {
|
|
7
|
+
cacheContext = context;
|
|
8
|
+
}
|
|
9
|
+
/** Reserves a deferred commit when the base hook is entered for this invocation. @internal */
|
|
10
|
+
export function getDeferredRealtimeAPIKeyCache(client) {
|
|
11
|
+
const deferred = client[realtimeCacheContext]?.getStore();
|
|
12
|
+
return deferred?.client === client ? deferred : undefined;
|
|
13
|
+
}
|
|
14
|
+
/** Applies the Bedrock getter's validation when a captured credential does not enter the cache. @internal */
|
|
15
|
+
export function validateCapturedAPIKey(client, credential) {
|
|
16
|
+
if (credential !== null && brand_privateBedrockClient in client) {
|
|
17
|
+
assertValidBedrockBearerCredential(credential);
|
|
18
|
+
}
|
|
19
|
+
return credential;
|
|
20
|
+
}
|
|
1
21
|
/** Selects a captured credential without treating an explicit null as absent. @internal */
|
|
2
22
|
export function getRealtimeAPIKey(client, captured) {
|
|
3
23
|
return captured === undefined ? client?.apiKey : captured;
|
|
@@ -9,11 +29,32 @@ export function getRealtimeAPIKey(client, captured) {
|
|
|
9
29
|
* synchronizing concurrent credential updates.
|
|
10
30
|
* @internal
|
|
11
31
|
*/
|
|
12
|
-
export async function resolveRealtimeAPIKey(client) {
|
|
32
|
+
export async function resolveRealtimeAPIKey(client, deferCache = false) {
|
|
13
33
|
let apiKey;
|
|
14
|
-
const
|
|
34
|
+
const current = {
|
|
35
|
+
client,
|
|
36
|
+
commit: () => (apiKey === undefined ? client.apiKey : apiKey),
|
|
37
|
+
};
|
|
38
|
+
const capture = (resolved) => {
|
|
15
39
|
apiKey = resolved;
|
|
16
|
-
}
|
|
17
|
-
|
|
40
|
+
};
|
|
41
|
+
const invoke = () => client._callApiKey(capture);
|
|
42
|
+
const context = client[realtimeCacheContext] ?? cacheContext;
|
|
43
|
+
if (deferCache && context && !client[realtimeCacheContext]) {
|
|
44
|
+
Object.defineProperty(client, realtimeCacheContext, { value: context });
|
|
45
|
+
}
|
|
46
|
+
// An HTTP or ordinary Realtime request nested inside a WebSocket hook owns its own cache writes.
|
|
47
|
+
const isProvider = await (context ? context.run(deferCache ? current : undefined, invoke) : invoke());
|
|
48
|
+
return {
|
|
49
|
+
apiKey: apiKey === undefined ? client.apiKey : apiKey,
|
|
50
|
+
isProvider,
|
|
51
|
+
commit: () => {
|
|
52
|
+
const hookKey = current.providerKey !== undefined && apiKey !== undefined && apiKey !== current.providerKey
|
|
53
|
+
? validateCapturedAPIKey(client, apiKey)
|
|
54
|
+
: undefined;
|
|
55
|
+
const cached = current.commit();
|
|
56
|
+
return hookKey === undefined ? validateCapturedAPIKey(client, cached) : hookKey;
|
|
57
|
+
},
|
|
58
|
+
};
|
|
18
59
|
}
|
|
19
60
|
//# sourceMappingURL=realtime-credentials.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-credentials.mjs","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"realtime-credentials.mjs","sourceRoot":"","sources":["../src/internal/realtime-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { OpenAI } from "../client.mjs";
|
|
2
|
+
import type { CredentialedWebSocketOptions } from "./ws.mjs";
|
|
3
|
+
/** Per-connection Responses credential state shared by the stable and beta Node transports. */
|
|
4
|
+
export declare class ResponsesWebSocketCredentials {
|
|
5
|
+
private initialAuthUsedAPIKey;
|
|
6
|
+
private initialAPIKey;
|
|
7
|
+
private prepared;
|
|
8
|
+
get preparedAPIKey(): string | null | undefined;
|
|
9
|
+
trackInitialHeaders(client: OpenAI, headers: Record<string, string>, hasSocket: () => boolean): void;
|
|
10
|
+
usesAPIKey(client: OpenAI, headers: Record<string, string>): boolean;
|
|
11
|
+
build<Options extends CredentialedWebSocketOptions>(client: OpenAI, authHeaders: Record<string, string>, options: Options | null | undefined, initialAuthUsedAPIKey?: boolean): {
|
|
12
|
+
headers: {
|
|
13
|
+
[k: string]: string;
|
|
14
|
+
};
|
|
15
|
+
followRedirects: boolean;
|
|
16
|
+
} & {
|
|
17
|
+
headers: {
|
|
18
|
+
[k: string]: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
prepare<Socket, Options extends CredentialedWebSocketOptions>(client: OpenAI, socketOptions: Options | null | undefined, authHeaders: (apiKey?: string | null) => Record<string, string>, createSocket: (url: URL, headers: Record<string, string>) => Socket): Promise<(url: URL) => Socket>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=responses-ws-credentials.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-ws-credentials.d.mts","sourceRoot":"","sources":["../src/internal/responses-ws-credentials.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,sBAAkB;AAQxC,OAAO,KAAK,EAAE,4BAA4B,EAAE,iBAAa;AAyDzD,+FAA+F;AAC/F,qBAAa,6BAA6B;IACxC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAMF;IAEd,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAE9C;IAED,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,GAAG,IAAI;IAMpG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAoBpE,KAAK,CAAC,OAAO,SAAS,4BAA4B,EAChD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACnC,qBAAqB,CAAC,EAAE,OAAO;;;;;;;;;;IAmB3B,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS,4BAA4B,EAChE,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACzC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/D,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,GAClE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;CAuBjC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { OpenAI } from "../client.js";
|
|
2
|
+
import type { CredentialedWebSocketOptions } from "./ws.js";
|
|
3
|
+
/** Per-connection Responses credential state shared by the stable and beta Node transports. */
|
|
4
|
+
export declare class ResponsesWebSocketCredentials {
|
|
5
|
+
private initialAuthUsedAPIKey;
|
|
6
|
+
private initialAPIKey;
|
|
7
|
+
private prepared;
|
|
8
|
+
get preparedAPIKey(): string | null | undefined;
|
|
9
|
+
trackInitialHeaders(client: OpenAI, headers: Record<string, string>, hasSocket: () => boolean): void;
|
|
10
|
+
usesAPIKey(client: OpenAI, headers: Record<string, string>): boolean;
|
|
11
|
+
build<Options extends CredentialedWebSocketOptions>(client: OpenAI, authHeaders: Record<string, string>, options: Options | null | undefined, initialAuthUsedAPIKey?: boolean): {
|
|
12
|
+
headers: {
|
|
13
|
+
[k: string]: string;
|
|
14
|
+
};
|
|
15
|
+
followRedirects: boolean;
|
|
16
|
+
} & {
|
|
17
|
+
headers: {
|
|
18
|
+
[k: string]: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
prepare<Socket, Options extends CredentialedWebSocketOptions>(client: OpenAI, socketOptions: Options | null | undefined, authHeaders: (apiKey?: string | null) => Record<string, string>, createSocket: (url: URL, headers: Record<string, string>) => Socket): Promise<(url: URL) => Socket>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=responses-ws-credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-ws-credentials.d.ts","sourceRoot":"","sources":["../src/internal/responses-ws-credentials.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAkB;AAQxC,OAAO,KAAK,EAAE,4BAA4B,EAAE,gBAAa;AAyDzD,+FAA+F;AAC/F,qBAAa,6BAA6B;IACxC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAMF;IAEd,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAE9C;IAED,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,GAAG,IAAI;IAMpG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAoBpE,KAAK,CAAC,OAAO,SAAS,4BAA4B,EAChD,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACnC,qBAAqB,CAAC,EAAE,OAAO;;;;;;;;;;IAmB3B,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS,4BAA4B,EAChE,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACzC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/D,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,GAClE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;CAuBjC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResponsesWebSocketCredentials = void 0;
|
|
4
|
+
const error_1 = require("../core/error.js");
|
|
5
|
+
const realtime_credentials_1 = require("./realtime-credentials.js");
|
|
6
|
+
const ws_1 = require("./ws.js");
|
|
7
|
+
/**
|
|
8
|
+
* Keep caller credential admission distinct from the hook's final provider-key transform.
|
|
9
|
+
* The latter reuses captured base headers so no caller getters are reread after the refresh.
|
|
10
|
+
*/
|
|
11
|
+
function buildResponsesWebSocketOptions(client, authHeaders, options, prepared) {
|
|
12
|
+
if (prepared) {
|
|
13
|
+
return prepared.apiKey === undefined
|
|
14
|
+
? (0, ws_1.mergeWebSocketAuthHeaders)(prepared.options, authHeaders, prepared.removedHeaders)
|
|
15
|
+
: (0, ws_1.buildWebSocketOptions)(client, authHeaders, prepared.options, prepared.removedHeaders, true);
|
|
16
|
+
}
|
|
17
|
+
if (!client._hasApiKeyProvider()) {
|
|
18
|
+
return (0, ws_1.buildWebSocketOptions)(client, authHeaders, options);
|
|
19
|
+
}
|
|
20
|
+
const removedHeaders = new Set();
|
|
21
|
+
const provided = (0, ws_1.buildWebSocketOptions)(client, {}, options, removedHeaders);
|
|
22
|
+
return (0, ws_1.snapshotWebSocketCredentials)(provided, ws_1.WEBSOCKET_METADATA_HEADERS)
|
|
23
|
+
? provided
|
|
24
|
+
: (0, ws_1.buildWebSocketOptions)(client, authHeaders, provided, removedHeaders, true);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Classify reconnect credentials without treating the previous SDK key as a caller override.
|
|
28
|
+
* Capture routing and caller options before any asynchronous key refresh.
|
|
29
|
+
*/
|
|
30
|
+
function prepareResponsesWebSocketReconnect(client, socketOptions, initialAuthUsedAPIKey) {
|
|
31
|
+
const removedHeaders = new Set();
|
|
32
|
+
const options = (0, ws_1.buildWebSocketOptions)(client, {}, socketOptions, removedHeaders);
|
|
33
|
+
let authentication;
|
|
34
|
+
if ((0, ws_1.snapshotWebSocketCredentials)(options, ws_1.WEBSOCKET_METADATA_HEADERS)) {
|
|
35
|
+
authentication = 'provided';
|
|
36
|
+
}
|
|
37
|
+
else if (removedHeaders.has('authorization') ||
|
|
38
|
+
options.headers?.['authorization'] !== undefined ||
|
|
39
|
+
!initialAuthUsedAPIKey) {
|
|
40
|
+
authentication = 'cached';
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
authentication = 'refresh';
|
|
44
|
+
}
|
|
45
|
+
return { options, removedHeaders, authentication };
|
|
46
|
+
}
|
|
47
|
+
/** Per-connection Responses credential state shared by the stable and beta Node transports. */
|
|
48
|
+
class ResponsesWebSocketCredentials {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.initialAuthUsedAPIKey = false;
|
|
51
|
+
}
|
|
52
|
+
get preparedAPIKey() {
|
|
53
|
+
return this.prepared?.apiKey;
|
|
54
|
+
}
|
|
55
|
+
trackInitialHeaders(client, headers, hasSocket) {
|
|
56
|
+
if (!hasSocket() && client._hasApiKeyProvider()) {
|
|
57
|
+
this.initialAPIKey = headers['Authorization']?.slice('Bearer '.length);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
usesAPIKey(client, headers) {
|
|
61
|
+
// Hooks can read the SDK key without delegating. Only use an ordinary cached property here:
|
|
62
|
+
// invoking custom/Bedrock getters could validate credentials a caller-owned socket never sends.
|
|
63
|
+
const apiKey = this.initialAPIKey ??
|
|
64
|
+
(client._hasApiKeyProvider() ? Object.getOwnPropertyDescriptor(client, 'apiKey')?.value : undefined);
|
|
65
|
+
if (!apiKey) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
// Metadata containing a copy of a credential does not make it the socket's authentication.
|
|
69
|
+
return (0, ws_1.snapshotWebSocketCredentials)({
|
|
70
|
+
headers: Object.fromEntries(Object.entries(headers).map(([name, value]) => [name, value?.includes(apiKey) ? value : ''])),
|
|
71
|
+
}, ws_1.WEBSOCKET_METADATA_HEADERS);
|
|
72
|
+
}
|
|
73
|
+
build(client, authHeaders, options, initialAuthUsedAPIKey) {
|
|
74
|
+
if (initialAuthUsedAPIKey !== undefined) {
|
|
75
|
+
this.initialAuthUsedAPIKey = initialAuthUsedAPIKey;
|
|
76
|
+
this.initialAPIKey = undefined;
|
|
77
|
+
}
|
|
78
|
+
const socketOptions = buildResponsesWebSocketOptions(client, authHeaders, options, this.prepared);
|
|
79
|
+
if (client._hasApiKeyProvider() &&
|
|
80
|
+
!authHeaders['Authorization'] &&
|
|
81
|
+
!(0, ws_1.snapshotWebSocketCredentials)(socketOptions, ws_1.WEBSOCKET_METADATA_HEADERS)) {
|
|
82
|
+
throw new error_1.OpenAIError('Cannot open a Responses WebSocket with an unresolved function-based apiKey. Resolve it before constructing the WebSocket or provide explicit WebSocket credentials.');
|
|
83
|
+
}
|
|
84
|
+
return socketOptions;
|
|
85
|
+
}
|
|
86
|
+
async prepare(client, socketOptions, authHeaders, createSocket) {
|
|
87
|
+
const { options, removedHeaders, authentication } = prepareResponsesWebSocketReconnect(client, socketOptions, this.initialAuthUsedAPIKey);
|
|
88
|
+
const createPreparedSocket = (url, headers, apiKey) => {
|
|
89
|
+
const previous = this.prepared;
|
|
90
|
+
this.prepared = { options, removedHeaders, apiKey };
|
|
91
|
+
try {
|
|
92
|
+
// Resolve headers inside the scope so legacy zero-argument overrides see this attempt's key.
|
|
93
|
+
return createSocket(url, apiKey === undefined ? headers : authHeaders(apiKey));
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
this.prepared = previous;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
if (authentication !== 'refresh') {
|
|
100
|
+
const headers = authentication === 'provided' ? {} : authHeaders();
|
|
101
|
+
return (url) => createPreparedSocket(url, headers);
|
|
102
|
+
}
|
|
103
|
+
const { commit } = await (0, realtime_credentials_1.resolveRealtimeAPIKey)(client, true);
|
|
104
|
+
return (url) => createPreparedSocket(url, {}, commit());
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.ResponsesWebSocketCredentials = ResponsesWebSocketCredentials;
|
|
108
|
+
//# sourceMappingURL=responses-ws-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-ws-credentials.js","sourceRoot":"","sources":["../src/internal/responses-ws-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { OpenAIError } from "../core/error.mjs";
|
|
2
|
+
import { resolveRealtimeAPIKey } from "./realtime-credentials.mjs";
|
|
3
|
+
import { buildWebSocketOptions, mergeWebSocketAuthHeaders, snapshotWebSocketCredentials, WEBSOCKET_METADATA_HEADERS, } from "./ws.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Keep caller credential admission distinct from the hook's final provider-key transform.
|
|
6
|
+
* The latter reuses captured base headers so no caller getters are reread after the refresh.
|
|
7
|
+
*/
|
|
8
|
+
function buildResponsesWebSocketOptions(client, authHeaders, options, prepared) {
|
|
9
|
+
if (prepared) {
|
|
10
|
+
return prepared.apiKey === undefined
|
|
11
|
+
? mergeWebSocketAuthHeaders(prepared.options, authHeaders, prepared.removedHeaders)
|
|
12
|
+
: buildWebSocketOptions(client, authHeaders, prepared.options, prepared.removedHeaders, true);
|
|
13
|
+
}
|
|
14
|
+
if (!client._hasApiKeyProvider()) {
|
|
15
|
+
return buildWebSocketOptions(client, authHeaders, options);
|
|
16
|
+
}
|
|
17
|
+
const removedHeaders = new Set();
|
|
18
|
+
const provided = buildWebSocketOptions(client, {}, options, removedHeaders);
|
|
19
|
+
return snapshotWebSocketCredentials(provided, WEBSOCKET_METADATA_HEADERS)
|
|
20
|
+
? provided
|
|
21
|
+
: buildWebSocketOptions(client, authHeaders, provided, removedHeaders, true);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Classify reconnect credentials without treating the previous SDK key as a caller override.
|
|
25
|
+
* Capture routing and caller options before any asynchronous key refresh.
|
|
26
|
+
*/
|
|
27
|
+
function prepareResponsesWebSocketReconnect(client, socketOptions, initialAuthUsedAPIKey) {
|
|
28
|
+
const removedHeaders = new Set();
|
|
29
|
+
const options = buildWebSocketOptions(client, {}, socketOptions, removedHeaders);
|
|
30
|
+
let authentication;
|
|
31
|
+
if (snapshotWebSocketCredentials(options, WEBSOCKET_METADATA_HEADERS)) {
|
|
32
|
+
authentication = 'provided';
|
|
33
|
+
}
|
|
34
|
+
else if (removedHeaders.has('authorization') ||
|
|
35
|
+
options.headers?.['authorization'] !== undefined ||
|
|
36
|
+
!initialAuthUsedAPIKey) {
|
|
37
|
+
authentication = 'cached';
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
authentication = 'refresh';
|
|
41
|
+
}
|
|
42
|
+
return { options, removedHeaders, authentication };
|
|
43
|
+
}
|
|
44
|
+
/** Per-connection Responses credential state shared by the stable and beta Node transports. */
|
|
45
|
+
export class ResponsesWebSocketCredentials {
|
|
46
|
+
constructor() {
|
|
47
|
+
this.initialAuthUsedAPIKey = false;
|
|
48
|
+
}
|
|
49
|
+
get preparedAPIKey() {
|
|
50
|
+
return this.prepared?.apiKey;
|
|
51
|
+
}
|
|
52
|
+
trackInitialHeaders(client, headers, hasSocket) {
|
|
53
|
+
if (!hasSocket() && client._hasApiKeyProvider()) {
|
|
54
|
+
this.initialAPIKey = headers['Authorization']?.slice('Bearer '.length);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
usesAPIKey(client, headers) {
|
|
58
|
+
// Hooks can read the SDK key without delegating. Only use an ordinary cached property here:
|
|
59
|
+
// invoking custom/Bedrock getters could validate credentials a caller-owned socket never sends.
|
|
60
|
+
const apiKey = this.initialAPIKey ??
|
|
61
|
+
(client._hasApiKeyProvider() ? Object.getOwnPropertyDescriptor(client, 'apiKey')?.value : undefined);
|
|
62
|
+
if (!apiKey) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// Metadata containing a copy of a credential does not make it the socket's authentication.
|
|
66
|
+
return snapshotWebSocketCredentials({
|
|
67
|
+
headers: Object.fromEntries(Object.entries(headers).map(([name, value]) => [name, value?.includes(apiKey) ? value : ''])),
|
|
68
|
+
}, WEBSOCKET_METADATA_HEADERS);
|
|
69
|
+
}
|
|
70
|
+
build(client, authHeaders, options, initialAuthUsedAPIKey) {
|
|
71
|
+
if (initialAuthUsedAPIKey !== undefined) {
|
|
72
|
+
this.initialAuthUsedAPIKey = initialAuthUsedAPIKey;
|
|
73
|
+
this.initialAPIKey = undefined;
|
|
74
|
+
}
|
|
75
|
+
const socketOptions = buildResponsesWebSocketOptions(client, authHeaders, options, this.prepared);
|
|
76
|
+
if (client._hasApiKeyProvider() &&
|
|
77
|
+
!authHeaders['Authorization'] &&
|
|
78
|
+
!snapshotWebSocketCredentials(socketOptions, WEBSOCKET_METADATA_HEADERS)) {
|
|
79
|
+
throw new OpenAIError('Cannot open a Responses WebSocket with an unresolved function-based apiKey. Resolve it before constructing the WebSocket or provide explicit WebSocket credentials.');
|
|
80
|
+
}
|
|
81
|
+
return socketOptions;
|
|
82
|
+
}
|
|
83
|
+
async prepare(client, socketOptions, authHeaders, createSocket) {
|
|
84
|
+
const { options, removedHeaders, authentication } = prepareResponsesWebSocketReconnect(client, socketOptions, this.initialAuthUsedAPIKey);
|
|
85
|
+
const createPreparedSocket = (url, headers, apiKey) => {
|
|
86
|
+
const previous = this.prepared;
|
|
87
|
+
this.prepared = { options, removedHeaders, apiKey };
|
|
88
|
+
try {
|
|
89
|
+
// Resolve headers inside the scope so legacy zero-argument overrides see this attempt's key.
|
|
90
|
+
return createSocket(url, apiKey === undefined ? headers : authHeaders(apiKey));
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
this.prepared = previous;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
if (authentication !== 'refresh') {
|
|
97
|
+
const headers = authentication === 'provided' ? {} : authHeaders();
|
|
98
|
+
return (url) => createPreparedSocket(url, headers);
|
|
99
|
+
}
|
|
100
|
+
const { commit } = await resolveRealtimeAPIKey(client, true);
|
|
101
|
+
return (url) => createPreparedSocket(url, {}, commit());
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=responses-ws-credentials.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-ws-credentials.mjs","sourceRoot":"","sources":["../src/internal/responses-ws-credentials.ts"],"names":[],"mappings":"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"}
|