@steipete/summarize-core 0.11.0 → 0.12.0

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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/dist/esm/content/bun.js +21 -0
  3. package/dist/esm/content/bun.js.map +1 -0
  4. package/dist/esm/content/index.js +1 -0
  5. package/dist/esm/content/index.js.map +1 -1
  6. package/dist/esm/content/link-preview/client.js +6 -0
  7. package/dist/esm/content/link-preview/client.js.map +1 -1
  8. package/dist/esm/content/link-preview/content/fetcher.js +19 -2
  9. package/dist/esm/content/link-preview/content/fetcher.js.map +1 -1
  10. package/dist/esm/content/link-preview/content/firecrawl.js.map +1 -1
  11. package/dist/esm/content/link-preview/content/html.js.map +1 -1
  12. package/dist/esm/content/link-preview/content/index.js +29 -12
  13. package/dist/esm/content/link-preview/content/index.js.map +1 -1
  14. package/dist/esm/content/link-preview/content/utils.js.map +1 -1
  15. package/dist/esm/content/transcript/index.js +2 -0
  16. package/dist/esm/content/transcript/index.js.map +1 -1
  17. package/dist/esm/content/transcript/providers/generic.js +10 -11
  18. package/dist/esm/content/transcript/providers/generic.js.map +1 -1
  19. package/dist/esm/content/transcript/providers/podcast/apple-flow.js.map +1 -1
  20. package/dist/esm/content/transcript/providers/podcast/media.js +9 -1
  21. package/dist/esm/content/transcript/providers/podcast/media.js.map +1 -1
  22. package/dist/esm/content/transcript/providers/podcast/provider-flow.js +157 -0
  23. package/dist/esm/content/transcript/providers/podcast/provider-flow.js.map +1 -0
  24. package/dist/esm/content/transcript/providers/podcast/rss-feed.js +123 -0
  25. package/dist/esm/content/transcript/providers/podcast/rss-feed.js.map +1 -0
  26. package/dist/esm/content/transcript/providers/podcast/rss-transcript.js +113 -0
  27. package/dist/esm/content/transcript/providers/podcast/rss-transcript.js.map +1 -0
  28. package/dist/esm/content/transcript/providers/podcast/rss.js +2 -226
  29. package/dist/esm/content/transcript/providers/podcast/rss.js.map +1 -1
  30. package/dist/esm/content/transcript/providers/podcast/spotify-flow.js.map +1 -1
  31. package/dist/esm/content/transcript/providers/podcast.js +26 -155
  32. package/dist/esm/content/transcript/providers/podcast.js.map +1 -1
  33. package/dist/esm/content/transcript/providers/transcription-capability.js +22 -0
  34. package/dist/esm/content/transcript/providers/transcription-capability.js.map +1 -0
  35. package/dist/esm/content/transcript/providers/transcription-start.js +40 -30
  36. package/dist/esm/content/transcript/providers/transcription-start.js.map +1 -1
  37. package/dist/esm/content/transcript/providers/youtube/api.js +3 -2
  38. package/dist/esm/content/transcript/providers/youtube/api.js.map +1 -1
  39. package/dist/esm/content/transcript/providers/youtube/captions-player.js +173 -0
  40. package/dist/esm/content/transcript/providers/youtube/captions-player.js.map +1 -0
  41. package/dist/esm/content/transcript/providers/youtube/captions-shared.js +8 -0
  42. package/dist/esm/content/transcript/providers/youtube/captions-shared.js.map +1 -0
  43. package/dist/esm/content/transcript/providers/youtube/captions-transcript.js +361 -0
  44. package/dist/esm/content/transcript/providers/youtube/captions-transcript.js.map +1 -0
  45. package/dist/esm/content/transcript/providers/youtube/captions.js +2 -557
  46. package/dist/esm/content/transcript/providers/youtube/captions.js.map +1 -1
  47. package/dist/esm/content/transcript/providers/youtube/provider-flow.js +189 -0
  48. package/dist/esm/content/transcript/providers/youtube/provider-flow.js.map +1 -0
  49. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js +7 -2
  50. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js.map +1 -1
  51. package/dist/esm/content/transcript/providers/youtube.js +42 -194
  52. package/dist/esm/content/transcript/providers/youtube.js.map +1 -1
  53. package/dist/esm/content/transcript/transcription-config.js +24 -4
  54. package/dist/esm/content/transcript/transcription-config.js.map +1 -1
  55. package/dist/esm/content/url.js +3 -3
  56. package/dist/esm/content/url.js.map +1 -1
  57. package/dist/esm/processes.js.map +1 -1
  58. package/dist/esm/prompts/format.js +6 -0
  59. package/dist/esm/prompts/format.js.map +1 -1
  60. package/dist/esm/prompts/link-summary.js +27 -3
  61. package/dist/esm/prompts/link-summary.js.map +1 -1
  62. package/dist/esm/transcription/onnx-cli.js.map +1 -1
  63. package/dist/esm/transcription/whisper/assemblyai.js +132 -0
  64. package/dist/esm/transcription/whisper/assemblyai.js.map +1 -0
  65. package/dist/esm/transcription/whisper/chunking.js +64 -0
  66. package/dist/esm/transcription/whisper/chunking.js.map +1 -0
  67. package/dist/esm/transcription/whisper/cloud-providers.js +69 -0
  68. package/dist/esm/transcription/whisper/cloud-providers.js.map +1 -0
  69. package/dist/esm/transcription/whisper/core.js +316 -390
  70. package/dist/esm/transcription/whisper/core.js.map +1 -1
  71. package/dist/esm/transcription/whisper/gemini.js +324 -0
  72. package/dist/esm/transcription/whisper/gemini.js.map +1 -0
  73. package/dist/esm/transcription/whisper/preferences.js +16 -0
  74. package/dist/esm/transcription/whisper/preferences.js.map +1 -0
  75. package/dist/esm/transcription/whisper/provider-setup.js +62 -0
  76. package/dist/esm/transcription/whisper/provider-setup.js.map +1 -0
  77. package/dist/esm/transcription/whisper/remote-provider-attempts.js +189 -0
  78. package/dist/esm/transcription/whisper/remote-provider-attempts.js.map +1 -0
  79. package/dist/esm/transcription/whisper/remote.js +220 -0
  80. package/dist/esm/transcription/whisper/remote.js.map +1 -0
  81. package/dist/esm/transcription/whisper/whisper-cpp.js.map +1 -1
  82. package/dist/types/content/bun.d.ts +6 -0
  83. package/dist/types/content/index.d.ts +1 -0
  84. package/dist/types/content/link-preview/client.d.ts +3 -1
  85. package/dist/types/content/link-preview/content/fetcher.d.ts +1 -1
  86. package/dist/types/content/link-preview/content/html.d.ts +1 -1
  87. package/dist/types/content/link-preview/deps.d.ts +8 -2
  88. package/dist/types/content/link-preview/types.d.ts +1 -1
  89. package/dist/types/content/transcript/providers/podcast/flow-context.d.ts +3 -0
  90. package/dist/types/content/transcript/providers/podcast/media.d.ts +4 -2
  91. package/dist/types/content/transcript/providers/podcast/provider-flow.d.ts +7 -0
  92. package/dist/types/content/transcript/providers/podcast/rss-feed.d.ts +15 -0
  93. package/dist/types/content/transcript/providers/podcast/rss-transcript.d.ts +12 -0
  94. package/dist/types/content/transcript/providers/podcast/rss.d.ts +2 -24
  95. package/dist/types/content/transcript/providers/transcription-capability.d.ts +18 -0
  96. package/dist/types/content/transcript/providers/transcription-start.d.ts +10 -3
  97. package/dist/types/content/transcript/providers/youtube/captions-player.d.ts +12 -0
  98. package/dist/types/content/transcript/providers/youtube/captions-shared.d.ts +42 -0
  99. package/dist/types/content/transcript/providers/youtube/captions-transcript.d.ts +4 -0
  100. package/dist/types/content/transcript/providers/youtube/captions.d.ts +2 -19
  101. package/dist/types/content/transcript/providers/youtube/provider-flow.d.ts +34 -0
  102. package/dist/types/content/transcript/providers/youtube/yt-dlp.d.ts +4 -2
  103. package/dist/types/content/transcript/transcription-config.d.ts +6 -0
  104. package/dist/types/content/transcript/types.d.ts +1 -0
  105. package/dist/types/prompts/format.d.ts +1 -0
  106. package/dist/types/prompts/link-summary.d.ts +2 -1
  107. package/dist/types/transcription/whisper/assemblyai.d.ts +17 -0
  108. package/dist/types/transcription/whisper/chunking.d.ts +11 -0
  109. package/dist/types/transcription/whisper/cloud-providers.d.ts +22 -0
  110. package/dist/types/transcription/whisper/core.d.ts +12 -14
  111. package/dist/types/transcription/whisper/gemini.d.ts +14 -0
  112. package/dist/types/transcription/whisper/preferences.d.ts +4 -0
  113. package/dist/types/transcription/whisper/provider-setup.d.ts +30 -0
  114. package/dist/types/transcription/whisper/remote-provider-attempts.d.ts +51 -0
  115. package/dist/types/transcription/whisper/remote.d.ts +51 -0
  116. package/dist/types/transcription/whisper/types.d.ts +1 -1
  117. package/package.json +15 -16
