@nodetool-ai/runtime 0.8.8 → 0.8.9-beta.2

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 (148) hide show
  1. package/dist/.nodetool-build-stamp +1 -1
  2. package/dist/context.d.ts +6 -2
  3. package/dist/context.d.ts.map +1 -1
  4. package/dist/context.js +13 -24
  5. package/dist/context.js.map +1 -1
  6. package/dist/host-binaries.d.ts +5 -5
  7. package/dist/host-binaries.js +5 -5
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/invocation-account.d.ts +1 -42
  13. package/dist/invocation-account.d.ts.map +1 -1
  14. package/dist/invocation-account.js +1 -59
  15. package/dist/invocation-account.js.map +1 -1
  16. package/dist/media/abort.d.ts +8 -0
  17. package/dist/media/abort.d.ts.map +1 -0
  18. package/dist/media/abort.js +18 -0
  19. package/dist/media/abort.js.map +1 -0
  20. package/dist/media/audio-encoder.d.ts +37 -0
  21. package/dist/media/audio-encoder.d.ts.map +1 -0
  22. package/dist/media/audio-encoder.js +118 -0
  23. package/dist/media/audio-encoder.js.map +1 -0
  24. package/dist/media/audio.d.ts +36 -0
  25. package/dist/media/audio.d.ts.map +1 -0
  26. package/dist/media/audio.js +84 -0
  27. package/dist/media/audio.js.map +1 -0
  28. package/dist/media/av.d.ts +51 -0
  29. package/dist/media/av.d.ts.map +1 -0
  30. package/dist/media/av.js +146 -0
  31. package/dist/media/av.js.map +1 -0
  32. package/dist/media/codecs.d.ts +9 -0
  33. package/dist/media/codecs.d.ts.map +1 -0
  34. package/dist/media/codecs.js +17 -0
  35. package/dist/media/codecs.js.map +1 -0
  36. package/dist/media/concat.d.ts +56 -0
  37. package/dist/media/concat.d.ts.map +1 -0
  38. package/dist/media/concat.js +319 -0
  39. package/dist/media/concat.js.map +1 -0
  40. package/dist/media/convert.d.ts +31 -0
  41. package/dist/media/convert.d.ts.map +1 -0
  42. package/dist/media/convert.js +114 -0
  43. package/dist/media/convert.js.map +1 -0
  44. package/dist/media/decode.d.ts +31 -0
  45. package/dist/media/decode.d.ts.map +1 -0
  46. package/dist/media/decode.js +85 -0
  47. package/dist/media/decode.js.map +1 -0
  48. package/dist/media/filter-graph.d.ts +53 -0
  49. package/dist/media/filter-graph.d.ts.map +1 -0
  50. package/dist/media/filter-graph.js +260 -0
  51. package/dist/media/filter-graph.js.map +1 -0
  52. package/dist/media/frames.d.ts +31 -0
  53. package/dist/media/frames.d.ts.map +1 -0
  54. package/dist/media/frames.js +112 -0
  55. package/dist/media/frames.js.map +1 -0
  56. package/dist/media/index.d.ts +26 -0
  57. package/dist/media/index.d.ts.map +1 -0
  58. package/dist/media/index.js +26 -0
  59. package/dist/media/index.js.map +1 -0
  60. package/dist/media/mux.d.ts +58 -0
  61. package/dist/media/mux.d.ts.map +1 -0
  62. package/dist/media/mux.js +234 -0
  63. package/dist/media/mux.js.map +1 -0
  64. package/dist/media/probe.d.ts +84 -0
  65. package/dist/media/probe.d.ts.map +1 -0
  66. package/dist/media/probe.js +133 -0
  67. package/dist/media/probe.js.map +1 -0
  68. package/dist/media/rgba.d.ts +78 -0
  69. package/dist/media/rgba.d.ts.map +1 -0
  70. package/dist/media/rgba.js +285 -0
  71. package/dist/media/rgba.js.map +1 -0
  72. package/dist/media/testing.d.ts +119 -0
  73. package/dist/media/testing.d.ts.map +1 -0
  74. package/dist/media/testing.js +343 -0
  75. package/dist/media/testing.js.map +1 -0
  76. package/dist/media/transcode.d.ts +17 -0
  77. package/dist/media/transcode.d.ts.map +1 -0
  78. package/dist/media/transcode.js +19 -0
  79. package/dist/media/transcode.js.map +1 -0
  80. package/dist/media/transform.d.ts +61 -0
  81. package/dist/media/transform.d.ts.map +1 -0
  82. package/dist/media/transform.js +371 -0
  83. package/dist/media/transform.js.map +1 -0
  84. package/dist/media/verify.d.ts +17 -0
  85. package/dist/media/verify.d.ts.map +1 -0
  86. package/dist/media/verify.js +65 -0
  87. package/dist/media/verify.js.map +1 -0
  88. package/dist/media-loader.d.ts +8 -0
  89. package/dist/media-loader.d.ts.map +1 -0
  90. package/dist/media-loader.js +10 -0
  91. package/dist/media-loader.js.map +1 -0
  92. package/dist/prefixed-storage-adapter.d.ts.map +1 -1
  93. package/dist/prefixed-storage-adapter.js +1 -1
  94. package/dist/prefixed-storage-adapter.js.map +1 -1
  95. package/dist/providers/anthropic-provider.d.ts.map +1 -1
  96. package/dist/providers/anthropic-provider.js +1 -17
  97. package/dist/providers/anthropic-provider.js.map +1 -1
  98. package/dist/providers/data-uri.d.ts +6 -0
  99. package/dist/providers/data-uri.d.ts.map +1 -0
  100. package/dist/providers/data-uri.js +19 -0
  101. package/dist/providers/data-uri.js.map +1 -0
  102. package/dist/providers/fake-provider.js +1 -1
  103. package/dist/providers/meta-transcription.d.ts +1 -5
  104. package/dist/providers/meta-transcription.d.ts.map +1 -1
  105. package/dist/providers/meta-transcription.js +9 -55
  106. package/dist/providers/meta-transcription.js.map +1 -1
  107. package/dist/providers/node-llama-cpp-trending.generated.js +132 -132
  108. package/dist/providers/node-llama-cpp-trending.generated.js.map +1 -1
  109. package/dist/providers/ollama-provider.d.ts.map +1 -1
  110. package/dist/providers/ollama-provider.js +1 -17
  111. package/dist/providers/ollama-provider.js.map +1 -1
  112. package/dist/providers/openai-provider.js +2 -2
  113. package/dist/providers/openai-provider.js.map +1 -1
  114. package/dist/providers/openrouter-provider.d.ts.map +1 -1
  115. package/dist/providers/openrouter-provider.js +1 -0
  116. package/dist/providers/openrouter-provider.js.map +1 -1
  117. package/dist/providers/safe-url.d.ts +1 -69
  118. package/dist/providers/safe-url.d.ts.map +1 -1
  119. package/dist/providers/safe-url.js +1 -284
  120. package/dist/providers/safe-url.js.map +1 -1
  121. package/dist/providers/topaz-provider.d.ts +1 -1
  122. package/dist/providers/topaz-provider.js +1 -1
  123. package/dist/providers/video-frame-fallback.d.ts +1 -1
  124. package/dist/providers/video-frame-fallback.js +4 -4
  125. package/dist/providers/video-frame-fallback.js.map +1 -1
  126. package/dist/providers/video-frames.d.ts +6 -16
  127. package/dist/providers/video-frames.d.ts.map +1 -1
  128. package/dist/providers/video-frames.js +48 -116
  129. package/dist/providers/video-frames.js.map +1 -1
  130. package/dist/storage-workspace.d.ts +1 -61
  131. package/dist/storage-workspace.d.ts.map +1 -1
  132. package/dist/storage-workspace.js +2 -430
  133. package/dist/storage-workspace.js.map +1 -1
  134. package/dist/testing.d.ts.map +1 -1
  135. package/dist/testing.js +57 -1
  136. package/dist/testing.js.map +1 -1
  137. package/dist/trim-video-window.d.ts.map +1 -1
  138. package/dist/trim-video-window.js +2 -32
  139. package/dist/trim-video-window.js.map +1 -1
  140. package/dist/workspace.d.ts +1 -118
  141. package/dist/workspace.d.ts.map +1 -1
  142. package/dist/workspace.js +1 -111
  143. package/dist/workspace.js.map +1 -1
  144. package/dist/yt-dlp-format.d.ts +22 -0
  145. package/dist/yt-dlp-format.d.ts.map +1 -0
  146. package/dist/yt-dlp-format.js +90 -0
  147. package/dist/yt-dlp-format.js.map +1 -0
  148. package/package.json +23 -6
