@jasonews/agent-squad-gateway 1.0.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.
Files changed (149) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +200 -0
  3. package/SECURITY.md +44 -0
  4. package/dist/bin/agent-squad-gateway.js +55 -0
  5. package/dist/bin/agent-squad-gateway.js.map +1 -0
  6. package/dist/config/config.js +124 -0
  7. package/dist/config/config.js.map +1 -0
  8. package/dist/config/paths.js +16 -0
  9. package/dist/config/paths.js.map +1 -0
  10. package/dist/control-plane/clients.js +77 -0
  11. package/dist/control-plane/clients.js.map +1 -0
  12. package/dist/control-plane/core-connection.js +54 -0
  13. package/dist/control-plane/core-connection.js.map +1 -0
  14. package/dist/control-plane/credentials.js +134 -0
  15. package/dist/control-plane/credentials.js.map +1 -0
  16. package/dist/control-plane/db.js +33 -0
  17. package/dist/control-plane/db.js.map +1 -0
  18. package/dist/control-plane/extensions.js +59 -0
  19. package/dist/control-plane/extensions.js.map +1 -0
  20. package/dist/control-plane/grants.js +107 -0
  21. package/dist/control-plane/grants.js.map +1 -0
  22. package/dist/control-plane/idempotency.js +132 -0
  23. package/dist/control-plane/idempotency.js.map +1 -0
  24. package/dist/control-plane/migrations.js +133 -0
  25. package/dist/control-plane/migrations.js.map +1 -0
  26. package/dist/control-plane/response-sessions.js +359 -0
  27. package/dist/control-plane/response-sessions.js.map +1 -0
  28. package/dist/control-plane/retention.js +138 -0
  29. package/dist/control-plane/retention.js.map +1 -0
  30. package/dist/control-plane/runs.js +156 -0
  31. package/dist/control-plane/runs.js.map +1 -0
  32. package/dist/control-plane/targets.js +449 -0
  33. package/dist/control-plane/targets.js.map +1 -0
  34. package/dist/control-plane/types.js +2 -0
  35. package/dist/control-plane/types.js.map +1 -0
  36. package/dist/core-client/client.js +275 -0
  37. package/dist/core-client/client.js.map +1 -0
  38. package/dist/core-client/event-proxy.js +105 -0
  39. package/dist/core-client/event-proxy.js.map +1 -0
  40. package/dist/core-client/types.js +2 -0
  41. package/dist/core-client/types.js.map +1 -0
  42. package/dist/extensions/contract.js +2 -0
  43. package/dist/extensions/contract.js.map +1 -0
  44. package/dist/extensions/openai/auth.js +16 -0
  45. package/dist/extensions/openai/auth.js.map +1 -0
  46. package/dist/extensions/openai/chat.js +403 -0
  47. package/dist/extensions/openai/chat.js.map +1 -0
  48. package/dist/extensions/openai/errors.js +79 -0
  49. package/dist/extensions/openai/errors.js.map +1 -0
  50. package/dist/extensions/openai/image-input.js +79 -0
  51. package/dist/extensions/openai/image-input.js.map +1 -0
  52. package/dist/extensions/openai/models.js +40 -0
  53. package/dist/extensions/openai/models.js.map +1 -0
  54. package/dist/extensions/openai/responses.js +731 -0
  55. package/dist/extensions/openai/responses.js.map +1 -0
  56. package/dist/extensions/openai/routes.js +81 -0
  57. package/dist/extensions/openai/routes.js.map +1 -0
  58. package/dist/extensions/openai/run-attempt.js +96 -0
  59. package/dist/extensions/openai/run-attempt.js.map +1 -0
  60. package/dist/extensions/openai/schemas.js +176 -0
  61. package/dist/extensions/openai/schemas.js.map +1 -0
  62. package/dist/extensions/openai/sse.js +421 -0
  63. package/dist/extensions/openai/sse.js.map +1 -0
  64. package/dist/extensions/openai/tools.js +727 -0
  65. package/dist/extensions/openai/tools.js.map +1 -0
  66. package/dist/extensions/registry.js +30 -0
  67. package/dist/extensions/registry.js.map +1 -0
  68. package/dist/lifecycle/daemon.js +437 -0
  69. package/dist/lifecycle/daemon.js.map +1 -0
  70. package/dist/lifecycle/pidfile.js +34 -0
  71. package/dist/lifecycle/pidfile.js.map +1 -0
  72. package/dist/provider-runtime/antigravity/adapter.js +398 -0
  73. package/dist/provider-runtime/antigravity/adapter.js.map +1 -0
  74. package/dist/provider-runtime/antigravity/conversation.js +31 -0
  75. package/dist/provider-runtime/antigravity/conversation.js.map +1 -0
  76. package/dist/provider-runtime/capability-service.js +191 -0
  77. package/dist/provider-runtime/capability-service.js.map +1 -0
  78. package/dist/provider-runtime/claude/adapter.js +397 -0
  79. package/dist/provider-runtime/claude/adapter.js.map +1 -0
  80. package/dist/provider-runtime/claude/protocol.js +143 -0
  81. package/dist/provider-runtime/claude/protocol.js.map +1 -0
  82. package/dist/provider-runtime/codex/adapter.js +440 -0
  83. package/dist/provider-runtime/codex/adapter.js.map +1 -0
  84. package/dist/provider-runtime/codex/json-rpc-client.js +182 -0
  85. package/dist/provider-runtime/codex/json-rpc-client.js.map +1 -0
  86. package/dist/provider-runtime/codex/protocol.js +128 -0
  87. package/dist/provider-runtime/codex/protocol.js.map +1 -0
  88. package/dist/provider-runtime/command-discovery.js +106 -0
  89. package/dist/provider-runtime/command-discovery.js.map +1 -0
  90. package/dist/provider-runtime/cursor/adapter.js +427 -0
  91. package/dist/provider-runtime/cursor/adapter.js.map +1 -0
  92. package/dist/provider-runtime/cursor/protocol.js +81 -0
  93. package/dist/provider-runtime/cursor/protocol.js.map +1 -0
  94. package/dist/provider-runtime/fake/adapter.js +138 -0
  95. package/dist/provider-runtime/fake/adapter.js.map +1 -0
  96. package/dist/provider-runtime/image-assets.js +409 -0
  97. package/dist/provider-runtime/image-assets.js.map +1 -0
  98. package/dist/provider-runtime/image-support.js +5 -0
  99. package/dist/provider-runtime/image-support.js.map +1 -0
  100. package/dist/provider-runtime/invocation-service.js +503 -0
  101. package/dist/provider-runtime/invocation-service.js.map +1 -0
  102. package/dist/provider-runtime/kimi/adapter.js +657 -0
  103. package/dist/provider-runtime/kimi/adapter.js.map +1 -0
  104. package/dist/provider-runtime/opencode/adapter.js +610 -0
  105. package/dist/provider-runtime/opencode/adapter.js.map +1 -0
  106. package/dist/provider-runtime/opencode/server.js +46 -0
  107. package/dist/provider-runtime/opencode/server.js.map +1 -0
  108. package/dist/provider-runtime/process/line-reader.js +49 -0
  109. package/dist/provider-runtime/process/line-reader.js.map +1 -0
  110. package/dist/provider-runtime/process/managed-process.js +151 -0
  111. package/dist/provider-runtime/process/managed-process.js.map +1 -0
  112. package/dist/provider-runtime/provider-input.js +77 -0
  113. package/dist/provider-runtime/provider-input.js.map +1 -0
  114. package/dist/provider-runtime/register-providers.js +26 -0
  115. package/dist/provider-runtime/register-providers.js.map +1 -0
  116. package/dist/provider-runtime/registry.js +35 -0
  117. package/dist/provider-runtime/registry.js.map +1 -0
  118. package/dist/provider-runtime/replay-buffer.js +168 -0
  119. package/dist/provider-runtime/replay-buffer.js.map +1 -0
  120. package/dist/provider-runtime/scheduler.js +155 -0
  121. package/dist/provider-runtime/scheduler.js.map +1 -0
  122. package/dist/provider-runtime/types.js +2 -0
  123. package/dist/provider-runtime/types.js.map +1 -0
  124. package/dist/provider-runtime/workspaces.js +814 -0
  125. package/dist/provider-runtime/workspaces.js.map +1 -0
  126. package/dist/security/admin-auth.js +109 -0
  127. package/dist/security/admin-auth.js.map +1 -0
  128. package/dist/security/crypto.js +52 -0
  129. package/dist/security/crypto.js.map +1 -0
  130. package/dist/security/secret-files.js +33 -0
  131. package/dist/security/secret-files.js.map +1 -0
  132. package/dist/server/admin-routes.js +610 -0
  133. package/dist/server/admin-routes.js.map +1 -0
  134. package/dist/server/app.js +178 -0
  135. package/dist/server/app.js.map +1 -0
  136. package/dist/server/auth-hooks.js +43 -0
  137. package/dist/server/auth-hooks.js.map +1 -0
  138. package/dist/server/core-routes.js +127 -0
  139. package/dist/server/core-routes.js.map +1 -0
  140. package/dist/server/errors.js +19 -0
  141. package/dist/server/errors.js.map +1 -0
  142. package/dist/server/ui-routes.js +77 -0
  143. package/dist/server/ui-routes.js.map +1 -0
  144. package/dist/web/assets/index-BhqNoPpE.js +206 -0
  145. package/dist/web/assets/index-BhqNoPpE.js.map +1 -0
  146. package/dist/web/assets/index-C5nnaBfZ.css +1 -0
  147. package/dist/web/index.html +14 -0
  148. package/package.json +74 -0
  149. package/translations/README.zh-CN.md +175 -0