@@ -0,0 +1,189 @@
1
+ import { transcribeWithAssemblyAi, transcribeFileWithAssemblyAi } from "./assemblyai.js";
2
+ import { MAX_OPENAI_UPLOAD_BYTES } from "./constants.js";
3
+ import { transcribeWithFal } from "./fal.js";
4
+ import { isFfmpegAvailable, transcodeBytesToMp3 } from "./ffmpeg.js";
5
+ import { transcribeFileWithGemini, transcribeWithGemini } from "./gemini.js";
6
+ import { shouldRetryOpenAiViaFfmpeg, transcribeWithOpenAi } from "./openai.js";
7
+ import { formatBytes, wrapError } from "./utils.js";
8
+ export async function attemptRemoteBytesProvider(args) {
9
+ const executor = BYTE_PROVIDER_EXECUTORS[args.provider];
10
+ return executor(args);
11
+ }
12
+ export async function attemptRemoteFileProvider(args) {
13
+ if (args.provider === "assemblyai") {
14
+ try {
15
+ const text = await transcribeFileWithAssemblyAi({
16
+ filePath: args.filePath,
17
+ mediaType: args.mediaType,
18
+ apiKey: args.assemblyaiApiKey,
19
+ });
20
+ if (text)
21
+ return { kind: "result", result: { text, provider: "assemblyai", error: null, notes: [] } };
22
+ return { kind: "error", error: new Error("AssemblyAI transcription returned empty text") };
23
+ }
24
+ catch (caught) {
25
+ return {
26
+ kind: "error",
27
+ error: caught instanceof Error ? caught : wrapError("AssemblyAI transcription failed", caught),
28
+ };
29
+ }
30
+ }
31
+ if (args.provider === "gemini") {
32
+ try {
33
+ const text = await transcribeFileWithGemini({
34
+ filePath: args.filePath,
35
+ mediaType: args.mediaType,
36
+ filename: args.filename,
37
+ apiKey: args.geminiApiKey,
38
+ env: args.env,
39
+ });
40
+ if (text)
41
+ return { kind: "result", result: { text, provider: "gemini", error: null, notes: [] } };
42
+ return { kind: "error", error: new Error("Gemini transcription returned empty text") };
43
+ }
44
+ catch (caught) {
45
+ return {
46
+ kind: "error",
47
+ error: wrapError("Gemini transcription failed", caught),
48
+ };
49
+ }
50
+ }
51
+ return { kind: "delegate-to-bytes" };
52
+ }
53
+ const BYTE_PROVIDER_EXECUTORS = {
54
+ assemblyai: async ({ state, assemblyaiApiKey }) => {
55
+ try {
56
+ const text = await transcribeWithAssemblyAi(state.bytes, state.mediaType, assemblyaiApiKey);
57
+ if (text) {
58
+ return {
59
+ state,
60
+ result: { text, provider: "assemblyai", error: null, notes: [] },
61
+ error: null,
62
+ };
63
+ }
64
+ return {
65
+ state,
66
+ result: null,
67
+ error: new Error("AssemblyAI transcription returned empty text"),
68
+ };
69
+ }
70
+ catch (caught) {
71
+ return {
72
+ state,
73
+ result: null,
74
+ error: caught instanceof Error ? caught : wrapError("AssemblyAI transcription failed", caught),
75
+ };
76
+ }
77
+ },
78
+ gemini: async ({ state, geminiApiKey, env }) => {
79
+ try {
80
+ const text = await transcribeWithGemini(state.bytes, state.mediaType, state.filename, geminiApiKey, { env });
81
+ if (text) {
82
+ return {
83
+ state,
84
+ result: { text, provider: "gemini", error: null, notes: [] },
85
+ error: null,
86
+ };
87
+ }
88
+ return { state, result: null, error: new Error("Gemini transcription returned empty text") };
89
+ }
90
+ catch (caught) {
91
+ return {
92
+ state,
93
+ result: null,
94
+ error: wrapError("Gemini transcription failed", caught),
95
+ };
96
+ }
97
+ },
98
+ openai: async ({ state, openaiApiKey, env, notes, onProgress, transcribeOversizedBytesWithChunking, }) => {
99
+ let nextState = state;
100
+ if (nextState.bytes.byteLength > MAX_OPENAI_UPLOAD_BYTES &&
101
+ transcribeOversizedBytesWithChunking &&
102
+ openaiApiKey) {
103
+ const canChunk = await isFfmpegAvailable();
104
+ if (canChunk) {
105
+ return {
106
+ state: nextState,
107
+ result: await transcribeOversizedBytesWithChunking({
108
+ bytes: nextState.bytes,
109
+ mediaType: nextState.mediaType,
110
+ filename: nextState.filename,
111
+ onProgress,
112
+ }),
113
+ error: null,
114
+ };
115
+ }
116
+ notes.push(`Media too large for Whisper upload (${formatBytes(nextState.bytes.byteLength)}); transcribing first ${formatBytes(MAX_OPENAI_UPLOAD_BYTES)} only (install ffmpeg for full transcription)`);
117
+ nextState = {
118
+ ...nextState,
119
+ bytes: nextState.bytes.slice(0, MAX_OPENAI_UPLOAD_BYTES),
120
+ };
121
+ }
122
+ let error = null;
123
+ try {
124
+ const text = await transcribeWithOpenAi(nextState.bytes, nextState.mediaType, nextState.filename, openaiApiKey, { env });
125
+ if (text) {
126
+ return {
127
+ state: nextState,
128
+ result: { text, provider: "openai", error: null, notes: [] },
129
+ error: null,
130
+ };
131
+ }
132
+ error = new Error("OpenAI transcription returned empty text");
133
+ }
134
+ catch (caught) {
135
+ error = wrapError("OpenAI transcription failed", caught);
136
+ }
137
+ if (error && shouldRetryOpenAiViaFfmpeg(error)) {
138
+ const canTranscode = await isFfmpegAvailable();
139
+ if (canTranscode) {
140
+ try {
141
+ notes.push("OpenAI could not decode media; transcoding via ffmpeg and retrying");
142
+ const mp3Bytes = await transcodeBytesToMp3(nextState.bytes);
143
+ const retried = await transcribeWithOpenAi(mp3Bytes, "audio/mpeg", "audio.mp3", openaiApiKey, { env });
144
+ if (retried) {
145
+ return {
146
+ state: { bytes: mp3Bytes, mediaType: "audio/mpeg", filename: "audio.mp3" },
147
+ result: { text: retried, provider: "openai", error: null, notes: [] },
148
+ error: null,
149
+ };
150
+ }
151
+ error = new Error("OpenAI transcription returned empty text after ffmpeg transcode");
152
+ nextState = { bytes: mp3Bytes, mediaType: "audio/mpeg", filename: "audio.mp3" };
153
+ }
154
+ catch (caught) {
155
+ notes.push(`ffmpeg transcode failed; cannot retry OpenAI decode error: ${caught instanceof Error ? caught.message : String(caught)}`);
156
+ }
157
+ }
158
+ else {
159
+ notes.push("OpenAI could not decode media; install ffmpeg to enable transcoding retry");
160
+ }
161
+ }
162
+ return { state: nextState, result: null, error };
163
+ },
164
+ fal: async ({ state, falApiKey, notes }) => {
165
+ if (!state.mediaType.toLowerCase().startsWith("audio/")) {
166
+ notes.push(`Skipping FAL transcription: unsupported mediaType ${state.mediaType}`);
167
+ return { state, result: null, error: null, skipped: true };
168
+ }
169
+ try {
170
+ const text = await transcribeWithFal(state.bytes, state.mediaType, falApiKey);
171
+ if (text) {
172
+ return {
173
+ state,
174
+ result: { text, provider: "fal", error: null, notes: [] },
175
+ error: null,
176
+ };
177
+ }
178
+ return { state, result: null, error: new Error("FAL transcription returned empty text") };
179
+ }
180
+ catch (caught) {
181
+ return {
182
+ state,
183
+ result: null,
184
+ error: wrapError("FAL transcription failed", caught),
185
+ };
186
+ }
187
+ },
188
+ };
189
+ //# sourceMappingURL=remote-provider-attempts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-provider-attempts.js","sourceRoot":"","sources":["../../../../src/transcription/whisper/remote-provider-attempts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { promises as fs } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { cloudProviderLabel, formatCloudFallbackTargets, resolveCloudProviderOrder, } from "./cloud-providers.js";
6
+ import { DEFAULT_SEGMENT_SECONDS, MAX_OPENAI_UPLOAD_BYTES } from "./constants.js";
7
+ import { isFfmpegAvailable } from "./ffmpeg.js";
8
+ import { buildMissingTranscriptionProviderMessage } from "./provider-setup.js";
9
+ import { attemptRemoteBytesProvider, attemptRemoteFileProvider, } from "./remote-provider-attempts.js";
10
+ import { formatBytes, readFirstBytes } from "./utils.js";
11
+ function withMergedNotes(result, notes) {
12
+ if (result.notes.length === 0)
13
+ return { ...result, notes };
14
+ return { ...result, notes: [...notes, ...result.notes] };
15
+ }
16
+ function buildNoProviderResult({ notes, groqApiKey, groqError, }) {
17
+ if (groqApiKey) {
18
+ return {
19
+ text: null,
20
+ provider: "groq",
21
+ error: groqError ?? new Error("No transcription providers available"),
22
+ notes,
23
+ };
24
+ }
25
+ return {
26
+ text: null,
27
+ provider: null,
28
+ error: new Error(buildMissingTranscriptionProviderMessage()),
29
+ notes,
30
+ };
31
+ }
32
+ async function transcribeBytesAcrossProviders({ providerOrder, bytes, mediaType, filename, notes, groqApiKey, groqError = null, assemblyaiApiKey, geminiApiKey, openaiApiKey, falApiKey, env, onProgress, transcribeOversizedBytesWithChunking, }) {
33
+ if (providerOrder.length === 0) {
34
+ return buildNoProviderResult({ notes, groqApiKey, groqError });
35
+ }
36
+ let currentBytes = bytes;
37
+ let currentMediaType = mediaType;
38
+ let currentFilename = filename;
39
+ let lastFailure = null;
40
+ for (const [index, provider] of providerOrder.entries()) {
41
+ const attempt = await attemptRemoteBytesProvider({
42
+ provider,
43
+ state: {
44
+ bytes: currentBytes,
45
+ mediaType: currentMediaType,
46
+ filename: currentFilename,
47
+ },
48
+ assemblyaiApiKey,
49
+ geminiApiKey,
50
+ openaiApiKey,
51
+ falApiKey,
52
+ env,
53
+ notes,
54
+ onProgress,
55
+ transcribeOversizedBytesWithChunking,
56
+ });
57
+ currentBytes = attempt.state.bytes;
58
+ currentMediaType = attempt.state.mediaType;
59
+ currentFilename = attempt.state.filename;
60
+ if (attempt.result)
61
+ return withMergedNotes(attempt.result, notes);
62
+ if (!attempt.error)
63
+ continue;
64
+ lastFailure = { provider, error: attempt.error };
65
+ const remaining = providerOrder.slice(index + 1).filter((candidate) => {
66
+ if (candidate !== "fal")
67
+ return true;
68
+ return currentMediaType.toLowerCase().startsWith("audio/");
69
+ });
70
+ if (remaining.length > 0) {
71
+ notes.push(`${cloudProviderLabel(provider, false)} transcription failed; falling back to ${formatCloudFallbackTargets(remaining)}: ${attempt.error.message}`);
72
+ }
73
+ }
74
+ if (lastFailure) {
75
+ return {
76
+ text: null,
77
+ provider: lastFailure.provider,
78
+ error: lastFailure.error,
79
+ notes,
80
+ };
81
+ }
82
+ return buildNoProviderResult({ notes, groqApiKey, groqError });
83
+ }
84
+ export async function transcribeBytesWithRemoteFallbacks({ bytes, mediaType, filename, notes, groqApiKey, groqError = null, assemblyaiApiKey, geminiApiKey, openaiApiKey, falApiKey, env, onProgress, transcribeOversizedBytesWithChunking, }) {
85
+ return await transcribeBytesAcrossProviders({
86
+ providerOrder: resolveCloudProviderOrder({
87
+ assemblyaiApiKey,
88
+ geminiApiKey,
89
+ openaiApiKey,
90
+ falApiKey,
91
+ }),
92
+ bytes,
93
+ mediaType,
94
+ filename,
95
+ notes,
96
+ groqApiKey,
97
+ groqError,
98
+ assemblyaiApiKey,
99
+ geminiApiKey,
100
+ openaiApiKey,
101
+ falApiKey,
102
+ env,
103
+ onProgress,
104
+ transcribeOversizedBytesWithChunking,
105
+ });
106
+ }
107
+ export async function transcribeFileWithRemoteFallbacks({ filePath, mediaType, filename, notes, groqApiKey, groqError = null, assemblyaiApiKey, geminiApiKey, openaiApiKey, falApiKey, env, totalDurationSeconds, onProgress, transcribeChunkedFile, }) {
108
+ const providerOrder = resolveCloudProviderOrder({
109
+ assemblyaiApiKey,
110
+ geminiApiKey,
111
+ openaiApiKey,
112
+ falApiKey,
113
+ });
114
+ if (providerOrder.length === 0) {
115
+ return buildNoProviderResult({ notes, groqApiKey, groqError });
116
+ }
117
+ const stat = await fs.stat(filePath);
118
+ onProgress?.({
119
+ partIndex: null,
120
+ parts: null,
121
+ processedDurationSeconds: null,
122
+ totalDurationSeconds,
123
+ });
124
+ let cachedBytes = null;
125
+ const readFileBytes = async () => {
126
+ if (cachedBytes)
127
+ return cachedBytes;
128
+ cachedBytes = new Uint8Array(await fs.readFile(filePath));
129
+ return cachedBytes;
130
+ };
131
+ let lastFailure = null;
132
+ for (const [index, provider] of providerOrder.entries()) {
133
+ const fileAttempt = await attemptRemoteFileProvider({
134
+ provider,
135
+ filePath,
136
+ mediaType,
137
+ filename,
138
+ assemblyaiApiKey,
139
+ geminiApiKey,
140
+ env,
141
+ });
142
+ if (fileAttempt.kind === "result")
143
+ return withMergedNotes(fileAttempt.result, notes);
144
+ if (fileAttempt.kind === "delegate-to-bytes") {
145
+ if (provider === "openai" && stat.size > MAX_OPENAI_UPLOAD_BYTES) {
146
+ const canChunk = await isFfmpegAvailable();
147
+ if (canChunk) {
148
+ return withMergedNotes(await transcribeChunkedFile({
149
+ filePath,
150
+ segmentSeconds: DEFAULT_SEGMENT_SECONDS,
151
+ totalDurationSeconds,
152
+ onProgress,
153
+ }), notes);
154
+ }
155
+ notes.push(`Media too large for Whisper upload (${formatBytes(stat.size)}); install ffmpeg to enable chunked transcription`);
156
+ const head = await readFirstBytes(filePath, MAX_OPENAI_UPLOAD_BYTES);
157
+ return withMergedNotes(await transcribeBytesAcrossProviders({
158
+ providerOrder: providerOrder.slice(index),
159
+ bytes: head,
160
+ mediaType,
161
+ filename,
162
+ notes: [],
163
+ groqApiKey,
164
+ groqError,
165
+ assemblyaiApiKey,
166
+ geminiApiKey,
167
+ openaiApiKey,
168
+ falApiKey,
169
+ env,
170
+ onProgress,
171
+ }), notes);
172
+ }
173
+ return withMergedNotes(await transcribeBytesAcrossProviders({
174
+ providerOrder: providerOrder.slice(index),
175
+ bytes: await readFileBytes(),
176
+ mediaType,
177
+ filename,
178
+ notes: [],
179
+ groqApiKey,
180
+ groqError,
181
+ assemblyaiApiKey,
182
+ geminiApiKey,
183
+ openaiApiKey,
184
+ falApiKey,
185
+ env,
186
+ onProgress,
187
+ }), notes);
188
+ }
189
+ lastFailure = { provider, error: fileAttempt.error };
190
+ const remaining = providerOrder.slice(index + 1);
191
+ if (remaining.length > 0) {
192
+ notes.push(`${cloudProviderLabel(provider, false)} transcription failed; falling back to ${formatCloudFallbackTargets(remaining)}: ${fileAttempt.error.message}`);
193
+ }
194
+ }
195
+ if (lastFailure) {
196
+ return {
197
+ text: null,
198
+ provider: lastFailure.provider,
199
+ error: lastFailure.error,
200
+ notes,
201
+ };
202
+ }
203
+ return buildNoProviderResult({ notes, groqApiKey, groqError });
204
+ }
205
+ export async function transcribeOversizedBytesViaTempFile({ bytes, mediaType, filename, onProgress, transcribeFile, }) {
206
+ const tempFile = join(tmpdir(), `summarize-whisper-${randomUUID()}`);
207
+ try {
208
+ await fs.writeFile(tempFile, bytes);
209
+ return await transcribeFile({
210
+ filePath: tempFile,
211
+ mediaType,
212
+ filename,
213
+ onProgress,
214
+ });
215
+ }
216
+ finally {
217
+ await fs.unlink(tempFile).catch(() => { });
218
+ }
219
+ }
220
+ //# sourceMappingURL=remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../../src/transcription/whisper/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,GAE1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,wCAAwC,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmBzD,SAAS,eAAe,CACtB,MAAkC,EAClC,KAAe;IAEf,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3D,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,qBAAqB,CAAC,EAC7B,KAAK,EACL,UAAU,EACV,SAAS,GAKV;IACC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,SAAS,IAAI,IAAI,KAAK,CAAC,sCAAsC,CAAC;YACrE,KAAK;SACN,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI,KAAK,CAAC,wCAAwC,EAAE,CAAC;QAC5D,KAAK;KACN,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,EAC5C,aAAa,EACb,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,GAAG,IAAI,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,GAAG,EACH,UAAU,EACV,oCAAoC,GAczB;IACX,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACjC,IAAI,eAAe,GAAG,QAAQ,CAAC;IAC/B,IAAI,WAAW,GAAyB,IAAI,CAAC;IAE7C,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC;YAC/C,QAAQ;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,gBAAgB;gBAC3B,QAAQ,EAAE,eAAe;aAC1B;YACD,gBAAgB;YAChB,YAAY;YACZ,YAAY;YACZ,SAAS;YACT,GAAG;YACH,KAAK;YACL,UAAU;YACV,oCAAoC;SACrC,CAAC,CAAC;QACH,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3C,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,SAAS;QAE7B,WAAW,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;YACpE,IAAI,SAAS,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YACrC,OAAO,gBAAgB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CACR,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,0CAA0C,0BAA0B,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAClJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,KAAK;SACN,CAAC;IACJ,CAAC;IACD,OAAO,qBAAqB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,EACvD,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,GAAG,IAAI,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,GAAG,EACH,UAAU,EACV,oCAAoC,GAazB;IACX,OAAO,MAAM,8BAA8B,CAAC;QAC1C,aAAa,EAAE,yBAAyB,CAAC;YACvC,gBAAgB;YAChB,YAAY;YACZ,YAAY;YACZ,SAAS;SACV,CAAC;QACF,KAAK;QACL,SAAS;QACT,QAAQ;QACR,KAAK;QACL,UAAU;QACV,SAAS;QACT,gBAAgB;QAChB,YAAY;QACZ,YAAY;QACZ,SAAS;QACT,GAAG;QACH,UAAU;QACV,oCAAoC;KACrC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAC,EACtD,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,GAAG,IAAI,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,GAAG,EACH,oBAAoB,EACpB,UAAU,EACV,qBAAqB,GAcV;IACX,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAC9C,gBAAgB;QAChB,YAAY;QACZ,YAAY;QACZ,SAAS;KACV,CAAC,CAAC;IACH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC;QACX,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,wBAAwB,EAAE,IAAI;QAC9B,oBAAoB;KACrB,CAAC,CAAC;IACH,IAAI,WAAW,GAAsB,IAAI,CAAC;IAC1C,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC/B,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC;QACpC,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IAEF,IAAI,WAAW,GAAyB,IAAI,CAAC;IAE7C,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC;YAClD,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,gBAAgB;YAChB,YAAY;YACZ,GAAG;SACJ,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrF,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC7C,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,uBAAuB,EAAE,CAAC;gBACjE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBAC3C,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,eAAe,CACpB,MAAM,qBAAqB,CAAC;wBAC1B,QAAQ;wBACR,cAAc,EAAE,uBAAuB;wBACvC,oBAAoB;wBACpB,UAAU;qBACX,CAAC,EACF,KAAK,CACN,CAAC;gBACJ,CAAC;gBACD,KAAK,CAAC,IAAI,CACR,uCAAuC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,CACjH,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;gBACrE,OAAO,eAAe,CACpB,MAAM,8BAA8B,CAAC;oBACnC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;oBACzC,KAAK,EAAE,IAAI;oBACX,SAAS;oBACT,QAAQ;oBACR,KAAK,EAAE,EAAE;oBACT,UAAU;oBACV,SAAS;oBACT,gBAAgB;oBAChB,YAAY;oBACZ,YAAY;oBACZ,SAAS;oBACT,GAAG;oBACH,UAAU;iBACX,CAAC,EACF,KAAK,CACN,CAAC;YACJ,CAAC;YACD,OAAO,eAAe,CACpB,MAAM,8BAA8B,CAAC;gBACnC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzC,KAAK,EAAE,MAAM,aAAa,EAAE;gBAC5B,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,EAAE;gBACT,UAAU;gBACV,SAAS;gBACT,gBAAgB;gBAChB,YAAY;gBACZ,YAAY;gBACZ,SAAS;gBACT,GAAG;gBACH,UAAU;aACX,CAAC,EACF,KAAK,CACN,CAAC;QACJ,CAAC;QACD,WAAW,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CACR,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,0CAA0C,0BAA0B,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CACtJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,KAAK;SACN,CAAC;IACJ,CAAC;IACD,OAAO,qBAAqB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CAAC,EACxD,KAAK,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,cAAc,GAYf;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,UAAU,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,MAAM,cAAc,CAAC;YAC1B,QAAQ,EAAE,QAAQ;YAClB,SAAS;YACT,QAAQ;YACR,UAAU;SACX,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"whisper-cpp.js","sourceRoot":"","sources":["../../../../src/transcription/whisper/whisper-cpp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"whisper-cpp.js","sourceRoot":"","sources":["../../../../src/transcription/whisper/whisper-cpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ type RequestHeaders = Record<string, string>;
2
+ export declare function isBunRuntime(): boolean;
3
+ export declare function withBunCompressionHeaders(headers: RequestHeaders): RequestHeaders;
4
+ export declare function withBunIdentityEncoding(headers: RequestHeaders): RequestHeaders;
5
+ export declare function isBunCompressedResponseError(error: unknown): boolean;
6
+ export {};
@@ -1,4 +1,5 @@
1
1
  export type { MediaCache, MediaCacheEntry, TranscriptCache, TranscriptCacheGetResult, TranscriptCacheSetArgs, } from "./cache/types.js";
