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,63 @@
|
|
|
1
|
+
import type { Response, ResponsesClientEvent, ResponsesServerEvent } from "../../resources/responses/responses.js";
|
|
2
|
+
type WireResponse = Omit<Response, 'output' | 'output_text'> & Partial<Pick<Response, 'output' | 'output_text'>>;
|
|
3
|
+
type WireEvent<Event> = Event extends {
|
|
4
|
+
response: Response;
|
|
5
|
+
} ? Omit<Event, 'response'> & {
|
|
6
|
+
response: WireResponse;
|
|
7
|
+
} : Event;
|
|
8
|
+
/** Raw lane events, including future types with unknown fields. Response output may be omitted. */
|
|
9
|
+
export type ResponsesWebSocketEvent = WireEvent<ResponsesServerEvent> | {
|
|
10
|
+
/** The server's event tag, which may be newer than the SDK. */
|
|
11
|
+
type: string;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
};
|
|
14
|
+
/** @internal */
|
|
15
|
+
export declare function positiveInteger(value: number): number;
|
|
16
|
+
/** A single ordered local consumer. Canceling receive cancels only that wait. */
|
|
17
|
+
export declare class ResponsesWebSocketLane {
|
|
18
|
+
#private;
|
|
19
|
+
readonly streamID: string | undefined;
|
|
20
|
+
/** Created by ResponsesWebSocketSession.lane().
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
constructor(streamID: string | undefined, send: (event: ResponsesClientEvent) => void, release: (bytes: number) => void, maxEvents: number, maxBytes: number);
|
|
24
|
+
/** Sends a request on this lane, omitting HTTP-only stream/background fields. previous_response_id remains caller-controlled. */
|
|
25
|
+
create(request: Omit<Extract<ResponsesClientEvent, {
|
|
26
|
+
type: 'response.create';
|
|
27
|
+
}>, 'type' | 'stream_id' | 'stream' | 'background'>): void;
|
|
28
|
+
/** Returns the next raw event without filling omitted output or computing output_text. */
|
|
29
|
+
receive(options?: {
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
}): Promise<ResponsesWebSocketEvent>;
|
|
32
|
+
/**
|
|
33
|
+
* Consumes the next response, returning completed, failed, or incomplete results.
|
|
34
|
+
* Collects finalized items and uses the existing Responses snapshot normalizer.
|
|
35
|
+
* Socket error events retain their nested data.
|
|
36
|
+
* Raw events remain observable on the original connection. maxResponseBytes
|
|
37
|
+
* optionally bounds the cumulative UTF-8 event bytes consumed for this result.
|
|
38
|
+
* There is no cumulative limit unless maxResponseBytes is supplied; the lane's
|
|
39
|
+
* queue budget only limits events waiting to be consumed. Exceeding the limit
|
|
40
|
+
* before a terminal event fails this lane, so the partial response cannot be
|
|
41
|
+
* consumed as a new result by a later call. Cancellation after consuming events
|
|
42
|
+
* also fails the lane; cancellation before consuming anything leaves it reusable.
|
|
43
|
+
* An invalid completed output item or terminal response fails only this lane.
|
|
44
|
+
*/
|
|
45
|
+
finalResponse(options?: {
|
|
46
|
+
signal?: AbortSignal;
|
|
47
|
+
maxResponseBytes?: number;
|
|
48
|
+
}): Promise<Response>;
|
|
49
|
+
/** Detaches this consumer without canceling remote work. Its ID remains reserved until reconnect. */
|
|
50
|
+
close(): void;
|
|
51
|
+
/** Preserves already accepted events when the transport ends.
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
end(error: Error): void;
|
|
55
|
+
/** @internal */
|
|
56
|
+
get ended(): boolean;
|
|
57
|
+
/** @internal */
|
|
58
|
+
push(event: ResponsesWebSocketEvent, bytes: number): void;
|
|
59
|
+
/** @internal */
|
|
60
|
+
fail(error: Error): void;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=responses-websocket-lane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-websocket-lane.d.ts","sourceRoot":"","sources":["../../src/lib/responses/responses-websocket-lane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACpB,oBAAoB,EACrB,+CAA4C;AAU7C,KAAK,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC;AAEpD,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,SAAS;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACxD,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG;IACxB,QAAQ,EAAE,YAAY,CAAC;CACxB,GACD,KAAK,CAAC;AAEV,mGAAmG;AACnG,MAAM,MAAM,uBAAuB,GAC/B,SAAS,CAAC,oBAAoB,CAAC,GAE/B;IACE,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AASN,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,iFAAiF;AACjF,qBAAa,sBAAsB;;IACjC,SAAiB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAa9C;;OAEG;gBAED,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,EAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM;IAelB,iIAAiI;IACjI,MAAM,CACJ,OAAO,EAAE,IAAI,CACX,OAAO,CAAC,oBAAoB,EAAE;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC,EAC1D,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAC/C,GACA,IAAI;IAoBP,0FAA0F;IACpF,OAAO,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqDvF;;;;;;;;;;;;OAYG;IACG,aAAa,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6JzG,qGAAqG;IACrG,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IASvB,gBAAgB;IAChB,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,gBAAgB;IAChB,IAAI,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAezD,gBAAgB;IAChB,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAYzB"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
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;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ResponsesWebSocketLane = void 0;
|
|
5
|
+
exports.positiveInteger = positiveInteger;
|
|
6
|
+
const tslib_1 = require("../../internal/tslib.js");
|
|
7
|
+
const internal_base_1 = require("../../resources/responses/internal-base.js");
|
|
8
|
+
const error_1 = require("../../core/error.js");
|
|
9
|
+
const values_1 = require("../../internal/utils/values.js");
|
|
10
|
+
const canonical_output_text_1 = require("../../internal/responses/canonical-output-text.js");
|
|
11
|
+
function isEventType(event, ...types) {
|
|
12
|
+
return types.some((type) => event.type === type);
|
|
13
|
+
}
|
|
14
|
+
/** @internal */
|
|
15
|
+
function positiveInteger(value) {
|
|
16
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
17
|
+
throw new error_1.OpenAIError('Responses WebSocket limits must be positive integers');
|
|
18
|
+
}
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
/** A single ordered local consumer. Canceling receive cancels only that wait. */
|
|
22
|
+
class ResponsesWebSocketLane {
|
|
23
|
+
/** Created by ResponsesWebSocketSession.lane().
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
constructor(streamID, send, release, maxEvents, maxBytes) {
|
|
27
|
+
_ResponsesWebSocketLane_instances.add(this);
|
|
28
|
+
_ResponsesWebSocketLane_streamID.set(this, void 0);
|
|
29
|
+
_ResponsesWebSocketLane_send.set(this, void 0);
|
|
30
|
+
_ResponsesWebSocketLane_release.set(this, void 0);
|
|
31
|
+
_ResponsesWebSocketLane_maxEvents.set(this, void 0);
|
|
32
|
+
_ResponsesWebSocketLane_maxBytes.set(this, void 0);
|
|
33
|
+
_ResponsesWebSocketLane_bytes.set(this, 0);
|
|
34
|
+
_ResponsesWebSocketLane_queue.set(this, []);
|
|
35
|
+
_ResponsesWebSocketLane_queueHead.set(this, 0);
|
|
36
|
+
_ResponsesWebSocketLane_wake.set(this, void 0);
|
|
37
|
+
_ResponsesWebSocketLane_failure.set(this, void 0);
|
|
38
|
+
_ResponsesWebSocketLane_reading.set(this, false);
|
|
39
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_streamID, streamID, "f");
|
|
40
|
+
Object.defineProperty(this, 'streamID', {
|
|
41
|
+
value: streamID,
|
|
42
|
+
enumerable: true,
|
|
43
|
+
configurable: true,
|
|
44
|
+
writable: true,
|
|
45
|
+
});
|
|
46
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_send, send, "f");
|
|
47
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_release, release, "f");
|
|
48
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_maxEvents, maxEvents, "f");
|
|
49
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_maxBytes, maxBytes, "f");
|
|
50
|
+
}
|
|
51
|
+
/** Sends a request on this lane, omitting HTTP-only stream/background fields. previous_response_id remains caller-controlled. */
|
|
52
|
+
create(request) {
|
|
53
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
54
|
+
throw tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f");
|
|
55
|
+
}
|
|
56
|
+
const event = {
|
|
57
|
+
...request,
|
|
58
|
+
type: 'response.create',
|
|
59
|
+
};
|
|
60
|
+
// The SDK owns this envelope; a top-level hook must not replace its routing.
|
|
61
|
+
Object.defineProperty(event, 'toJSON', { value: undefined });
|
|
62
|
+
delete event.stream;
|
|
63
|
+
delete event.background;
|
|
64
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_streamID, "f") === undefined) {
|
|
65
|
+
delete event.stream_id;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
Object.defineProperty(event, 'stream_id', { value: tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_streamID, "f"), enumerable: true });
|
|
69
|
+
}
|
|
70
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_send, "f").call(this, event);
|
|
71
|
+
}
|
|
72
|
+
/** Returns the next raw event without filling omitted output or computing output_text. */
|
|
73
|
+
async receive(options = {}) {
|
|
74
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_acquireReader).call(this);
|
|
75
|
+
try {
|
|
76
|
+
const item = await tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_receive).call(this, options);
|
|
77
|
+
return item.event;
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_reading, false, "f");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Consumes the next response, returning completed, failed, or incomplete results.
|
|
85
|
+
* Collects finalized items and uses the existing Responses snapshot normalizer.
|
|
86
|
+
* Socket error events retain their nested data.
|
|
87
|
+
* Raw events remain observable on the original connection. maxResponseBytes
|
|
88
|
+
* optionally bounds the cumulative UTF-8 event bytes consumed for this result.
|
|
89
|
+
* There is no cumulative limit unless maxResponseBytes is supplied; the lane's
|
|
90
|
+
* queue budget only limits events waiting to be consumed. Exceeding the limit
|
|
91
|
+
* before a terminal event fails this lane, so the partial response cannot be
|
|
92
|
+
* consumed as a new result by a later call. Cancellation after consuming events
|
|
93
|
+
* also fails the lane; cancellation before consuming anything leaves it reusable.
|
|
94
|
+
* An invalid completed output item or terminal response fails only this lane.
|
|
95
|
+
*/
|
|
96
|
+
async finalResponse(options = {}) {
|
|
97
|
+
const { signal } = options;
|
|
98
|
+
const maxBytes = options.maxResponseBytes === undefined ? Infinity : positiveInteger(options.maxResponseBytes);
|
|
99
|
+
const completedOutput = new Map();
|
|
100
|
+
let consumedBytes = 0;
|
|
101
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_acquireReader).call(this);
|
|
102
|
+
try {
|
|
103
|
+
for (;;) {
|
|
104
|
+
// oxlint-disable-next-line eslint/no-await-in-loop -- Protocol order is required to accumulate one response.
|
|
105
|
+
const { event, bytes } = await tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_receive).call(this, { signal });
|
|
106
|
+
consumedBytes += bytes;
|
|
107
|
+
const terminal = isEventType(event, 'error', 'response.completed', 'response.failed', 'response.incomplete');
|
|
108
|
+
if (consumedBytes > maxBytes) {
|
|
109
|
+
const error = new error_1.OpenAIError('Responses WebSocket accumulated response limit exceeded');
|
|
110
|
+
if (!terminal) {
|
|
111
|
+
this.fail(error);
|
|
112
|
+
}
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
if (isEventType(event, 'error')) {
|
|
116
|
+
throw new internal_base_1.WebSocketError('Responses WebSocket request failed', event);
|
|
117
|
+
}
|
|
118
|
+
if (isEventType(event, 'response.created')) {
|
|
119
|
+
completedOutput.clear();
|
|
120
|
+
}
|
|
121
|
+
else if (isEventType(event, 'response.output_item.done')) {
|
|
122
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_validateOutputItem).call(this, event);
|
|
123
|
+
completedOutput.set(event.output_index, structuredClone(event.item));
|
|
124
|
+
}
|
|
125
|
+
if (terminal) {
|
|
126
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_validateTerminalResponse).call(this, event);
|
|
127
|
+
return tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_instances, "m", _ResponsesWebSocketLane_finalizeResponse).call(this, event.response, completedOutput);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
if (consumedBytes > 0 && signal?.aborted) {
|
|
133
|
+
this.fail(new error_1.OpenAIError('Responses WebSocket final response canceled after consuming events'));
|
|
134
|
+
}
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_reading, false, "f");
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** Detaches this consumer without canceling remote work. Its ID remains reserved until reconnect. */
|
|
142
|
+
close() {
|
|
143
|
+
this.fail(new error_1.OpenAIError('Responses WebSocket lane is closed'));
|
|
144
|
+
}
|
|
145
|
+
/** Preserves already accepted events when the transport ends.
|
|
146
|
+
* @internal
|
|
147
|
+
*/
|
|
148
|
+
end(error) {
|
|
149
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_failure, error, "f");
|
|
153
|
+
// Keep queued events owned by the session until drain, close, or reconnect.
|
|
154
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")?.call(this);
|
|
155
|
+
}
|
|
156
|
+
/** @internal */
|
|
157
|
+
get ended() {
|
|
158
|
+
return tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f") !== undefined;
|
|
159
|
+
}
|
|
160
|
+
/** @internal */
|
|
161
|
+
push(event, bytes) {
|
|
162
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
163
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, bytes);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").length - tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") >= tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_maxEvents, "f") || bytes > tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_maxBytes, "f") - tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_bytes, "f")) {
|
|
167
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, bytes);
|
|
168
|
+
this.fail(new error_1.OpenAIError('Responses WebSocket lane buffer limit exceeded'));
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_bytes, tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_bytes, "f") + bytes, "f");
|
|
172
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").push({ event, bytes });
|
|
173
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")?.call(this);
|
|
174
|
+
}
|
|
175
|
+
/** @internal */
|
|
176
|
+
fail(error) {
|
|
177
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_failure, tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f") ?? error, "f");
|
|
178
|
+
for (const item of tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f")) {
|
|
179
|
+
if (item) {
|
|
180
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, item.bytes);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").length = 0;
|
|
184
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_queueHead, 0, "f");
|
|
185
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_bytes, 0, "f");
|
|
186
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")?.call(this);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.ResponsesWebSocketLane = ResponsesWebSocketLane;
|
|
190
|
+
_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() {
|
|
191
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_reading, "f")) {
|
|
192
|
+
throw new error_1.OpenAIError('Responses WebSocket lane already has a reader');
|
|
193
|
+
}
|
|
194
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_reading, true, "f");
|
|
195
|
+
}, _ResponsesWebSocketLane_receive = async function _ResponsesWebSocketLane_receive(options) {
|
|
196
|
+
const { signal } = options;
|
|
197
|
+
for (;;) {
|
|
198
|
+
if (signal?.aborted) {
|
|
199
|
+
throw signal.reason;
|
|
200
|
+
}
|
|
201
|
+
const item = tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f")[tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f")];
|
|
202
|
+
if (item) {
|
|
203
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f")[tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f")] = undefined;
|
|
204
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_queueHead, tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") + 1, "f");
|
|
205
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") >= 64 && tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f") * 2 >= tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").length) {
|
|
206
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queue, "f").splice(0, tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_queueHead, "f"));
|
|
207
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_queueHead, 0, "f");
|
|
208
|
+
}
|
|
209
|
+
tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_release, "f").call(this, item.bytes);
|
|
210
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_bytes, tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_bytes, "f") - item.bytes, "f");
|
|
211
|
+
return item;
|
|
212
|
+
}
|
|
213
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f")) {
|
|
214
|
+
throw tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_failure, "f");
|
|
215
|
+
}
|
|
216
|
+
// 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.
|
|
217
|
+
await new Promise((resolve) => {
|
|
218
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_wake, () => resolve(), "f");
|
|
219
|
+
signal?.addEventListener('abort', tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f"), { once: true });
|
|
220
|
+
}).finally(() => {
|
|
221
|
+
if (tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f")) {
|
|
222
|
+
signal?.removeEventListener('abort', tslib_1.__classPrivateFieldGet(this, _ResponsesWebSocketLane_wake, "f"));
|
|
223
|
+
}
|
|
224
|
+
tslib_1.__classPrivateFieldSet(this, _ResponsesWebSocketLane_wake, undefined, "f");
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}, _ResponsesWebSocketLane_finalizeResponse = function _ResponsesWebSocketLane_finalizeResponse(response, completedOutput) {
|
|
228
|
+
const context = (0, canonical_output_text_1.createCanonicalResponseContext)();
|
|
229
|
+
try {
|
|
230
|
+
// Socket deltas need not include the setup events required by SSE.
|
|
231
|
+
// The terminal response is authoritative; finalized items fill an omitted output.
|
|
232
|
+
const completedEntries = [...completedOutput];
|
|
233
|
+
completedEntries.sort(([left], [right]) => left - right);
|
|
234
|
+
const output = (0, values_1.hasOwn)(response, 'output') ? response.output : undefined;
|
|
235
|
+
const outputText = (0, values_1.hasOwn)(response, 'output_text') ? response.output_text : undefined;
|
|
236
|
+
if ((output !== undefined &&
|
|
237
|
+
output !== null &&
|
|
238
|
+
(!Array.isArray(output) ||
|
|
239
|
+
!output.every((item) => tslib_1.__classPrivateFieldGet(_a, _a, "m", _ResponsesWebSocketLane_isValidOutputItem).call(_a, item)))) ||
|
|
240
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate present wire fields before exposing a typed final response.
|
|
241
|
+
(outputText !== undefined && outputText !== null && typeof outputText !== 'string')) {
|
|
242
|
+
throw new error_1.OpenAIError('Invalid Responses WebSocket terminal response');
|
|
243
|
+
}
|
|
244
|
+
const snapshot = (0, canonical_output_text_1.cloneResponse)(context, {
|
|
245
|
+
...response,
|
|
246
|
+
output: output ?? completedEntries.map(([, item]) => item),
|
|
247
|
+
output_text: outputText ?? '',
|
|
248
|
+
});
|
|
249
|
+
if (outputText === undefined || outputText === null) {
|
|
250
|
+
(0, canonical_output_text_1.ensureCanonicalOutputText)(context, snapshot);
|
|
251
|
+
}
|
|
252
|
+
return snapshot;
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
const error = new error_1.OpenAIError('Invalid Responses WebSocket terminal response');
|
|
256
|
+
this.fail(error);
|
|
257
|
+
throw error;
|
|
258
|
+
}
|
|
259
|
+
}, _ResponsesWebSocketLane_validateOutputItem = function _ResponsesWebSocketLane_validateOutputItem(event) {
|
|
260
|
+
if (!(0, values_1.hasOwn)(event, 'output_index') ||
|
|
261
|
+
!Number.isSafeInteger(event.output_index) ||
|
|
262
|
+
event.output_index < 0) {
|
|
263
|
+
const error = new error_1.OpenAIError('Responses WebSocket output index must be a nonnegative integer');
|
|
264
|
+
this.fail(error);
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
if (!(0, values_1.hasOwn)(event, 'item')) {
|
|
268
|
+
const error = new error_1.OpenAIError('Responses WebSocket output item must be an own property');
|
|
269
|
+
this.fail(error);
|
|
270
|
+
throw error;
|
|
271
|
+
}
|
|
272
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Completed output items must be wire objects before they enter the typed response.
|
|
273
|
+
if (event.item === null || typeof event.item !== 'object' || Array.isArray(event.item)) {
|
|
274
|
+
const error = new error_1.OpenAIError('Responses WebSocket output item must be an object');
|
|
275
|
+
this.fail(error);
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
if (!tslib_1.__classPrivateFieldGet(_a, _a, "m", _ResponsesWebSocketLane_isValidOutputItem).call(_a, event.item)) {
|
|
279
|
+
const error = new error_1.OpenAIError('Invalid Responses WebSocket completed output item');
|
|
280
|
+
this.fail(error);
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
}, _ResponsesWebSocketLane_isValidOutputItem = function _ResponsesWebSocketLane_isValidOutputItem(item) {
|
|
284
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Wire items require an own string discriminator, including unknown future variants.
|
|
285
|
+
if (!(0, values_1.isObj)(item) || !(0, values_1.hasOwn)(item, 'type') || typeof item['type'] !== 'string') {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
if (item['type'] !== 'message') {
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
return ((0, values_1.hasOwn)(item, 'content') &&
|
|
292
|
+
Array.isArray(item['content']) &&
|
|
293
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- Validate untyped message parts before exposing the final response.
|
|
294
|
+
item['content'].every((content) => {
|
|
295
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Message parts use the same wire discriminator contract.
|
|
296
|
+
if (!(0, values_1.isObj)(content) || !(0, values_1.hasOwn)(content, 'type') || typeof content['type'] !== 'string') {
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
return (content['type'] !== 'output_text' ||
|
|
300
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Canonical text accumulation consumes this exact wire field.
|
|
301
|
+
((0, values_1.hasOwn)(content, 'text') && typeof content['text'] === 'string'));
|
|
302
|
+
}));
|
|
303
|
+
}, _ResponsesWebSocketLane_validateTerminalResponse = function _ResponsesWebSocketLane_validateTerminalResponse(event) {
|
|
304
|
+
if (!(0, values_1.hasOwn)(event, 'response') ||
|
|
305
|
+
event.response === null ||
|
|
306
|
+
// oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate the untrusted terminal envelope before normalizing a typed response snapshot.
|
|
307
|
+
typeof event.response !== 'object' ||
|
|
308
|
+
Array.isArray(event.response)) {
|
|
309
|
+
const error = new error_1.OpenAIError('Responses WebSocket terminal response must be an object');
|
|
310
|
+
this.fail(error);
|
|
311
|
+
throw error;
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
//# sourceMappingURL=responses-websocket-lane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-websocket-lane.js","sourceRoot":"","sources":["../../src/lib/responses/responses-websocket-lane.ts"],"names":[],"mappings":"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"}
|