@just-every/ensemble 0.2.187 → 0.2.188

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 (67) hide show
  1. package/dist/cjs/core/ensemble_embed.cjs +94 -40
  2. package/dist/cjs/core/ensemble_embed.d.ts.map +1 -1
  3. package/dist/cjs/core/ensemble_embed.js.map +1 -1
  4. package/dist/cjs/core/ensemble_image.cjs +47 -8
  5. package/dist/cjs/core/ensemble_image.d.ts.map +1 -1
  6. package/dist/cjs/core/ensemble_image.js.map +1 -1
  7. package/dist/cjs/core/ensemble_listen.cjs +151 -74
  8. package/dist/cjs/core/ensemble_listen.d.ts.map +1 -1
  9. package/dist/cjs/core/ensemble_listen.js.map +1 -1
  10. package/dist/cjs/core/ensemble_live.cjs +193 -40
  11. package/dist/cjs/core/ensemble_live.d.ts.map +1 -1
  12. package/dist/cjs/core/ensemble_live.js.map +1 -1
  13. package/dist/cjs/core/ensemble_request.cjs +107 -11
  14. package/dist/cjs/core/ensemble_request.d.ts.map +1 -1
  15. package/dist/cjs/core/ensemble_request.js.map +1 -1
  16. package/dist/cjs/core/ensemble_voice.cjs +190 -146
  17. package/dist/cjs/core/ensemble_voice.d.ts.map +1 -1
  18. package/dist/cjs/core/ensemble_voice.js.map +1 -1
  19. package/dist/cjs/index.cjs +1 -0
  20. package/dist/cjs/index.d.ts +1 -0
  21. package/dist/cjs/index.d.ts.map +1 -1
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  24. package/dist/cjs/types/types.d.ts +13 -0
  25. package/dist/cjs/types/types.d.ts.map +1 -1
  26. package/dist/cjs/utils/trace_context.cjs +96 -0
  27. package/dist/cjs/utils/trace_context.d.ts +20 -0
  28. package/dist/cjs/utils/trace_context.d.ts.map +1 -0
  29. package/dist/cjs/utils/trace_context.js.map +1 -0
  30. package/dist/cjs/utils/trace_logger.cjs +66 -0
  31. package/dist/cjs/utils/trace_logger.d.ts +12 -0
  32. package/dist/cjs/utils/trace_logger.d.ts.map +1 -0
  33. package/dist/cjs/utils/trace_logger.js.map +1 -0
  34. package/dist/core/ensemble_embed.d.ts.map +1 -1
  35. package/dist/core/ensemble_embed.js +94 -40
  36. package/dist/core/ensemble_embed.js.map +1 -1
  37. package/dist/core/ensemble_image.d.ts.map +1 -1
  38. package/dist/core/ensemble_image.js +47 -8
  39. package/dist/core/ensemble_image.js.map +1 -1
  40. package/dist/core/ensemble_listen.d.ts.map +1 -1
  41. package/dist/core/ensemble_listen.js +151 -74
  42. package/dist/core/ensemble_listen.js.map +1 -1
  43. package/dist/core/ensemble_live.d.ts.map +1 -1
  44. package/dist/core/ensemble_live.js +193 -40
  45. package/dist/core/ensemble_live.js.map +1 -1
  46. package/dist/core/ensemble_request.d.ts.map +1 -1
  47. package/dist/core/ensemble_request.js +107 -11
  48. package/dist/core/ensemble_request.js.map +1 -1
  49. package/dist/core/ensemble_voice.d.ts.map +1 -1
  50. package/dist/core/ensemble_voice.js +190 -146
  51. package/dist/core/ensemble_voice.js.map +1 -1
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +1 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/dist/types/types.d.ts +13 -0
  58. package/dist/types/types.d.ts.map +1 -1
  59. package/dist/utils/trace_context.d.ts +20 -0
  60. package/dist/utils/trace_context.d.ts.map +1 -0
  61. package/dist/utils/trace_context.js +91 -0
  62. package/dist/utils/trace_context.js.map +1 -0
  63. package/dist/utils/trace_logger.d.ts +12 -0
  64. package/dist/utils/trace_logger.d.ts.map +1 -0
  65. package/dist/utils/trace_logger.js +58 -0
  66. package/dist/utils/trace_logger.js.map +1 -0
  67. package/package.json +1 -1
@@ -9,8 +9,12 @@ const message_history_js_1 = require("../utils/message_history.cjs");
9
9
  const tool_execution_manager_js_1 = require("../utils/tool_execution_manager.cjs");
10
10
  const tool_result_processor_js_1 = require("../utils/tool_result_processor.cjs");
11
11
  const event_controller_js_1 = require("../utils/event_controller.cjs");
