@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.
- package/README.md +1 -1
- package/dist/api/model.d.ts +32 -5
- package/dist/api/model.d.ts.map +1 -1
- package/dist/api/model.js +73 -8
- package/dist/api/model.js.map +1 -1
- package/dist/api/runtime/strategies/shared.d.ts.map +1 -1
- package/dist/api/runtime/strategies/shared.js +21 -4
- package/dist/api/runtime/strategies/shared.js.map +1 -1
- package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.d.ts +5 -3
- package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.d.ts.map +1 -1
- package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.js +5 -3
- package/dist/cognition/rag/multimodal/createMultimodalIndexerFromResolver.js.map +1 -1
- package/dist/core/llm/providers/implementations/OpenRouterProvider.js +1 -1
- package/dist/core/llm/providers/implementations/OpenRouterProvider.js.map +1 -1
- package/dist/core/llm/providers/structuredOutputFormat.d.ts.map +1 -1
- package/dist/core/llm/providers/structuredOutputFormat.js +65 -17
- package/dist/core/llm/providers/structuredOutputFormat.js.map +1 -1
- package/dist/io/hearing/providers/DeepgramBatchSTTProvider.d.ts +13 -5
- package/dist/io/hearing/providers/DeepgramBatchSTTProvider.d.ts.map +1 -1
- package/dist/io/hearing/providers/DeepgramBatchSTTProvider.js +4 -3
- package/dist/io/hearing/providers/DeepgramBatchSTTProvider.js.map +1 -1
- package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.d.ts +40 -14
- package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.d.ts.map +1 -1
- package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.js +108 -18
- package/dist/io/hearing/providers/OpenAIWhisperSpeechToTextProvider.js.map +1 -1
- package/dist/io/media/images/imageToBuffer.d.ts +10 -4
- package/dist/io/media/images/imageToBuffer.d.ts.map +1 -1
- package/dist/io/media/images/imageToBuffer.js +62 -5
- package/dist/io/media/images/imageToBuffer.js.map +1 -1
- package/dist/io/media/video/VideoAnalyzer.d.ts.map +1 -1
- package/dist/io/media/video/VideoAnalyzer.js +4 -1
- package/dist/io/media/video/VideoAnalyzer.js.map +1 -1
- package/dist/io/speech/SpeechProviderResolver.d.ts +66 -28
- package/dist/io/speech/SpeechProviderResolver.d.ts.map +1 -1
- package/dist/io/speech/SpeechProviderResolver.js +129 -53
- package/dist/io/speech/SpeechProviderResolver.js.map +1 -1
- package/dist/io/speech/SpeechRuntime.d.ts.map +1 -1
- package/dist/io/speech/SpeechRuntime.js +9 -1
- package/dist/io/speech/SpeechRuntime.js.map +1 -1
- package/dist/io/speech/providerCatalog.d.ts.map +1 -1
- package/dist/io/speech/providerCatalog.js +6 -2
- package/dist/io/speech/providerCatalog.js.map +1 -1
- package/dist/io/speech/providers/OpenAITextToSpeechProvider.d.ts +5 -0
- package/dist/io/speech/providers/OpenAITextToSpeechProvider.d.ts.map +1 -1
- package/dist/io/speech/providers/OpenAITextToSpeechProvider.js.map +1 -1
- package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.d.ts +11 -3
- package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.d.ts.map +1 -1
- package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.js +11 -3
- package/dist/io/voice-pipeline/providers/CartesiaBatchTTS.js.map +1 -1
- package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.d.ts +1 -1
- package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.d.ts.map +1 -1
- package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.js +2 -2
- package/dist/io/voice-pipeline/providers/CartesiaStreamingTTS.js.map +1 -1
- package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.d.ts +8 -0
- package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.d.ts.map +1 -1
- package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.js +3 -0
- package/dist/io/voice-pipeline/providers/DeepgramPreRecordedBatchSTT.js.map +1 -1
- package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.d.ts +11 -3
- package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.d.ts.map +1 -1
- package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.js +22 -3
- package/dist/io/voice-pipeline/providers/DeepgramStreamingSTT.js.map +1 -1
- package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts +3 -2
- package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.d.ts.map +1 -1
- package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.js +7 -4
- package/dist/io/voice-pipeline/providers/ElevenLabsStreamingSTT.js.map +1 -1
- package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.d.ts +5 -3
- package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.d.ts.map +1 -1
- package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.js +24 -6
- package/dist/io/voice-pipeline/providers/OpenAIWhisperBatchSTT.js.map +1 -1
- 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
|
|
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
|
|
73
|
-
*
|
|
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
|
|
78
|
-
* - `json
|
|
79
|
-
* - `text
|
|
80
|
-
* - `srt
|
|
81
|
-
* - `vtt
|
|
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'
|
|
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
|
|
151
|
-
const model = options.model
|
|
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
|
|
159
|
-
|
|
160
|
-
|
|
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)
|
|
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'
|
|
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'
|
|
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":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;
|
|
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** —
|
|
9
|
-
* path is
|
|
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** —
|
|
13
|
-
*
|
|
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
|
|
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** —
|
|
20
|
-
* path is
|
|
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** —
|
|
24
|
-
*
|
|
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
|
-
|
|
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
|
|
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;
|
|
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
|
-
|
|
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
|
|
62
|
-
*
|
|
63
|
-
*
|
|
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
|
|
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
|
|
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
|
|
217
|
-
* 1. `
|
|
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
|
-
*
|
|
220
|
-
*
|
|
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
|
|
225
|
-
*
|
|
226
|
-
*
|
|
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,
|
|
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
|
|
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
|
-
*
|
|
295
|
-
*
|
|
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
|
-
*
|
|
306
|
-
* `
|
|
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.
|
|
339
|
+
* dependency. An `ExtensionManager` is read through
|
|
340
|
+
* `getRegistry(kind).listActive()`; another object can expose
|
|
341
|
+
* `getDescriptorsByKind(kind)` instead.
|
|
315
342
|
*
|
|
316
|
-
* @param extensionManager -
|
|
317
|
-
*
|
|
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`.
|