@skyold/provider-adapters 0.1.0-beta.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 (116) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +59 -0
  3. package/README.zh-CN.md +15 -0
  4. package/dist/anthropic-messages/adapter.d.ts +3 -0
  5. package/dist/anthropic-messages/adapter.d.ts.map +1 -0
  6. package/dist/anthropic-messages/adapter.js +50 -0
  7. package/dist/anthropic-messages/adapter.js.map +1 -0
  8. package/dist/anthropic-messages/codec.d.ts +7 -0
  9. package/dist/anthropic-messages/codec.d.ts.map +1 -0
  10. package/dist/anthropic-messages/codec.js +581 -0
  11. package/dist/anthropic-messages/codec.js.map +1 -0
  12. package/dist/anthropic-messages/sse.d.ts +7 -0
  13. package/dist/anthropic-messages/sse.d.ts.map +1 -0
  14. package/dist/anthropic-messages/sse.js +77 -0
  15. package/dist/anthropic-messages/sse.js.map +1 -0
  16. package/dist/builtin-registry.d.ts +17 -0
  17. package/dist/builtin-registry.d.ts.map +1 -0
  18. package/dist/builtin-registry.js +110 -0
  19. package/dist/builtin-registry.js.map +1 -0
  20. package/dist/image-response-json.d.ts +36 -0
  21. package/dist/image-response-json.d.ts.map +1 -0
  22. package/dist/image-response-json.js +193 -0
  23. package/dist/image-response-json.js.map +1 -0
  24. package/dist/index.d.ts +24 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +24 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/openai-chat/adapter.d.ts +3 -0
  29. package/dist/openai-chat/adapter.d.ts.map +1 -0
  30. package/dist/openai-chat/adapter.js +83 -0
  31. package/dist/openai-chat/adapter.js.map +1 -0
  32. package/dist/openai-chat/codec.d.ts +7 -0
  33. package/dist/openai-chat/codec.d.ts.map +1 -0
  34. package/dist/openai-chat/codec.js +584 -0
  35. package/dist/openai-chat/codec.js.map +1 -0
  36. package/dist/openai-chat/sse.d.ts +3 -0
  37. package/dist/openai-chat/sse.d.ts.map +1 -0
  38. package/dist/openai-chat/sse.js +64 -0
  39. package/dist/openai-chat/sse.js.map +1 -0
  40. package/dist/openai-embeddings/adapter.d.ts +3 -0
  41. package/dist/openai-embeddings/adapter.d.ts.map +1 -0
  42. package/dist/openai-embeddings/adapter.js +90 -0
  43. package/dist/openai-embeddings/adapter.js.map +1 -0
  44. package/dist/openai-embeddings/codec.d.ts +7 -0
  45. package/dist/openai-embeddings/codec.d.ts.map +1 -0
  46. package/dist/openai-embeddings/codec.js +120 -0
  47. package/dist/openai-embeddings/codec.js.map +1 -0
  48. package/dist/openai-images/adapter.d.ts +4 -0
  49. package/dist/openai-images/adapter.d.ts.map +1 -0
  50. package/dist/openai-images/adapter.js +103 -0
  51. package/dist/openai-images/adapter.js.map +1 -0
  52. package/dist/openai-images/codec.d.ts +24 -0
  53. package/dist/openai-images/codec.d.ts.map +1 -0
  54. package/dist/openai-images/codec.js +979 -0
  55. package/dist/openai-images/codec.js.map +1 -0
  56. package/dist/openai-responses/adapter.d.ts +3 -0
  57. package/dist/openai-responses/adapter.d.ts.map +1 -0
  58. package/dist/openai-responses/adapter.js +102 -0
  59. package/dist/openai-responses/adapter.js.map +1 -0
  60. package/dist/openai-responses/codec.d.ts +7 -0
  61. package/dist/openai-responses/codec.d.ts.map +1 -0
  62. package/dist/openai-responses/codec.js +1086 -0
  63. package/dist/openai-responses/codec.js.map +1 -0
  64. package/dist/openai-responses/sse.d.ts +7 -0
  65. package/dist/openai-responses/sse.d.ts.map +1 -0
  66. package/dist/openai-responses/sse.js +82 -0
  67. package/dist/openai-responses/sse.js.map +1 -0
  68. package/dist/ppio-video/adapter.d.ts +37 -0
  69. package/dist/ppio-video/adapter.d.ts.map +1 -0
  70. package/dist/ppio-video/adapter.js +155 -0
  71. package/dist/ppio-video/adapter.js.map +1 -0
  72. package/dist/ppio-video/codec.d.ts +19 -0
  73. package/dist/ppio-video/codec.d.ts.map +1 -0
  74. package/dist/ppio-video/codec.js +172 -0
  75. package/dist/ppio-video/codec.js.map +1 -0
  76. package/dist/ppio-video/estimator.d.ts +21 -0
  77. package/dist/ppio-video/estimator.d.ts.map +1 -0
  78. package/dist/ppio-video/estimator.js +23 -0
  79. package/dist/ppio-video/estimator.js.map +1 -0
  80. package/dist/registry.d.ts +15 -0
  81. package/dist/registry.d.ts.map +1 -0
  82. package/dist/registry.js +36 -0
  83. package/dist/registry.js.map +1 -0
  84. package/dist/transport-profile.d.ts +17 -0
  85. package/dist/transport-profile.d.ts.map +1 -0
  86. package/dist/transport-profile.js +36 -0
  87. package/dist/transport-profile.js.map +1 -0
  88. package/dist/volc-embeddings/adapter.d.ts +4 -0
  89. package/dist/volc-embeddings/adapter.d.ts.map +1 -0
  90. package/dist/volc-embeddings/adapter.js +92 -0
  91. package/dist/volc-embeddings/adapter.js.map +1 -0
  92. package/dist/volc-embeddings/codec.d.ts +8 -0
  93. package/dist/volc-embeddings/codec.d.ts.map +1 -0
  94. package/dist/volc-embeddings/codec.js +196 -0
  95. package/dist/volc-embeddings/codec.js.map +1 -0
  96. package/dist/volc-images/adapter.d.ts +3 -0
  97. package/dist/volc-images/adapter.d.ts.map +1 -0
  98. package/dist/volc-images/adapter.js +96 -0
  99. package/dist/volc-images/adapter.js.map +1 -0
  100. package/dist/volc-images/codec.d.ts +13 -0
  101. package/dist/volc-images/codec.d.ts.map +1 -0
  102. package/dist/volc-images/codec.js +581 -0
  103. package/dist/volc-images/codec.js.map +1 -0
  104. package/dist/volc-video/adapter.d.ts +40 -0
  105. package/dist/volc-video/adapter.d.ts.map +1 -0
  106. package/dist/volc-video/adapter.js +165 -0
  107. package/dist/volc-video/adapter.js.map +1 -0
  108. package/dist/volc-video/codec.d.ts +26 -0
  109. package/dist/volc-video/codec.d.ts.map +1 -0
  110. package/dist/volc-video/codec.js +203 -0
  111. package/dist/volc-video/codec.js.map +1 -0
  112. package/dist/volc-video/estimator.d.ts +18 -0
  113. package/dist/volc-video/estimator.d.ts.map +1 -0
  114. package/dist/volc-video/estimator.js +21 -0
  115. package/dist/volc-video/estimator.js.map +1 -0
  116. package/package.json +61 -0