12
+ const trace_context_js_1 = require("../utils/trace_context.cjs");
13
+ const crypto_1 = require("crypto");
12
14
  async function* ensembleLive(config, agent, options) {
13
15
  const startTime = Date.now();
16
+ const trace = (0, trace_context_js_1.createTraceContext)(agent, 'live_session');
17
+ const requestId = (0, crypto_1.randomUUID)();
14
18
  let session = null;
15
19
  let messageHistory = null;
16
20
  let totalToolCalls = 0;
@@ -18,18 +22,42 @@ async function* ensembleLive(config, agent, options) {
18
22
  let isSessionActive = true;
19
23
  let totalCost = 0;
20
24
  let totalTokens = 0;
25
+ let requestStarted = false;
26
+ let turnStatus = 'completed';
27
+ let turnEndReason = 'completed';
28
+ let requestStatus = 'completed';
29
+ let requestError;
30
+ let resolvedModel;
31
+ let resolvedProviderId;
32
+ await trace.emitTurnStart({
33
+ config,
34
+ options,
35
+ });
21
36
  try {
22
37
  const model = await (0, model_provider_js_1.getModelFromAgent)(agent);
23
38
  if (!model) {
24
39
  throw new Error('No model specified in agent configuration');
25
40
  }
41
+ resolvedModel = model;
26
42
  const provider = (0, model_provider_js_2.getModelProvider)(model);
27
43
  if (!provider) {
28
44
  throw new Error(`No provider found for model: ${model}`);
29
45
  }
46
+ resolvedProviderId = provider.provider_id;
30
47
  if (!provider.createLiveSession) {
31
48
  throw new Error(`Provider ${provider.provider_id} does not support Live API`);
32
49
  }
50
+ await trace.emitRequestStart(requestId, {
51
+ agent_id: agent.agent_id,
52
+ provider: provider.provider_id,
53
+ model,
54
+ payload: {
55
+ config,
56
+ options,
57
+ history_count: options?.messageHistory?.length ?? 0,
58
+ },
59
+ });
60
+ requestStarted = true;
33
61
  if (options?.messageHistory) {
34
62
  messageHistory = new message_history_js_1.MessageHistory();
35
63
  for (const message of options.messageHistory) {
@@ -89,10 +117,14 @@ async function* ensembleLive(config, agent, options) {
89
117
  const maxToolCalls = options?.maxToolCalls ?? agent.maxToolCalls ?? 200;
90
118
  const maxToolCallRoundsPerTurn = options?.maxToolCallRoundsPerTurn ?? agent.maxToolCallRoundsPerTurn ?? Infinity;
91
119
  if (totalToolCalls >= maxToolCalls) {
120
+ turnStatus = 'error';
121
+ turnEndReason = 'max_tool_calls_exceeded';
122
+ requestStatus = 'error';
123
+ requestError = `Maximum tool calls (${maxToolCalls}) exceeded`;
92
124
  const errorEvent = {
93
125
  type: 'error',
94
126
  timestamp: new Date().toISOString(),
95
- error: `Maximum tool calls (${maxToolCalls}) exceeded`,
127
+ error: requestError,
96
128
  code: 'MAX_TOOL_CALLS_EXCEEDED',
97
129
  recoverable: false,
98
130
  };
@@ -111,6 +143,11 @@ async function* ensembleLive(config, agent, options) {
111
143
  continue;
112
144
  }
113
145
  for (const toolCall of toolCallEvent.toolCalls) {
146
+ await trace.emitToolStart(requestId, toolCall.id, {
147
+ tool_name: toolCall.function.name,
148
+ call_id: toolCall.call_id || toolCall.id,
149
+ arguments: toolCall.function.arguments,
150
+ });
114
151
  const toolStartEvent = {
115
152
  type: 'tool_start',
116
153
  timestamp: new Date().toISOString(),
@@ -134,6 +171,11 @@ async function* ensembleLive(config, agent, options) {
134
171
  toolResults.push(toolCallResult);
135
172
  totalToolCalls++;
136
173
  currentTurnToolCalls++;
174
+ await trace.emitToolDone(requestId, toolCall.id, {
175
+ tool_name: toolCall.function.name,
176
+ call_id: toolCallResult.call_id,
177
+ output: toolCallResult.output,
178
+ });
137
179
  const toolResultEvent = {
138
180
  type: 'tool_result',
139
181
  timestamp: new Date().toISOString(),
@@ -153,6 +195,11 @@ async function* ensembleLive(config, agent, options) {
153
195
  error: errorMessage,
154
196
  };
155
197
  toolResults.push(toolCallResult);
198
+ await trace.emitToolDone(requestId, toolCall.id, {
199
+ tool_name: toolCall.function.name,
200
+ call_id: toolCallResult.call_id,
201
+ error: errorMessage,
202
+ });
156
203
  const errorEvent = {
157
204
  type: 'error',
158
205
  timestamp: new Date().toISOString(),
@@ -204,6 +251,10 @@ async function* ensembleLive(config, agent, options) {
204
251
  }
205
252
  catch (error) {
206
253
  const errorMessage = error instanceof Error ? error.message : String(error);
254
+ turnStatus = 'error';
255
+ turnEndReason = 'exception';
256
+ requestStatus = 'error';
257
+ requestError = errorMessage;
207
258
  const errorEvent = {
208
259
  type: 'error',
209
260
  timestamp: new Date().toISOString(),
@@ -220,10 +271,33 @@ async function* ensembleLive(config, agent, options) {
220
271
  }
221
272
  isSessionActive = false;
222
273
  const duration = Date.now() - startTime;
274
+ if (requestStarted) {
275
+ await trace.emitRequestEnd(requestId, {
276
+ status: requestStatus,
277
+ error: requestError,
278
+ duration_ms: duration,
279
+ total_tokens: totalTokens,
280
+ total_cost: totalCost > 0 ? totalCost : undefined,
281
+ total_tool_calls: totalToolCalls,
282
+ session_id: session?.sessionId,
283
+ model: resolvedModel,
284
+ provider: resolvedProviderId,
285
+ });
286
+ }
287
+ await trace.emitTurnEnd(turnStatus, turnEndReason, {
288
+ error: requestError,
289
+ duration_ms: duration,
290
+ total_tokens: totalTokens,
291
+ total_cost: totalCost > 0 ? totalCost : undefined,
292
+ total_tool_calls: totalToolCalls,
293
+ session_id: session?.sessionId,
294
+ model: resolvedModel,
295
+ provider: resolvedProviderId,
296
+ });
223
297
  const endEvent = {
224
298
  type: 'live_end',
225
299
  timestamp: new Date().toISOString(),
226
- reason: isSessionActive ? 'completed' : 'error',
300
+ reason: turnStatus === 'completed' ? 'completed' : 'error',
227
301
  duration,
228
302
  totalTokens,
229
303
  totalCost: totalCost > 0 ? totalCost : undefined,
@@ -244,6 +318,16 @@ async function* ensembleLive(config, agent, options) {
244
318
  }
245
319
  }
246
320
  async function* ensembleLiveAudio(audioSource, agent, options) {
321
+ const trace = (0, trace_context_js_1.createTraceContext)(agent, 'live_audio_session');
322
+ const requestId = (0, crypto_1.randomUUID)();
323
+ let requestStarted = false;
324
+ let turnStatus = 'completed';
325
+ let turnEndReason = 'completed';
326
+ let requestStatus = 'completed';
327
+ let requestError;
328
+ let totalCost = 0;
329
+ let totalTokens = 0;
330
+ const startTime = Date.now();
247
331
  const config = {
248
332
  responseModalities: ['AUDIO'],
249
333
  speechConfig: options?.voice
@@ -265,45 +349,66 @@ async function* ensembleLiveAudio(audioSource, agent, options) {
265
349
  proactiveAudio: true,
266
350
  };
267
351
  }
268
- const model = await (0, model_provider_js_1.getModelFromAgent)(agent);
269
- console.log('[ensembleLiveAudio] Using model:', model);
270
- if (!model) {
271
- throw new Error('No model specified in agent configuration');
272
- }
273
- const provider = (0, model_provider_js_2.getModelProvider)(model);
274
- console.log('[ensembleLiveAudio] Provider:', provider?.provider_id);
275
- if (!provider || !provider.createLiveSession) {
276
- throw new Error(`Provider does not support Live API for model: ${model}`);
277
- }
278
- console.log('[ensembleLiveAudio] Creating live session...');
279
- const session = await provider.createLiveSession(config, agent, model, options);
280
- console.log('[ensembleLiveAudio] Session created:', session.sessionId);
352
+ await trace.emitTurnStart({
353
+ config,
354
+ options,
355
+ audio_source_type: 'async_iterable',
356
+ });
357
+ let session = null;
358
+ let model;
359
+ let providerId;
281
360
  let audioChunkCount = 0;
282
361
  let totalAudioBytes = 0;
283
- const audioProcessingTask = (async () => {
284
- try {
285
- console.log('[ensembleLiveAudio] Starting audio processing task...');
286
- for await (const chunk of audioSource) {
287
- if (!session.isActive()) {
288
- console.log('[ensembleLiveAudio] Session inactive, stopping audio processing');
289
- break;
290
- }
291
- audioChunkCount++;
292
- totalAudioBytes += chunk.length;
293
- const base64Data = Buffer.from(chunk).toString('base64');
294
- console.log(`[ensembleLiveAudio] Sending audio chunk ${audioChunkCount}, size: ${chunk.length} bytes, total: ${totalAudioBytes} bytes`);
295
- await session.sendAudio({
296
- data: base64Data,
297
- mimeType: 'audio/pcm;rate=16000',
298
- });
299
- }
300
- console.log(`[ensembleLiveAudio] Audio processing completed. Total chunks: ${audioChunkCount}, Total bytes: ${totalAudioBytes}`);
362
+ let audioProcessingTask = null;
363
+ try {
364
+ model = await (0, model_provider_js_1.getModelFromAgent)(agent);
365
+ console.log('[ensembleLiveAudio] Using model:', model);
366
+ if (!model) {
367
+ throw new Error('No model specified in agent configuration');
301
368
  }
302
- catch (error) {
303
- console.error('[ensembleLiveAudio] Error processing audio:', error);
369
+ const provider = (0, model_provider_js_2.getModelProvider)(model);
370
+ providerId = provider?.provider_id;
371
+ console.log('[ensembleLiveAudio] Provider:', provider?.provider_id);
372
+ if (!provider || !provider.createLiveSession) {
373
+ throw new Error(`Provider does not support Live API for model: ${model}`);
304
374
  }
305
- })();
306
- try {
375
+ await trace.emitRequestStart(requestId, {
376
+ agent_id: agent.agent_id,
377
+ provider: provider.provider_id,
378
+ model,
379
+ payload: {
380
+ config,
381
+ options,
382
+ audio_source_type: 'async_iterable',
383
+ },
384
+ });
385
+ requestStarted = true;
386
+ console.log('[ensembleLiveAudio] Creating live session...');
387
+ session = await provider.createLiveSession(config, agent, model, options);
388
+ console.log('[ensembleLiveAudio] Session created:', session.sessionId);
389
+ audioProcessingTask = (async () => {
390
+ try {
391
+ console.log('[ensembleLiveAudio] Starting audio processing task...');
392
+ for await (const chunk of audioSource) {
393
+ if (!session || !session.isActive()) {
394
+ console.log('[ensembleLiveAudio] Session inactive, stopping audio processing');
395
+ break;
396
+ }
397
+ audioChunkCount++;
398
+ totalAudioBytes += chunk.length;
399
+ const base64Data = Buffer.from(chunk).toString('base64');
400
+ console.log(`[ensembleLiveAudio] Sending audio chunk ${audioChunkCount}, size: ${chunk.length} bytes, total: ${totalAudioBytes} bytes`);
401
+ await session.sendAudio({
402
+ data: base64Data,
403
+ mimeType: 'audio/pcm;rate=16000',
404
+ });
405
+ }
406
+ console.log(`[ensembleLiveAudio] Audio processing completed. Total chunks: ${audioChunkCount}, Total bytes: ${totalAudioBytes}`);
407
+ }
408
+ catch (error) {
409
+ console.error('[ensembleLiveAudio] Error processing audio:', error);
410
+ }
411
+ })();
307
412
  yield {
308
413
  type: 'live_start',
309
414
  timestamp: new Date().toISOString(),
@@ -315,19 +420,63 @@ async function* ensembleLiveAudio(audioSource, agent, options) {
315
420
  for await (const event of session.getEventStream()) {
316
421
  eventCount++;
317
422
  console.log(`[ensembleLiveAudio] Event ${eventCount}:`, event.type);
423
+ if (event.type === 'cost_update') {
424
+ const costEvent = event;
425
+ if (costEvent.usage.totalCost) {
426
+ totalCost += costEvent.usage.totalCost;
427
+ }
428
+ if (costEvent.usage.totalTokens) {
429
+ totalTokens += costEvent.usage.totalTokens;
430
+ }
431
+ }
318
432
  yield event;
319
433
  }
320
434
  console.log(`[ensembleLiveAudio] Event processing completed. Total events: ${eventCount}`);
321
435
  }
436
+ catch (error) {
437
+ turnStatus = 'error';
438
+ turnEndReason = 'exception';
439
+ requestStatus = 'error';
440
+ requestError = error instanceof Error ? error.message : String(error);
441
+ throw error;
442
+ }
322
443
  finally {
323
- await audioProcessingTask;
324
- if (session.isActive()) {
444
+ if (audioProcessingTask) {
445
+ await audioProcessingTask;
446
+ }
447
+ if (session && session.isActive()) {
325
448
  await session.close();
326
449
  }
450
+ const duration = Date.now() - startTime;
451
+ if (requestStarted) {
452
+ await trace.emitRequestEnd(requestId, {
453
+ status: requestStatus,
454
+ error: requestError,
455
+ duration_ms: duration,
456
+ total_tokens: totalTokens,
457
+ total_cost: totalCost > 0 ? totalCost : undefined,
458
+ audio_chunks_sent: audioChunkCount,
459
+ audio_bytes_sent: totalAudioBytes,
460
+ session_id: session?.sessionId,
461
+ model,
462
+ provider: providerId,
463
+ });
464
+ }
465
+ await trace.emitTurnEnd(turnStatus, turnEndReason, {
466
+ error: requestError,
467
+ duration_ms: duration,
468
+ total_tokens: totalTokens,
469
+ total_cost: totalCost > 0 ? totalCost : undefined,
470
+ audio_chunks_sent: audioChunkCount,
471
+ audio_bytes_sent: totalAudioBytes,
472
+ session_id: session?.sessionId,
473
+ model,
474
+ provider: providerId,
475
+ });
327
476
  yield {
328
477
  type: 'live_end',
329
478
  timestamp: new Date().toISOString(),
330
- reason: 'completed',
479
+ reason: turnStatus === 'completed' ? 'completed' : 'error',
331
480
  };
332
481
  }
333
482
  }
@@ -339,6 +488,10 @@ async function ensembleLiveText(agent, options) {
339
488
  const sessionGenerator = ensembleLive(config, agent, options);
340
489
  const eventQueue = [];
341
490
  let eventPromiseResolve = null;
491
+ const firstEvent = await sessionGenerator.next();
492
+ if (!firstEvent.done && firstEvent.value) {
493
+ eventQueue.push(firstEvent.value);
494
+ }
342
495
  (async () => {
343
496
  for await (const event of sessionGenerator) {
344
497
  if (event.type === 'live_start') {
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_live.d.ts","sourceRoot":"","sources":["../../../core/ensemble_live.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,WAAW,EACX,SAAS,EAET,eAAe,EAWlB,MAAM,mBAAmB,CAAC;AA8B3B,wBAAuB,YAAY,CAC/B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,WAAW,GACtB,cAAc,CAAC,SAAS,CAAC,CAmT3B;AAUD,wBAAuB,iBAAiB,CACpC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,EACtC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,WAAW,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACF,cAAc,CAAC,SAAS,CAAC,CA+G3B;AASD,wBAAsB,gBAAgB,CAClC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC;IACP,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC,CA4DD"}
1
+ {"version":3,"file":"ensemble_live.d.ts","sourceRoot":"","sources":["../../../core/ensemble_live.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,WAAW,EACX,SAAS,EAET,eAAe,EAWlB,MAAM,mBAAmB,CAAC;AAgC3B,wBAAuB,YAAY,CAC/B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,WAAW,GACtB,cAAc,CAAC,SAAS,CAAC,CAiY3B;AAUD,wBAAuB,iBAAiB,CACpC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,EACtC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,WAAW,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACF,cAAc,CAAC,SAAS,CAAC,CA6L3B;AASD,wBAAsB,gBAAgB,CAClC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC;IACP,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC,CAkED"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_live.js","sourceRoot":"","sources":["../../../core/ensemble_live.ts"],"names":[],"mappings":";;AA8CA,oCAuTC;AAUD,8CAwHC;AASD,4CAmEC;AAliBD,4EAAyE;AACzE,4EAAwE;AACxE,oEAA6D;AAC7D,kFAAoE;AACpE,gFAAsE;AACtE,sEAAyD;AAwBlD,KAAK,SAAS,CAAC,CAAC,YAAY,CAC/B,MAAkB,EAClB,KAAsB,EACtB,OAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAuB,IAAI,CAAC;IACvC,IAAI,cAAc,GAA0B,IAAI,CAAC;IACjD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAA,qCAAiB,EAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QAGD,MAAM,QAAQ,GAAG,IAAA,oCAAgB,EAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;QAGD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,CAAC,WAAW,4BAA4B,CAAC,CAAC;QAClF,CAAC;QAGD,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;YAC1B,cAAc,GAAG,IAAI,mCAAc,EAAE,CAAC;YACtC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3C,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC1C,MAAM,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtC,CAAC;YACL,CAAC;QACL,CAAC;QAGD,OAAO,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAG1E,MAAM,UAAU,GAAmB;YAC/B,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM;SACT,CAAC;QACF,MAAM,UAAU,CAAC;QACjB,IAAA,+BAAS,EACL;YACI,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE;gBACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;aAC/B;YACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,EACD,KAAK,CACR,CAAC;QAGF,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;YAC3D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;oBACpC,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;wBAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;wBACjE,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3E,IAAI,OAAO,EAAE,CAAC;4BACV,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wBAC1C,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAGD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAEjD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,MAAM;YACV,CAAC;YAGD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,KAA4B,CAAC;gBAC/C,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC5B,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC3C,CAAC;gBACD,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC9B,WAAW,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/C,CAAC;YACL,CAAC;YAGD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,MAAM,aAAa,GAAG,KAA0B,CAAC;gBACjD,MAAM,WAAW,GAAqB,EAAE,CAAC;gBAGzC,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC;gBACxE,MAAM,wBAAwB,GAC1B,OAAO,EAAE,wBAAwB,IAAI,KAAK,CAAC,wBAAwB,IAAI,QAAQ,CAAC;gBAEpF,IAAI,cAAc,IAAI,YAAY,EAAE,CAAC;oBACjC,MAAM,UAAU,GAAmB;wBAC/B,IAAI,EAAE,OAAO;wBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,KAAK,EAAE,uBAAuB,YAAY,YAAY;wBACtD,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,KAAK;qBACrB,CAAC;oBACF,MAAM,UAAU,CAAC;oBACjB,MAAM;gBACV,CAAC;gBAED,IAAI,oBAAoB,IAAI,wBAAwB,EAAE,CAAC;oBACnD,MAAM,UAAU,GAAmB;wBAC/B,IAAI,EAAE,OAAO;wBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,KAAK,EAAE,sCAAsC,wBAAwB,YAAY;wBACjF,IAAI,EAAE,8BAA8B;wBACpC,WAAW,EAAE,IAAI;qBACpB,CAAC;oBACF,MAAM,UAAU,CAAC;oBACjB,SAAS;gBACb,CAAC;gBAGD,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;oBAE7C,MAAM,cAAc,GAAuB;wBACvC,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,QAAQ;qBACX,CAAC;oBACF,MAAM,cAAc,CAAC;oBAErB,IAAI,CAAC;wBAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;wBAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAEpF,IAAI,CAAC,IAAI,EAAE,CAAC;4BACR,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;wBACjE,CAAC;wBAGD,MAAM,MAAM,GAAG,MAAM,IAAA,0CAAc,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAG3D,MAAM,eAAe,GAAG,MAAM,IAAA,4CAAiB,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;wBAE5F,MAAM,cAAc,GAAmB;4BACnC,QAAQ;4BACR,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE;4BACxC,MAAM,EAAE,eAAe;yBAC1B,CAAC;wBAEF,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACjC,cAAc,EAAE,CAAC;wBACjB,oBAAoB,EAAE,CAAC;wBAGvB,MAAM,eAAe,GAAwB;4BACzC,IAAI,EAAE,aAAa;4BACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,cAAc;yBACjB,CAAC;wBACF,MAAM,eAAe,CAAC;wBAGtB,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;4BACrB,MAAM,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;wBAC7C,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC5E,MAAM,cAAc,GAAmB;4BACnC,QAAQ;4BACR,EAAE,EAAE,QAAQ,CAAC,EAAE;4BACf,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE;4BACxC,KAAK,EAAE,YAAY;yBACtB,CAAC;wBAEF,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBAGjC,MAAM,UAAU,GAAmB;4BAC/B,IAAI,EAAE,OAAO;4BACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,KAAK,EAAE,qBAAqB,YAAY,EAAE;4BAC1C,IAAI,EAAE,iBAAiB;4BACvB,WAAW,EAAE,IAAI;yBACpB,CAAC;wBACF,MAAM,UAAU,CAAC;wBAGjB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;4BACpB,MAAM,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;wBAC5C,CAAC;oBACL,CAAC;gBACL,CAAC;gBAGD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAC/C,MAAM,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAChD,CAAC;gBAGD,MAAM,aAAa,GAAsB;oBACrC,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,UAAU,EAAE,cAAc;iBAC7B,CAAC;gBACF,MAAM,aAAa,CAAC;YACxB,CAAC;YAGD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACjC,oBAAoB,GAAG,CAAC,CAAC;gBACzB,MAAM,SAAS,GAAG,KAA8B,CAAC;gBAGjD,IAAI,cAAc,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACtC,MAAM,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;YAGD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC/B,oBAAoB,GAAG,CAAC,CAAC;YAC7B,CAAC;YAGD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,IAAA,+BAAS,EACL;oBACI,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE;wBACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;qBAC/B;oBACD,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACtC,EACD,KAAK,CACR,CAAC;YACN,CAAC;YAGD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAmB;YAC/B,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe;YACtF,WAAW,EAAE,KAAK;SACrB,CAAC;QACF,MAAM,UAAU,CAAC;QAGjB,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QAEP,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAChC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QACD,eAAe,GAAG,KAAK,CAAC;QAGxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,QAAQ,GAAiB;YAC3B,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;YAC/C,QAAQ;YACR,WAAW;YACX,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACnD,CAAC;QACF,MAAM,QAAQ,CAAC;QAEf,IAAA,+BAAS,EACL;YACI,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE;gBACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;aAC/B;YACD,mBAAmB,EAAE,QAAQ;YAC7B,YAAY,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACnD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,EACD,KAAK,CACR,CAAC;IACN,CAAC;AACL,CAAC;AAUM,KAAK,SAAS,CAAC,CAAC,iBAAiB,CACpC,WAAsC,EACtC,KAAsB,EACtB,OAKC;IAED,MAAM,MAAM,GAAe;QACvB,kBAAkB,EAAE,CAAC,OAAO,CAAC;QAC7B,YAAY,EAAE,OAAO,EAAE,KAAK;YACxB,CAAC,CAAC;gBACI,WAAW,EAAE;oBACT,mBAAmB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE;iBACpD;gBACD,YAAY,EAAE,OAAO,CAAC,QAAQ;aACjC;YACH,CAAC,CAAC,SAAS;QACf,uBAAuB,EAAE,EAAE;QAC3B,wBAAwB,EAAE,EAAE;KAC/B,CAAC;IAGF,IAAI,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACjC,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAC7B,MAAM,CAAC,WAAW,GAAG;YACjB,cAAc,EAAE,IAAI;SACvB,CAAC;IACN,CAAC;IAGD,MAAM,KAAK,GAAG,MAAM,IAAA,qCAAiB,EAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,oCAAgB,EAAC,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAGD,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAGvE,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,mBAAmB,GAAG,CAAC,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;oBAC/E,MAAM;gBACV,CAAC;gBAED,eAAe,EAAE,CAAC;gBAClB,eAAe,IAAI,KAAK,CAAC,MAAM,CAAC;gBAGhC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CACP,2CAA2C,eAAe,WAAW,KAAK,CAAC,MAAM,kBAAkB,eAAe,QAAQ,CAC7H,CAAC;gBACF,MAAM,OAAO,CAAC,SAAS,CAAC;oBACpB,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,sBAAsB;iBACnC,CAAC,CAAC;YACP,CAAC;YACD,OAAO,CAAC,GAAG,CACP,iEAAiE,eAAe,kBAAkB,eAAe,EAAE,CACtH,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IAGL,IAAI,CAAC;QAED,MAAM;YACF,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM;SACS,CAAC;QAGpB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YACjD,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iEAAiE,UAAU,EAAE,CAAC,CAAC;IAC/F,CAAC;YAAS,CAAC;QAEP,MAAM,mBAAmB,CAAC;QAG1B,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAGD,MAAM;YACF,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,WAAW;SACN,CAAC;IACtB,CAAC;AACL,CAAC;AASM,KAAK,UAAU,gBAAgB,CAClC,KAAsB,EACtB,OAAqB;IAMrB,MAAM,MAAM,GAAe;QACvB,kBAAkB,EAAE,CAAC,MAAM,CAAC;KAC/B,CAAC;IAGF,IAAI,OAAO,GAAuB,IAAI,CAAC;IACvC,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAG9D,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,IAAI,mBAAmB,GAAwD,IAAI,CAAC;IAGpF,CAAC,KAAK,IAAI,EAAE;QACR,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAElC,CAAC;YAED,IAAI,mBAAmB,EAAE,CAAC;gBACtB,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnD,mBAAmB,GAAG,IAAI,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QAGD,IAAI,mBAAmB,EAAE,CAAC;YACtB,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACH,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QACD,SAAS,EAAE,KAAK,SAAS,CAAC;YACtB,OAAO,IAAI,EAAE,CAAC;gBACV,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,UAAU,CAAC,KAAK,EAAG,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAA4B,OAAO,CAAC,EAAE;wBAClE,mBAAmB,GAAG,OAAO,CAAC;oBAClC,CAAC,CAAC,CAAC;oBACH,IAAI,MAAM,CAAC,IAAI;wBAAE,MAAM;oBACvB,IAAI,MAAM,CAAC,KAAK;wBAAE,MAAM,MAAM,CAAC,KAAK,CAAC;gBACzC,CAAC;YACL,CAAC;QACL,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YACd,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAChC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"ensemble_live.js","sourceRoot":"","sources":["../../../core/ensemble_live.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ const verification_js_1 = require("../utils/verification.cjs");
11
11
  const image_to_text_js_1 = require("../utils/image_to_text.cjs");
12
12
  const pause_controller_js_1 = require("../utils/pause_controller.cjs");
13
13
  const event_controller_js_1 = require("../utils/event_controller.cjs");
14
+ const trace_context_js_1 = require("../utils/trace_context.cjs");
14
15
  const message_converter_js_1 = require("../utils/message_converter.cjs");
15
16
  const truncate_utils_js_1 = require("../utils/truncate_utils.cjs");
16
17
  const MAX_ERROR_ATTEMPTS = 5;
@@ -47,29 +48,48 @@ async function* ensembleRequest(messages, agent = {}) {
47
48
  preserveSystemMessages: true,
48
49
  compactionThreshold: 0.7,
49
50
  });
51
+ const trace = (0, trace_context_js_1.createTraceContext)(agent, 'chat');
52
+ let totalToolCalls = 0;
53
+ let toolCallRounds = 0;
54
+ let errorRounds = 0;
55
+ let turnStatus = 'completed';
56
+ let turnEndReason = 'completed';
57
+ let turnError;
58
+ const maxToolCalls = agent?.maxToolCalls ?? 200;
59
+ const maxRounds = agent?.maxToolCallRoundsPerTurn ?? Infinity;
60
+ let hasToolCalls = false;
61
+ let hasError = false;
62
+ let lastMessageContent = '';
63
+ const modelHistory = [];
64
+ await trace.emitTurnStart({
65
+ input_messages: conversationHistory,
66
+ });
50
67
  try {
51
- let totalToolCalls = 0;
52
- let toolCallRounds = 0;
53
- let errorRounds = 0;
54
- const maxToolCalls = agent?.maxToolCalls ?? 200;
55
- const maxRounds = agent?.maxToolCallRoundsPerTurn ?? Infinity;
56
- let hasToolCalls = false;
57
- let hasError = false;
58
- let lastMessageContent = '';
59
- const modelHistory = [];
60
68
  do {
61
69
  hasToolCalls = false;
62
70
  hasError = false;
71
+ let currentRoundRequestId;
72
+ const currentRoundMessages = [];
73
+ const currentRoundErrors = [];
74
+ let currentRoundToolCalls = 0;
75
+ let currentRoundRequestDuration;
76
+ let currentRoundDurationWithTools;
77
+ let currentRoundRequestCost;
63
78
  const model = await (0, model_provider_js_1.getModelFromAgent)(agent, 'reasoning_mini', modelHistory);
64
79
  modelHistory.push(model);
65
- const stream = executeRound(model, agent, history, totalToolCalls, maxToolCalls);
80
+ const stream = executeRound(model, agent, history, totalToolCalls, maxToolCalls, trace);
66
81
  for await (const event of stream) {
67
82
  yield event;
68
83
  switch (event.type) {
84
+ case 'agent_start': {
85
+ currentRoundRequestId = event.request_id;
86
+ break;
87
+ }
69
88
  case 'message_complete': {
70
89
  const messageEvent = event;
71
90
  if (messageEvent.content) {
72
91
  lastMessageContent = messageEvent.content;
92
+ currentRoundMessages.push(messageEvent.content);
73
93
  }
74
94
  break;
75
95
  }
@@ -77,6 +97,12 @@ async function* ensembleRequest(messages, agent = {}) {
77
97
  const toolEvent = event;
78
98
  if (toolEvent.tool_call) {
79
99
  const toolName = toolEvent.tool_call.function.name;
100
+ currentRoundToolCalls += 1;
101
+ await trace.emitToolStart(event.request_id, toolEvent.tool_call.id, {
102
+ tool_name: toolName,
103
+ arguments: toolEvent.tool_call.function.arguments,
104
+ arguments_formatted: toolEvent.tool_call.function.arguments_formatted,
105
+ });
80
106
  if (toolName !== 'task_complete' && toolName !== 'task_fatal_error') {
81
107
  hasToolCalls = true;
82
108
  }
@@ -84,8 +110,31 @@ async function* ensembleRequest(messages, agent = {}) {
84
110
  ++totalToolCalls;
85
111
  break;
86
112
  }
113
+ case 'tool_done': {
114
+ const toolEvent = event;
115
+ if (toolEvent.tool_call) {
116
+ await trace.emitToolDone(event.request_id, toolEvent.tool_call.id, {
117
+ tool_name: toolEvent.tool_call.function.name,
118
+ call_id: toolEvent.result?.call_id,
119
+ output: toolEvent.result?.output,
120
+ error: toolEvent.result?.error,
121
+ });
122
+ }
123
+ break;
124
+ }
125
+ case 'agent_done': {
126
+ const agentDoneEvent = event;
127
+ currentRoundRequestDuration = agentDoneEvent.request_duration;
128
+ currentRoundDurationWithTools = agentDoneEvent.duration_with_tools;
129
+ currentRoundRequestCost = agentDoneEvent.request_cost;
130
+ break;
131
+ }
87
132
  case 'error': {
88
133
  hasError = true;
134
+ const errorEvent = event;
135
+ if (errorEvent.error) {
136
+ currentRoundErrors.push(String(errorEvent.error));
137
+ }
89
138
  break;
90
139
  }
91
140
  }
@@ -99,13 +148,41 @@ async function* ensembleRequest(messages, agent = {}) {
99
148
  if (hasError) {
100
149
  ++errorRounds;
101
150
  }
151
+ const willRetryForError = hasError && errorRounds < MAX_ERROR_ATTEMPTS;
152
+ const willContinueForTools = hasToolCalls && toolCallRounds < maxRounds && totalToolCalls < maxToolCalls;
153
+ const willContinue = willRetryForError || willContinueForTools;
154
+ let requestStatus = 'completed';
155
+ if (hasError) {
156
+ requestStatus = willContinue ? 'error_retrying' : 'error';
157
+ }
158
+ else if (hasToolCalls) {
159
+ requestStatus = willContinue ? 'waiting_for_followup_request' : 'tool_limit_reached';
160
+ }
161
+ if (currentRoundRequestId) {
162
+ await trace.emitRequestEnd(currentRoundRequestId, {
163
+ status: requestStatus,
164
+ will_continue: willContinue,
165
+ tool_calls: currentRoundToolCalls,
166
+ final_response: currentRoundMessages.length > 0 ? currentRoundMessages.join('\n') : undefined,
167
+ errors: currentRoundErrors.length > 0 ? currentRoundErrors : undefined,
168
+ request_duration_ms: currentRoundRequestDuration,
169
+ duration_with_tools_ms: currentRoundDurationWithTools,
170
+ request_cost: currentRoundRequestCost,
171
+ });
172
+ }
102
173
  } while ((hasError && errorRounds < MAX_ERROR_ATTEMPTS) ||
103
174
  (hasToolCalls && toolCallRounds < maxRounds && totalToolCalls < maxToolCalls));
104
175
  if (hasToolCalls && toolCallRounds >= maxRounds) {
105
176
  console.log('[ensembleRequest] Tool call rounds limit reached');
177
+ turnEndReason = 'max_tool_call_rounds_reached';
106
178
  }
107
179
  else if (hasToolCalls && totalToolCalls >= maxToolCalls) {
108
180
  console.log('[ensembleRequest] Total tool calls limit reached');
181
+ turnEndReason = 'max_tool_calls_reached';
182
+ }
183
+ else if (hasError && errorRounds >= MAX_ERROR_ATTEMPTS) {
184
+ turnStatus = 'error';
185
+ turnEndReason = 'max_error_attempts_reached';
109
186
  }
110
187
  if (agent?.verifier && lastMessageContent) {
111
188
  const verificationResult = await performVerification(agent, lastMessageContent, await history.getMessages());
@@ -118,6 +195,9 @@ async function* ensembleRequest(messages, agent = {}) {
118
195
  }
119
196
  catch (err) {
120
197
  const error = err;
198
+ turnStatus = 'error';
199
+ turnEndReason = 'exception';
200
+ turnError = error.message || 'Unknown error';
121
201
  yield {
122
202
  type: 'error',
123
203
  error: error.message || 'Unknown error',
@@ -128,13 +208,19 @@ async function* ensembleRequest(messages, agent = {}) {
128
208
  };
129
209
  }
130
210
  finally {
211
+ await trace.emitTurnEnd(turnStatus, turnEndReason, {
212
+ error: turnError,
213
+ tool_call_rounds: toolCallRounds,
214
+ total_tool_calls: totalToolCalls,
215
+ error_rounds: errorRounds,
216
+ });
131
217
  yield {
132
218
  type: 'stream_end',
133
219
  timestamp: new Date().toISOString(),
134
220
  };
135
221
  }
136
222
  }
137
- async function* executeRound(model, agent, history, currentToolCalls, maxToolCalls) {
223
+ async function* executeRound(model, agent, history, currentToolCalls, maxToolCalls, trace) {
138
224
  const requestId = (0, crypto_1.randomUUID)();
139
225
  const startTime = Date.now();
140
226
  let totalCost = 0;
@@ -163,6 +249,16 @@ async function* executeRound(model, agent, history, currentToolCalls, maxToolCal
163
249
  }
164
250
  await (0, pause_controller_js_1.waitWhilePaused)(100, agent.abortSignal);
165
251
  const provider = (0, model_provider_js_1.getModelProvider)(model);
252
+ await trace.emitRequestStart(requestId, {
253
+ agent_id: agent.agent_id,
254
+ provider: provider.provider_id,
255
+ model,
256
+ payload: {
257
+ messages,
258
+ model_settings: agent.modelSettings,
259
+ tool_names: agent.tools?.map(tool => tool.definition.function.name) || [],
260
+ },
261
+ });
166
262
  const stream = 'createResponseStreamWithRetry' in provider
167
263
  ? provider.createResponseStreamWithRetry(messages, model, agent, requestId)
168
264
  : provider.createResponseStream(messages, model, agent, requestId);
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_request.d.ts","sourceRoot":"","sources":["../../../core/ensemble_request.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EACnB,aAAa,EAGb,eAAe,EAKlB,MAAM,mBAAmB,CAAC;AA0B3B,wBAAuB,eAAe,CAClC,QAAQ,EAAE,aAAa,EACvB,KAAK,GAAE,eAAoB,GAC5B,cAAc,CAAC,mBAAmB,CAAC,CA8JrC;AAicD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAG9G"}
1
+ {"version":3,"file":"ensemble_request.d.ts","sourceRoot":"","sources":["../../../core/ensemble_request.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,mBAAmB,EACnB,aAAa,EAGb,eAAe,EAKlB,MAAM,mBAAmB,CAAC;AA2B3B,wBAAuB,eAAe,CAClC,QAAQ,EAAE,aAAa,EACvB,KAAK,GAAE,eAAoB,GAC5B,cAAc,CAAC,mBAAmB,CAAC,CAwPrC;AA6cD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAG9G"}