@framers/agentos 0.11.0 → 0.11.3

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 (70) hide show
  1. package/README.md +1 -1
  2. package/dist/api/model.d.ts +32 -5
  3. package/dist/api/model.d.ts.map +1 -1
  4. package/dist/api/model.js +73 -8
  5. package/dist/api/model.js.map +1 -1
  6. package/dist/api/runtime/strategies/shared.d.ts.map +1 -1
  7. package/dist/api/runtime/strategies/shared.js +21 -4
  8. package/dist/api/runtime/strategies/shared.js.map +1 -1
  9. package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.d.ts +5 -3
  10. package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.d.ts.map +1 -1
  11. package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.js +5 -3
  12. package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.js.map +1 -1
  13. package/dist/core/llm/providers/implementations/OpenRouterProvider.js +1 -1
  14. package/dist/core/llm/providers/implementations/OpenRouterProvider.js.map +1 -1
  15. package/dist/core/llm/providers/structuredOutputFormat.d.ts.map +1 -1
  16. package/dist/core/llm/providers/structuredOutputFormat.js +65 -17
  17. package/dist/core/llm/providers/structuredOutputFormat.js.map +1 -1
  18. package/dist/io/hearing/providers/DeepgramBatchSTTProvider.d.ts +13 -5
  19. package/dist/io/hearing/providers/DeepgramBatchSTTProvider.d.ts.map +1 -1
  20. package/dist/io/hearing/providers/DeepgramBatchSTTProvider.js +4 -3
  21. package/dist/io/hearing/providers/DeepgramBatchSTTProvider.js.map +1 -1
  22. package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.d.ts +40 -14
  23. package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.d.ts.map +1 -1
  24. package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.js +108 -18
  25. package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.js.map +1 -1
  26. package/dist/io/media/images/imageToBuffer.d.ts +10 -4
  27. package/dist/io/media/images/imageToBuffer.d.ts.map +1 -1
  28. package/dist/io/media/images/imageToBuffer.js +62 -5
  29. package/dist/io/media/images/imageToBuffer.js.map +1 -1
  30. package/dist/io/media/video/VideoAnalyzer.d.ts.map +1 -1
  31. package/dist/io/media/video/VideoAnalyzer.js +4 -1
  32. package/dist/io/media/video/VideoAnalyzer.js.map +1 -1
  33. package/dist/io/speech/SpeechProviderResolver.d.ts +66 -28
  34. package/dist/io/speech/SpeechProviderResolver.d.ts.map +1 -1
  35. package/dist/io/speech/SpeechProviderResolver.js +129 -53
  36. package/dist/io/speech/SpeechProviderResolver.js.map +1 -1
  37. package/dist/io/speech/SpeechRuntime.d.ts.map +1 -1
  38. package/dist/io/speech/SpeechRuntime.js +9 -1
  39. package/dist/io/speech/SpeechRuntime.js.map +1 -1
  40. package/dist/io/speech/providerCatalog.d.ts.map +1 -1
  41. package/dist/io/speech/providerCatalog.js +6 -2
  42. package/dist/io/speech/providerCatalog.js.map +1 -1
  43. package/dist/io/speech/providers/OpenAITextToSpeechProvider.d.ts +5 -0
  44. package/dist/io/speech/providers/OpenAITextToSpeechProvider.d.ts.map +1 -1
  45. package/dist/io/speech/providers/OpenAITextToSpeechProvider.js.map +1 -1
  46. package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.d.ts +11 -3
  47. package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.d.ts.map +1 -1
  48. package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.js +11 -3
  49. package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.js.map +1 -1
  50. package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.d.ts +1 -1
  51. package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.d.ts.map +1 -1
  52. package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.js +2 -2
  53. package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.js.map +1 -1
  54. package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.d.ts +8 -0
  55. package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.d.ts.map +1 -1
  56. package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.js +3 -0
  57. package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.js.map +1 -1
  58. package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.d.ts +11 -3
  59. package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.d.ts.map +1 -1
  60. package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.js +22 -3
  61. package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.js.map +1 -1
  62. package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts +3 -2
  63. package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts.map +1 -1
  64. package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.js +7 -4
  65. package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.js.map +1 -1
  66. package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.d.ts +5 -3
  67. package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.d.ts.map +1 -1
  68. package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.js +24 -6
  69. package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.js.map +1 -1
  70. package/package.json +1 -1
@@ -1,4 +1,64 @@
1
1
  import { ApiKeyPool } from '../../../core/providers/ApiKeyPool.js';
