@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
@@ -3,56 +3,110 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ensembleEmbed = ensembleEmbed;
4
4
  const model_provider_js_1 = require("../model_providers/model_provider.cjs");
5
5
  const model_data_js_1 = require("../data/model_data.cjs");
6
+ const trace_context_js_1 = require("../utils/trace_context.cjs");
7
+ const crypto_1 = require("crypto");
6
8
  const EMBEDDING_TTL_MS = 1000 * 60 * 60;
7
9
  const EMBEDDING_CACHE_MAX = 1000;
8
10
  const embeddingCache = new Map();
9
11
  async function ensembleEmbed(text, agent, options) {
10
- const dimensions = options?.dimensions || 1536;
11
- const cacheKey = `${agent.model || agent.modelClass}:${text}:${dimensions}`;
12
- const cached = embeddingCache.get(cacheKey);
13
- if (cached) {
14
- if (Date.now() - cached.timestamp.getTime() < EMBEDDING_TTL_MS) {
15
- return cached.embedding;
12
+ const trace = (0, trace_context_js_1.createTraceContext)(agent, 'embedding');
13
+ const requestId = (0, crypto_1.randomUUID)();
14
+ let requestStarted = false;
15
+ let turnStatus = 'completed';
16
+ let requestStatus = 'completed';
17
+ let requestError;
18
+ let requestMetadata = {};
19
+ await trace.emitTurnStart({
20
+ input_text: text,
21
+ options,
22
+ });
23
+ await trace.emitRequestStart(requestId, {
24
+ agent_id: agent.agent_id,
25
+ provider: agent.model ? (0, model_data_js_1.findModel)(agent.model)?.provider : undefined,
26
+ model: agent.model || 'text-embedding-3-small',
27
+ payload: {
28
+ text,
29
+ options,
30
+ },
31
+ });
32
+ requestStarted = true;
33
+ try {
34
+ const dimensions = options?.dimensions || 1536;
35
+ const cacheKey = `${agent.model || agent.modelClass}:${text}:${dimensions}`;
36
+ const cached = embeddingCache.get(cacheKey);
37
+ if (cached) {
38
+ if (Date.now() - cached.timestamp.getTime() < EMBEDDING_TTL_MS) {
39
+ requestMetadata = {
40
+ ...requestMetadata,
41
+ from_cache: true,
42
+ dimensions: cached.embedding.length,
43
+ };
44
+ return cached.embedding;
45
+ }
46
+ embeddingCache.delete(cacheKey);
16
47
  }
17
- embeddingCache.delete(cacheKey);
18
- }
19
- const model = agent.model || 'text-embedding-3-small';
20
- const provider = (0, model_provider_js_1.getModelProvider)(model);
21
- if (!provider.createEmbedding) {
22
- throw new Error(`Provider for model ${model} does not support embeddings`);
23
- }
24
- const modelInfo = (0, model_data_js_1.findModel)(model);
25
- const inputTokenLimit = modelInfo?.features?.input_token_limit;
26
- const MAX_CHARS_PER_CHUNK = inputTokenLimit ? inputTokenLimit * 4 * 0.9 : Infinity;
27
- const needsChunking = inputTokenLimit && text.length > MAX_CHARS_PER_CHUNK;
28
- let embedding;
29
- if (needsChunking) {
30
- const chunks = [];
31
- for (let i = 0; i < text.length; i += MAX_CHARS_PER_CHUNK) {
32
- chunks.push(text.slice(i, i + MAX_CHARS_PER_CHUNK));
48
+ const model = agent.model || 'text-embedding-3-small';
49
+ const provider = (0, model_provider_js_1.getModelProvider)(model);
50
+ if (!provider.createEmbedding) {
51
+ throw new Error(`Provider for model ${model} does not support embeddings`);
33
52
  }
34
- const result = await provider.createEmbedding(chunks, model, agent, { ...options, dimensions });
35
- const embeddings = result;
36
- embedding = new Array(dimensions).fill(0);
37
- for (const vec of embeddings) {
38
- for (let i = 0; i < dimensions; i++) {
39
- embedding[i] += vec[i] / embeddings.length;
53
+ const modelInfo = (0, model_data_js_1.findModel)(model);
54
+ const inputTokenLimit = modelInfo?.features?.input_token_limit;
55
+ const MAX_CHARS_PER_CHUNK = inputTokenLimit ? inputTokenLimit * 4 * 0.9 : Infinity;
56
+ const needsChunking = inputTokenLimit && text.length > MAX_CHARS_PER_CHUNK;
57
+ let embedding;
58
+ if (needsChunking) {
59
+ const chunks = [];
60
+ for (let i = 0; i < text.length; i += MAX_CHARS_PER_CHUNK) {
61
+ chunks.push(text.slice(i, i + MAX_CHARS_PER_CHUNK));
40
62
  }
63
+ const result = await provider.createEmbedding(chunks, model, agent, { ...options, dimensions });
64
+ const embeddings = result;
65
+ embedding = new Array(dimensions).fill(0);
66
+ for (const vec of embeddings) {
67
+ for (let i = 0; i < dimensions; i++) {
68
+ embedding[i] += vec[i] / embeddings.length;
69
+ }
70
+ }
71
+ }
72
+ else {
73
+ const result = await provider.createEmbedding(text, model, agent, { ...options, dimensions });
74
+ embedding = Array.isArray(result[0]) ? result[0] : result;
75
+ }
76
+ if (embeddingCache.size >= EMBEDDING_CACHE_MAX) {
77
+ const oldestKey = embeddingCache.keys().next().value;
78
+ if (oldestKey)
79
+ embeddingCache.delete(oldestKey);
41
80
  }
81
+ embeddingCache.set(cacheKey, {
82
+ embedding,
83
+ timestamp: new Date(),
84
+ });
85
+ requestMetadata = {
86
+ ...requestMetadata,
87
+ from_cache: false,
88
+ dimensions: embedding.length,
89
+ chunked: !!needsChunking,
90
+ };
91
+ return embedding;
42
92
  }
43
- else {
44
- const result = await provider.createEmbedding(text, model, agent, { ...options, dimensions });
45
- embedding = Array.isArray(result[0]) ? result[0] : result;
93
+ catch (error) {
94
+ turnStatus = 'error';
95
+ requestStatus = 'error';
96
+ requestError = error instanceof Error ? error.message : String(error);
97
+ throw error;
46
98
  }
47
- if (embeddingCache.size >= EMBEDDING_CACHE_MAX) {
48
- const oldestKey = embeddingCache.keys().next().value;
49
- if (oldestKey)
50
- embeddingCache.delete(oldestKey);
99
+ finally {
100
+ if (requestStarted) {
101
+ await trace.emitRequestEnd(requestId, {
102
+ status: requestStatus,
103
+ error: requestError,
104
+ ...requestMetadata,
105
+ });
106
+ }
107
+ await trace.emitTurnEnd(turnStatus, turnStatus === 'completed' ? 'completed' : 'exception', {
108
+ error: requestError,
109
+ });
51
110
  }
52
- embeddingCache.set(cacheKey, {
53
- embedding,
54
- timestamp: new Date(),
55
- });
56
- return embedding;
57
111
  }
58
112
  //# sourceMappingURL=ensemble_embed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_embed.d.ts","sourceRoot":"","sources":["../../../core/ensemble_embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA+DpE,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2EhH"}
1
+ {"version":3,"file":"ensemble_embed.d.ts","sourceRoot":"","sources":["../../../core/ensemble_embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAiEpE,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgIhH"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_embed.js","sourceRoot":"","sources":["../../../core/ensemble_embed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensemble_embed.js","sourceRoot":"","sources":["../../../core/ensemble_embed.ts"],"names":[],"mappings":"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"}
@@ -36,20 +36,59 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ensembleImage = ensembleImage;
37
37
  const node_crypto_1 = require("node:crypto");
38
38
  const model_provider_js_1 = require("../model_providers/model_provider.cjs");
39
+ const trace_context_js_1 = require("../utils/trace_context.cjs");
39
40
  function ensembleImage(prompt, agent, options = {}) {
40
- const run = async () => {
41
- const model = await (0, model_provider_js_1.getModelFromAgent)(agent, 'image_generation');
42
- const provider = (0, model_provider_js_1.getModelProvider)(model);
43
- if (!provider.createImage)
44
- throw new Error(`Provider for model ${model} does not support image generation`);
45
- return provider.createImage(prompt, model, agent, options);
41
+ const run = async (requestId) => {
42
+ const trace = (0, trace_context_js_1.createTraceContext)(agent, 'image_generation');
43
+ const tracedRequestId = requestId || options.request_id || (0, node_crypto_1.randomUUID)();
44
+ const requestOptions = { ...options, request_id: tracedRequestId };
45
+ let requestStarted = false;
46
+ await trace.emitTurnStart({
47
+ prompt,
48
+ options: requestOptions,
49
+ });
50
+ try {
51
+ const model = await (0, model_provider_js_1.getModelFromAgent)(agent, 'image_generation');
52
+ const provider = (0, model_provider_js_1.getModelProvider)(model);
53
+ if (!provider.createImage)
54
+ throw new Error(`Provider for model ${model} does not support image generation`);
55
+ await trace.emitRequestStart(tracedRequestId, {
56
+ agent_id: agent.agent_id,
57
+ provider: provider.provider_id,
58
+ model,
59
+ payload: {
60
+ prompt,
61
+ options: requestOptions,
62
+ },
63
+ });
64
+ requestStarted = true;
65
+ const images = await provider.createImage(prompt, model, agent, requestOptions);
66
+ await trace.emitRequestEnd(tracedRequestId, {
67
+ status: 'completed',
68
+ image_count: images.length,
69
+ });
70
+ await trace.emitTurnEnd('completed', 'completed');
71
+ return images;
72
+ }
73
+ catch (error) {
74
+ const errorMessage = error instanceof Error ? error.message : String(error);
75
+ if (requestStarted) {
76
+ await trace.emitRequestEnd(tracedRequestId, {
77
+ status: 'error',
78
+ error: errorMessage,
79
+ });
80
+ }
81
+ await trace.emitTurnEnd('error', 'exception', {
82
+ error: errorMessage,
83
+ });
84
+ throw error;
85
+ }
46
86
  };
47
87
  if (!options.stream) {
48
88
  return run();
49
89
  }
50
90
  const self = async function* () {
51
91
  const request_id = options.request_id || (0, node_crypto_1.randomUUID)();
52
- options = { ...options, request_id };
53
92
  const { costTracker } = await Promise.resolve().then(() => __importStar(require("../utils/cost_tracker.cjs")));
54
93
  yield { type: 'image_start', request_id, timestamp: new Date().toISOString() };
55
94
  const handler = (usage) => {
@@ -64,7 +103,7 @@ function ensembleImage(prompt, agent, options = {}) {
64
103
  };
65
104
  costTracker.onAddUsage(handler);
66
105
  try {
67
- const images = await run();
106
+ const images = await run(request_id);
68
107
  while (iterator.queue.length)
69
108
  yield iterator.queue.shift();
70
109
  let idx = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_image.d.ts","sourceRoot":"","sources":["../../../core/ensemble_image.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAwBnG,wBAAgB,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,mBAAwB,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAwEzD"}
1
+ {"version":3,"file":"ensemble_image.d.ts","sourceRoot":"","sources":["../../../core/ensemble_image.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAyBnG,wBAAgB,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,mBAAwB,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAgHzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_image.js","sourceRoot":"","sources":["../../../core/ensemble_image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensemble_image.js","sourceRoot":"","sources":["../../../core/ensemble_image.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ensembleListen = ensembleListen;
4
4
  exports.createAudioStreamFromMediaStream = createAudioStreamFromMediaStream;
5
5
  const model_provider_js_1 = require("../model_providers/model_provider.cjs");
6
+ const trace_context_js_1 = require("../utils/trace_context.cjs");
7
+ const crypto_1 = require("crypto");
6
8
  function normalizeAudioSource(source) {
7
9
  if (source instanceof ReadableStream) {
8
10
  return source;
@@ -38,101 +40,176 @@ function normalizeAudioSource(source) {
38
40
  throw new Error(`Unsupported audio source type: ${typeof source}`);
39
41
  }
40
42
  async function* ensembleListen(audioSource, agent, options = {}) {
43
+ const trace = (0, trace_context_js_1.createTraceContext)(agent, 'transcription');
44
+ const requestId = (0, crypto_1.randomUUID)();
45
+ let requestStarted = false;
46
+ let turnStatus = 'completed';
47
+ let requestStatus = 'completed';
48
+ let requestError;
49
+ let transcriptionDuration;
50
+ let finalTranscript;
41
51
  const streamOptions = { ...options, stream: true };
42
52
  const audioFormat = options.audioFormat || {
43
53
  sampleRate: 16000,
44
54
  channels: 1,
45
55
  encoding: 'pcm',
46
56
  };
47
- const startEvent = {
48
- type: 'transcription_start',
49
- timestamp: new Date().toISOString(),
50
- format: audioFormat.encoding || 'pcm',
51
- audioFormat: audioFormat,
52
- };
53
- yield startEvent;
54
- const model = await (0, model_provider_js_1.getModelFromAgent)(agent, 'transcription');
55
- let provider;
56
- try {
57
- provider = (0, model_provider_js_1.getModelProvider)(model);
58
- }
59
- catch (error) {
60
- const errorEvent = {
61
- type: 'error',
62
- timestamp: new Date().toISOString(),
63
- error: `Failed to initialize provider for model ${model}: ${error instanceof Error ? error.message : 'Unknown error'}`,
64
- };
65
- yield errorEvent;
66
- return;
67
- }
68
- if (!provider.createTranscription) {
69
- const errorEvent = {
70
- type: 'error',
71
- timestamp: new Date().toISOString(),
72
- error: `Provider for model ${model} does not support transcription`,
73
- };
74
- yield errorEvent;
75
- return;
76
- }
77
- let audioStream;
57
+ const audioSourceType = audioSource instanceof ReadableStream
58
+ ? 'readable_stream'
59
+ : audioSource instanceof ArrayBuffer
60
+ ? 'array_buffer'
61
+ : audioSource instanceof Uint8Array
62
+ ? 'uint8array'
63
+ : typeof audioSource === 'function'
64
+ ? 'factory'
65
+ : typeof audioSource === 'object' && audioSource !== null && Symbol.asyncIterator in audioSource
66
+ ? 'async_iterable'
67
+ : typeof audioSource;
68
+ await trace.emitTurnStart({
69
+ audio_source_type: audioSourceType,
70
+ options: streamOptions,
71
+ });
78
72
  try {
79
- audioStream = normalizeAudioSource(audioSource);
80
- }
81
- catch (error) {
82
- const errorEvent = {
83
- type: 'error',
73
+ const model = await (0, model_provider_js_1.getModelFromAgent)(agent, 'transcription');
74
+ await trace.emitRequestStart(requestId, {
75
+ agent_id: agent.agent_id,
76
+ model,
77
+ payload: {
78
+ audio_source_type: audioSourceType,
79
+ options: streamOptions,
80
+ },
81
+ });
82
+ requestStarted = true;
83
+ const startEvent = {
84
+ type: 'transcription_start',
84
85
  timestamp: new Date().toISOString(),
85
- error: `Failed to normalize audio source: ${error instanceof Error ? error.message : 'Unknown error'}`,
86
+ format: audioFormat.encoding || 'pcm',
87
+ audioFormat: audioFormat,
86
88
  };
87
- yield errorEvent;
88
- return;
89
- }
90
- const startTime = Date.now();
91
- let fullTranscript = '';
92
- let currentTurnText = '';
93
- const allTurns = [];
94
- try {
95
- const transcriptionGenerator = provider.createTranscription(audioStream, agent, model, streamOptions);
96
- for await (const event of transcriptionGenerator) {
97
- if (event.type === 'transcription_turn_delta' && event.delta) {
98
- fullTranscript += event.delta;
99
- currentTurnText += event.delta;
100
- }
101
- if (event.type === 'transcription_turn_complete') {
102
- const turnEvent = {
103
- ...event,
104
- text: currentTurnText,
105
- };
106
- yield turnEvent;
107
- if (currentTurnText.trim()) {
108
- allTurns.push(currentTurnText.trim());
89
+ yield startEvent;
90
+ let provider;
91
+ try {
92
+ provider = (0, model_provider_js_1.getModelProvider)(model);
93
+ }
94
+ catch (error) {
95
+ requestStatus = 'error';
96
+ turnStatus = 'error';
97
+ requestError = `Failed to initialize provider for model ${model}: ${error instanceof Error ? error.message : 'Unknown error'}`;
98
+ const errorEvent = {
99
+ type: 'error',
100
+ timestamp: new Date().toISOString(),
101
+ error: requestError,
102
+ };
103
+ yield errorEvent;
104
+ return;
105
+ }
106
+ if (!provider.createTranscription) {
107
+ requestStatus = 'error';
108
+ turnStatus = 'error';
109
+ requestError = `Provider for model ${model} does not support transcription`;
110
+ const errorEvent = {
111
+ type: 'error',
112
+ timestamp: new Date().toISOString(),
113
+ error: requestError,
114
+ };
115
+ yield errorEvent;
116
+ return;
117
+ }
118
+ let audioStream;
119
+ try {
120
+ audioStream = normalizeAudioSource(audioSource);
121
+ }
122
+ catch (error) {
123
+ requestStatus = 'error';
124
+ turnStatus = 'error';
125
+ requestError = `Failed to normalize audio source: ${error instanceof Error ? error.message : 'Unknown error'}`;
126
+ const errorEvent = {
127
+ type: 'error',
128
+ timestamp: new Date().toISOString(),
129
+ error: requestError,
130
+ };
131
+ yield errorEvent;
132
+ return;
133
+ }
134
+ const startTime = Date.now();
135
+ let fullTranscript = '';
136
+ let currentTurnText = '';
137
+ const allTurns = [];
138
+ try {
139
+ const transcriptionGenerator = provider.createTranscription(audioStream, agent, model, streamOptions);
140
+ for await (const event of transcriptionGenerator) {
141
+ if (event.type === 'transcription_turn_delta' && event.delta) {
142
+ fullTranscript += event.delta;
143
+ currentTurnText += event.delta;
144
+ }
145
+ if (event.type === 'transcription_turn_complete') {
146
+ const turnEvent = {
147
+ ...event,
148
+ text: currentTurnText,
149
+ };
150
+ yield turnEvent;
151
+ if (currentTurnText.trim()) {
152
+ allTurns.push(currentTurnText.trim());
153
+ }
154
+ currentTurnText = '';
155
+ }
156
+ else {
157
+ yield event;
109
158
  }
110
- currentTurnText = '';
111
159
  }
112
- else {
113
- yield event;
160
+ if (currentTurnText.trim()) {
161
+ allTurns.push(currentTurnText.trim());
114
162
  }
163
+ const duration = (Date.now() - startTime) / 1000;
164
+ const transcript = allTurns.length > 0 ? allTurns.join('\n') : fullTranscript;
165
+ transcriptionDuration = duration;
166
+ finalTranscript = transcript;
167
+ const completeEvent = {
168
+ type: 'transcription_complete',
169
+ timestamp: new Date().toISOString(),
170
+ text: transcript,
171
+ duration: duration,
172
+ };
173
+ yield completeEvent;
115
174
  }
116
- if (currentTurnText.trim()) {
117
- allTurns.push(currentTurnText.trim());
175
+ catch (error) {
176
+ requestStatus = 'error';
177
+ turnStatus = 'error';
178
+ requestError = error instanceof Error ? error.message : 'Transcription failed';
179
+ console.error('[ensembleListen] Error during transcription:', error);
180
+ const errorEvent = {
181
+ type: 'error',
182
+ timestamp: new Date().toISOString(),
183
+ error: requestError,
184
+ };
185
+ yield errorEvent;
118
186
  }
119
- const duration = (Date.now() - startTime) / 1000;
120
- const completeEvent = {
121
- type: 'transcription_complete',
122
- timestamp: new Date().toISOString(),
123
- text: allTurns.length > 0 ? allTurns.join('\n') : fullTranscript,
124
- duration: duration,
125
- };
126
- yield completeEvent;
127
187
  }
128
188
  catch (error) {
129
- console.error('[ensembleListen] Error during transcription:', error);
189
+ requestStatus = 'error';
190
+ turnStatus = 'error';
191
+ requestError = error instanceof Error ? error.message : String(error);
130
192
  const errorEvent = {
131
193
  type: 'error',
132
194
  timestamp: new Date().toISOString(),
133
- error: error instanceof Error ? error.message : 'Transcription failed',
195
+ error: requestError,
134
196
  };
135
197
  yield errorEvent;
198
+ throw error;
199
+ }
200
+ finally {
201
+ if (requestStarted) {
202
+ await trace.emitRequestEnd(requestId, {
203
+ status: requestStatus,
204
+ error: requestError,
205
+ duration: transcriptionDuration,
206
+ final_response: finalTranscript,
207
+ });
208
+ }
209
+ await trace.emitTurnEnd(turnStatus, turnStatus === 'completed' ? 'completed' : 'exception', {
210
+ error: requestError,
211
+ final_response: finalTranscript,
212
+ });
136
213
  }
137
214
  }
138
215
  function createAudioStreamFromMediaStream(mediaStream, audioContext) {
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_listen.d.ts","sourceRoot":"","sources":["../../../core/ensemble_listen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,mBAAmB,CAAC;AAI3B,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,CAAC;AAsEhF,wBAAuB,cAAc,CACjC,WAAW,EAAE,wBAAwB,EACrC,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,iBAAsB,GAChC,cAAc,CAAC,kBAAkB,CAAC,CA2HpC;AAUD,wBAAgB,gCAAgC,CAC5C,WAAW,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,YAAY,GAC5B,cAAc,CAAC,UAAU,CAAC,CA4B5B"}
1
+ {"version":3,"file":"ensemble_listen.d.ts","sourceRoot":"","sources":["../../../core/ensemble_listen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,mBAAmB,CAAC;AAM3B,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,CAAC;AAsEhF,wBAAuB,cAAc,CACjC,WAAW,EAAE,wBAAwB,EACrC,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,iBAAsB,GAChC,cAAc,CAAC,kBAAkB,CAAC,CAwMpC;AAUD,wBAAgB,gCAAgC,CAC5C,WAAW,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,YAAY,GAC5B,cAAc,CAAC,UAAU,CAAC,CA4B5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_listen.js","sourceRoot":"","sources":["../../../core/ensemble_listen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensemble_listen.js","sourceRoot":"","sources":["../../../core/ensemble_listen.ts"],"names":[],"mappings":"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"}