openai 7.17.0 → 7.18.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 +21 -0
- package/client.d.mts +2 -0
- package/client.d.mts.map +1 -1
- package/client.d.ts +2 -0
- package/client.d.ts.map +1 -1
- package/client.js +12 -0
- package/client.js.map +1 -1
- package/client.mjs +12 -0
- package/client.mjs.map +1 -1
- package/internal/ws.d.mts +7 -0
- package/internal/ws.d.mts.map +1 -1
- package/internal/ws.d.ts +7 -0
- package/internal/ws.d.ts.map +1 -1
- package/internal/ws.js +36 -2
- package/internal/ws.js.map +1 -1
- package/internal/ws.mjs +34 -3
- package/internal/ws.mjs.map +1 -1
- package/lib/responses/responses-websocket-lane.d.mts +63 -0
- package/lib/responses/responses-websocket-lane.d.mts.map +1 -0
- package/lib/responses/responses-websocket-lane.d.ts +63 -0
- package/lib/responses/responses-websocket-lane.d.ts.map +1 -0
- package/lib/responses/responses-websocket-lane.js +314 -0
- package/lib/responses/responses-websocket-lane.js.map +1 -0
- package/lib/responses/responses-websocket-lane.mjs +309 -0
- package/lib/responses/responses-websocket-lane.mjs.map +1 -0
- package/lib/responses/responses-websocket-session.d.mts +38 -0
- package/lib/responses/responses-websocket-session.d.mts.map +1 -0
- package/lib/responses/responses-websocket-session.d.ts +38 -0
- package/lib/responses/responses-websocket-session.d.ts.map +1 -0
- package/lib/responses/responses-websocket-session.js +268 -0
- package/lib/responses/responses-websocket-session.js.map +1 -0
- package/lib/responses/responses-websocket-session.mjs +263 -0
- package/lib/responses/responses-websocket-session.mjs.map +1 -0
- package/package.json +1 -1
- package/resources/beta/agents/sessions/sessions.d.mts +42 -1
- package/resources/beta/agents/sessions/sessions.d.mts.map +1 -1
- package/resources/beta/agents/sessions/sessions.d.ts +42 -1
- package/resources/beta/agents/sessions/sessions.d.ts.map +1 -1
- package/resources/beta/agents/sessions/sessions.js +2 -1
- package/resources/beta/agents/sessions/sessions.js.map +1 -1
- package/resources/beta/agents/sessions/sessions.mjs +2 -1
- package/resources/beta/agents/sessions/sessions.mjs.map +1 -1
- package/resources/beta/responses/responses.d.mts +14 -4
- package/resources/beta/responses/responses.d.mts.map +1 -1
- package/resources/beta/responses/responses.d.ts +14 -4
- package/resources/beta/responses/responses.d.ts.map +1 -1
- package/resources/beta/responses/responses.js.map +1 -1
- package/resources/beta/responses/responses.mjs.map +1 -1
- package/resources/beta/responses/ws-base.d.mts +4 -0
- package/resources/beta/responses/ws-base.d.mts.map +1 -1
- package/resources/beta/responses/ws-base.d.ts +4 -0
- package/resources/beta/responses/ws-base.d.ts.map +1 -1
- package/resources/beta/responses/ws-base.js +22 -1
- package/resources/beta/responses/ws-base.js.map +1 -1
- package/resources/beta/responses/ws-base.mjs +21 -2
- package/resources/beta/responses/ws-base.mjs.map +1 -1
- package/resources/beta/responses/ws.d.mts.map +1 -1
- package/resources/beta/responses/ws.d.ts.map +1 -1
- package/resources/beta/responses/ws.js +10 -6
- package/resources/beta/responses/ws.js.map +1 -1
- package/resources/beta/responses/ws.mjs +10 -6
- package/resources/beta/responses/ws.mjs.map +1 -1
- package/resources/live/forks/ws.d.mts.map +1 -1
- package/resources/live/forks/ws.d.ts.map +1 -1
- package/resources/live/forks/ws.js +2 -4
- package/resources/live/forks/ws.js.map +1 -1
- package/resources/live/forks/ws.mjs +2 -4
- package/resources/live/forks/ws.mjs.map +1 -1
- package/resources/live/sideband/ws.d.mts.map +1 -1
- package/resources/live/sideband/ws.d.ts.map +1 -1
- package/resources/live/sideband/ws.js +2 -4
- package/resources/live/sideband/ws.js.map +1 -1
- package/resources/live/sideband/ws.mjs +2 -4
- package/resources/live/sideband/ws.mjs.map +1 -1
- package/resources/live/ws.d.mts.map +1 -1
- package/resources/live/ws.d.ts.map +1 -1
- package/resources/live/ws.js +2 -4
- package/resources/live/ws.js.map +1 -1
- package/resources/live/ws.mjs +2 -4
- package/resources/live/ws.mjs.map +1 -1
- package/resources/responses/responses.d.mts +11 -1
- package/resources/responses/responses.d.mts.map +1 -1
- package/resources/responses/responses.d.ts +11 -1
- package/resources/responses/responses.d.ts.map +1 -1
- package/resources/responses/responses.js.map +1 -1
- package/resources/responses/responses.mjs.map +1 -1
- package/resources/responses/ws-base.d.mts +6 -0
- package/resources/responses/ws-base.d.mts.map +1 -1
- package/resources/responses/ws-base.d.ts +6 -0
- package/resources/responses/ws-base.d.ts.map +1 -1
- package/resources/responses/ws-base.js +27 -4
- package/resources/responses/ws-base.js.map +1 -1
- package/resources/responses/ws-base.mjs +26 -5
- package/resources/responses/ws-base.mjs.map +1 -1
- package/resources/responses/ws.d.mts.map +1 -1
- package/resources/responses/ws.d.ts.map +1 -1
- package/resources/responses/ws.js +10 -6
- package/resources/responses/ws.js.map +1 -1
- package/resources/responses/ws.mjs +10 -6
- package/resources/responses/ws.mjs.map +1 -1
- package/resources/shared.d.mts +1 -1
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +1 -1
- package/resources/shared.d.ts.map +1 -1
- package/resources/webhooks/webhooks.d.mts +3 -4
- package/resources/webhooks/webhooks.d.mts.map +1 -1
- package/resources/webhooks/webhooks.d.ts +3 -4
- package/resources/webhooks/webhooks.d.ts.map +1 -1
- package/src/client.ts +15 -0
- package/src/internal/ws.ts +37 -3
- package/src/lib/responses/responses-websocket-lane.ts +388 -0
- package/src/lib/responses/responses-websocket-session.ts +317 -0
- package/src/resources/beta/agents/sessions/sessions.ts +47 -1
- package/src/resources/beta/responses/responses.ts +24 -4
- package/src/resources/beta/responses/ws-base.ts +24 -1
- package/src/resources/beta/responses/ws.ts +9 -6
- package/src/resources/live/forks/ws.ts +4 -5
- package/src/resources/live/sideband/ws.ts +4 -5
- package/src/resources/live/ws.ts +4 -5
- package/src/resources/responses/responses.ts +15 -1
- package/src/resources/responses/ws-base.ts +29 -4
- package/src/resources/responses/ws.ts +9 -6
- package/src/resources/shared.ts +4 -2
- package/src/resources/webhooks/webhooks.ts +3 -4
- 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,309 @@
|
|
|
1
|
+
var _ResponsesWebSocketLane_instances, _a, _ResponsesWebSocketLane_streamID, _ResponsesWebSocketLane_send, _ResponsesWebSocketLane_release, _ResponsesWebSocketLane_maxEvents, _ResponsesWebSocketLane_maxBytes, _ResponsesWebSocketLane_bytes, _ResponsesWebSocketLane_queue, _ResponsesWebSocketLane_queueHead, _ResponsesWebSocketLane_wake, _ResponsesWebSocketLane_failure, _ResponsesWebSocketLane_reading, _ResponsesWebSocketLane_acquireReader, _ResponsesWebSocketLane_receive, _ResponsesWebSocketLane_finalizeResponse, _ResponsesWebSocketLane_validateOutputItem, _ResponsesWebSocketLane_isValidOutputItem, _ResponsesWebSocketLane_validateTerminalResponse;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "../../internal/tslib.mjs";
|
|
3
|
+
import { WebSocketError } from "../../resources/responses/internal-base.mjs";
|
|
4
|
+
import { OpenAIError } from "../../core/error.mjs";
|
|
5
|
+
import { hasOwn, isObj } from "../../internal/utils/values.mjs";
|
|
6
|
+
import { cloneResponse, createCanonicalResponseContext, ensureCanonicalOutputText, } from "../../internal/responses/canonical-output-text.mjs";
|
|
7
|
+
function isEventType(event, ...types) {
|
|
8
|
+
return types.some((type) => event.type === type);
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
export function positiveInteger(value) {
|
|
12
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
13
|
+
throw new OpenAIError('Responses WebSocket limits must be positive integers');
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
/** A single ordered local consumer. Canceling receive cancels only that wait. */
|
|
18
|
+
export class ResponsesWebSocketLane {
|
|
19
|
+
/** Created by ResponsesWebSocketSession.lane().
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
constructor(streamID, send, release, maxEvents, maxBytes) {
|
|
23
|
+
_ResponsesWebSocketLane_instances.add(this);
|
|
24
|
+
_ResponsesWebSocketLane_streamID.set(this, void 0);
|
|
25
|
+
_ResponsesWebSocketLane_send.set(this, void 0);
|
|
26
|
+
_ResponsesWebSocketLane_release.set(this, void 0);
|
|
27
|
+
_ResponsesWebSocketLane_maxEvents.set(this, void 0);
|
|
28
|
+
_ResponsesWebSocketLane_maxBytes.set(this, void 0);
|
|
29
|
+
_ResponsesWebSocketLane_bytes.set(this, 0);
|
|
30
|
+
_ResponsesWebSocketLane_queue.set(this, []);
|
|
31
|
+
_ResponsesWebSocketLane_queueHead.set(this, 0);
|
|
32
|
+
_ResponsesWebSocketLane_wake.set(this, void 0);
|
|
33
|
+
_ResponsesWebSocketLane_failure.set(this, void 0);
|
|
34
|
+
_ResponsesWebSocketLane_reading.set(this, false);
|
|
35
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_streamID, streamID, "f");
|
|
36
|
+
Object.defineProperty(this, 'streamID', {
|
|
37
|
+
value: streamID,
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
});
|
|
42
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_send, send, "f");
|
|
43
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_release, release, "f");
|
|
44
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_maxEvents, maxEvents, "f");
|
|
45
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_maxBytes, maxBytes, "f");
|
|
46
|
+
}
|
|
47
|
+
/** Sends a request on this lane, omitting HTTP-only stream/background fields. previous_response_id remains caller-controlled. */
|
|
48
|
+
create(request) {
|
|
49
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
50
|
+
throw __classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f");
|
|
51
|
+
}
|
|
52
|
+
const event = {
|
|
53
|
+
...request,
|
|
54
|
+
type: 'response.create',
|
|
55
|
+
};
|
|
56
|
+
// The SDK owns this envelope; a top-level hook must not replace its routing.
|
|
57
|
+
Object.defineProperty(event, 'toJSON', { value: undefined });
|
|
58
|
+
delete event.stream;
|
|
59
|
+
delete event.background;
|
|
60
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_streamID, "f") === undefined) {
|
|
61
|
+
delete event.stream_id;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
Object.defineProperty(event, 'stream_id', { value: __classPrivateFieldGet(this, _ResponsesWebSocketLane_streamID, "f"), enumerable: true });
|
|
65
|
+
}
|
|
66
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_send, "f").call(this, event);
|
|
67
|
+
}
|
|
68
|
+
/** Returns the next raw event without filling omitted output or computing output_text. */
|
|
69
|
+
async receive(options = {}) {
|
|
70
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_acquireReader).call(this);
|
|
71
|
+
try {
|
|
72
|
+
const item = await __classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_receive).call(this, options);
|
|
73
|
+
return item.event;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_reading, false, "f");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Consumes the next response, returning completed, failed, or incomplete results.
|
|
81
|
+
* Collects finalized items and uses the existing Responses snapshot normalizer.
|
|
82
|
+
* Socket error events retain their nested data.
|
|
83
|
+
* Raw events remain observable on the original connection. maxResponseBytes
|
|
84
|
+
* optionally bounds the cumulative UTF-8 event bytes consumed for this result.
|
|
85
|
+
* There is no cumulative limit unless maxResponseBytes is supplied; the lane's
|
|
86
|
+
* queue budget only limits events waiting to be consumed. Exceeding the limit
|
|
87
|
+
* before a terminal event fails this lane, so the partial response cannot be
|
|
88
|
+
* consumed as a new result by a later call. Cancellation after consuming events
|
|
89
|
+
* also fails the lane; cancellation before consuming anything leaves it reusable.
|
|
90
|
+
* An invalid completed output item or terminal response fails only this lane.
|
|
91
|
+
*/
|
|
92
|
+
async finalResponse(options = {}) {
|
|
93
|
+
const { signal } = options;
|
|
94
|
+
const maxBytes = options.maxResponseBytes === undefined ? Infinity : positiveInteger(options.maxResponseBytes);
|
|
95
|
+
const completedOutput = new Map();
|
|
96
|
+
let consumedBytes = 0;
|
|
97
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_acquireReader).call(this);
|
|
98
|
+
try {
|
|
99
|
+
for (;;) {
|
|
100
|
+
// oxlint-disable-next-line eslint/no-await-in-loop -- Protocol order is required to accumulate one response.
|
|
101
|
+
const { event, bytes } = await __classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_receive).call(this, { signal });
|
|
102
|
+
consumedBytes += bytes;
|
|
103
|
+
const terminal = isEventType(event, 'error', 'response.completed', 'response.failed', 'response.incomplete');
|
|
104
|
+
if (consumedBytes > maxBytes) {
|
|
105
|
+
const error = new OpenAIError('Responses WebSocket accumulated response limit exceeded');
|
|
106
|
+
if (!terminal) {
|
|
107
|
+
this.fail(error);
|
|
108
|
+
}
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
if (isEventType(event, 'error')) {
|
|
112
|
+
throw new WebSocketError('Responses WebSocket request failed', event);
|
|
113
|
+
}
|
|
114
|
+
if (isEventType(event, 'response.created')) {
|
|
115
|
+
completedOutput.clear();
|
|
116
|
+
}
|
|
117
|
+
else if (isEventType(event, 'response.output_item.done')) {
|
|
118
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_validateOutputItem).call(this, event);
|
|
119
|
+
completedOutput.set(event.output_index, structuredClone(event.item));
|
|
120
|
+
}
|
|
121
|
+
if (terminal) {
|
|
122
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_validateTerminalResponse).call(this, event);
|
|
123
|
+
return __classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_finalizeResponse).call(this, event.response, completedOutput);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (consumedBytes > 0 && signal?.aborted) {
|
|
129
|
+
this.fail(new OpenAIError('Responses WebSocket final response canceled after consuming events'));
|
|
130
|
+
}
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_reading, false, "f");
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Detaches this consumer without canceling remote work. Its ID remains reserved until reconnect. */
|
|
138
|
+
close() {
|
|
139
|
+
this.fail(new OpenAIError('Responses WebSocket lane is closed'));
|
|
140
|
+
}
|
|
141
|
+
/** Preserves already accepted events when the transport ends.
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
end(error) {
|
|
145
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_failure, error, "f");
|
|
149
|
+
// Keep queued events owned by the session until drain, close, or reconnect.
|
|
150
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")?.call(this);
|
|
151
|
+
}
|
|
152
|
+
/** @internal */
|
|
153
|
+
get ended() {
|
|
154
|
+
return __classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f") !== undefined;
|
|
155
|
+
}
|
|
156
|
+
/** @internal */
|
|
157
|
+
push(event, bytes) {
|
|
158
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
159
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, bytes);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").length - __classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") >= __classPrivateFieldGet(this, _ResponsesWebSocketLane_maxEvents, "f") || bytes > __classPrivateFieldGet(this, _ResponsesWebSocketLane_maxBytes, "f") - __classPrivateFieldGet(this, _ResponsesWebSocketLane_bytes, "f")) {
|
|
163
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, bytes);
|
|
164
|
+
this.fail(new OpenAIError('Responses WebSocket lane buffer limit exceeded'));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_bytes, __classPrivateFieldGet(this, _ResponsesWebSocketLane_bytes, "f") + bytes, "f");
|
|
168
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").push({ event, bytes });
|
|
169
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")?.call(this);
|
|
170
|
+
}
|
|
171
|
+
/** @internal */
|
|
172
|
+
fail(error) {
|
|
173
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_failure, __classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f") ?? error, "f");
|
|
174
|
+
for (const item of __classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f")) {
|
|
175
|
+
if (item) {
|
|
176
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, item.bytes);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").length = 0;
|
|
180
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_queueHead, 0, "f");
|
|
181
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_bytes, 0, "f");
|
|
182
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")?.call(this);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
_a = ResponsesWebSocketLane, _ResponsesWebSocketLane_streamID = new WeakMap(), _ResponsesWebSocketLane_send = new WeakMap(), _ResponsesWebSocketLane_release = new WeakMap(), _ResponsesWebSocketLane_maxEvents = new WeakMap(), _ResponsesWebSocketLane_maxBytes = new WeakMap(), _ResponsesWebSocketLane_bytes = new WeakMap(), _ResponsesWebSocketLane_queue = new WeakMap(), _ResponsesWebSocketLane_queueHead = new WeakMap(), _ResponsesWebSocketLane_wake = new WeakMap(), _ResponsesWebSocketLane_failure = new WeakMap(), _ResponsesWebSocketLane_reading = new WeakMap(), _ResponsesWebSocketLane_instances = new WeakSet(), _ResponsesWebSocketLane_acquireReader = function _ResponsesWebSocketLane_acquireReader() {
|
|
186
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_reading, "f")) {
|
|
187
|
+
throw new OpenAIError('Responses WebSocket lane already has a reader');
|
|
188
|
+
}
|
|
189
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_reading, true, "f");
|
|
190
|
+
}, _ResponsesWebSocketLane_receive = async function _ResponsesWebSocketLane_receive(options) {
|
|
191
|
+
const { signal } = options;
|
|
192
|
+
for (;;) {
|
|
193
|
+
if (signal?.aborted) {
|
|
194
|
+
throw signal.reason;
|
|
195
|
+
}
|
|
196
|
+
const item = __classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f")[__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f")];
|
|
197
|
+
if (item) {
|
|
198
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f")[__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f")] = undefined;
|
|
199
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_queueHead, __classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") + 1, "f");
|
|
200
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") >= 64 && __classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") * 2 >= __classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").length) {
|
|
201
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").splice(0, __classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f"));
|
|
202
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_queueHead, 0, "f");
|
|
203
|
+
}
|
|
204
|
+
__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, item.bytes);
|
|
205
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_bytes, __classPrivateFieldGet(this, _ResponsesWebSocketLane_bytes, "f") - item.bytes, "f");
|
|
206
|
+
return item;
|
|
207
|
+
}
|
|
208
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
209
|
+
throw __classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f");
|
|
210
|
+
}
|
|
211
|
+
// oxlint-disable-next-line eslint/no-await-in-loop, promise/avoid-new -- A single ordered consumer waits for socket callbacks; canceling a wait must preserve queued events.
|
|
212
|
+
await new Promise((resolve) => {
|
|
213
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_wake, () => resolve(), "f");
|
|
214
|
+
signal?.addEventListener('abort', __classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f"), { once: true });
|
|
215
|
+
}).finally(() => {
|
|
216
|
+
if (__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")) {
|
|
217
|
+
signal?.removeEventListener('abort', __classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f"));
|
|
218
|
+
}
|
|
219
|
+
__classPrivateFieldSet(this, _ResponsesWebSocketLane_wake, undefined, "f");
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}, _ResponsesWebSocketLane_finalizeResponse = function _ResponsesWebSocketLane_finalizeResponse(response, completedOutput) {
|
|
223
|
+
const context = createCanonicalResponseContext();
|
|
224
|
+
try {
|
|
225
|
+
// Socket deltas need not include the setup events required by SSE.
|
|
226
|
+
// The terminal response is authoritative; finalized items fill an omitted output.
|
|
227
|
+
const completedEntries = [...completedOutput];
|
|
228
|
+
completedEntries.sort(([left], [right]) => left - right);
|
|
229
|
+
const output = hasOwn(response, 'output') ? response.output : undefined;
|
|
230
|
+
const outputText = hasOwn(response, 'output_text') ? response.output_text : undefined;
|
|
231
|
+
if ((output !== undefined &&
|
|
232
|
+
output !== null &&
|
|
233
|
+
(!Array.isArray(output) ||
|
|
234
|
+
!output.every((item) => __classPrivateFieldGet(_a, _a, "m", _ResponsesWebSocketLane_isValidOutputItem).call(_a, item)))) ||
|
|
235
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate present wire fields before exposing a typed final response.
|
|
236
|
+
(outputText !== undefined && outputText !== null && typeof outputText !== 'string')) {
|
|
237
|
+
throw new OpenAIError('Invalid Responses WebSocket terminal response');
|
|
238
|
+
}
|
|
239
|
+
const snapshot = cloneResponse(context, {
|
|
240
|
+
...response,
|
|
241
|
+
output: output ?? completedEntries.map(([, item]) => item),
|
|
242
|
+
output_text: outputText ?? '',
|
|
243
|
+
});
|
|
244
|
+
if (outputText === undefined || outputText === null) {
|
|
245
|
+
ensureCanonicalOutputText(context, snapshot);
|
|
246
|
+
}
|
|
247
|
+
return snapshot;
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
const error = new OpenAIError('Invalid Responses WebSocket terminal response');
|
|
251
|
+
this.fail(error);
|
|
252
|
+
throw error;
|
|
253
|
+
}
|
|
254
|
+
}, _ResponsesWebSocketLane_validateOutputItem = function _ResponsesWebSocketLane_validateOutputItem(event) {
|
|
255
|
+
if (!hasOwn(event, 'output_index') ||
|
|
256
|
+
!Number.isSafeInteger(event.output_index) ||
|
|
257
|
+
event.output_index < 0) {
|
|
258
|
+
const error = new OpenAIError('Responses WebSocket output index must be a nonnegative integer');
|
|
259
|
+
this.fail(error);
|
|
260
|
+
throw error;
|
|
261
|
+
}
|
|
262
|
+
if (!hasOwn(event, 'item')) {
|
|
263
|
+
const error = new OpenAIError('Responses WebSocket output item must be an own property');
|
|
264
|
+
this.fail(error);
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Completed output items must be wire objects before they enter the typed response.
|
|
268
|
+
if (event.item === null || typeof event.item !== 'object' || Array.isArray(event.item)) {
|
|
269
|
+
const error = new OpenAIError('Responses WebSocket output item must be an object');
|
|
270
|
+
this.fail(error);
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
273
|
+
if (!__classPrivateFieldGet(_a, _a, "m", _ResponsesWebSocketLane_isValidOutputItem).call(_a, event.item)) {
|
|
274
|
+
const error = new OpenAIError('Invalid Responses WebSocket completed output item');
|
|
275
|
+
this.fail(error);
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
}, _ResponsesWebSocketLane_isValidOutputItem = function _ResponsesWebSocketLane_isValidOutputItem(item) {
|
|
279
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Wire items require an own string discriminator, including unknown future variants.
|
|
280
|
+
if (!isObj(item) || !hasOwn(item, 'type') || typeof item['type'] !== 'string') {
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
if (item['type'] !== 'message') {
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
return (hasOwn(item, 'content') &&
|
|
287
|
+
Array.isArray(item['content']) &&
|
|
288
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- Validate untyped message parts before exposing the final response.
|
|
289
|
+
item['content'].every((content) => {
|
|
290
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Message parts use the same wire discriminator contract.
|
|
291
|
+
if (!isObj(content) || !hasOwn(content, 'type') || typeof content['type'] !== 'string') {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
return (content['type'] !== 'output_text' ||
|
|
295
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Canonical text accumulation consumes this exact wire field.
|
|
296
|
+
(hasOwn(content, 'text') && typeof content['text'] === 'string'));
|
|
297
|
+
}));
|
|
298
|
+
}, _ResponsesWebSocketLane_validateTerminalResponse = function _ResponsesWebSocketLane_validateTerminalResponse(event) {
|
|
299
|
+
if (!hasOwn(event, 'response') ||
|
|
300
|
+
event.response === null ||
|
|
301
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate the untrusted terminal envelope before normalizing a typed response snapshot.
|
|
302
|
+
typeof event.response !== 'object' ||
|
|
303
|
+
Array.isArray(event.response)) {
|
|
304
|
+
const error = new OpenAIError('Responses WebSocket terminal response must be an object');
|
|
305
|
+
this.fail(error);
|
|
306
|
+
throw error;
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
//# sourceMappingURL=responses-websocket-lane.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-websocket-lane.mjs","sourceRoot":"","sources":["../../src/lib/responses/responses-websocket-lane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ResponsesEmitter } from "../../resources/responses/internal-base.mjs";
|
|
2
|
+
import type { WebSocketLike } from "../../internal/ws-adapter.mjs";
|
|
3
|
+
import { ResponsesWebSocketLane } from "./responses-websocket-lane.mjs";
|
|
4
|
+
export { ResponsesWebSocketLane } from "./responses-websocket-lane.mjs";
|
|
5
|
+
export type { ResponsesWebSocketEvent } from "./responses-websocket-lane.mjs";
|
|
6
|
+
/** Limits for this optional helper. They do not change the underlying socket's limits. */
|
|
7
|
+
export interface ResponsesWebSocketSessionOptions {
|
|
8
|
+
/** Maximum lane IDs registered until the next reconnect, including detached lanes. */
|
|
9
|
+
maxLanes: number;
|
|
10
|
+
/** Maximum queued events across all lanes. */
|
|
11
|
+
maxBufferedEvents: number;
|
|
12
|
+
/** Maximum queued UTF-8 JSON bytes across all lanes. */
|
|
13
|
+
maxBufferedBytes: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Routes events from an existing Responses socket without creating another reader.
|
|
17
|
+
* Register lanes before sending. Unregistered events remain observable on the socket.
|
|
18
|
+
* Closing this helper releases its listeners and lanes, but leaves the socket open.
|
|
19
|
+
* Attaching to a closing or closed socket is rejected.
|
|
20
|
+
* Reconnecting invalidates lanes: register new ones after restoring application state.
|
|
21
|
+
* No request is replayed by this helper.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ResponsesWebSocketSession {
|
|
24
|
+
#private;
|
|
25
|
+
constructor(connection: ResponsesEmitter & {
|
|
26
|
+
readonly socket: WebSocketLike;
|
|
27
|
+
}, options: ResponsesWebSocketSessionOptions);
|
|
28
|
+
/** Omit streamID for the protocol's default lane. A lane has one consumer.
|
|
29
|
+
* IDs remain reserved until reconnect, including after close or failure:
|
|
30
|
+
* a terminal response can still be followed by an automatic successor.
|
|
31
|
+
*/
|
|
32
|
+
lane(streamID?: string, limits?: {
|
|
33
|
+
maxBufferedEvents?: number;
|
|
34
|
+
maxBufferedBytes?: number;
|
|
35
|
+
}): ResponsesWebSocketLane;
|
|
36
|
+
close(): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=responses-websocket-session.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-websocket-session.d.mts","sourceRoot":"","sources":["../../src/lib/responses/responses-websocket-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oDAAgD;AAIhF,OAAO,KAAK,EAAE,aAAa,EAAE,sCAAkC;AAQ/D,OAAO,EAAE,sBAAsB,EAAmB,uCAAmC;AAErF,OAAO,EAAE,sBAAsB,EAAE,uCAAmC;AACpE,YAAY,EAAE,uBAAuB,EAAE,uCAAmC;AAQ1E,0FAA0F;AAC1F,MAAM,WAAW,gCAAgC;IAC/C,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAsCD;;;;;;;GAOG;AACH,qBAAa,yBAAyB;;gBAalC,UAAU,EAAE,gBAAgB,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;KAAE,EACjE,OAAO,EAAE,gCAAgC;IAoB3C;;;OAGG;IACH,IAAI,CACF,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,GAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAO,GACrE,sBAAsB;IA+CzB,KAAK,IAAI,IAAI;CAsJd"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ResponsesEmitter } from "../../resources/responses/internal-base.js";
|
|
2
|
+
import type { WebSocketLike } from "../../internal/ws-adapter.js";
|
|
3
|
+
import { ResponsesWebSocketLane } from "./responses-websocket-lane.js";
|
|
4
|
+
export { ResponsesWebSocketLane } from "./responses-websocket-lane.js";
|
|
5
|
+
export type { ResponsesWebSocketEvent } from "./responses-websocket-lane.js";
|
|
6
|
+
/** Limits for this optional helper. They do not change the underlying socket's limits. */
|
|
7
|
+
export interface ResponsesWebSocketSessionOptions {
|
|
8
|
+
/** Maximum lane IDs registered until the next reconnect, including detached lanes. */
|
|
9
|
+
maxLanes: number;
|
|
10
|
+
/** Maximum queued events across all lanes. */
|
|
11
|
+
maxBufferedEvents: number;
|
|
12
|
+
/** Maximum queued UTF-8 JSON bytes across all lanes. */
|
|
13
|
+
maxBufferedBytes: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Routes events from an existing Responses socket without creating another reader.
|
|
17
|
+
* Register lanes before sending. Unregistered events remain observable on the socket.
|
|
18
|
+
* Closing this helper releases its listeners and lanes, but leaves the socket open.
|
|
19
|
+
* Attaching to a closing or closed socket is rejected.
|
|
20
|
+
* Reconnecting invalidates lanes: register new ones after restoring application state.
|
|
21
|
+
* No request is replayed by this helper.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ResponsesWebSocketSession {
|
|
24
|
+
#private;
|
|
25
|
+
constructor(connection: ResponsesEmitter & {
|
|
26
|
+
readonly socket: WebSocketLike;
|
|
27
|
+
}, options: ResponsesWebSocketSessionOptions);
|
|
28
|
+
/** Omit streamID for the protocol's default lane. A lane has one consumer.
|
|
29
|
+
* IDs remain reserved until reconnect, including after close or failure:
|
|
30
|
+
* a terminal response can still be followed by an automatic successor.
|
|
31
|
+
*/
|
|
32
|
+
lane(streamID?: string, limits?: {
|
|
33
|
+
maxBufferedEvents?: number;
|
|
34
|
+
maxBufferedBytes?: number;
|
|
35
|
+
}): ResponsesWebSocketLane;
|
|
36
|
+
close(): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=responses-websocket-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-websocket-session.d.ts","sourceRoot":"","sources":["../../src/lib/responses/responses-websocket-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mDAAgD;AAIhF,OAAO,KAAK,EAAE,aAAa,EAAE,qCAAkC;AAQ/D,OAAO,EAAE,sBAAsB,EAAmB,sCAAmC;AAErF,OAAO,EAAE,sBAAsB,EAAE,sCAAmC;AACpE,YAAY,EAAE,uBAAuB,EAAE,sCAAmC;AAQ1E,0FAA0F;AAC1F,MAAM,WAAW,gCAAgC;IAC/C,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAsCD;;;;;;;GAOG;AACH,qBAAa,yBAAyB;;gBAalC,UAAU,EAAE,gBAAgB,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;KAAE,EACjE,OAAO,EAAE,gCAAgC;IAoB3C;;;OAGG;IACH,IAAI,CACF,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,GAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAO,GACrE,sBAAsB;IA+CzB,KAAK,IAAI,IAAI;CAsJd"}
|