2
+ /** The model OpenAI recommends for transcribing recorded speech. */
3
+ const DEFAULT_TRANSCRIPTION_MODEL = 'gpt-transcribe';
4
+ /** The OpenAI model that serves segment timestamps (`verbose_json`), `srt` and `vtt`. */
5
+ const TIMESTAMP_MODEL = 'whisper-1';
6
+ /** Response formats that carry timestamps. `pickModel` decides which model serves them. */
7
+ const TIMESTAMP_FORMATS = new Set([
8
+ 'verbose_json',
9
+ 'srt',
10
+ 'vtt',
11
+ ]);
12
+ /** `whisper-1` keeps this provider's `verbose_json` default; the newer models answer in `json`. */
13
+ function isWhisperModel(model) {
14
+ return model.startsWith('whisper');
15
+ }
16
+ /**
17
+ * Whether a configured model can answer a timestamped call itself. OpenAI's
18
+ * `gpt-` transcription models cannot: the API reference limits the
19
+ * `gpt-4o-transcribe` models to `json` (`json`, `text` and `diarized_json`
20
+ * for the diarize model), `gpt-transcribe` returns text and languages with no
21
+ * segments, and OpenAI's guide sends callers who need timestamps to
22
+ * `whisper-1`. Any other model, such as one a whisper-compatible server
23
+ * serves under `baseUrl`, is trusted with the format.
24
+ */
25
+ function servesTimestampFormats(model) {
26
+ return !model.startsWith('gpt-');
27
+ }
28
+ /**
29
+ * Picks the model for one call. A model named on the call is used as given.
30
+ * A call for `verbose_json`, `srt` or `vtt` runs on `whisper-1` unless the
31
+ * configured model serves that format itself. Every other call runs on the
32
+ * configured model, or on `gpt-transcribe` when none is configured. An empty
33
+ * model id counts as unset.
34
+ */
35
+ function pickModel(callModel, configuredModel, requestedFormat) {
36
+ if (callModel)
37
+ return callModel;
38
+ const wantsTimestamps = requestedFormat !== undefined && TIMESTAMP_FORMATS.has(requestedFormat);
39
+ if (wantsTimestamps && !(configuredModel && servesTimestampFormats(configuredModel))) {
40
+ return TIMESTAMP_MODEL;
41
+ }
42
+ return configuredModel || DEFAULT_TRANSCRIPTION_MODEL;
43
+ }
44
+ /** `gpt-transcribe` takes language hints as a `languages` list in place of the singular `language` field. */
45
+ function takesLanguageList(model) {
46
+ return model === 'gpt-transcribe' || model.startsWith('gpt-transcribe-');
47
+ }
48
+ /** Reads the billed audio seconds from a `usage` block of type `duration`. */
49
+ function usageSeconds(usage) {
50
+ if (typeof usage !== 'object' || usage === null)
51
+ return undefined;
52
+ const value = usage;
53
+ return value.type === 'duration' && typeof value.seconds === 'number' ? value.seconds : undefined;
54
+ }
55
+ /** Reads the first code from the `languages` list that `gpt-transcribe` returns. */
56
+ function firstDetectedLanguage(languages) {
57
+ if (!Array.isArray(languages))
58
+ return undefined;
59
+ const first = languages[0];
60
+ return first && typeof first.code === 'string' ? first.code : undefined;
61
+ }
2
62
  /**
3
63
  * Normalizes raw segment data from the OpenAI Whisper `verbose_json` response
4
64
  * into strongly-typed {@link SpeechTranscriptionSegment} objects.
@@ -62,23 +122,34 @@ function normalizeSegments(input) {
62
122
  });
63
123
  }
64
124
  /**
65
- * Speech-to-text provider that uses the OpenAI Whisper transcription API.
125
+ * Speech-to-text provider that uses the OpenAI transcription API.
66
126
  *
67
127
  * ## API Contract
68
128
  *
69
129
  * - **Endpoint:** `POST {baseUrl}/audio/transcriptions`
70
130
  * - **Authentication:** `Authorization: Bearer <apiKey>`
71
131
  * - **Content-Type:** `multipart/form-data` (FormData with file blob)
72
- * - **Response format:** Controlled by the `response_format` field; defaults
73
- * to `verbose_json` which includes segments, language detection, and duration.
132
+ * - **Response format:** Controlled by the `response_format` field. When the
133
+ * caller names none, `whisper-1` is asked for `verbose_json` (segments,
134
+ * language and duration) and the other models for `json`.
135
+ *
136
+ * ## Models
137
+ *
138
+ * - `gpt-transcribe` (default): the model OpenAI recommends for recorded
139
+ * speech. It returns the text and the detected `languages`, and it takes
140
+ * language hints as a `languages` list.
141
+ * - `whisper-1`: removed from the API on 2027-02-26. It serves segment
142
+ * timestamps, `srt` and `vtt`, so a call that asks for one of those formats
143
+ * runs on it unless the call names a model or the configured model serves
144
+ * the format itself. A configured `gpt-` model does not.
74
145
  *
75
146
  * ## Supported Response Formats
76
147
  *
77
- * - `verbose_json` — Full JSON with segments, duration, and language (default)
78
- * - `json` — Minimal JSON with just the text
79
- * - `text` — Plain text response (no JSON)
80
- * - `srt` — SubRip subtitle format
81
- * - `vtt` — WebVTT subtitle format
148
+ * - `verbose_json`: full JSON with segments, duration and language (`whisper-1`)
149
+ * - `json`: JSON with the text (the newer models also return `languages`)
150
+ * - `text`: plain text, no JSON
151
+ * - `srt`: SubRip subtitles (`whisper-1`)
152
+ * - `vtt`: WebVTT subtitles (`whisper-1`)
82
153
  *
83
154
  * When `text`, `srt`, or `vtt` format is used, the response is returned as
84
155
  * plain text and segments are not available.
@@ -90,11 +161,16 @@ function normalizeSegments(input) {
90
161
  * ```ts
91
162
  * const provider = new OpenAIWhisperSpeechToTextProvider({
92
163
  * apiKey: process.env.OPENAI_API_KEY!,
93
- * model: 'whisper-1',
94
164
  * });
165
+ * // Runs on gpt-transcribe and answers in json.
95
166
  * const result = await provider.transcribe(
96
167
  * { data: audioBuffer, mimeType: 'audio/wav', fileName: 'recording.wav' },
97
- * { language: 'en', responseFormat: 'verbose_json' },
168
+ * { language: 'en' },
169
+ * );
170
+ * // Segment timestamps come from whisper-1.
171
+ * const timed = await provider.transcribe(
172
+ * { data: audioBuffer, mimeType: 'audio/wav', fileName: 'recording.wav' },
173
+ * { responseFormat: 'verbose_json' },
98
174
  * );
99
175
  * ```
100
176
  */