2
+ export { NEGATIVE_TTL_MS } from "./transcript/cache.js";
2
3
  export { createLinkPreviewClient, type LinkPreviewClient, type LinkPreviewClientOptions, } from "./link-preview/client.js";
3
4
  export { DEFAULT_CACHE_MODE, DEFAULT_MAX_CONTENT_CHARACTERS, DEFAULT_TIMEOUT_MS, type ExtractedLinkContent, type FetchLinkContentOptions, } from "./link-preview/content/types.js";
4
5
  export type { ConvertHtmlToMarkdown, FirecrawlScrapeResult, LinkPreviewDeps, LinkPreviewProgressEvent, ReadTweetWithBird, ScrapeWithFirecrawl, } from "./link-preview/deps.js";
@@ -1,7 +1,7 @@
1
1
  import type { MediaCache, TranscriptCache } from "../cache/types.js";
2
+ import { type TranscriptionConfig } from "../transcript/transcription-config.js";
2
3
  import type { ExtractedLinkContent, FetchLinkContentOptions } from "./content/types.js";
3
4
  import type { ConvertHtmlToMarkdown, LinkPreviewDeps, LinkPreviewProgressEvent, ResolveTwitterCookies, ScrapeWithFirecrawl } from "./deps.js";
4
- import { type TranscriptionConfig } from "../transcript/transcription-config.js";
5
5
  /** Public client used by external consumers to fetch link content. */