@@ -0,0 +1,421 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { normalizeOpenAIError, OpenAIError, providerFailureError, } from './errors.js';
3
+ import { AdapterProtocolError, assignGatewayCallIds, StructuredEnvelopeDecoder, } from './tools.js';
4
+ const HEARTBEAT_MS = 15_000;
5
+ export class StreamDisconnectedError extends Error {
6
+ constructor() {
7
+ super('stream_disconnected');
8
+ }
9
+ }
10
+ function protocolError() {
11
+ return new OpenAIError(502, 'The provider returned an invalid response', 'server_error', null, 'adapter_protocol_error');
12
+ }
13
+ function cancelledError() {
14
+ return new OpenAIError(500, 'The request was cancelled', 'server_error', null, 'request_cancelled');
15
+ }
16
+ function openSse(reply) {
17
+ reply.hijack();
18
+ const raw = reply.raw;
19
+ let ending = false;
20
+ let disconnected = false;
21
+ let disconnect;
22
+ const disconnectedPromise = new Promise((_resolve, reject) => { disconnect = reject; });
23
+ void disconnectedPromise.catch(() => undefined);
24
+ const markDisconnected = () => {
25
+ if (ending || disconnected)
26
+ return;
27
+ disconnected = true;
28
+ disconnect(new StreamDisconnectedError());
29
+ };
30
+ raw.once('close', markDisconnected);
31
+ raw.once('error', markDisconnected);
32
+ reply.request.raw.once('aborted', markDisconnected);
33
+ raw.writeHead(200, {
34
+ 'content-type': 'text/event-stream; charset=utf-8',
35
+ 'cache-control': 'no-cache, no-transform',
36
+ connection: 'keep-alive',
37
+ 'x-accel-buffering': 'no',
38
+ });
39
+ raw.flushHeaders();
40
+ const waitForDrain = () => new Promise((resolve, reject) => {
41
+ const onDrain = () => finish();
42
+ const onClose = () => finish(new StreamDisconnectedError());
43
+ const onAborted = () => finish(new StreamDisconnectedError());
44
+ const finish = (error) => {
45
+ raw.off('drain', onDrain);
46
+ raw.off('close', onClose);
47
+ raw.off('error', onClose);
48
+ reply.request.raw.off('aborted', onAborted);
49
+ if (error)
50
+ reject(error);
51
+ else
52
+ resolve();
53
+ };
54
+ raw.once('drain', onDrain);
55
+ raw.once('close', onClose);
56
+ raw.once('error', onClose);
57
+ reply.request.raw.once('aborted', onAborted);
58
+ if (disconnected || raw.destroyed)
59
+ finish(new StreamDisconnectedError());
60
+ });
61
+ let tail = Promise.resolve();
62
+ const enqueue = (frame) => {
63
+ const write = tail.then(async () => {
64
+ if (disconnected || raw.destroyed)
65
+ throw new StreamDisconnectedError();
66
+ if (!raw.write(frame))
67
+ await waitForDrain();
68
+ });
69
+ tail = write.catch(() => undefined);
70
+ return write;
71
+ };
72
+ const heartbeat = setInterval(() => {
73
+ void enqueue(': heartbeat\n\n').catch(markDisconnected);
74
+ }, HEARTBEAT_MS);
75
+ heartbeat.unref();
76
+ const cleanup = () => {
77
+ clearInterval(heartbeat);
78
+ raw.off('close', markDisconnected);
79
+ raw.off('error', markDisconnected);
80
+ reply.request.raw.off('aborted', markDisconnected);
81
+ };
82
+ return {
83
+ event: (data) => enqueue(`data: ${data === '[DONE]' ? data : JSON.stringify(data)}\n\n`),
84
+ comment: (value) => enqueue(`: ${value}\n\n`),
85
+ disconnected: disconnectedPromise,
86
+ close: async () => {
87
+ if (ending || disconnected)
88
+ return;
89
+ ending = true;
90
+ cleanup();
91
+ await tail;
92
+ raw.end();
93
+ },
94
+ cleanup,
95
+ };
96
+ }
97
+ function chatChunk(meta, delta, finishReason) {
98
+ return {
99
+ id: meta.id,
100
+ object: 'chat.completion.chunk',
101
+ created: meta.created,
102
+ model: meta.model,
103
+ choices: [{ index: 0, delta, finish_reason: finishReason }],
104
+ };
105
+ }
106
+ async function nextEvent(iterator, connection) {
107
+ return Promise.race([iterator.next(), connection.disconnected]);
108
+ }
109
+ async function returnIterator(iterator) {
110
+ try {
111
+ await iterator.return?.();
112
+ }
113
+ catch {
114
+ // Connection cleanup is best effort after the public stream result is fixed.
115
+ }
116
+ }
117
+ export async function writeChatStream(reply, events, meta) {
118
+ const connection = openSse(reply);
119
+ const iterator = events[Symbol.asyncIterator]();
120
+ let text = '';
121
+ let terminalSeen = false;
122
+ let finished = false;
123
+ let finalizationFailed = false;
124
+ const decoder = meta.outputSchema === null ? undefined : new StructuredEnvelopeDecoder(meta.outputSchema);
125
+ let toolCalls;
126
+ try {
127
+ await connection.event(chatChunk(meta, { role: 'assistant' }, null));
128
+ while (true) {
129
+ const next = await nextEvent(iterator, connection);
130
+ if (next.done)
131
+ break;
132
+ if (terminalSeen)
133
+ throw protocolError();
134
+ const event = next.value;
135
+ switch (event.type) {
136
+ case 'session_started':
137
+ break;
138
+ case 'text_delta':
139
+ if (decoder)
140
+ throw protocolError();
141
+ text += event.delta;
142
+ await connection.event(chatChunk(meta, { content: event.delta }, null));
143
+ break;
144
+ case 'structured_delta':
145
+ if (!decoder)
146
+ throw protocolError();
147
+ try {
148
+ const delta = decoder.push(event.delta);
149
+ if (delta.length > 0) {
150
+ text += delta;
151
+ await connection.event(chatChunk(meta, { content: delta }, null));
152
+ }
153
+ }
154
+ catch (error) {
155
+ if (error instanceof AdapterProtocolError)
156
+ throw protocolError();
157
+ throw error;
158
+ }
159
+ break;
160
+ case 'completed':
161
+ terminalSeen = true;
162
+ break;
163
+ case 'failed':
164
+ throw event.code === 'adapter_protocol_error'
165
+ ? protocolError()
166
+ : providerFailureError(event.code, 'messages');
167
+ case 'cancelled':
168
+ throw cancelledError();
169
+ default:
170
+ throw protocolError();
171
+ }
172
+ }
173
+ if (!terminalSeen)
174
+ throw protocolError();
175
+ if (decoder) {
176
+ try {
177
+ const decoded = decoder.finish();
178
+ if (decoded.type === 'tool_calls') {
179
+ if (meta.replayCallIds !== undefined) {
180
+ if (meta.replayCallIds.length !== decoded.toolCalls.length)
181
+ throw protocolError();
182
+ toolCalls = decoded.toolCalls.map((call, index) => ({ ...call, id: meta.replayCallIds[index] }));
183
+ }
184
+ else {
185
+ toolCalls = assignGatewayCallIds(decoded.toolCalls);
186
+ }
187
+ await connection.event(chatChunk(meta, {
188
+ tool_calls: toolCalls.map((call, index) => ({
189
+ index,
190
+ id: call.id,
191
+ type: 'function',
192
+ function: { name: call.name, arguments: JSON.stringify(call.arguments) },
193
+ })),
194
+ }, null));
195
+ }
196
+ }
197
+ catch (error) {
198
+ if (error instanceof AdapterProtocolError)
199
+ throw protocolError();
200
+ throw error;
201
+ }
202
+ }
203
+ const result = { text, toolCalls, nativeStateAdvanced: false };
204
+ try {
205
+ await meta.beforeTerminal?.(result);
206
+ }
207
+ catch (error) {
208
+ finalizationFailed = true;
209
+ throw error;
210
+ }
211
+ await connection.event(chatChunk(meta, {}, toolCalls ? 'tool_calls' : 'stop'));
212
+ await connection.event('[DONE]');
213
+ await connection.close();
214
+ finished = true;
215
+ return result;
216
+ }
217
+ catch (error) {
218
+ if (!(error instanceof StreamDisconnectedError)) {
219
+ try {
220
+ await connection.event(normalizeOpenAIError(error).toBody());
221
+ if (!finalizationFailed)
222
+ await connection.event('[DONE]');
223
+ await connection.close();
224
+ }
225
+ catch {
226
+ // The socket may disappear while the safe error is being written.
227
+ }
228
+ }
229
+ throw error;
230
+ }
231
+ finally {
232
+ connection.cleanup();
233
+ if (!finished)
234
+ await returnIterator(iterator);
235
+ }
236
+ }
237
+ function responseState(id, model, status, output, outputText) {
238
+ return {
239
+ id,
240
+ object: 'response',
241
+ status,
242
+ model,
243
+ output,
244
+ ...(outputText === undefined ? {} : { output_text: outputText }),
245
+ };
246
+ }
247
+ export async function writeResponsesStream(reply, events, meta) {
248
+ const connection = openSse(reply);
249
+ const iterator = events[Symbol.asyncIterator]();
250
+ let text = '';
251
+ let nativeSessionId;
252
+ let nativeStateAdvanced = false;
253
+ let terminalSeen = false;
254
+ let sequence = 0;
255
+ let finished = false;
256
+ const decoder = meta.outputSchema === null ? undefined : new StructuredEnvelopeDecoder(meta.outputSchema);
257
+ let toolCalls;
258
+ const emit = (data) => connection.event({ ...data, sequence_number: sequence++ });
259
+ try {
260
+ const inProgress = responseState(meta.responseId, meta.model, 'in_progress', []);
261
+ await emit({ type: 'response.created', response: inProgress });
262
+ await emit({ type: 'response.in_progress', response: inProgress });
263
+ while (true) {
264
+ const next = await nextEvent(iterator, connection);
265
+ if (next.done)
266
+ break;
267
+ if (terminalSeen)
268
+ throw protocolError();
269
+ const event = next.value;
270
+ switch (event.type) {
271
+ case 'session_started':
272
+ if (nativeSessionId !== undefined)
273
+ throw protocolError();
274
+ nativeSessionId = event.nativeSessionId;
275
+ nativeStateAdvanced = true;
276
+ meta.onSessionStarted(nativeSessionId);
277
+ break;
278
+ case 'text_delta':
279
+ if (nativeSessionId === undefined)
280
+ throw protocolError();
281
+ if (decoder)
282
+ throw protocolError();
283
+ text += event.delta;
284
+ await emit({
285
+ type: 'response.output_text.delta', item_id: meta.outputId,
286
+ output_index: 0, content_index: 0, delta: event.delta,
287
+ });
288
+ break;
289
+ case 'structured_delta':
290
+ if (nativeSessionId === undefined || !decoder)
291
+ throw protocolError();
292
+ try {
293
+ const delta = decoder.push(event.delta);
294
+ if (delta.length > 0) {
295
+ text += delta;
296
+ await emit({
297
+ type: 'response.output_text.delta', item_id: meta.outputId,
298
+ output_index: 0, content_index: 0, delta,
299
+ });
300
+ }
301
+ }
302
+ catch (error) {
303
+ if (error instanceof AdapterProtocolError)
304
+ throw protocolError();
305
+ throw error;
306
+ }
307
+ break;
308
+ case 'completed':
309
+ if (nativeSessionId === undefined)
310
+ throw protocolError();
311
+ terminalSeen = true;
312
+ break;
313
+ case 'failed':
314
+ nativeStateAdvanced ||= event.nativeStateAdvanced;
315
+ throw event.code === 'adapter_protocol_error'
316
+ ? protocolError()
317
+ : providerFailureError(event.code, 'input');
318
+ case 'cancelled':
319
+ throw cancelledError();
320
+ default:
321
+ throw protocolError();
322
+ }
323
+ }
324
+ if (!terminalSeen || nativeSessionId === undefined)
325
+ throw protocolError();
326
+ if (decoder) {
327
+ try {
328
+ const decoded = decoder.finish();
329
+ if (decoded.type === 'tool_calls') {
330
+ const calls = meta.replayToolItems === undefined
331
+ ? assignGatewayCallIds(decoded.toolCalls).map((call) => ({ ...call, itemId: `fc_${randomUUID()}` }))
332
+ : decoded.toolCalls.map((call, index) => {
333
+ const replay = meta.replayToolItems[index];
334
+ if (!replay || meta.replayToolItems.length !== decoded.toolCalls.length)
335
+ throw protocolError();
336
+ return { ...call, id: replay.callId, itemId: replay.id };
337
+ });
338
+ toolCalls = calls;
339
+ for (const [outputIndex, call] of calls.entries()) {
340
+ await emit({
341
+ type: 'response.output_item.added',
342
+ output_index: outputIndex,
343
+ item: {
344
+ id: call.itemId, type: 'function_call', status: 'in_progress',
345
+ arguments: '', call_id: call.id, name: call.name,
346
+ },
347
+ });
348
+ }
349
+ }
350
+ }
351
+ catch (error) {
352
+ if (error instanceof AdapterProtocolError)
353
+ throw protocolError();
354
+ throw error;
355
+ }
356
+ }
357
+ const output = toolCalls
358
+ ? toolCalls.map((call) => ({
359
+ id: call.itemId,
360
+ type: 'function_call',
361
+ status: 'completed',
362
+ arguments: JSON.stringify(call.arguments),
363
+ call_id: call.id,
364
+ name: call.name,
365
+ }))
366
+ : [{
367
+ id: meta.outputId,
368
+ type: 'message',
369
+ role: 'assistant',
370
+ status: 'completed',
371
+ content: [{ type: 'output_text', text, annotations: [] }],
372
+ }];
373
+ const result = { text, toolCalls, nativeSessionId, nativeStateAdvanced };
374
+ await meta.beforeTerminal?.(result);
375
+ if (toolCalls) {
376
+ for (const [outputIndex, call] of toolCalls.entries()) {
377
+ const item = output[outputIndex];
378
+ await emit({
379
+ type: 'response.function_call_arguments.done',
380
+ item_id: call.itemId,
381
+ output_index: outputIndex,
382
+ arguments: JSON.stringify(call.arguments),
383
+ });
384
+ await emit({ type: 'response.output_item.done', output_index: outputIndex, item });
385
+ }
386
+ }
387
+ else {
388
+ await emit({
389
+ type: 'response.output_text.done', item_id: meta.outputId,
390
+ output_index: 0, content_index: 0, text,
391
+ });
392
+ }
393
+ await emit({
394
+ type: 'response.completed',
395
+ response: responseState(meta.responseId, meta.model, 'completed', output, text),
396
+ });
397
+ await connection.close();
398
+ finished = true;
399
+ return result;
400
+ }
401
+ catch (error) {
402
+ if (typeof error === 'object' && error !== null)
403
+ Object.assign(error, { nativeStateAdvanced });
404
+ if (!(error instanceof StreamDisconnectedError)) {
405
+ try {
406
+ await emit({ type: 'error', ...normalizeOpenAIError(error).toBody() });
407
+ await connection.close();
408
+ }
409
+ catch {
410
+ // The socket may disappear while the safe error is being written.
411
+ }
412
+ }
413
+ throw error;
414
+ }
415
+ finally {
416
+ connection.cleanup();
417
+ if (!finished)
418
+ await returnIterator(iterator);
419
+ }
420
+ }
421
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/extensions/openai/sse.ts"],"names":[],"mappings":"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"}