@@ -0,0 +1,7 @@
1
+ import { type ProviderExecutionStartV2, type ProviderTransportResponse, type TaskEnvelopeV2 } from '@skyold/model-protocol';
2
+ export declare const openAiChatCodec: {
3
+ protocolFamily: string;
4
+ encodeProviderRequest(task: TaskEnvelopeV2, providerModel: string): Uint8Array;
5
+ decodeProviderStart(response: ProviderTransportResponse): ProviderExecutionStartV2;
6
+ };
7
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/openai-chat/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,wBAAwB,EAE7B,KAAK,yBAAyB,EAC9B,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAkChC,eAAO,MAAM,eAAe;;gCAGE,cAAc,iBAAiB,MAAM,GAAG,UAAU;kCAsBhD,yBAAyB,GAAG,wBAAwB;CAQnF,CAAC"}
@@ -0,0 +1,584 @@
1
+ import { validateChatProviderInputV1, } from '@skyold/model-protocol';
2
+ import { PROVIDER_STREAM_INVALID, parseOpenAiSseDataFrames } from './sse.js';
3
+ const OPENAI_CHAT_PROTOCOL = 'openai-chat/v1';
4
+ const encoder = new TextEncoder();
5
+ const decoder = new TextDecoder();
6
+ export const openAiChatCodec = {
7
+ protocolFamily: OPENAI_CHAT_PROTOCOL,
8
+ encodeProviderRequest(task, providerModel) {
9
+ if (task.dispatchProtocolFamily !== OPENAI_CHAT_PROTOCOL || task.taskKind !== 'chat') {
10
+ throw new Error('OPENAI_CHAT_TASK_UNSUPPORTED');
11
+ }
12
+ validateChatProviderInputV1(task.input, OPENAI_CHAT_PROTOCOL);
13
+ const body = { model: providerModel };
14
+ for (const [key, value] of Object.entries(task.input)) {
15
+ if (key === 'model')
16
+ continue;
17
+ body[key] = value;
18
+ }
19
+ if (task.executionMode === 'stream') {
20
+ body['stream'] = true;
21
+ body['stream_options'] = { include_usage: true };
22
+ }
23
+ else {
24
+ body['stream'] = false;
25
+ delete body['stream_options'];
26
+ }
27
+ return encoder.encode(JSON.stringify(body));
28
+ },
29
+ decodeProviderStart(response) {
30
+ const responseMetadata = metadata(response);
31
+ if (response.status < 200 || response.status >= 300) {
32
+ return failedStart(responseMetadata, response.status);
33
+ }
34
+ if (isAsyncIterable(response.body))
35
+ return streamStart(response.body, responseMetadata);
36
+ return syncStart(response.body, responseMetadata);
37
+ },
38
+ };
39
+ function syncStart(body, responseMetadata) {
40
+ try {
41
+ const completion = parseCompletion(parseJson(decoder.decode(body)), false);
42
+ const result = toResult(completion);
43
+ const terminal = {
44
+ status: 'succeeded',
45
+ acceptanceState: 'accepted',
46
+ retryable: false,
47
+ result,
48
+ ...(completion.usage ? { usage: completion.usage } : {}),
49
+ };
50
+ return {
51
+ kind: 'sync',
52
+ acceptance: { state: 'accepted' },
53
+ responseMetadata: { ...responseMetadata, observedModel: completion.model },
54
+ terminal,
55
+ };
56
+ }
57
+ catch {
58
+ return {
59
+ kind: 'sync',
60
+ acceptance: { state: 'accepted' },
61
+ responseMetadata,
62
+ terminal: {
63
+ status: 'failed',
64
+ acceptanceState: 'accepted',
65
+ failureOrigin: 'provider',
66
+ failureCode: 'PROVIDER_RESPONSE_INVALID',
67
+ retryable: false,
68
+ },
69
+ };
70
+ }
71
+ }
72
+ function failedStart(responseMetadata, status) {
73
+ const rateLimited = status === 429;
74
+ return {
75
+ kind: 'sync',
76
+ acceptance: { state: 'not-accepted' },
77
+ responseMetadata,
78
+ terminal: {
79
+ status: 'failed',
80
+ acceptanceState: 'not-accepted',
81
+ failureOrigin: 'provider',
82
+ failureCode: rateLimited ? 'PROVIDER_RATE_LIMITED' : 'PROVIDER_REQUEST_FAILED',
83
+ retryable: rateLimited || status >= 500,
84
+ },
85
+ };
86
+ }
87
+ function streamStart(body, responseMetadata) {
88
+ let resolveTerminal;
89
+ let terminalSettled = false;
90
+ let aborted = false;
91
+ let usage;
92
+ const terminal = new Promise((resolve) => {
93
+ resolveTerminal = resolve;
94
+ });
95
+ const settleTerminal = (outcome) => {
96
+ if (terminalSettled)
97
+ return;
98
+ terminalSettled = true;
99
+ resolveTerminal(outcome);
100
+ };
101
+ const cancelTerminal = () => {
102
+ settleTerminal({
103
+ status: 'cancelled',
104
+ acceptanceState: 'accepted',
105
+ retryable: false,
106
+ ...(usage ? { usage } : {}),
107
+ });
108
+ };
109
+ const events = (async function* () {
110
+ const choices = new Map();
111
+ let responseId;
112
+ let sequenceNumber = 0;
113
+ let nextOutputIndex = 0;
114
+ let done = false;
115
+ try {
116
+ if (aborted)
117
+ return;
118
+ for await (const frame of parseOpenAiSseDataFrames(body)) {
119
+ if (aborted)
120
+ return;
121
+ if (frame === '[DONE]') {
122
+ if (done)
123
+ throw new Error(PROVIDER_STREAM_INVALID);
124
+ done = true;
125
+ continue;
126
+ }
127
+ if (done)
128
+ throw new Error(PROVIDER_STREAM_INVALID);
129
+ const completion = parseCompletion(parseJson(frame), true);
130
+ if (responseId === undefined) {
131
+ responseId = completion.id;
132
+ if (aborted)
133
+ return;
134
+ yield event('response.started', responseId, sequenceNumber++);
135
+ }
136
+ if (completion.id !== responseId)
137
+ throw new Error(PROVIDER_STREAM_INVALID);
138
+ if (completion.usage) {
139
+ usage = completion.usage;
140
+ if (aborted)
141
+ return;
142
+ yield { ...event('usage.updated', responseId, sequenceNumber++), usage };
143
+ }
144
+ for (const choice of completion.choices) {
145
+ const state = choices.get(choice.index) ?? createChoiceState(choice.index);
146
+ choices.set(choice.index, state);
147
+ const message = choice.delta;
148
+ if (message?.content) {
149
+ state.content += message.content;
150
+ const outputIndex = assignOutputIndex(state, () => nextOutputIndex++);
151
+ if (aborted)
152
+ return;
153
+ yield {
154
+ ...event('output.text.delta', responseId, sequenceNumber++),
155
+ itemId: state.itemId,
156
+ outputIndex,
157
+ contentIndex: 0,
158
+ delta: message.content,
159
+ };
160
+ }
161
+ if (message?.refusal) {
162
+ state.refusal += message.refusal;
163
+ const outputIndex = assignOutputIndex(state, () => nextOutputIndex++);
164
+ if (aborted)
165
+ return;
166
+ yield {
167
+ ...event('output.refusal.delta', responseId, sequenceNumber++),
168
+ itemId: state.itemId,
169
+ outputIndex,
170
+ contentIndex: 0,
171
+ delta: message.refusal,
172
+ };
173
+ }
174
+ for (const toolCall of message?.toolCalls ?? []) {
175
+ const tool = state.tools.get(toolCall.index) ?? createToolState(choice.index, toolCall.index);
176
+ state.tools.set(toolCall.index, tool);
177
+ if (tool.callId && toolCall.callId && tool.callId !== toolCall.callId)
178
+ throw new Error(PROVIDER_STREAM_INVALID);
179
+ if (tool.name && toolCall.name && tool.name !== toolCall.name)
180
+ throw new Error(PROVIDER_STREAM_INVALID);
181
+ if (toolCall.callId)
182
+ tool.callId = toolCall.callId;
183
+ if (toolCall.name)
184
+ tool.name = toolCall.name;
185
+ tool.arguments += toolCall.arguments;
186
+ if (!tool.callId || !tool.name)
187
+ continue;
188
+ const outputIndex = assignOutputIndex(tool, () => nextOutputIndex++);
189
+ const argumentsDelta = tool.emitted ? toolCall.arguments : tool.arguments;
190
+ tool.emitted = true;
191
+ if (aborted)
192
+ return;
193
+ yield {
194
+ ...event('output.tool_call.delta', responseId, sequenceNumber++),
195
+ itemId: tool.itemId,
196
+ outputIndex,
197
+ callId: tool.callId,
198
+ ...(toolCall.name ? { name: toolCall.name } : {}),
199
+ argumentsDelta,
200
+ };
201
+ }
202
+ if (choice.finishReason !== null)
203
+ state.finishReason = choice.finishReason;
204
+ }
205
+ }
206
+ if (!done || responseId === undefined)
207
+ throw new Error(PROVIDER_STREAM_INVALID);
208
+ const result = toStreamResult(choices, usage);
209
+ for (const state of choices.values()) {
210
+ if (state.content) {
211
+ const part = { type: 'text', text: state.content };
212
+ const outputIndex = assignOutputIndex(state, () => nextOutputIndex++);
213
+ if (aborted)
214
+ return;
215
+ yield {
216
+ ...contentPartCompletedEvent(responseId, sequenceNumber++),
217
+ itemId: state.itemId,
218
+ outputIndex,
219
+ contentIndex: 0,
220
+ part,
221
+ };
222
+ }
223
+ if (state.refusal) {
224
+ const part = { type: 'refusal', text: state.refusal };
225
+ const outputIndex = assignOutputIndex(state, () => nextOutputIndex++);
226
+ if (aborted)
227
+ return;
228
+ yield {
229
+ ...contentPartCompletedEvent(responseId, sequenceNumber++),
230
+ itemId: state.itemId,
231
+ outputIndex,
232
+ contentIndex: 0,
233
+ part,
234
+ };
235
+ }
236
+ if (state.content || state.refusal) {
237
+ const outputIndex = assignOutputIndex(state, () => nextOutputIndex++);
238
+ if (aborted)
239
+ return;
240
+ yield {
241
+ ...event('output.item.completed', responseId, sequenceNumber++),
242
+ itemId: state.itemId,
243
+ outputIndex,
244
+ itemKind: 'message',
245
+ status: 'completed',
246
+ item: {
247
+ type: 'message',
248
+ content: [
249
+ ...(state.content ? [{ type: 'text', text: state.content }] : []),
250
+ ...(state.refusal ? [{ type: 'refusal', text: state.refusal }] : []),
251
+ ],
252
+ },
253
+ };
254
+ }
255
+ for (const tool of state.tools.values()) {
256
+ if (!tool.callId || !tool.name)
257
+ throw new Error(PROVIDER_STREAM_INVALID);
258
+ const outputIndex = assignOutputIndex(tool, () => nextOutputIndex++);
259
+ const item = {
260
+ type: 'function_call',
261
+ callId: tool.callId,
262
+ name: tool.name,
263
+ arguments: tool.arguments,
264
+ };
265
+ if (aborted)
266
+ return;
267
+ yield {
268
+ ...event('output.item.completed', responseId, sequenceNumber++),
269
+ itemId: tool.itemId,
270
+ outputIndex,
271
+ itemKind: 'function_call',
272
+ status: 'completed',
273
+ item,
274
+ };
275
+ }
276
+ }
277
+ const incompleteReason = result.output.incompleteReason;
278
+ const successfulTerminal = {
279
+ status: 'succeeded',
280
+ acceptanceState: 'accepted',
281
+ retryable: false,
282
+ result,
283
+ ...(usage ? { usage } : {}),
284
+ };
285
+ if (aborted)
286
+ return;
287
+ settleTerminal(successfulTerminal);
288
+ if (incompleteReason) {
289
+ yield {
290
+ ...event('response.incomplete', responseId, sequenceNumber++),
291
+ reason: incompleteReason,
292
+ ...(usage ? { usage } : {}),
293
+ };
294
+ }
295
+ else {
296
+ yield {
297
+ ...event('response.completed', responseId, sequenceNumber++),
298
+ ...(usage ? { usage } : {}),
299
+ };
300
+ }
301
+ }
302
+ catch {
303
+ settleTerminal({
304
+ status: 'failed',
305
+ acceptanceState: 'accepted',
306
+ failureOrigin: 'provider',
307
+ failureCode: PROVIDER_STREAM_INVALID,
308
+ retryable: false,
309
+ });
310
+ throw new Error(PROVIDER_STREAM_INVALID);
311
+ }
312
+ finally {
313
+ if (!terminalSettled)
314
+ cancelTerminal();
315
+ }
316
+ })();
317
+ return {
318
+ kind: 'stream',
319
+ acceptance: { state: 'accepted' },
320
+ responseMetadata,
321
+ events,
322
+ terminal,
323
+ abort: () => {
324
+ aborted = true;
325
+ cancelTerminal();
326
+ },
327
+ };
328
+ }
329
+ function parseCompletion(value, stream) {
330
+ const root = record(value, 'OPENAI_CHAT_RESPONSE_INVALID');
331
+ if (typeof root.id !== 'string' ||
332
+ root.object !== (stream ? 'chat.completion.chunk' : 'chat.completion') ||
333
+ typeof root.created !== 'number' ||
334
+ typeof root.model !== 'string' ||
335
+ !Array.isArray(root.choices)) {
336
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
337
+ }
338
+ if (!stream && root.choices.length === 0) {
339
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
340
+ }
341
+ return {
342
+ id: root.id,
343
+ model: root.model,
344
+ choices: root.choices.map((choice) => parseChoice(choice, stream)),
345
+ ...(root.usage === undefined || root.usage === null ? {} : { usage: parseUsage(root.usage) }),
346
+ };
347
+ }
348
+ function parseChoice(value, stream) {
349
+ const choice = record(value, 'OPENAI_CHAT_RESPONSE_INVALID');
350
+ if (typeof choice.index !== 'number' ||
351
+ (typeof choice.finish_reason !== 'string' && choice.finish_reason !== null) ||
352
+ ('native_finish_reason' in choice &&
353
+ typeof choice['native_finish_reason'] !== 'string' &&
354
+ choice['native_finish_reason'] !== null)) {
355
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
356
+ }
357
+ const messageKey = stream ? 'delta' : 'message';
358
+ if (!(messageKey in choice))
359
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
360
+ return {
361
+ index: choice.index,
362
+ [stream ? 'delta' : 'message']: parseMessage(choice[messageKey], stream),
363
+ finishReason: choice.finish_reason,
364
+ };
365
+ }
366
+ function parseMessage(value, stream) {
367
+ const message = record(value, 'OPENAI_CHAT_RESPONSE_INVALID');
368
+ if ((!stream && message.role !== 'assistant') ||
369
+ ('role' in message && message.role !== 'assistant'))
370
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
371
+ if ('content' in message && typeof message.content !== 'string' && message.content !== null) {
372
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
373
+ }
374
+ if ('refusal' in message && typeof message.refusal !== 'string' && message.refusal !== null) {
375
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
376
+ }
377
+ // Some OpenAI-compatible reasoning models (including PPIO-hosted GLM) add
378
+ // `reasoning_content` to assistant messages. Validate the extension, but do
379
+ // not surface private reasoning through the normalized chat output.
380
+ if ('reasoning_content' in message &&
381
+ typeof message['reasoning_content'] !== 'string' &&
382
+ message['reasoning_content'] !== null) {
383
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
384
+ }
385
+ return {
386
+ ...('content' in message ? { content: message.content } : {}),
387
+ ...('refusal' in message ? { refusal: message.refusal } : {}),
388
+ toolCalls: message.tool_calls === undefined ? [] : parseToolCalls(message.tool_calls, stream),
389
+ };
390
+ }
391
+ function parseToolCalls(value, stream) {
392
+ if (!Array.isArray(value))
393
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
394
+ return value.map((value) => {
395
+ const call = record(value, 'OPENAI_CHAT_RESPONSE_INVALID');
396
+ if ((stream && typeof call.index !== 'number') ||
397
+ (call.id !== undefined && typeof call.id !== 'string') ||
398
+ (call.type !== undefined && call.type !== 'function')) {
399
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
400
+ }
401
+ const fn = record(call.function, 'OPENAI_CHAT_RESPONSE_INVALID');
402
+ if ((fn.name !== undefined && typeof fn.name !== 'string') ||
403
+ typeof fn.arguments !== 'string') {
404
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
405
+ }
406
+ return {
407
+ index: stream ? call.index : 0,
408
+ ...(call.id === undefined ? {} : { callId: call.id }),
409
+ ...(fn.name === undefined ? {} : { name: fn.name }),
410
+ arguments: fn.arguments,
411
+ };
412
+ });
413
+ }
414
+ function parseUsage(value) {
415
+ const usage = record(value, 'OPENAI_CHAT_RESPONSE_INVALID');
416
+ const prompt = requiredNumber(usage.prompt_tokens);
417
+ const completion = requiredNumber(usage.completion_tokens);
418
+ const total = requiredNumber(usage.total_tokens);
419
+ const promptDetails = usage.prompt_tokens_details === undefined || usage.prompt_tokens_details === null
420
+ ? undefined
421
+ : record(usage.prompt_tokens_details, 'OPENAI_CHAT_RESPONSE_INVALID');
422
+ const completionDetails = usage.completion_tokens_details === undefined || usage.completion_tokens_details === null
423
+ ? undefined
424
+ : record(usage.completion_tokens_details, 'OPENAI_CHAT_RESPONSE_INVALID');
425
+ validateOptionalUsageDetail(promptDetails?.cached_tokens);
426
+ validateOptionalUsageDetail(promptDetails?.['audio_tokens']);
427
+ validateOptionalUsageDetail(promptDetails?.['text_tokens']);
428
+ validateOptionalUsageDetail(promptDetails?.['image_tokens']);
429
+ validateOptionalUsageDetail(promptDetails?.['video_tokens']);
430
+ validateOptionalUsageDetail(completionDetails?.reasoning_tokens);
431
+ validateOptionalUsageDetail(completionDetails?.['audio_tokens']);
432
+ validateOptionalUsageDetail(completionDetails?.['accepted_prediction_tokens']);
433
+ validateOptionalUsageDetail(completionDetails?.['rejected_prediction_tokens']);
434
+ validateOptionalUsageDetail(completionDetails?.['text_tokens']);
435
+ validateOptionalUsageDetail(completionDetails?.['image_tokens']);
436
+ validateOptionalUsageDetail(completionDetails?.['video_tokens']);
437
+ return {
438
+ inputTokens: prompt,
439
+ outputTokens: completion,
440
+ totalTokens: total,
441
+ ...(promptDetails?.cached_tokens === undefined
442
+ ? {}
443
+ : { cachedInputTokens: requiredNumber(promptDetails.cached_tokens) }),
444
+ ...(completionDetails?.reasoning_tokens === undefined
445
+ ? {}
446
+ : { reasoningOutputTokens: requiredNumber(completionDetails.reasoning_tokens) }),
447
+ estimated: false,
448
+ };
449
+ }
450
+ function validateOptionalUsageDetail(value) {
451
+ if (value !== undefined)
452
+ requiredNumber(value);
453
+ }
454
+ function toResult(completion) {
455
+ const items = [];
456
+ for (const choice of completion.choices) {
457
+ const message = choice.message;
458
+ if (!message)
459
+ continue;
460
+ const content = [
461
+ ...(message.content ? [{ type: 'text', text: message.content }] : []),
462
+ ...(message.refusal ? [{ type: 'refusal', text: message.refusal }] : []),
463
+ ];
464
+ for (const part of content)
465
+ items.push(part);
466
+ for (const tool of message.toolCalls) {
467
+ if (!tool.callId || !tool.name)
468
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
469
+ items.push({
470
+ type: 'function_call',
471
+ callId: tool.callId,
472
+ name: tool.name,
473
+ arguments: tool.arguments,
474
+ });
475
+ }
476
+ }
477
+ return {
478
+ taskKind: 'chat',
479
+ output: resultOutput(items, completion.choices[0]?.finishReason ?? 'unknown'),
480
+ ...(completion.usage ? { usage: completion.usage } : {}),
481
+ };
482
+ }
483
+ function toStreamResult(choices, usage) {
484
+ const items = [];
485
+ let finishReason = 'unknown';
486
+ for (const state of choices.values()) {
487
+ if (finishReason === 'unknown' && state.finishReason)
488
+ finishReason = state.finishReason;
489
+ const content = [
490
+ ...(state.content ? [{ type: 'text', text: state.content }] : []),
491
+ ...(state.refusal ? [{ type: 'refusal', text: state.refusal }] : []),
492
+ ];
493
+ for (const part of content)
494
+ items.push(part);
495
+ for (const tool of state.tools.values()) {
496
+ if (!tool.callId || !tool.name)
497
+ throw new Error(PROVIDER_STREAM_INVALID);
498
+ items.push({
499
+ type: 'function_call',
500
+ callId: tool.callId,
501
+ name: tool.name,
502
+ arguments: tool.arguments,
503
+ });
504
+ }
505
+ }
506
+ return {
507
+ taskKind: 'chat',
508
+ output: resultOutput(items, finishReason),
509
+ ...(usage ? { usage } : {}),
510
+ };
511
+ }
512
+ function resultOutput(items, finishReason) {
513
+ const incompleteReason = finishReason === 'length' || finishReason === 'content_filter' ? finishReason : undefined;
514
+ return {
515
+ items,
516
+ finishReason,
517
+ ...(incompleteReason ? { incompleteReason } : {}),
518
+ };
519
+ }
520
+ function createChoiceState(index) {
521
+ return { index, itemId: `message-${index}`, content: '', refusal: '', tools: new Map() };
522
+ }
523
+ function createToolState(choiceIndex, toolIndex) {
524
+ return {
525
+ itemId: `tool-${choiceIndex}-${toolIndex}`,
526
+ arguments: '',
527
+ emitted: false,
528
+ };
529
+ }
530
+ function assignOutputIndex(item, allocateOutputIndex) {
531
+ if (item.outputIndex === undefined)
532
+ item.outputIndex = allocateOutputIndex();
533
+ return item.outputIndex;
534
+ }
535
+ function event(type, responseId, sequenceNumber) {
536
+ return {
537
+ type,
538
+ eventId: `${responseId}:${sequenceNumber}`,
539
+ sequenceNumber,
540
+ responseId,
541
+ };
542
+ }
543
+ function contentPartCompletedEvent(responseId, sequenceNumber) {
544
+ return {
545
+ type: 'output.content_part.completed',
546
+ eventId: `${responseId}:${sequenceNumber}`,
547
+ sequenceNumber,
548
+ responseId,
549
+ };
550
+ }
551
+ function metadata(response) {
552
+ const providerRequestId = response.headers['x-request-id'] ?? response.headers['openai-request-id'];
553
+ return {
554
+ headersReceived: true,
555
+ statusCode: response.status,
556
+ ...(providerRequestId ? { providerRequestId } : {}),
557
+ };
558
+ }
559
+ function parseJson(value) {
560
+ try {
561
+ return JSON.parse(value);
562
+ }
563
+ catch {
564
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
565
+ }
566
+ }
567
+ function record(value, code) {
568
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
569
+ throw new Error(code);
570
+ return value;
571
+ }
572
+ function requiredNumber(value) {
573
+ if (typeof value !== 'number' ||
574
+ !Number.isFinite(value) ||
575
+ !Number.isInteger(value) ||
576
+ value < 0) {
577
+ throw new Error('OPENAI_CHAT_RESPONSE_INVALID');
578
+ }
579
+ return value;
580
+ }
581
+ function isAsyncIterable(value) {
582
+ return Symbol.asyncIterator in Object(value);
583
+ }
584
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/openai-chat/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,GAU5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAE7E,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAC9C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AA6BlC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc,EAAE,oBAAoB;IAEpC,qBAAqB,CAAC,IAAoB,EAAE,aAAqB;QAC/D,IAAI,IAAI,CAAC,sBAAsB,KAAK,oBAAoB,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,2BAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC9D,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAC/D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,GAAG,KAAK,OAAO;gBAAE,SAAS;YAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,QAAmC;QACrD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACpD,OAAO,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACxF,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACpD,CAAC;CACF,CAAC;AAEF,SAAS,SAAS,CAChB,IAAgB,EAChB,gBAA0C;IAE1C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,QAAQ,GAA2B;YACvC,MAAM,EAAE,WAAW;YACnB,eAAe,EAAE,UAAU;YAC3B,SAAS,EAAE,KAAK;YAChB,MAAM;YACN,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC;QACF,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;YACjC,gBAAgB,EAAE,EAAE,GAAG,gBAAgB,EAAE,aAAa,EAAE,UAAU,CAAC,KAAK,EAAE;YAC1E,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;YACjC,gBAAgB;YAChB,QAAQ,EAAE;gBACR,MAAM,EAAE,QAAQ;gBAChB,eAAe,EAAE,UAAU;gBAC3B,aAAa,EAAE,UAAU;gBACzB,WAAW,EAAE,2BAA2B;gBACxC,SAAS,EAAE,KAAK;aACjB;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,gBAA0C,EAC1C,MAAc;IAEd,MAAM,WAAW,GAAG,MAAM,KAAK,GAAG,CAAC;IACnC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;QACrC,gBAAgB;QAChB,QAAQ,EAAE;YACR,MAAM,EAAE,QAAQ;YAChB,eAAe,EAAE,cAAc;YAC/B,aAAa,EAAE,UAAU;YACzB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,yBAAyB;YAC9E,SAAS,EAAE,WAAW,IAAI,MAAM,IAAI,GAAG;SACxC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,IAA+B,EAC/B,gBAA0C;IAE1C,IAAI,eAA2D,CAAC;IAChE,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAoC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,EAAE;QAC/D,eAAe,GAAG,OAAO,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,CAAC,OAA+B,EAAQ,EAAE;QAC/D,IAAI,eAAe;YAAE,OAAO;QAC5B,eAAe,GAAG,IAAI,CAAC;QACvB,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,cAAc,CAAC;YACb,MAAM,EAAE,WAAW;YACnB,eAAe,EAAE,UAAU;YAC3B,SAAS,EAAE,KAAK;YAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAK,SAAS,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC/C,IAAI,UAA8B,CAAC;QACnC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,IAAI,GAAG,KAAK,CAAC;QAEjB,IAAI,CAAC;YACH,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,IAAI,OAAO;oBAAE,OAAO;gBACpB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACvB,IAAI,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACnD,IAAI,GAAG,IAAI,CAAC;oBACZ,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAEnD,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC3D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC;oBAC3B,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM,KAAK,CAAC,kBAAkB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,UAAU,CAAC,EAAE,KAAK,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC3E,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;oBACzB,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;gBAC3E,CAAC;gBAED,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACxC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3E,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACjC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;oBAC7B,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;wBACrB,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;wBACjC,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;wBACtE,IAAI,OAAO;4BAAE,OAAO;wBACpB,MAAM;4BACJ,GAAG,KAAK,CAAC,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;4BAC3D,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,WAAW;4BACX,YAAY,EAAE,CAAC;4BACf,KAAK,EAAE,OAAO,CAAC,OAAO;yBACvB,CAAC;oBACJ,CAAC;oBACD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;wBACrB,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;wBACjC,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;wBACtE,IAAI,OAAO;4BAAE,OAAO;wBACpB,MAAM;4BACJ,GAAG,KAAK,CAAC,sBAAsB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;4BAC9D,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,WAAW;4BACX,YAAY,EAAE,CAAC;4BACf,KAAK,EAAE,OAAO,CAAC,OAAO;yBACvB,CAAC;oBACJ,CAAC;oBACD,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;wBAChD,MAAM,IAAI,GACR,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACnF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBACtC,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;4BACnE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;wBAC3C,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;4BAC3D,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;wBAC3C,IAAI,QAAQ,CAAC,MAAM;4BAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;wBACnD,IAAI,QAAQ,CAAC,IAAI;4BAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7C,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;wBACrC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;4BAAE,SAAS;wBACzC,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;wBACrE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC1E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,IAAI,OAAO;4BAAE,OAAO;wBACpB,MAAM;4BACJ,GAAG,KAAK,CAAC,wBAAwB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;4BAChE,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,WAAW;4BACX,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACjD,cAAc;yBACf,CAAC;oBACJ,CAAC;oBACD,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;wBAAE,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBAC7E,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC5D,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;oBACtE,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM;wBACJ,GAAG,yBAAyB,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;wBAC1D,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,WAAW;wBACX,YAAY,EAAE,CAAC;wBACf,IAAI;qBACL,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,SAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC/D,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;oBACtE,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM;wBACJ,GAAG,yBAAyB,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;wBAC1D,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,WAAW;wBACX,YAAY,EAAE,CAAC;wBACf,IAAI;qBACL,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnC,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;oBACtE,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM;wBACJ,GAAG,KAAK,CAAC,uBAAuB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;wBAC/D,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,WAAW;wBACX,QAAQ,EAAE,SAAS;wBACnB,MAAM,EAAE,WAAW;wBACnB,IAAI,EAAE;4BACJ,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE;gCACP,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gCAC1E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;6BAC9E;yBACF;qBACF,CAAC;gBACJ,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACxC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACzE,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;oBACrE,MAAM,IAAI,GAA2B;wBACnC,IAAI,EAAE,eAAe;wBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,SAAS,EAAE,IAAI,CAAC,SAAS;qBAC1B,CAAC;oBACF,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM;wBACJ,GAAG,KAAK,CAAC,uBAAuB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;wBAC/D,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,WAAW;wBACX,QAAQ,EAAE,eAAe;wBACzB,MAAM,EAAE,WAAW;wBACnB,IAAI;qBACL,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACxD,MAAM,kBAAkB,GAA2B;gBACjD,MAAM,EAAE,WAAW;gBACnB,eAAe,EAAE,UAAU;gBAC3B,SAAS,EAAE,KAAK;gBAChB,MAAM;gBACN,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B,CAAC;YACF,IAAI,OAAO;gBAAE,OAAO;YACpB,cAAc,CAAC,kBAAkB,CAAC,CAAC;YACnC,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM;oBACJ,GAAG,KAAK,CAAC,qBAAqB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;oBAC7D,MAAM,EAAE,gBAAgB;oBACxB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM;oBACJ,GAAG,KAAK,CAAC,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;oBAC5D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,CAAC;gBACb,MAAM,EAAE,QAAQ;gBAChB,eAAe,EAAE,UAAU;gBAC3B,aAAa,EAAE,UAAU;gBACzB,WAAW,EAAE,uBAAuB;gBACpC,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,eAAe;gBAAE,cAAc,EAAE,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;QACjC,gBAAgB;QAChB,MAAM;QACN,QAAQ;QACR,KAAK,EAAE,GAAG,EAAE;YACV,OAAO,GAAG,IAAI,CAAC;YACf,cAAc,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,MAAe;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC3D,IACE,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;QAC3B,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACtE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAChC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAC9B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,MAAe;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC7D,IACE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChC,CAAC,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC;QAC3E,CAAC,sBAAsB,IAAI,MAAM;YAC/B,OAAO,MAAM,CAAC,sBAAsB,CAAC,KAAK,QAAQ;YAClD,MAAM,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC,EAC1C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7E,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QACxE,YAAY,EAAE,MAAM,CAAC,aAAa;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,MAAe;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC9D,IACE,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;QACzC,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;QAEnD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,0EAA0E;IAC1E,4EAA4E;IAC5E,oEAAoE;IACpE,IACE,mBAAmB,IAAI,OAAO;QAC9B,OAAO,OAAO,CAAC,mBAAmB,CAAC,KAAK,QAAQ;QAChD,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI,EACrC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO;QACL,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,SAAS,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,MAAe;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QAC3D,IACE,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC;YAC1C,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC;YACtD,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,EACrD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;QACjE,IACE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;YACtD,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,EAChC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,KAAgB,CAAC,CAAC,CAAC,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACrD,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACnD,SAAS,EAAE,EAAE,CAAC,SAAS;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,aAAa,GACjB,KAAK,CAAC,qBAAqB,KAAK,SAAS,IAAI,KAAK,CAAC,qBAAqB,KAAK,IAAI;QAC/E,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,8BAA8B,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GACrB,KAAK,CAAC,yBAAyB,KAAK,SAAS,IAAI,KAAK,CAAC,yBAAyB,KAAK,IAAI;QACvF,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,8BAA8B,CAAC,CAAC;IAC9E,2BAA2B,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC1D,2BAA2B,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7D,2BAA2B,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5D,2BAA2B,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7D,2BAA2B,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7D,2BAA2B,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IACjE,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACjE,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC/E,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC/E,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAChE,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACjE,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACjE,OAAO;QACL,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,UAAU;QACxB,WAAW,EAAE,KAAK;QAClB,GAAG,CAAC,aAAa,EAAE,aAAa,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,KAAK,SAAS;YACnD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,qBAAqB,EAAE,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClF,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,UAA4B;IAC5C,MAAM,KAAK,GAAoC,EAAE,CAAC;IAClD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClF,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,MAAe;QACzB,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,SAAS,CAAC;QAC7E,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,OAAyC,EACzC,KAAoC;IAEpC,MAAM,KAAK,GAAoC,EAAE,CAAC;IAClD,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY;YAAE,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACxF,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,MAAe;QACzB,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC;QACzC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAA4B,EAAE,YAAoB;IACtE,MAAM,gBAAgB,GACpB,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,OAAO;QACL,KAAK;QACL,YAAY;QACZ,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AAoBD,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,SAAiB;IAC7D,OAAO;QACL,MAAM,EAAE,QAAQ,WAAW,IAAI,SAAS,EAAE;QAC1C,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,IAA8B,EAC9B,mBAAiC;IAEjC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC7E,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,CAAC;AAED,SAAS,KAAK,CACZ,IAAO,EACP,UAAkB,EAClB,cAAsB;IAEtB,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,GAAG,UAAU,IAAI,cAAc,EAAE;QAC1C,cAAc;QACd,UAAU;KACiD,CAAC;AAChE,CAAC;AAED,SAAS,yBAAyB,CAAC,UAAkB,EAAE,cAAsB;IAC3E,OAAO;QACL,IAAI,EAAE,+BAAwC;QAC9C,OAAO,EAAE,GAAG,UAAU,IAAI,cAAc,EAAE;QAC1C,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,QAAmC;IACnD,MAAM,iBAAiB,GACrB,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5E,OAAO;QACL,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,QAAQ,CAAC,MAAM;QAC3B,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AA+BD,SAAS,MAAM,CAAC,KAAc,EAAE,IAAY;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/F,OAAO,KAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,GAAG,CAAC,EACT,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACtB,KAA6C;IAE7C,OAAO,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const PROVIDER_STREAM_INVALID = "PROVIDER_STREAM_INVALID";
2
+ export declare function parseOpenAiSseDataFrames(body: AsyncIterable<Uint8Array>): AsyncIterable<string>;
3
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/openai-chat/sse.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAMjE,wBAAuB,wBAAwB,CAC7C,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAC9B,aAAa,CAAC,MAAM,CAAC,CAiDvB"}