@@ -147,17 +223,24 @@ export class OpenAIWhisperSpeechToTextProvider {
147
223
  */
148
224
  async transcribe(audio, options = {}) {
149
225
  const form = new FormData();
150
- const responseFormat = (options.responseFormat ?? 'verbose_json');
151
- const model = options.model ?? this.config.model ?? 'whisper-1';
226
+ const requestedFormat = options.responseFormat;
227
+ const model = pickModel(options.model, this.config.model, requestedFormat);
228
+ const responseFormat = requestedFormat ?? (isWhisperModel(model) ? 'verbose_json' : 'json');
152
229
  // Generate a filename with the correct extension for Whisper's format detection
153
230
  const fileName = audio.fileName ?? `speech.${audio.format ?? 'wav'}`;
154
231
  // Build the multipart form payload — Whisper requires a file upload
155
232
  form.append('file', new Blob([Uint8Array.from(audio.data)], { type: audio.mimeType ?? 'audio/wav' }), fileName);
156
233
  form.append('model', model);
157
234
  form.append('response_format', responseFormat);
158
- // Optional fields — only include when explicitly set to avoid API warnings
159
- if (options.language)
160
- form.append('language', options.language);
235
+ // Optional fields are sent only when set, to avoid API warnings.
236
+ // gpt-transcribe reads its language hint from `languages`; OpenAI asks
237
+ // callers not to send both fields.
238
+ if (options.language) {
239
+ if (takesLanguageList(model))
240
+ form.append('languages[]', options.language);
241
+ else
242
+ form.append('language', options.language);
243
+ }
161
244
  if (options.prompt)
162
245
  form.append('prompt', options.prompt);
163
246
  if (typeof options.temperature === 'number') {
@@ -191,12 +274,19 @@ export class OpenAIWhisperSpeechToTextProvider {
191
274
  },
192
275
  };
193
276
  }
194
- // JSON responses (verbose_json or json) — parse and normalize
277
+ // JSON responses (verbose_json or json) are parsed and normalized. Only
278
+ // verbose_json carries `duration` and `language`; the json answer of the
279
+ // newer models reports the audio length under `usage` and the detected
280
+ // languages as a `languages` list.
195
281
  const payload = (await response.json());
196
- const durationSeconds = typeof payload.duration === 'number' ? payload.duration : audio.durationSeconds;
282
+ const durationSeconds = typeof payload.duration === 'number'
283
+ ? payload.duration
284
+ : (usageSeconds(payload.usage) ?? audio.durationSeconds);
197
285
  return {
198
286
  text: typeof payload.text === 'string' ? payload.text : '',
199
- language: typeof payload.language === 'string' ? payload.language : options.language,
287
+ language: typeof payload.language === 'string'
288
+ ? payload.language
289
+ : (firstDetectedLanguage(payload.languages) ?? options.language),
200
290
  durationSeconds,
201
291
  cost: 0,
202
292
  segments: normalizeSegments(payload.segments),
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIWhisperSpeechToTextProvider.js","sourceRoot":"","sources":["../../../../src/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenAIWhisperSpeechToTextProvider.js","sourceRoot":"","sources":["../../../../src/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,18 @@
5
5
  * - **`Buffer`** — returned as-is.
6
6
  * - **Base64 data URL** — e.g. `data:image/png;base64,iVBOR...`. The base64
7
7
  * payload is extracted and decoded.
8
- * - **Raw base64 string** — a string that does not look like a URL or file
9
- * path is assumed to be raw base64 data.
8
+ * - **Raw base64 string** — decoded. A string that does not look like a URL
9
+ * or a file path is decoded directly. One that looks like a path is read as
10
+ * a file first, and decoded when no file exists there and it is base64
11
+ * (standard or URL-safe) whose bytes start with a PNG, JPEG, GIF, WebP, TIFF,
12
+ * AVIF or HEIC signature: standard base64 uses `/` (RFC 4648, Table 1), so a
13
+ * JPEG's base64 begins with `/9j/`. A missing path is still an error.
10
14
  * - **`file://` URL** — resolved to a local filesystem path and read.
11
15
  * - **HTTP/HTTPS URL** — fetched via `globalThis.fetch` and buffered.
12
- * - **Local file path** — any other string is treated as an absolute or
13
- * relative filesystem path and read with `fs.readFile`.
16
+ * - **Local file path** — a string that contains `/` or `\`, or ends in a
17
+ * file extension, is read with `fs.readFile`. A string from an
18
+ * untrusted caller can name any file the process can read, so pass such
19
+ * input as a `Buffer` or a data URL.
14
20
  *
15
21
  * @param input - The image in any supported format.
16
22
  * @returns A `Buffer` containing the raw image bytes.
@@ -1 +1 @@
1
- {"version":3,"file":"imageToBuffer.d.ts","sourceRoot":"","sources":["../../../../src/io/media/images/imageToBuffer.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiD3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAI3D"}
1
+ {"version":3,"file":"imageToBuffer.d.ts","sourceRoot":"","sources":["../../../../src/io/media/images/imageToBuffer.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D3E;AA+CD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAI3D"}
@@ -16,12 +16,18 @@ import * as fs from 'node:fs/promises';
16
16
  * - **`Buffer`** — returned as-is.
17
17
  * - **Base64 data URL** — e.g. `data:image/png;base64,iVBOR...`. The base64
18
18
  * payload is extracted and decoded.
19
- * - **Raw base64 string** — a string that does not look like a URL or file
20
- * path is assumed to be raw base64 data.
19
+ * - **Raw base64 string** — decoded. A string that does not look like a URL
20
+ * or a file path is decoded directly. One that looks like a path is read as
21
+ * a file first, and decoded when no file exists there and it is base64
22
+ * (standard or URL-safe) whose bytes start with a PNG, JPEG, GIF, WebP, TIFF,
23
+ * AVIF or HEIC signature: standard base64 uses `/` (RFC 4648, Table 1), so a
24
+ * JPEG's base64 begins with `/9j/`. A missing path is still an error.
21
25
  * - **`file://` URL** — resolved to a local filesystem path and read.
22
26
  * - **HTTP/HTTPS URL** — fetched via `globalThis.fetch` and buffered.
23
- * - **Local file path** — any other string is treated as an absolute or
24
- * relative filesystem path and read with `fs.readFile`.
27
+ * - **Local file path** — a string that contains `/` or `\`, or ends in a
28
+ * file extension, is read with `fs.readFile`. A string from an
29
+ * untrusted caller can name any file the process can read, so pass such
30
+ * input as a `Buffer` or a data URL.
25
31
  *
26
32
  * @param input - The image in any supported format.
27
33
  * @returns A `Buffer` containing the raw image bytes.
@@ -72,11 +78,62 @@ export async function imageToBuffer(input) {
72
78
  // treat it as a filesystem path. Otherwise assume raw base64.
73
79
  const looksLikePath = trimmed.includes('/') || trimmed.includes('\\') || /\.\w{2,5}$/.test(trimmed);
74
80
  if (looksLikePath) {
75
- return fs.readFile(trimmed);
81
+ try {
82
+ return await fs.readFile(trimmed);
83
+ }
84
+ catch (error) {
85
+ // Standard base64 uses `/` (RFC 4648, Table 1), so raw base64 looks like a
86
+ // path. When no file exists there and the string decodes to image bytes,
87
+ // it is the image; a missing path that does not stays an error.
88
+ const decoded = isMissingFileError(error) ? decodeBase64Image(trimmed) : null;
89
+ if (decoded) {
90
+ return decoded;
91
+ }
92
+ throw error;
93
+ }
76
94
  }
77
95
  // Fallback: raw base64 string (no data URL prefix).
78
96
  return Buffer.from(trimmed, 'base64');
79
97
  }
98
+ /** The standard and URL-safe base64 alphabets of RFC 4648, with optional padding. */
99
+ const BASE64_PATTERN = /^[A-Za-z0-9+/_-]+={0,2}$/;
100
+ /**
101
+ * Decodes `value` when it is base64 whose bytes start with an image signature.
102
+ *
103
+ * @param value - A string `fs.readFile` found no file at.
104
+ * @returns The decoded bytes, or `null` when `value` is not base64 or its bytes
105
+ * do not start with a PNG, JPEG, GIF, WebP, TIFF, AVIF or HEIC signature.
106
+ */
107
+ function decodeBase64Image(value) {
108
+ const compact = value.replace(/\s+/g, '');
109
+ if (!BASE64_PATTERN.test(compact)) {
110
+ return null;
111
+ }
112
+ const bytes = Buffer.from(compact, 'base64');
113
+ return hasImageSignature(bytes) ? bytes : null;
114
+ }
115
+ /**
116
+ * True when `bytes` start with the signature of PNG, JPEG, GIF, WebP, TIFF, or
117
+ * an ISO media file such as AVIF or HEIC (`ftyp` at offset 4).
118
+ */
119
+ function hasImageSignature(bytes) {
120
+ const startsWith = (...signature) => signature.every((byte, i) => bytes[i] === byte);
121
+ return (startsWith(0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a) || // PNG
122
+ startsWith(0xff, 0xd8, 0xff) || // JPEG
123
+ startsWith(0x47, 0x49, 0x46, 0x38) || // GIF8
124
+ (startsWith(0x52, 0x49, 0x46, 0x46) && bytes.subarray(8, 12).toString('latin1') === 'WEBP') ||
125
+ startsWith(0x49, 0x49, 0x2a, 0x00) || // TIFF, little-endian
126
+ startsWith(0x4d, 0x4d, 0x00, 0x2a) || // TIFF, big-endian
127
+ bytes.subarray(4, 8).toString('latin1') === 'ftyp');
128
+ }
129
+ /**
130
+ * True for the errors `fs.readFile` gives when nothing exists at the path,
131
+ * which are the errors a base64 string read as a path gives.
132
+ */
133
+ function isMissingFileError(error) {
134
+ const code = error?.code;
135
+ return code === 'ENOENT' || code === 'ENOTDIR' || code === 'ENAMETOOLONG';
136
+ }
80
137
  /**
81
138
  * Converts a Node.js `Buffer` into a DOM-compatible `BlobPart`.
82
139
  *
@@ -1 +1 @@
1
- {"version":3,"file":"imageToBuffer.js","sourceRoot":"","sources":["../../../../src/io/media/images/imageToBuffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAsB;IACxD,oCAAoC;IACpC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE7B,0DAA0D;IAC1D,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,oDAAoD;QACpD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,gDAAgD;IAChD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;QAC3C,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,6CAA6C,OAAO,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,CACpG,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,yEAAyE;IACzE,+DAA+D;IAC/D,MAAM,aAAa,GACjB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,oDAAoD;IACpD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"imageToBuffer.js","sourceRoot":"","sources":["../../../../src/io/media/images/imageToBuffer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/io/media/video/VideoAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAeH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAQlE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;OAIG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAEnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAMD;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,gDAAgD;IAChD,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAuB;IAErD,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAM9C;;;;;;;;;OASG;gBACS,IAAI,CAAC,EAAE,iBAAiB;IAWpC;;;;;;;;;OASG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyCxE;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2M3E;;;;;;;OAOG;YACW,uBAAuB;IAYrC;;;;;;;;;OASG;YACW,cAAc;IAkB5B;;;;;;;;;;OAUG;YACW,cAAc;IAmC5B;;;;;;;;;;;OAWG;YACW,aAAa;IA+B3B;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;;;;;;OAYG;YACW,aAAa;IAyB3B;;;;;;;;;;OAUG;YACW,gBAAgB;IAkD9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;;OAKG;YACW,cAAc;IAQ5B;;;;;;;OAOG;YACW,qBAAqB;IAQnC;;;;;OAKG;YACW,iBAAiB;IAe/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAWtB"}
1
+ {"version":3,"file":"VideoAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/io/media/video/VideoAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAeH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAQlE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;OAIG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAEnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAMD;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,gDAAgD;IAChD,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAuB;IAErD,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAM9C;;;;;;;;;OASG;gBACS,IAAI,CAAC,EAAE,iBAAiB;IAWpC;;;;;;;;;OASG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyCxE;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+M3E;;;;;;;OAOG;YACW,uBAAuB;IAYrC;;;;;;;;;OASG;YACW,cAAc;IAkB5B;;;;;;;;;;OAUG;YACW,cAAc;IAmC5B;;;;;;;;;;;OAWG;YACW,aAAa;IA+B3B;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;;;;;;OAYG;YACW,aAAa;IAyB3B;;;;;;;;;;OAUG;YACW,gBAAgB;IAkD9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;;OAKG;YACW,cAAc;IAQ5B;;;;;;;OAOG;YACW,qBAAqB;IAQnC;;;;;OAKG;YACW,iBAAiB;IAe/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAWtB"}
@@ -247,7 +247,10 @@ export class VideoAnalyzer {
247
247
  const audioBuffer = await this._extractAudio(videoPath, audioPath);
248
248
  if (audioBuffer && audioBuffer.length > 0) {
249
249
  this._emitProgress(request.onProgress, 'transcribing', 30, 'Transcribing audio');
250
- const sttResult = await this._sttProvider.transcribe({ data: audioBuffer, mimeType: 'audio/wav', sampleRate: 16000 });
250
+ // Per-scene transcripts need segment timestamps. The OpenAI
251
+ // provider returns them only for verbose_json (served by
252
+ // whisper-1); the other providers ignore the field.
253
+ const sttResult = await this._sttProvider.transcribe({ data: audioBuffer, mimeType: 'audio/wav', sampleRate: 16000 }, { responseFormat: 'verbose_json' });
251
254
  fullTranscript = sttResult.text;
252
255
  // Map transcript segments to scenes by time range
253
256
  if (sttResult.segments && sttResult.segments.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"VideoAnalyzer.js","sourceRoot":"","sources":["../../../../src/io/media/video/VideoAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoAnalyzer.js","sourceRoot":"","sources":["../../../../src/io/media/video/VideoAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -58,11 +58,25 @@ export declare class SpeechProviderResolver extends EventEmitter {
58
58
  private readonly config?;
59
59
  private readonly env;
60
60
  /**
61
- * Internal registry of all providers keyed by their unique string id.
62
- * Overwrites are allowed — re-registering with the same id replaces the
63
- * previous entry, which lets hot-reload and extension refresh work seamlessly.
61
+ * Internal registry of all providers, keyed by kind and id (`keyOf()`), so a
62
+ * speech-to-text and a text-to-speech provider can share an id. Overwrites
63
+ * are allowed — re-registering the same kind and id replaces the previous
64
+ * entry, which lets hot-reload and extension refresh work seamlessly.
64
65
  */
65
66
  private registrations;
67
+ /**
68
+ * The priority each provider was registered with. `refresh()` restores it
69
+ * before applying the preferred lists, so a provider that is no longer
70
+ * preferred loses its boost.
71
+ */
72
+ private basePriorities;
73
+ /**
74
+ * The providers the last `refresh(extensionManager)` read from the manager,
75
+ * by key, so the next one can drop those the manager no longer lists.
76
+ */
77
+ private discovered;
78
+ /** Map key of a registration: providers of different kinds may share an id. */
79
+ private static keyOf;
66
80
  /**
67
81
  * Creates a new SpeechProviderResolver.
68
82
  *
@@ -83,7 +97,10 @@ export declare class SpeechProviderResolver extends EventEmitter {
83
97
  */
84
98
  constructor(config?: SpeechResolverConfig | undefined, env?: Record<string, string | undefined>);
85
99
  /**
86
- * Register a provider, overwriting any existing registration with the same id.
100
+ * Register a provider, overwriting any existing registration with the same
101
+ * kind and id. Re-registering at the priority the resolver shows (a preferred
102
+ * boost included), as `register({ ...entry, provider })` does, keeps the
103
+ * priority the provider was first registered with.
87
104
  *
88
105
  * Emits a `provider_registered` event with `{ id, kind, source }` so that
89
106
  * listeners (e.g. UI dashboards, logging middleware) can track what's available.
@@ -133,7 +150,7 @@ export declare class SpeechProviderResolver extends EventEmitter {
133
150
  * @param requirements - Optional filtering criteria (streaming, local, features,
134
151
  * preferredIds).
135
152
  * @returns The resolved STT provider, possibly wrapped in a FallbackSTTProxy.
136
- * @throws {Error} When no configured STT provider matches the requirements.
153
+ * @throws {Error} When no configured STT provider with an instance matches the requirements.
137
154
  *
138
155
  * @see {@link FallbackSTTProxy} for fallback chain behaviour
139
156
  * @see {@link ProviderRequirements} for available filter options
@@ -161,7 +178,7 @@ export declare class SpeechProviderResolver extends EventEmitter {
161
178
  * @param requirements - Optional filtering criteria (streaming, local, features,
162
179
  * preferredIds).
163
180
  * @returns The resolved TTS provider, possibly wrapped in a FallbackTTSProxy.
164
- * @throws {Error} When no configured TTS provider matches the requirements.
181
+ * @throws {Error} When no configured TTS provider with an instance matches the requirements.
165
182
  *
166
183
  * @see {@link FallbackTTSProxy} for fallback chain behaviour
167
184
  * @see {@link ProviderRequirements} for available filter options
@@ -181,7 +198,7 @@ export declare class SpeechProviderResolver extends EventEmitter {
181
198
  * would cause state inconsistency.
182
199
  *
183
200
  * @returns The resolved VAD provider instance.
184
- * @throws {Error} When no VAD provider is registered and configured.
201
+ * @throws {Error} When no configured VAD provider with an instance is registered.
185
202
  *
186
203
  * @example
187
204
  * ```ts
@@ -213,17 +230,20 @@ export declare class SpeechProviderResolver extends EventEmitter {
213
230
  * optionally discovering extension providers, and applying user-configured
214
231
  * preferred priorities.
215
232
  *
216
- * The three-phase refresh sequence is:
217
- * 1. `registerCoreProviders()` — register all built-in providers from the
233
+ * The refresh sequence is:
234
+ * 1. `discoverExtensionProviders()` — if an ExtensionManager is provided, read
235
+ * the speech providers it lists as active, and drop the ones an earlier
236
+ * refresh read from it that it no longer lists.
237
+ * 2. `registerCoreProviders()` — register all built-in providers from the
218
238
  * static catalog, marking each as configured/unconfigured based on env vars.
219
- * 2. `discoverExtensionProviders()` — if an ExtensionManager is provided,
220
- * discover and register any additional speech providers from extensions.
221
- * 3. `applyPreferredPriorities()` — boost priority for providers listed in
239
+ * 3. Register the providers read in step 1, at priority 200.
240
+ * 4. `applyPreferredPriorities()` — boost priority for providers listed in
222
241
  * the user's `config.stt.preferred` / `config.tts.preferred` arrays.
223
242
  *
224
- * @param extensionManager - Optional object exposing `getDescriptorsByKind(kind)`.
225
- * Uses `any` type because the ExtensionManager interface is defined in the
226
- * extensions package and importing it here would create a circular dependency.
243
+ * @param extensionManager - Optional `ExtensionManager` (its speech provider
244
+ * registries are read through `getRegistry(kind).listActive()`), or any
245
+ * object exposing `getDescriptorsByKind(kind)`. Uses `any` type because
246
+ * importing the ExtensionManager type here would create a circular dependency.
227
247
  *
228
248
  * @example
229
249
  * ```ts
@@ -241,12 +261,12 @@ export declare class SpeechProviderResolver extends EventEmitter {
241
261
  * **Path A — Preferred IDs provided:**
242
262
  * When `requirements.preferredIds` is set, iterate through the IDs in the
243
263
  * caller's specified order. For each ID, look up the registration and include
244
- * it only if it matches the kind, is configured, and satisfies all other
245
- * requirements. This preserves the caller's explicit ordering preference.
264
+ * it only if it matches the kind, is configured, holds a provider instance,
265
+ * and satisfies all other requirements. This preserves the caller's explicit ordering preference.
246
266
  *
247
267
  * **Path B — No preferred IDs:**
248
- * Return all configured providers of the requested kind that match the
249
- * requirements, sorted by ascending priority (lower = better). This is the
268
+ * Return all configured providers of the requested kind that hold an
269
+ * instance and match the requirements, sorted by ascending priority (lower = better). This is the
250
270
  * default path for most callers.
251
271
  *
252
272
  * @param kind - The provider kind to resolve ('stt', 'tts', etc.).
@@ -291,8 +311,10 @@ export declare class SpeechProviderResolver extends EventEmitter {
291
311
  * implemented backends (e.g. NVIDIA NeMo, Bark).
292
312
  *
293
313
  * Core providers are registered with `priority: 100` and `source: 'core'`.
294
- * The `provider` field is set to `null` (lazy instantiation) — actual provider
295
- * instances are created on first use by the SpeechRuntime.
314
+ * A core entry has no instance (`provider` is `null`): it records the id and
315
+ * whether its keys are set. `SpeechRuntime` registers the instances it builds
316
+ * under the same ids, and an id that already holds an instance is skipped, so
317
+ * a refresh keeps it. The resolve methods skip entries without an instance.
296
318
  *
297
319
  * @example
298
320
  * ```ts
@@ -302,27 +324,43 @@ export declare class SpeechProviderResolver extends EventEmitter {
302
324
  */
303
325
  private registerCoreProviders;
304
326
  /**
305
- * Discover speech providers exposed by an ExtensionManager via
306
- * `getDescriptorsByKind()`.
327
+ * Read the speech providers an ExtensionManager lists as active, as
328
+ * registrations for `refresh()` to register.
307
329
  *
308
330
  * Extension providers are registered with `priority: 200` (lower than core's
309
331
  * 100) so they serve as fallbacks unless the user explicitly boosts them via
310
- * `config.stt.preferred` / `config.tts.preferred`.
332
+ * `config.stt.preferred` / `config.tts.preferred`. Each is registered under
333
+ * the provider's own `id` (the descriptor id when the provider has none), the
334
+ * id preferred lists and `SpeechRuntime` use, and counts as configured: the
335
+ * pack built the instance with its own options and secrets.
311
336
  *
312
337
  * The `extensionManager` parameter uses `any` because the ExtensionManager
313
338
  * type lives in the extensions package — importing it would create a circular
314
- * dependency. We only rely on the `getDescriptorsByKind` method signature.
339
+ * dependency. An `ExtensionManager` is read through
340
+ * `getRegistry(kind).listActive()`; another object can expose
341
+ * `getDescriptorsByKind(kind)` instead.
315
342
  *
316
- * @param extensionManager - Object exposing `getDescriptorsByKind(kind)` that
317
- * returns an array of `{ id: string; payload: unknown }` descriptors.
343
+ * @param extensionManager - An `ExtensionManager`, or an object exposing
344
+ * `getDescriptorsByKind(kind)`; either returns `{ id: string; payload: unknown }`
345
+ * descriptors.
346
+ * @returns One registration per active descriptor that carries a provider.
318
347
  *
319
348
  * @example
320
349
  * ```ts
321
350
  * // Called internally by refresh():
322
- * this.discoverExtensionProviders(extensionManager);
351
+ * const discovered = this.discoverExtensionProviders(extensionManager);
323
352
  * ```
324
353
  */
325
354
  private discoverExtensionProviders;
355
+ /**
356
+ * Remove the providers an earlier `refresh(extensionManager)` read that the
357
+ * manager no longer lists as active (an unloaded pack or a deactivated
358
+ * descriptor), so the resolve methods stop returning them. A registration
359
+ * that now holds a different provider is left alone.
360
+ *
361
+ * @param discovered - The registrations read from the manager this refresh.
362
+ */
363
+ private dropProvidersNoLongerDiscovered;
326
364
  /**
327
365
  * Boost priority for providers listed in `config.stt.preferred` /
328
366
  * `config.tts.preferred`.