@just-every/ensemble 0.2.186 → 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 (79) 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/model_providers/gemini.cjs +91 -10
  24. package/dist/cjs/model_providers/gemini.d.ts.map +1 -1
  25. package/dist/cjs/model_providers/gemini.js.map +1 -1
  26. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  27. package/dist/cjs/types/types.d.ts +15 -0
  28. package/dist/cjs/types/types.d.ts.map +1 -1
  29. package/dist/cjs/utils/message_converter.cjs +1 -0
  30. package/dist/cjs/utils/message_converter.d.ts.map +1 -1
  31. package/dist/cjs/utils/message_converter.js.map +1 -1
  32. package/dist/cjs/utils/trace_context.cjs +96 -0
  33. package/dist/cjs/utils/trace_context.d.ts +20 -0
  34. package/dist/cjs/utils/trace_context.d.ts.map +1 -0
  35. package/dist/cjs/utils/trace_context.js.map +1 -0
  36. package/dist/cjs/utils/trace_logger.cjs +66 -0
  37. package/dist/cjs/utils/trace_logger.d.ts +12 -0
  38. package/dist/cjs/utils/trace_logger.d.ts.map +1 -0
  39. package/dist/cjs/utils/trace_logger.js.map +1 -0
  40. package/dist/core/ensemble_embed.d.ts.map +1 -1
  41. package/dist/core/ensemble_embed.js +94 -40
  42. package/dist/core/ensemble_embed.js.map +1 -1
  43. package/dist/core/ensemble_image.d.ts.map +1 -1
  44. package/dist/core/ensemble_image.js +47 -8
  45. package/dist/core/ensemble_image.js.map +1 -1
  46. package/dist/core/ensemble_listen.d.ts.map +1 -1
  47. package/dist/core/ensemble_listen.js +151 -74
  48. package/dist/core/ensemble_listen.js.map +1 -1
  49. package/dist/core/ensemble_live.d.ts.map +1 -1
  50. package/dist/core/ensemble_live.js +193 -40
  51. package/dist/core/ensemble_live.js.map +1 -1
  52. package/dist/core/ensemble_request.d.ts.map +1 -1
  53. package/dist/core/ensemble_request.js +107 -11
  54. package/dist/core/ensemble_request.js.map +1 -1
  55. package/dist/core/ensemble_voice.d.ts.map +1 -1
  56. package/dist/core/ensemble_voice.js +190 -146
  57. package/dist/core/ensemble_voice.js.map +1 -1
  58. package/dist/index.d.ts +1 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +1 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/model_providers/gemini.d.ts.map +1 -1
  63. package/dist/model_providers/gemini.js +91 -10
  64. package/dist/model_providers/gemini.js.map +1 -1
  65. package/dist/tsconfig.tsbuildinfo +1 -1
  66. package/dist/types/types.d.ts +15 -0
  67. package/dist/types/types.d.ts.map +1 -1
  68. package/dist/utils/message_converter.d.ts.map +1 -1
  69. package/dist/utils/message_converter.js +1 -0
  70. package/dist/utils/message_converter.js.map +1 -1
  71. package/dist/utils/trace_context.d.ts +20 -0
  72. package/dist/utils/trace_context.d.ts.map +1 -0
  73. package/dist/utils/trace_context.js +91 -0
  74. package/dist/utils/trace_context.js.map +1 -0
  75. package/dist/utils/trace_logger.d.ts +12 -0
  76. package/dist/utils/trace_logger.d.ts.map +1 -0
  77. package/dist/utils/trace_logger.js +58 -0
  78. package/dist/utils/trace_logger.js.map +1 -0
  79. package/package.json +1 -1
@@ -4,8 +4,12 @@ import { MessageHistory } from '../utils/message_history.js';
4
4
  import { handleToolCall } from '../utils/tool_execution_manager.js';
5
5
  import { processToolResult } from '../utils/tool_result_processor.js';
6
6
  import { emitEvent } from '../utils/event_controller.js';