6
6
  export interface LinkPreviewClient {
7
7
  fetchLinkContent(url: string, options?: FetchLinkContentOptions): Promise<ExtractedLinkContent>;
@@ -16,6 +16,8 @@ export interface LinkPreviewClientOptions {
16
16
  transcription?: Partial<TranscriptionConfig> | null;
17
17
  falApiKey?: string | null;
18
18
  groqApiKey?: string | null;
19
+ assemblyaiApiKey?: string | null;
20
+ geminiApiKey?: string | null;
19
21
  openaiApiKey?: string | null;
20
22
  convertHtmlToMarkdown?: ConvertHtmlToMarkdown | null;
21
23
  transcriptCache?: TranscriptCache | null;
@@ -8,7 +8,7 @@ export interface HtmlDocumentFetchResult {
8
8
  html: string;
9
9
  finalUrl: string;
10
10
  }
11
- export declare function fetchHtmlDocument(fetchImpl: typeof fetch, url: string, { timeoutMs, onProgress, }?: {
11
+ export declare function fetchHtmlDocument(fetchImpl: typeof fetch, url: string, options?: {
12
12
  timeoutMs?: number;
13
13
  onProgress?: ((event: LinkPreviewProgressEvent) => void) | null;
14
14
  }): Promise<HtmlDocumentFetchResult>;
@@ -1,7 +1,7 @@
1
1
  import type { LinkPreviewDeps } from "../deps.js";
2
2
  import type { FirecrawlDiagnostics } from "../types.js";
3
- import type { ExtractedLinkContent, FetchLinkContentOptions, MarkdownMode } from "./types.js";
4
3
  import { extractReadabilityFromHtml } from "./readability.js";
4
+ import type { ExtractedLinkContent, FetchLinkContentOptions, MarkdownMode } from "./types.js";
5
5
  export declare function buildResultFromHtmlDocument({ url, html, cacheMode, maxCharacters, youtubeTranscriptMode, mediaTranscriptMode, transcriptTimestamps, firecrawlDiagnostics, markdownRequested, markdownMode, timeoutMs, deps, readabilityCandidate, }: {
6
6
  url: string;
7
7
  html: string;
@@ -19,7 +19,8 @@ export declare const ProgressKind: {
19
19
  readonly BirdStart: "bird-start";
20
20
  readonly BirdDone: "bird-done";
21
21
  };
22
- export type TranscriptionProviderHint = "cpp" | "onnx" | "groq" | "groq->openai" | "groq->fal" | "groq->openai->fal" | "openai" | "fal" | "openai->fal" | "unknown";
22
+ export type CloudTranscriptionProviderHint = "groq" | "assemblyai" | "gemini" | "openai" | "fal";
23
+ export type TranscriptionProviderHint = "cpp" | "onnx" | "unknown" | CloudTranscriptionProviderHint | `${CloudTranscriptionProviderHint}->${string}`;
23
24
  /** Public progress events emitted by link preview fetchers. */
24
25
  export type LinkPreviewProgressEvent = {
25
26
  kind: "fetch-html-start";
@@ -104,9 +105,11 @@ export type LinkPreviewProgressEvent = {
104
105
  } | {
105
106
  kind: "bird-start";
106
107
  url: string;
108
+ client?: "xurl" | "bird" | null;
107
109
  } | {
108
110
  kind: "bird-done";
109
111
  url: string;
112
+ client?: "xurl" | "bird" | null;
110
113
  ok: boolean;
111
114
  textBytes: number | null;
112
115
  };
@@ -130,7 +133,7 @@ export type BirdTweetMedia = {
130
133
  kind: "video" | "audio";
131
134
  urls: string[];
132
135
  preferredUrl: string | null;
133
- source: "extended_entities" | "card" | "entities";
136
+ source: "extended_entities" | "card" | "entities" | "xurl";
134
137
  };
135
138
  export type BirdTweetPayload = {
136
139
  id?: string;
@@ -141,6 +144,7 @@ export type BirdTweetPayload = {
141
144
  };
142
145
  createdAt?: string;
143
146
  media?: BirdTweetMedia | null;
147
+ client?: "xurl" | "bird";
144
148
  };
145
149
  export type ReadTweetWithBird = (args: {
146
150
  url: string;
@@ -164,6 +168,8 @@ export interface LinkPreviewDeps {
164
168
  transcription?: TranscriptionConfig | null;
165
169
  falApiKey?: string | null;
166
170
  groqApiKey?: string | null;
171
+ assemblyaiApiKey?: string | null;
172
+ geminiApiKey?: string | null;
167
173
  openaiApiKey?: string | null;
168
174
  convertHtmlToMarkdown: ConvertHtmlToMarkdown | null;
169
175
  transcriptCache: TranscriptCache | null;
@@ -29,7 +29,7 @@ export interface MarkdownDiagnostics {
29
29
  notes?: string | null;
30
30
  }
31
31
  export interface ContentFetchDiagnostics {
32
- strategy: "bird" | "firecrawl" | "html" | "nitter";
32
+ strategy: "bird" | "xurl" | "firecrawl" | "html" | "nitter";
33
33
  firecrawl: FirecrawlDiagnostics;
34
34
  markdown: MarkdownDiagnostics;
35
35
  transcript: TranscriptDiagnostics;
@@ -1,8 +1,11 @@
1
+ import type { TranscriptionConfig } from "../../transcription-config.js";
1
2
  import type { ProviderContext, ProviderFetchOptions, ProviderResult } from "../../types.js";
2
3
  import type { TranscribeRequest, TranscriptionResult } from "./media.js";
3
4
  export type PodcastFlowContext = {
4
5
  context: ProviderContext;
5
6
  options: ProviderFetchOptions;
7
+ transcription: TranscriptionConfig;
8
+ feedHtml: string | null;
6
9
  attemptedProviders: ProviderResult["attemptedProviders"];
7
10
  notes: string[];
8
11
  pushOnce: (provider: ProviderResult["attemptedProviders"][number]) => void;
@@ -1,5 +1,5 @@
1
- import type { ProviderFetchOptions } from "../../types.js";
2
1
  import { type TranscriptionConfig } from "../../transcription-config.js";
2
+ import type { ProviderFetchOptions } from "../../types.js";
3
3
  export type TranscribeRequest = {
4
4
  url: string;
5
5
  filenameHint: string;
@@ -10,7 +10,7 @@ export type TranscriptionResult = {
10
10
  provider: string | null;
11
11
  error: Error | null;
12
12
  };
13
- export declare function transcribeMediaUrl({ fetchImpl, transcription, env, url, filenameHint, durationSecondsHint, groqApiKey, openaiApiKey, falApiKey, notes, progress, }: {
13
+ export declare function transcribeMediaUrl({ fetchImpl, transcription, env, url, filenameHint, durationSecondsHint, groqApiKey, assemblyaiApiKey, geminiApiKey, openaiApiKey, falApiKey, notes, progress, }: {
14
14
  fetchImpl: typeof fetch;
15
15
  transcription?: Partial<TranscriptionConfig> | null;
16
16
  env?: Record<string, string | undefined>;
@@ -18,6 +18,8 @@ export declare function transcribeMediaUrl({ fetchImpl, transcription, env, url,
18
18
  filenameHint: string;
19
19
  durationSecondsHint: number | null;
20
20
  groqApiKey?: string | null;
21
+ assemblyaiApiKey?: string | null;
22
+ geminiApiKey?: string | null;
21
23
  openaiApiKey?: string | null;
22
24
  falApiKey?: string | null;
23
25
  notes: string[];
@@ -0,0 +1,7 @@
1
+ import type { ProviderResult } from "../../types.js";
2
+ import type { PodcastFlowContext } from "./flow-context.js";
3
+ export declare function tryPodcastTranscriptFromFeed(flow: PodcastFlowContext): Promise<ProviderResult | null>;
4
+ export declare function tryFeedEnclosureTranscript(flow: PodcastFlowContext): Promise<ProviderResult | null>;
5
+ export declare function tryOgAudioTranscript(flow: PodcastFlowContext): Promise<ProviderResult | null>;
6
+ export declare function tryPodcastYtDlpTranscript(flow: PodcastFlowContext): Promise<ProviderResult | null>;
7
+ export declare function buildNoTranscriptResult(flow: PodcastFlowContext): ProviderResult;
@@ -0,0 +1,15 @@
1
+ export declare function looksLikeRssOrAtomFeed(xml: string): boolean;
2
+ export declare function extractEnclosureFromFeed(xml: string): {
3
+ enclosureUrl: string;
4
+ durationSeconds: number | null;
5
+ } | null;
6
+ export declare function extractEnclosureForEpisode(feedXml: string, episodeTitle: string): {
7
+ enclosureUrl: string;
8
+ durationSeconds: number | null;
9
+ } | null;
10
+ export declare function extractItemDurationSeconds(itemXml: string): number | null;
11
+ export declare function decodeXmlEntities(value: string): string;
12
+ export declare function normalizeLooseTitle(value: string): string;
13
+ export declare function extractFeedItems(xml: string): string[];
14
+ export declare function extractItemTitle(itemXml: string): string | null;
15
+ export declare function extractEnclosureUrlFromItem(xml: string): string | null;