@@ -0,0 +1,371 @@
1
+ /**
2
+ * One output file from filtered or copied input streams: the in-process form
3
+ * of the ffmpeg CLI invocations the video nodes ran, `-vf`, `-af`,
4
+ * `-filter_complex` with `-map`, `-c copy` and `-shortest`. The graph strings
5
+ * are the CLI's, unchanged.
6
+ */
7
+ import { AV_NOPTS_VALUE, AVSEEK_FLAG_BACKWARD, Demuxer, Encoder, Rational } from "node-av";
8
+ import { AudioEncoder } from "./audio-encoder.js";
9
+ import { abortError, findEncoder, openFileMuxer, quietLibav, startTimeSeconds, throwIfAborted } from "./av.js";
10
+ import { openFilterComplex, openFilterGraph } from "./filter-graph.js";
11
+ /** The CLI's defaults for an `.mp4` output: H.264 in yuv420p. */
12
+ export const DEFAULT_VIDEO_ENCODER = {
13
+ codec: "libx264",
14
+ pixelFormat: "yuv420p"
15
+ };
16
+ function seconds(ts, timeBase) {
17
+ return (Number(ts) * timeBase.num) / timeBase.den;
18
+ }
19
+ function packetSeconds(packet) {
20
+ const ts = packet.dts !== AV_NOPTS_VALUE ? packet.dts : packet.pts;
21
+ if (ts === AV_NOPTS_VALUE || !(packet.timeBase.den > 0))
22
+ return Number.NEGATIVE_INFINITY;
23
+ return seconds(ts, packet.timeBase);
24
+ }
25
+ function packetEndSeconds(packet) {
26
+ if (packet.pts === AV_NOPTS_VALUE || !(packet.timeBase.den > 0))
27
+ return Number.NEGATIVE_INFINITY;
28
+ return seconds(packet.pts + packet.duration, packet.timeBase);
29
+ }
30
+ /** The `[N:v]` and `[N:a]` labels a graph reads, in order of appearance. */
31
+ function graphInputs(graph, inputs) {
32
+ const seen = new Set();
33
+ const found = [];
34
+ for (const match of graph.matchAll(/\[(\d+):([va])\]/g)) {
35
+ const label = `${match[1]}:${match[2]}`;
36
+ if (seen.has(label))
37
+ continue;
38
+ seen.add(label);
39
+ const input = inputs[Number(match[1])];
40
+ if (!input)
41
+ throw new Error(`The graph reads [${label}] but there is no input ${match[1]}`);
42
+ if (input.seekSec || input.toSec !== undefined) {
43
+ throw new Error(`Input ${match[1]} is seeked; a filter_complex input cannot be`);
44
+ }
45
+ found.push({ filePath: input.filePath, kind: match[2] === "v" ? "video" : "audio", label });
46
+ }
47
+ return found;
48
+ }
49
+ /** Open the filtered frames a plan names, or `null` for a missing optional stream. */
50
+ async function openPlanFrames(plan, kind, inputs, tail, signal) {
51
+ if ("graph" in plan) {
52
+ const output = tail ? "__transform_out" : plan.output;
53
+ return openFilterComplex({
54
+ inputs: graphInputs(plan.graph, inputs),
55
+ graph: tail ? `${plan.graph};[${plan.output}]${tail}[${output}]` : plan.graph,
56
+ output,
57
+ outputKind: kind,
58
+ signal
59
+ });
60
+ }
61
+ const index = plan.input ?? 0;
62
+ const input = inputs[index];
63
+ if (!input)
64
+ throw new Error(`There is no input ${index}`);
65
+ const seekSec = input.seekSec && input.seekSec > 0 ? input.seekSec : 0;
66
+ const prefix = kind === "audio" ? "a" : "";
67
+ // Frames decoded from the keyframe before the seek point sit before zero; the
68
+ // CLI dropped them, and `-to` ends the read at a source time.
69
+ const trims = [
70
+ seekSec > 0 ? `${prefix}trim=start=0` : null,
71
+ input.toSec !== undefined && input.toSec > seekSec ? `${prefix}trim=end=${input.toSec - seekSec}` : null
72
+ ];
73
+ const run = await openFilterGraph({
74
+ filePath: input.filePath,
75
+ kind,
76
+ filter: [...trims, plan.filter, tail].filter((step) => step).join(",") || (kind === "audio" ? "anull" : "null"),
77
+ seekSec,
78
+ signal
79
+ });
80
+ if (!run && !plan.optional)
81
+ throw new Error(`${input.filePath} has no ${kind} stream`);
82
+ return run;
83
+ }
84
+ /** Packets of an input stream, copied, rebased to start near zero. */
85
+ async function openCopySource(output, input, kind, optional, startSec, signal) {
86
+ const demuxer = await Demuxer.open(input.filePath, { signal });
87
+ try {
88
+ const stream = kind === "video" ? demuxer.video() : demuxer.audio();
89
+ if (!stream) {
90
+ await demuxer.close();
91
+ if (optional)
92
+ return null;
93
+ throw new Error(`${input.filePath} has no ${kind} stream`);
94
+ }
95
+ const formatStart = startTimeSeconds(demuxer.getFormatContext().startTime, { num: 1, den: 1_000_000 });
96
+ const seekSec = input.seekSec && input.seekSec > 0 ? input.seekSec : 0;
97
+ if (seekSec > 0)
98
+ await demuxer.seek(formatStart + seekSec, -1, AVSEEK_FLAG_BACKWARD);
99
+ const index = output.muxer.addStream(stream);
100
+ // Matroska and WebM name a codec by its id. A tag copied from MP4
101
+ // (`mp4a`) fails their header, so drop it, as the CLI drops a tag the
102
+ // output format does not take.
103
+ if (/^(matroska|webm)/.test(output.muxer.getFormatContext().oformat?.name ?? "")) {
104
+ const copied = output.muxer.getStream(index);
105
+ if (copied)
106
+ copied.codecpar.codecTag = 0;
107
+ }
108
+ const timeBase = stream.timeBase;
109
+ const packets = demuxer.packets(stream.index);
110
+ const endSec = input.toSec;
111
+ let offsetTicks = null;
112
+ let closed = false;
113
+ return {
114
+ index,
115
+ async next() {
116
+ for (;;) {
117
+ if (closed)
118
+ return null;
119
+ const { value, done } = await packets.next();
120
+ if (done)
121
+ return null;
122
+ if (!value)
123
+ continue;
124
+ if (signal?.aborted) {
125
+ value.free();
126
+ throw abortError(signal);
127
+ }
128
+ const ts = value.pts !== AV_NOPTS_VALUE ? value.pts : value.dts;
129
+ const sourceSec = ts === AV_NOPTS_VALUE ? 0 : seconds(ts, timeBase) - formatStart;
130
+ if (endSec !== undefined && sourceSec >= endSec) {
131
+ value.free();
132
+ return null;
133
+ }
134
+ if (offsetTicks === null) {
135
+ // A copy cannot cut between keyframes: the output starts at the
136
+ // keyframe the seek landed on, which the first copied stream
137
+ // fixes for every stream of the file.
138
+ startSec.value ??= seekSec > 0 ? sourceSec : 0;
139
+ offsetTicks = BigInt(Math.round(((formatStart + startSec.value) * timeBase.den) / timeBase.num));
140
+ }
141
+ if (seekSec > 0 && sourceSec < startSec.value) {
142
+ value.free();
143
+ continue;
144
+ }
145
+ if (value.pts !== AV_NOPTS_VALUE)
146
+ value.pts -= offsetTicks;
147
+ if (value.dts !== AV_NOPTS_VALUE)
148
+ value.dts -= offsetTicks;
149
+ return value;
150
+ }
151
+ },
152
+ async close() {
153
+ if (closed)
154
+ return;
155
+ closed = true;
156
+ await packets.return(undefined);
157
+ await demuxer.close();
158
+ }
159
+ };
160
+ }
161
+ catch (error) {
162
+ await demuxer.close();
163
+ throw error;
164
+ }
165
+ }
166
+ /** Packets of filtered video frames, encoded at the graph's output rate. */
167
+ async function openVideoEncodeSource(output, run, spec, signal) {
168
+ const codec = findEncoder(spec.codec);
169
+ if (!codec)
170
+ throw new Error(`This libav build has no ${spec.codec} encoder`);
171
+ const frames = run.frames();
172
+ const first = await frames.next();
173
+ if (first.done) {
174
+ await run.close();
175
+ return null;
176
+ }
177
+ const head = first.value;
178
+ // x264 sizes its rate control by the frame rate; without one it reads the
179
+ // time base as the rate, and a flat picture drifts several levels.
180
+ const rate = run.frameRate();
181
+ let encoder;
182
+ try {
183
+ encoder = await Encoder.create(codec, {
184
+ options: spec.options,
185
+ context: rate ? { framerate: new Rational(rate.num, rate.den) } : undefined,
186
+ signal
187
+ });
188
+ }
189
+ catch (error) {
190
+ head.free();
191
+ await run.close();
192
+ throw error;
193
+ }
194
+ const index = output.muxer.addStream(encoder);
195
+ return packetSourceFrom(index, replayRun(run, head, frames), (frame) => encoder.encodeAll(frame), () => encoder.encodeAll(null), () => encoder.close(), signal);
196
+ }
197
+ /** `run` with `head`, already pulled from `frames`, put back in front. */
198
+ function replayRun(run, head, frames) {
199
+ async function* replay() {
200
+ yield head;
201
+ yield* frames;
202
+ }
203
+ return { frames: replay, frameRate: () => run.frameRate(), close: () => run.close() };
204
+ }
205
+ /** Packets of filtered audio frames, encoded at the first frame's rate and channel count. */
206
+ async function openAudioEncodeSource(output, run, codecName, signal) {
207
+ const frames = run.frames();
208
+ const first = await frames.next();
209
+ if (first.done) {
210
+ await run.close();
211
+ return null;
212
+ }
213
+ const head = first.value;
214
+ let encoder;
215
+ try {
216
+ encoder = await AudioEncoder.create(codecName, {
217
+ sampleRate: head.sampleRate,
218
+ channels: head.channels,
219
+ signal
220
+ });
221
+ }
222
+ catch (error) {
223
+ head.free();
224
+ await run.close();
225
+ throw error;
226
+ }
227
+ const index = output.muxer.addStream(encoder.encoder);
228
+ return packetSourceFrom(index, replayRun(run, head, frames), (frame) => encoder.encode(frame), () => encoder.flush(), () => encoder.close(), signal);
229
+ }
230
+ function packetSourceFrom(index, run, encode, flush, release, signal) {
231
+ const frames = run.frames();
232
+ const queue = [];
233
+ let ended = false;
234
+ let closed = false;
235
+ return {
236
+ index,
237
+ async next() {
238
+ while (queue.length === 0 && !ended) {
239
+ const { value, done } = await frames.next();
240
+ if (done) {
241
+ ended = true;
242
+ queue.push(...(await flush()));
243
+ break;
244
+ }
245
+ try {
246
+ if (signal?.aborted)
247
+ throw abortError(signal);
248
+ queue.push(...(await encode(value)));
249
+ }
250
+ finally {
251
+ value.free();
252
+ }
253
+ }
254
+ return queue.shift() ?? null;
255
+ },
256
+ async close() {
257
+ if (closed)
258
+ return;
259
+ closed = true;
260
+ for (const packet of queue.splice(0))
261
+ packet.free();
262
+ await run.close();
263
+ release();
264
+ }
265
+ };
266
+ }
267
+ /**
268
+ * Write `outPath` from `inputs`. `video` and `audio` name where each output
269
+ * stream comes from, or `null` for none. Filtered streams are encoded with
270
+ * `videoEncoder` (H.264 yuv420p by default) and `audioCodec` (AAC by default,
271
+ * at the filtered rate and channel count). `shortest` ends the file when its
272
+ * first stream ends, as `-shortest` did.
273
+ */
274
+ export async function transformMedia(opts) {
275
+ const { signal, inputs } = opts;
276
+ quietLibav();
277
+ throwIfAborted(signal);
278
+ if (!opts.video && !opts.audio)
279
+ throw new Error("The output has no stream");
280
+ const videoSpec = opts.videoEncoder ?? DEFAULT_VIDEO_ENCODER;
281
+ const output = await openFileMuxer(opts.outPath, {
282
+ format: opts.format,
283
+ muxerOptions: opts.muxerOptions,
284
+ signal
285
+ });
286
+ const sources = [];
287
+ const copyStart = { value: null };
288
+ try {
289
+ for (const [kind, plan] of [
290
+ ["video", opts.video],
291
+ ["audio", opts.audio]
292
+ ]) {
293
+ if (!plan)
294
+ continue;
295
+ if ("copy" in plan) {
296
+ const input = inputs[plan.copy];
297
+ if (!input)
298
+ throw new Error(`There is no input ${plan.copy}`);
299
+ const source = await openCopySource(output, input, kind, plan.optional ?? false, copyStart, signal);
300
+ if (source)
301
+ sources.push(source);
302
+ continue;
303
+ }
304
+ const tail = kind === "video"
305
+ ? [videoSpec.filter, `format=${videoSpec.pixelFormat}`].filter(Boolean).join(",")
306
+ : "";
307
+ const run = await openPlanFrames(plan, kind, inputs, tail, signal);
308
+ if (!run)
309
+ continue;
310
+ const source = kind === "video"
311
+ ? await openVideoEncodeSource(output, run, videoSpec, signal)
312
+ : await openAudioEncodeSource(output, run, opts.audioCodec ?? "aac", signal);
313
+ if (source)
314
+ sources.push(source);
315
+ }
316
+ if (sources.length === 0)
317
+ throw new Error("No input stream reached the output");
318
+ await interleave(output, sources, opts.shortest ?? false, signal);
319
+ await output.close();
320
+ }
321
+ finally {
322
+ for (const source of sources)
323
+ await source.close();
324
+ await output.close();
325
+ }
326
+ }
327
+ /**
328
+ * Write every source's packets in time order. With `shortest`, the first
329
+ * source to end sets the end of the file: later packets of the others are
330
+ * dropped, which also stops an endless one (an `apad`).
331
+ */
332
+ async function interleave(output, sources, shortest, signal) {
333
+ // One at a time: the first copied stream fixes where every copy starts.
334
+ const heads = [];
335
+ for (const source of sources) {
336
+ heads.push({ source, packet: await source.next(), end: Number.NEGATIVE_INFINITY });
337
+ }
338
+ let endSec = Number.POSITIVE_INFINITY;
339
+ let written = 0;
340
+ for (;;) {
341
+ if (signal?.aborted)
342
+ throw abortError(signal);
343
+ let earliest = null;
344
+ for (const head of heads) {
345
+ if (!head.packet)
346
+ continue;
347
+ if (!earliest || packetSeconds(head.packet) < packetSeconds(earliest.packet))
348
+ earliest = head;
349
+ }
350
+ if (!earliest)
351
+ break;
352
+ const packet = earliest.packet;
353
+ if (packetSeconds(packet) >= endSec) {
354
+ // Past the end the shortest stream set: this source is done.
355
+ packet.free();
356
+ earliest.packet = null;
357
+ await earliest.source.close();
358
+ continue;
359
+ }
360
+ earliest.end = Math.max(earliest.end, packetEndSeconds(packet));
361
+ await output.muxer.writePacket(packet, earliest.source.index);
362
+ packet.free();
363
+ written += 1;
364
+ earliest.packet = await earliest.source.next();
365
+ if (!earliest.packet && shortest)
366
+ endSec = Math.min(endSec, earliest.end);
367
+ }
368
+ if (written === 0)
369
+ throw new Error("The inputs produced no packets");
370
+ }
371
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/media/transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Decode a whole stream with libav's strict error detection and keep nothing:
3
+ * the in-process form of `ffmpeg -xerror -err_detect explode -i in -f null -`.
4
+ */
5
+ import type { MediaKind } from "./decode.js";
6
+ /**
7
+ * Decode every frame of `bytes`' first `kind` stream. `format` names the
8
+ * demuxer (`wav`, `ogg`, `mp3`, `png_pipe`, `jpeg_pipe`, `webp_pipe`) instead
9
+ * of probing for it. Throws when the stream is missing, any packet fails to
10
+ * decode, or the stream decodes to nothing.
11
+ */
12
+ export declare function verifyDecodes(bytes: Uint8Array, opts: {
13
+ kind: MediaKind;
14
+ format?: string;
15
+ signal?: AbortSignal;
16
+ }): Promise<void>;
17
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/media/verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Decode a whole stream with libav's strict error detection and keep nothing:
3
+ * the in-process form of `ffmpeg -xerror -err_detect explode -i in -f null -`.
4
+ */
5
+ import { AV_PKT_FLAG_CORRUPT, Decoder, Demuxer } from "node-av";
6
+ import { abortError, quietLibav, throwIfAborted } from "./av.js";
7
+ /**
8
+ * Decode every frame of `bytes`' first `kind` stream. `format` names the
9
+ * demuxer (`wav`, `ogg`, `mp3`, `png_pipe`, `jpeg_pipe`, `webp_pipe`) instead
10
+ * of probing for it. Throws when the stream is missing, any packet fails to
11
+ * decode, or the stream decodes to nothing.
12
+ */
13
+ export async function verifyDecodes(bytes, opts) {
14
+ const { signal } = opts;
15
+ quietLibav();
16
+ throwIfAborted(signal);
17
+ const demuxer = await Demuxer.open(Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength), {
18
+ format: opts.format,
19
+ // SAFETY: `err_detect` is a generic AVFormatContext option, which every
20
+ // demuxer takes; the per-format option types list only private ones.
21
+ options: { err_detect: "explode" },
22
+ signal
23
+ });
24
+ let decoder = null;
25
+ try {
26
+ const stream = opts.kind === "audio" ? demuxer.audio() : demuxer.video();
27
+ if (!stream)
28
+ throw new Error(`The file has no ${opts.kind} stream`);
29
+ // SAFETY: `err_detect` is a generic AVCodecContext option, which every
30
+ // decoder takes; the per-codec option types list only private ones.
31
+ const options = { err_detect: "explode" };
32
+ decoder = await Decoder.create(stream, { exitOnError: true, options, signal });
33
+ let decoded = 0;
34
+ const index = stream.index;
35
+ // A short read marks the packet corrupt; the CLI's `-xerror` failed on it.
36
+ async function* checked() {
37
+ for await (const packet of demuxer.packets(index)) {
38
+ if (packet && (packet.flags & AV_PKT_FLAG_CORRUPT) !== 0) {
39
+ packet.free();
40
+ throw new Error("A packet is corrupt or cut short");
41
+ }
42
+ yield packet;
43
+ }
44
+ }
45
+ for await (const frame of decoder.frames(checked())) {
46
+ if (!frame)
47
+ continue;
48
+ try {
49
+ if (signal?.aborted)
50
+ throw abortError(signal);
51
+ decoded += opts.kind === "audio" ? frame.nbSamples : frame.width * frame.height;
52
+ }
53
+ finally {
54
+ frame.free();
55
+ }
56
+ }
57
+ if (decoded === 0)
58
+ throw new Error(`The ${opts.kind} stream decoded to nothing`);
59
+ }
60
+ finally {
61
+ decoder?.close();
62
+ await demuxer.close();
63
+ }
64
+ }
65
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/media/verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAe,MAAM,SAAS,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGjE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAiB,EACjB,IAAgE;IAEhE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,CAAC;IACb,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;QAChG,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,wEAAwE;QACxE,qEAAqE;QACrE,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAA4B;QAC5D,MAAM;KACP,CAAC,CAAC;IACH,IAAI,OAAO,GAAmB,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;QACpE,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,OAAO,GAAG,EAAE,UAAU,EAAE,SAAS,EAA4B,CAAC;QACpE,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,2EAA2E;QAC3E,KAAK,SAAS,CAAC,CAAC,OAAO;YACrB,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzD,MAAM,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBACtD,CAAC;gBACD,MAAM,MAAM,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,IAAI,CAAC;gBACH,IAAI,MAAM,EAAE,OAAO;oBAAE,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC9C,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YAClF,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,OAAO,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;IACnF,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,KAAK,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The media module, loaded on demand. It loads node-av's native addon, which
3
+ * no browser, edge or Turbopack bundle can place, so those bundlers are told
4
+ * to leave the import alone. esbuild ignores the hint and inlines it, which is
5
+ * what the packaged backend needs.
6
+ */
7
+ export declare function loadMediaModule(): Promise<typeof import("./media/index.js")>;
8
+ //# sourceMappingURL=media-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-loader.d.ts","sourceRoot":"","sources":["../src/media-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,kBAAkB,CAAC,CAAC,CAE5E"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The media module, loaded on demand. It loads node-av's native addon, which
3
+ * no browser, edge or Turbopack bundle can place, so those bundlers are told
4
+ * to leave the import alone. esbuild ignores the hint and inlines it, which is
5
+ * what the packaged backend needs.
6
+ */
7
+ export function loadMediaModule() {
8
+ return import(/* webpackIgnore: true */ /* turbopackIgnore: true */ "./media/index.js");
9
+ }
10
+ //# sourceMappingURL=media-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-loader.js","sourceRoot":"","sources":["../src/media-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;AAC1F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prefixed-storage-adapter.d.ts","sourceRoot":"","sources":["../src/prefixed-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAKzD,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YACmB,KAAK,EAAE,cAAc,EACtC,MAAM,EAAE,MAAM,EAGf;IAED,OAAO,CAAC,KAAK;IAIb,8DAA8D;IAC9D,OAAO,CAAC,OAAO;IAKf,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1E;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAEhD;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpC;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7B;IAEK,IAAI,CACR,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAe5B;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpC;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAKnD;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7C;CACF"}
1
+ {"version":3,"file":"prefixed-storage-adapter.d.ts","sourceRoot":"","sources":["../src/prefixed-storage-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAKzD,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YACmB,KAAK,EAAE,cAAc,EACtC,MAAM,EAAE,MAAM,EAGf;IAED,OAAO,CAAC,KAAK;IAIb,8DAA8D;IAC9D,OAAO,CAAC,OAAO;IAKf,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1E;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAEhD;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpC;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7B;IAEK,IAAI,CACR,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAe5B;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpC;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAKnD;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7C;CACF"}
@@ -1,4 +1,4 @@
1
- import { normalizeStorageKey } from "./context.js";
1
+ import { normalizeStorageKey } from "@nodetool-ai/storage/storage-keys";
2
2
  /**
3
3
  * A `StorageAdapter` that carves a key prefix out of another one.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"prefixed-storage-adapter.js","sourceRoot":"","sources":["../src/prefixed-storage-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefixed-storage-adapter.js","sourceRoot":"","sources":["../src/prefixed-storage-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic-provider.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { safeFetch } from "./safe-url.js";
6
6
  import { isNumber, isObjectLike, isRecord, isString } from "@nodetool-ai/protocol";
7
7
  const log = createLogger("nodetool.runtime.providers.anthropic");
8
8
  import { WEB_SEARCH_TOOL_NAME } from "./types.js";
9
+ import { parseDataUri } from "./data-uri.js";
9
10
  const MAX_IMAGE_BYTES = 5 * 1024 * 1024;
10
11
  const MAX_PAUSE_TURN_CONTINUATIONS = 5;
11
12
  function toRawBlock(block) {
@@ -328,23 +329,6 @@ function normalizeAnthropicImageMime(mime) {
328
329
  }
329
330
  return base;
330
331
  }
331
- function parseDataUri(uri) {
332
- const idx = uri.indexOf(",");
333
- if (idx < 0) {
334
- throw new Error("Invalid data URI");
335
- }
336
- const header = uri.slice(5, idx);
337
- const payload = uri.slice(idx + 1);
338
- const isBase64 = header.includes(";base64");
339
- const mime = header.split(";")[0] || "application/octet-stream";
340
- if (isBase64) {
341
- return { mime, base64: payload };
342
- }
343
- return {
344
- mime,
345
- base64: Buffer.from(decodeURIComponent(payload), "utf8").toString("base64")
346
- };
347
- }
348
332
  export class AnthropicProvider extends BaseProvider {
349
333
  /**
350
334
  * Anthropic runs web search server-side via the `web_search_20250305` server