7
+ import { createTraceContext } from '../utils/trace_context.js';
8
+ import { randomUUID } from 'crypto';
7
9
  export async function* ensembleLive(config, agent, options) {
8
10
  const startTime = Date.now();
11
+ const trace = createTraceContext(agent, 'live_session');
12
+ const requestId = randomUUID();
9
13
  let session = null;
10
14
  let messageHistory = null;
11
15
  let totalToolCalls = 0;
@@ -13,18 +17,42 @@ export async function* ensembleLive(config, agent, options) {
13
17
  let isSessionActive = true;
14
18
  let totalCost = 0;
15
19
  let totalTokens = 0;
20
+ let requestStarted = false;
21
+ let turnStatus = 'completed';
22
+ let turnEndReason = 'completed';
23
+ let requestStatus = 'completed';
24
+ let requestError;
25
+ let resolvedModel;
26
+ let resolvedProviderId;
27
+ await trace.emitTurnStart({
28
+ config,
29
+ options,
30
+ });
16
31
  try {
17
32
  const model = await getModelFromAgent(agent);
18
33
  if (!model) {
19
34
  throw new Error('No model specified in agent configuration');
20
35
  }
36
+ resolvedModel = model;
21
37
  const provider = getModelProvider(model);
22
38
  if (!provider) {
23
39
  throw new Error(`No provider found for model: ${model}`);
24
40
  }
41
+ resolvedProviderId = provider.provider_id;
25
42
  if (!provider.createLiveSession) {
26
43
  throw new Error(`Provider ${provider.provider_id} does not support Live API`);
27
44
  }
45
+ await trace.emitRequestStart(requestId, {
46
+ agent_id: agent.agent_id,
47
+ provider: provider.provider_id,
48
+ model,
49
+ payload: {
50
+ config,
51
+ options,
52
+ history_count: options?.messageHistory?.length ?? 0,
53
+ },
54
+ });
55
+ requestStarted = true;
28
56
  if (options?.messageHistory) {
29
57
  messageHistory = new MessageHistory();
30
58
  for (const message of options.messageHistory) {
@@ -84,10 +112,14 @@ export async function* ensembleLive(config, agent, options) {
84
112
  const maxToolCalls = options?.maxToolCalls ?? agent.maxToolCalls ?? 200;
85
113
  const maxToolCallRoundsPerTurn = options?.maxToolCallRoundsPerTurn ?? agent.maxToolCallRoundsPerTurn ?? Infinity;
86
114
  if (totalToolCalls >= maxToolCalls) {
115
+ turnStatus = 'error';
116
+ turnEndReason = 'max_tool_calls_exceeded';
117
+ requestStatus = 'error';
118
+ requestError = `Maximum tool calls (${maxToolCalls}) exceeded`;
87
119
  const errorEvent = {
88
120
  type: 'error',
89
121
  timestamp: new Date().toISOString(),
90
- error: `Maximum tool calls (${maxToolCalls}) exceeded`,
122
+ error: requestError,
91
123
  code: 'MAX_TOOL_CALLS_EXCEEDED',
92
124
  recoverable: false,
93
125
  };
@@ -106,6 +138,11 @@ export async function* ensembleLive(config, agent, options) {
106
138
  continue;
107
139
  }
108
140
  for (const toolCall of toolCallEvent.toolCalls) {
141
+ await trace.emitToolStart(requestId, toolCall.id, {
142
+ tool_name: toolCall.function.name,
143
+ call_id: toolCall.call_id || toolCall.id,
144
+ arguments: toolCall.function.arguments,
145
+ });
109
146
  const toolStartEvent = {
110
147
  type: 'tool_start',
111
148
  timestamp: new Date().toISOString(),
@@ -129,6 +166,11 @@ export async function* ensembleLive(config, agent, options) {
129
166
  toolResults.push(toolCallResult);
130
167
  totalToolCalls++;
131
168
  currentTurnToolCalls++;
169
+ await trace.emitToolDone(requestId, toolCall.id, {
170
+ tool_name: toolCall.function.name,
171
+ call_id: toolCallResult.call_id,
172
+ output: toolCallResult.output,
173
+ });
132
174
  const toolResultEvent = {
133
175
  type: 'tool_result',
134
176
  timestamp: new Date().toISOString(),
@@ -148,6 +190,11 @@ export async function* ensembleLive(config, agent, options) {
148
190
  error: errorMessage,
149
191
  };
150
192
  toolResults.push(toolCallResult);
193
+ await trace.emitToolDone(requestId, toolCall.id, {
194
+ tool_name: toolCall.function.name,
195
+ call_id: toolCallResult.call_id,
196
+ error: errorMessage,
197
+ });
151
198
  const errorEvent = {
152
199
  type: 'error',
153
200
  timestamp: new Date().toISOString(),
@@ -199,6 +246,10 @@ export async function* ensembleLive(config, agent, options) {
199
246
  }
200
247
  catch (error) {
201
248
  const errorMessage = error instanceof Error ? error.message : String(error);
249
+ turnStatus = 'error';
250
+ turnEndReason = 'exception';
251
+ requestStatus = 'error';
252
+ requestError = errorMessage;
202
253
  const errorEvent = {
203
254
  type: 'error',
204
255
  timestamp: new Date().toISOString(),
@@ -215,10 +266,33 @@ export async function* ensembleLive(config, agent, options) {
215
266
  }
216
267
  isSessionActive = false;
217
268
  const duration = Date.now() - startTime;
269
+ if (requestStarted) {
270
+ await trace.emitRequestEnd(requestId, {
271
+ status: requestStatus,
272
+ error: requestError,
273
+ duration_ms: duration,
274
+ total_tokens: totalTokens,
275
+ total_cost: totalCost > 0 ? totalCost : undefined,
276
+ total_tool_calls: totalToolCalls,
277
+ session_id: session?.sessionId,
278
+ model: resolvedModel,
279
+ provider: resolvedProviderId,
280
+ });
281
+ }
282
+ await trace.emitTurnEnd(turnStatus, turnEndReason, {
283
+ error: requestError,
284
+ duration_ms: duration,
285
+ total_tokens: totalTokens,
286
+ total_cost: totalCost > 0 ? totalCost : undefined,
287
+ total_tool_calls: totalToolCalls,
288
+ session_id: session?.sessionId,
289
+ model: resolvedModel,
290
+ provider: resolvedProviderId,
291
+ });
218
292
  const endEvent = {
219
293
  type: 'live_end',
220
294
  timestamp: new Date().toISOString(),
221
- reason: isSessionActive ? 'completed' : 'error',
295
+ reason: turnStatus === 'completed' ? 'completed' : 'error',
222
296
  duration,
223
297
  totalTokens,
224
298
  totalCost: totalCost > 0 ? totalCost : undefined,
@@ -239,6 +313,16 @@ export async function* ensembleLive(config, agent, options) {
239
313
  }
240
314
  }
241
315
  export async function* ensembleLiveAudio(audioSource, agent, options) {
316
+ const trace = createTraceContext(agent, 'live_audio_session');
317
+ const requestId = randomUUID();
318
+ let requestStarted = false;
319
+ let turnStatus = 'completed';
320
+ let turnEndReason = 'completed';
321
+ let requestStatus = 'completed';
322
+ let requestError;
323
+ let totalCost = 0;
324
+ let totalTokens = 0;
325
+ const startTime = Date.now();
242
326
  const config = {
243
327
  responseModalities: ['AUDIO'],
244
328
  speechConfig: options?.voice
@@ -260,45 +344,66 @@ export async function* ensembleLiveAudio(audioSource, agent, options) {
260
344
  proactiveAudio: true,
261
345
  };
262
346
  }
263
- const model = await getModelFromAgent(agent);
264
- console.log('[ensembleLiveAudio] Using model:', model);
265
- if (!model) {
266
- throw new Error('No model specified in agent configuration');
267
- }
268
- const provider = getModelProvider(model);
269
- console.log('[ensembleLiveAudio] Provider:', provider?.provider_id);
270
- if (!provider || !provider.createLiveSession) {
271
- throw new Error(`Provider does not support Live API for model: ${model}`);
272
- }
273
- console.log('[ensembleLiveAudio] Creating live session...');
274
- const session = await provider.createLiveSession(config, agent, model, options);
275
- console.log('[ensembleLiveAudio] Session created:', session.sessionId);
347
+ await trace.emitTurnStart({
348
+ config,
349
+ options,
350
+ audio_source_type: 'async_iterable',
351
+ });
352
+ let session = null;
353
+ let model;
354
+ let providerId;
276
355
  let audioChunkCount = 0;
277
356
  let totalAudioBytes = 0;
278
- const audioProcessingTask = (async () => {
279
- try {
280
- console.log('[ensembleLiveAudio] Starting audio processing task...');
281
- for await (const chunk of audioSource) {
282
- if (!session.isActive()) {
283
- console.log('[ensembleLiveAudio] Session inactive, stopping audio processing');
284
- break;
285
- }
286
- audioChunkCount++;
287
- totalAudioBytes += chunk.length;
288
- const base64Data = Buffer.from(chunk).toString('base64');
289
- console.log(`[ensembleLiveAudio] Sending audio chunk ${audioChunkCount}, size: ${chunk.length} bytes, total: ${totalAudioBytes} bytes`);
290
- await session.sendAudio({
291
- data: base64Data,
292
- mimeType: 'audio/pcm;rate=16000',
293
- });
294
- }
295
- console.log(`[ensembleLiveAudio] Audio processing completed. Total chunks: ${audioChunkCount}, Total bytes: ${totalAudioBytes}`);
357
+ let audioProcessingTask = null;
358
+ try {
359
+ model = await getModelFromAgent(agent);
360
+ console.log('[ensembleLiveAudio] Using model:', model);
361
+ if (!model) {
362
+ throw new Error('No model specified in agent configuration');
296
363
  }
297
- catch (error) {
298
- console.error('[ensembleLiveAudio] Error processing audio:', error);
364
+ const provider = getModelProvider(model);
365
+ providerId = provider?.provider_id;
366
+ console.log('[ensembleLiveAudio] Provider:', provider?.provider_id);
367
+ if (!provider || !provider.createLiveSession) {
368
+ throw new Error(`Provider does not support Live API for model: ${model}`);
299
369
  }
300
- })();
301
- try {
370
+ await trace.emitRequestStart(requestId, {
371
+ agent_id: agent.agent_id,
372
+ provider: provider.provider_id,
373
+ model,
374
+ payload: {
375
+ config,
376
+ options,
377
+ audio_source_type: 'async_iterable',
378
+ },
379
+ });
380
+ requestStarted = true;
381
+ console.log('[ensembleLiveAudio] Creating live session...');
382
+ session = await provider.createLiveSession(config, agent, model, options);
383
+ console.log('[ensembleLiveAudio] Session created:', session.sessionId);
384
+ audioProcessingTask = (async () => {
385
+ try {
386
+ console.log('[ensembleLiveAudio] Starting audio processing task...');
387
+ for await (const chunk of audioSource) {
388
+ if (!session || !session.isActive()) {
389
+ console.log('[ensembleLiveAudio] Session inactive, stopping audio processing');
390
+ break;
391
+ }
392
+ audioChunkCount++;
393
+ totalAudioBytes += chunk.length;
394
+ const base64Data = Buffer.from(chunk).toString('base64');
395
+ console.log(`[ensembleLiveAudio] Sending audio chunk ${audioChunkCount}, size: ${chunk.length} bytes, total: ${totalAudioBytes} bytes`);
396
+ await session.sendAudio({
397
+ data: base64Data,
398
+ mimeType: 'audio/pcm;rate=16000',
399
+ });
400
+ }
401
+ console.log(`[ensembleLiveAudio] Audio processing completed. Total chunks: ${audioChunkCount}, Total bytes: ${totalAudioBytes}`);
402
+ }
403
+ catch (error) {
404
+ console.error('[ensembleLiveAudio] Error processing audio:', error);
405
+ }
406
+ })();
302
407
  yield {
303
408
  type: 'live_start',
304
409
  timestamp: new Date().toISOString(),
@@ -310,19 +415,63 @@ export async function* ensembleLiveAudio(audioSource, agent, options) {
310
415
  for await (const event of session.getEventStream()) {
311
416
  eventCount++;
312
417
  console.log(`[ensembleLiveAudio] Event ${eventCount}:`, event.type);
418
+ if (event.type === 'cost_update') {
419
+ const costEvent = event;
420
+ if (costEvent.usage.totalCost) {
421
+ totalCost += costEvent.usage.totalCost;
422
+ }
423
+ if (costEvent.usage.totalTokens) {
424
+ totalTokens += costEvent.usage.totalTokens;
425
+ }
426
+ }
313
427
  yield event;
314
428
  }
315
429
  console.log(`[ensembleLiveAudio] Event processing completed. Total events: ${eventCount}`);
316
430
  }
431
+ catch (error) {
432
+ turnStatus = 'error';
433
+ turnEndReason = 'exception';
434
+ requestStatus = 'error';
435
+ requestError = error instanceof Error ? error.message : String(error);
436
+ throw error;
437
+ }
317
438
  finally {
318
- await audioProcessingTask;
319
- if (session.isActive()) {
439
+ if (audioProcessingTask) {
440
+ await audioProcessingTask;
441
+ }
442
+ if (session && session.isActive()) {
320
443
  await session.close();
321
444
  }
445
+ const duration = Date.now() - startTime;
446
+ if (requestStarted) {
447
+ await trace.emitRequestEnd(requestId, {
448
+ status: requestStatus,
449
+ error: requestError,
450
+ duration_ms: duration,
451
+ total_tokens: totalTokens,
452
+ total_cost: totalCost > 0 ? totalCost : undefined,
453
+ audio_chunks_sent: audioChunkCount,
454
+ audio_bytes_sent: totalAudioBytes,
455
+ session_id: session?.sessionId,
456
+ model,
457
+ provider: providerId,
458
+ });
459
+ }
460
+ await trace.emitTurnEnd(turnStatus, turnEndReason, {
461
+ error: requestError,
462
+ duration_ms: duration,
463
+ total_tokens: totalTokens,
464
+ total_cost: totalCost > 0 ? totalCost : undefined,
465
+ audio_chunks_sent: audioChunkCount,
466
+ audio_bytes_sent: totalAudioBytes,
467
+ session_id: session?.sessionId,
468
+ model,
469
+ provider: providerId,
470
+ });
322
471
  yield {
323
472
  type: 'live_end',
324
473
  timestamp: new Date().toISOString(),
325
- reason: 'completed',
474
+ reason: turnStatus === 'completed' ? 'completed' : 'error',
326
475
  };
327
476
  }
328
477
  }
@@ -334,6 +483,10 @@ export async function ensembleLiveText(agent, options) {
334
483
  const sessionGenerator = ensembleLive(config, agent, options);
335
484
  const eventQueue = [];
336
485
  let eventPromiseResolve = null;
486
+ const firstEvent = await sessionGenerator.next();
487
+ if (!firstEvent.done && firstEvent.value) {
488
+ eventQueue.push(firstEvent.value);
489
+ }
337
490
  (async () => {
338
491
  for await (const event of sessionGenerator) {
339
492
  if (event.type === 'live_start') {
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_live.js","sourceRoot":"","sources":["../../core/ensemble_live.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAwBzD,MAAM,CAAC,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,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QAGD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,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,cAAc,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,SAAS,CACL;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,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAG3D,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,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,SAAS,CACL;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,SAAS,CACL;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;AAUD,MAAM,CAAC,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,iBAAiB,CAAC,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,gBAAgB,CAAC,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;AASD,MAAM,CAAC,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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"}
@@ -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"}
@@ -7,6 +7,7 @@ import { verifyOutput, setEnsembleRequestFunction } from '../utils/verification.
7
7
  import { setEnsembleRequestFunction as setImageToTextFunction } from '../utils/image_to_text.js';
8
8
  import { waitWhilePaused } from '../utils/pause_controller.js';
9
9
  import { emitEvent } from '../utils/event_controller.js';
10
+ import { createTraceContext } from '../utils/trace_context.js';
10
11
  import { convertToThinkingMessage, convertToOutputMessage, convertToFunctionCall, convertToFunctionCallOutput, } from '../utils/message_converter.js';
11
12
  import { truncateLargeValues } from '../utils/truncate_utils.js';
12
13
  const MAX_ERROR_ATTEMPTS = 5;
@@ -43,29 +44,48 @@ export async function* ensembleRequest(messages, agent = {}) {
43
44
  preserveSystemMessages: true,
44
45
  compactionThreshold: 0.7,
45
46
  });
47
+ const trace = createTraceContext(agent, 'chat');
48
+ let totalToolCalls = 0;
49
+ let toolCallRounds = 0;
50
+ let errorRounds = 0;
51
+ let turnStatus = 'completed';
52
+ let turnEndReason = 'completed';
53
+ let turnError;
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
+ await trace.emitTurnStart({
61
+ input_messages: conversationHistory,
62
+ });
46
63
  try {
47
- let totalToolCalls = 0;
48
- let toolCallRounds = 0;
49
- let errorRounds = 0;
50
- const maxToolCalls = agent?.maxToolCalls ?? 200;
51
- const maxRounds = agent?.maxToolCallRoundsPerTurn ?? Infinity;
52
- let hasToolCalls = false;
53
- let hasError = false;
54
- let lastMessageContent = '';
55
- const modelHistory = [];
56
64
  do {
57
65
  hasToolCalls = false;
58
66
  hasError = false;
67
+ let currentRoundRequestId;
68
+ const currentRoundMessages = [];
69
+ const currentRoundErrors = [];
70
+ let currentRoundToolCalls = 0;
71
+ let currentRoundRequestDuration;
72
+ let currentRoundDurationWithTools;
73
+ let currentRoundRequestCost;
59
74
  const model = await getModelFromAgent(agent, 'reasoning_mini', modelHistory);
60
75
  modelHistory.push(model);
61
- const stream = executeRound(model, agent, history, totalToolCalls, maxToolCalls);
76
+ const stream = executeRound(model, agent, history, totalToolCalls, maxToolCalls, trace);
62
77
  for await (const event of stream) {
63
78
  yield event;
64
79
  switch (event.type) {
80
+ case 'agent_start': {
81
+ currentRoundRequestId = event.request_id;
82
+ break;
83
+ }
65
84
  case 'message_complete': {
66
85
  const messageEvent = event;
67
86
  if (messageEvent.content) {
68
87
  lastMessageContent = messageEvent.content;
88
+ currentRoundMessages.push(messageEvent.content);
69
89
  }
70
90
  break;
71
91
  }
@@ -73,6 +93,12 @@ export async function* ensembleRequest(messages, agent = {}) {
73
93
  const toolEvent = event;
74
94
  if (toolEvent.tool_call) {
75
95
  const toolName = toolEvent.tool_call.function.name;
96
+ currentRoundToolCalls += 1;
97
+ await trace.emitToolStart(event.request_id, toolEvent.tool_call.id, {
98
+ tool_name: toolName,
99
+ arguments: toolEvent.tool_call.function.arguments,
100
+ arguments_formatted: toolEvent.tool_call.function.arguments_formatted,
101
+ });
76
102
  if (toolName !== 'task_complete' && toolName !== 'task_fatal_error') {
77
103
  hasToolCalls = true;
78
104
  }
@@ -80,8 +106,31 @@ export async function* ensembleRequest(messages, agent = {}) {
80
106
  ++totalToolCalls;
81
107
  break;
82
108
  }
109
+ case 'tool_done': {
110
+ const toolEvent = event;
111
+ if (toolEvent.tool_call) {
112
+ await trace.emitToolDone(event.request_id, toolEvent.tool_call.id, {
113
+ tool_name: toolEvent.tool_call.function.name,
114
+ call_id: toolEvent.result?.call_id,
115
+ output: toolEvent.result?.output,
116
+ error: toolEvent.result?.error,
117
+ });
118
+ }
119
+ break;
120
+ }
121
+ case 'agent_done': {
122
+ const agentDoneEvent = event;
123
+ currentRoundRequestDuration = agentDoneEvent.request_duration;
124
+ currentRoundDurationWithTools = agentDoneEvent.duration_with_tools;
125
+ currentRoundRequestCost = agentDoneEvent.request_cost;
126
+ break;
127
+ }
83
128
  case 'error': {
84
129
  hasError = true;
130
+ const errorEvent = event;
131
+ if (errorEvent.error) {
132
+ currentRoundErrors.push(String(errorEvent.error));
133
+ }
85
134
  break;
86
135
  }
87
136
  }
@@ -95,13 +144,41 @@ export async function* ensembleRequest(messages, agent = {}) {
95
144
  if (hasError) {
96
145
  ++errorRounds;
97
146
  }
147
+ const willRetryForError = hasError && errorRounds < MAX_ERROR_ATTEMPTS;
148
+ const willContinueForTools = hasToolCalls && toolCallRounds < maxRounds && totalToolCalls < maxToolCalls;
149
+ const willContinue = willRetryForError || willContinueForTools;
150
+ let requestStatus = 'completed';
151
+ if (hasError) {
152
+ requestStatus = willContinue ? 'error_retrying' : 'error';
153
+ }
154
+ else if (hasToolCalls) {
155
+ requestStatus = willContinue ? 'waiting_for_followup_request' : 'tool_limit_reached';
156
+ }
157
+ if (currentRoundRequestId) {
158
+ await trace.emitRequestEnd(currentRoundRequestId, {
159
+ status: requestStatus,
160
+ will_continue: willContinue,
161
+ tool_calls: currentRoundToolCalls,
162
+ final_response: currentRoundMessages.length > 0 ? currentRoundMessages.join('\n') : undefined,
163
+ errors: currentRoundErrors.length > 0 ? currentRoundErrors : undefined,
164
+ request_duration_ms: currentRoundRequestDuration,
165
+ duration_with_tools_ms: currentRoundDurationWithTools,
166
+ request_cost: currentRoundRequestCost,
167
+ });
168
+ }
98
169
  } while ((hasError && errorRounds < MAX_ERROR_ATTEMPTS) ||
99
170
  (hasToolCalls && toolCallRounds < maxRounds && totalToolCalls < maxToolCalls));
100
171
  if (hasToolCalls && toolCallRounds >= maxRounds) {
101
172
  console.log('[ensembleRequest] Tool call rounds limit reached');
173
+ turnEndReason = 'max_tool_call_rounds_reached';
102
174
  }
103
175
  else if (hasToolCalls && totalToolCalls >= maxToolCalls) {
104
176
  console.log('[ensembleRequest] Total tool calls limit reached');
177
+ turnEndReason = 'max_tool_calls_reached';
178
+ }
179
+ else if (hasError && errorRounds >= MAX_ERROR_ATTEMPTS) {
180
+ turnStatus = 'error';
181
+ turnEndReason = 'max_error_attempts_reached';
105
182
  }
106
183
  if (agent?.verifier && lastMessageContent) {
107
184
  const verificationResult = await performVerification(agent, lastMessageContent, await history.getMessages());
@@ -114,6 +191,9 @@ export async function* ensembleRequest(messages, agent = {}) {
114
191
  }
115
192
  catch (err) {
116
193
  const error = err;
194
+ turnStatus = 'error';
195
+ turnEndReason = 'exception';
196
+ turnError = error.message || 'Unknown error';
117
197
  yield {
118
198
  type: 'error',
119
199
  error: error.message || 'Unknown error',
@@ -124,13 +204,19 @@ export async function* ensembleRequest(messages, agent = {}) {
124
204
  };
125
205
  }
126
206
  finally {
207
+ await trace.emitTurnEnd(turnStatus, turnEndReason, {
208
+ error: turnError,
209
+ tool_call_rounds: toolCallRounds,
210
+ total_tool_calls: totalToolCalls,
211
+ error_rounds: errorRounds,
212
+ });
127
213
  yield {
128
214
  type: 'stream_end',
129
215
  timestamp: new Date().toISOString(),
130
216
  };
131
217
  }
132
218
  }
133
- async function* executeRound(model, agent, history, currentToolCalls, maxToolCalls) {
219
+ async function* executeRound(model, agent, history, currentToolCalls, maxToolCalls, trace) {
134
220
  const requestId = randomUUID();
135
221
  const startTime = Date.now();
136
222
  let totalCost = 0;
@@ -159,6 +245,16 @@ async function* executeRound(model, agent, history, currentToolCalls, maxToolCal
159
245
  }
160
246
  await waitWhilePaused(100, agent.abortSignal);
161
247
  const provider = getModelProvider(model);
248
+ await trace.emitRequestStart(requestId, {
249
+ agent_id: agent.agent_id,
250
+ provider: provider.provider_id,
251
+ model,
252
+ payload: {
253
+ messages,
254
+ model_settings: agent.modelSettings,
255
+ tool_names: agent.tools?.map(tool => tool.definition.function.name) || [],
256
+ },
257
+ });
162
258
  const stream = 'createResponseStreamWithRetry' in provider
163
259
  ? provider.createResponseStreamWithRetry(messages, model, agent, requestId)
164
260
  : provider.createResponseStream(messages, model, agent, requestId);