@lingjingai/scriptctl 0.63.0 → 0.63.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.
@@ -0,0 +1,231 @@
1
+ // Doubao / Volcengine Ark video-understanding adapter — the LAST-resort fallback
2
+ // after the Gemini model chain is exhausted (§10.5). Ark is a different protocol:
3
+ // the Files API sets sampling fps at UPLOAD time (preprocess_configs[video][fps]),
4
+ // then the Responses API references the file by id. So this adapter can't fit the
5
+ // upload/generate split of VideoUnderstandingPort cleanly — it exposes one
6
+ // self-contained run(): upload the local transcode → poll ACTIVE → respond →
7
+ // best-effort delete. Transport only; it never builds business prompts. HTTP is
8
+ // reached through a narrow structural client so tests inject a fake.
9
+ import * as fs from "node:fs";
10
+ import * as path from "node:path";
11
+ import { File } from "node:buffer";
12
+ import { Agent, fetch, FormData } from "undici";
13
+ import { LlmTransportError, } from "../../llm/types.js";
14
+ import { httpError, httpStatusOf, networkError } from "./failure-mapping.js";
15
+ import { addTokenUsage, withTransientRetry } from "./retry.js";
16
+ const POLL_INTERVAL_MS = 2000;
17
+ function delay(ms) {
18
+ return new Promise((resolve) => setTimeout(resolve, ms));
19
+ }
20
+ // Map an SDK/HTTP error to a transport error with the shared retry policy: retry
21
+ // only transient network/timeout/408/429/5xx.
22
+ function toArkError(error, signal, what, model) {
23
+ if (error instanceof LlmTransportError)
24
+ return error;
25
+ const message = error instanceof Error ? error.message : String(error);
26
+ const status = httpStatusOf(error);
27
+ const context = { provider: "doubao", model, operation: what };
28
+ if (status !== null) {
29
+ return httpError(status, `Doubao ${what} failed.`, message.slice(0, 500), context);
30
+ }
31
+ return networkError(error, signal, `Doubao ${what} failed.`, message.slice(0, 500), context);
32
+ }
33
+ function arkUsage(u) {
34
+ if (!u)
35
+ return {};
36
+ const num = (v) => (typeof v === "number" ? v : undefined);
37
+ return { inputTokens: num(u.input_tokens), outputTokens: num(u.output_tokens) };
38
+ }
39
+ // Concatenate every output_text across message items (reasoning items carry no
40
+ // output_text, so they are naturally skipped).
41
+ function extractText(res) {
42
+ const parts = [];
43
+ for (const item of res.output ?? []) {
44
+ if (item.type !== "message")
45
+ continue;
46
+ for (const c of item.content ?? []) {
47
+ if (c.type === "output_text" && typeof c.text === "string")
48
+ parts.push(c.text);
49
+ }
50
+ }
51
+ return parts.join("").trim();
52
+ }
53
+ export class DoubaoVideoModel {
54
+ model;
55
+ timeoutMs;
56
+ maxAttempts;
57
+ client;
58
+ constructor(model, timeoutMs, maxAttempts, apiKey, baseUrl, client) {
59
+ this.model = model;
60
+ this.timeoutMs = timeoutMs;
61
+ this.maxAttempts = maxAttempts;
62
+ this.client = client ?? createArkClient(apiKey, baseUrl, timeoutMs);
63
+ }
64
+ // upload local transcode → poll ACTIVE → respond → best-effort delete.
65
+ async run(request) {
66
+ const { value: file } = await withTransientRetry(this.maxAttempts, async () => {
67
+ try {
68
+ return await this.client.uploadFile({ filePath: request.localPath, mimeType: request.localMime, fps: request.fps });
69
+ }
70
+ catch (error) {
71
+ throw toArkError(error, request.signal, "upload", this.model);
72
+ }
73
+ });
74
+ if (!file.id)
75
+ throw new LlmTransportError("invalid_response", "Doubao upload returned no file id.");
76
+ const active = await this.pollActive(file.id, request.signal);
77
+ try {
78
+ return await this.generateOnce(active, request);
79
+ }
80
+ finally {
81
+ await this.client.deleteFile({ id: active }).catch(() => { }); // cleanup is best-effort
82
+ }
83
+ }
84
+ async pollActive(id, signal) {
85
+ const deadline = Date.now() + this.timeoutMs;
86
+ let status = "processing";
87
+ while (status === "processing" || status === "") {
88
+ if (signal?.aborted) {
89
+ throw new LlmTransportError("cancelled", "Doubao upload aborted.", {
90
+ context: { provider: "doubao", model: this.model, operation: "file_poll" },
91
+ });
92
+ }
93
+ if (Date.now() >= deadline) {
94
+ throw new LlmTransportError("timeout", "Doubao file processing timed out.", {
95
+ retryable: true,
96
+ classification: { failure_type: "timeout", failure_code: "media_processing_timeout" },
97
+ context: { provider: "doubao", model: this.model, operation: "file_poll" },
98
+ });
99
+ }
100
+ await delay(POLL_INTERVAL_MS);
101
+ let file;
102
+ try {
103
+ file = await this.client.getFile({ id });
104
+ }
105
+ catch (error) {
106
+ throw toArkError(error, signal, "file_poll", this.model);
107
+ }
108
+ status = (file.status ?? "").toLowerCase();
109
+ }
110
+ if (status === "failed" || status === "error") {
111
+ throw new LlmTransportError("invalid_response", "Doubao file processing failed.", {
112
+ classification: { failure_type: "media", failure_code: "media_processing_failed" },
113
+ context: { provider: "doubao", model: this.model, operation: "file_poll" },
114
+ });
115
+ }
116
+ return id;
117
+ }
118
+ async generateOnce(fileId, request) {
119
+ const params = {
120
+ model: this.model,
121
+ max_output_tokens: request.maxOutputTokens,
122
+ input: [{ role: "user", content: [
123
+ { type: "input_video", file_id: fileId },
124
+ { type: "input_text", text: request.user },
125
+ ] }],
126
+ };
127
+ if (request.system?.trim())
128
+ params["instructions"] = request.system;
129
+ if (request.responseJsonSchema) {
130
+ params["text"] = { format: { type: "json_schema", name: "video_serial", schema: request.responseJsonSchema } };
131
+ }
132
+ const { value, attempts, failedUsage } = await withTransientRetry(this.maxAttempts, async () => {
133
+ let res;
134
+ try {
135
+ res = await this.client.createResponse(params, request.signal);
136
+ }
137
+ catch (error) {
138
+ throw toArkError(error, request.signal, "generate", this.model);
139
+ }
140
+ const status = (res.status ?? "").toLowerCase();
141
+ const usage = arkUsage(res.usage);
142
+ if (status === "incomplete") {
143
+ const reason = res.incomplete_details?.reason ?? "unknown";
144
+ if (reason === "max_output_tokens")
145
+ throw new LlmTransportError("truncated", "Doubao output was truncated.", { usage });
146
+ throw new LlmTransportError("content_filtered", `Doubao response incomplete (reason=${reason}).`, { usage });
147
+ }
148
+ const text = extractText(res);
149
+ if (!text)
150
+ throw new LlmTransportError("empty_response", "Doubao returned an empty response.", { retryable: true, usage });
151
+ if (request.responseJsonSchema) {
152
+ try {
153
+ JSON.parse(text);
154
+ }
155
+ catch {
156
+ throw new LlmTransportError("invalid_response", "Doubao returned malformed JSON for a structured video response.", {
157
+ retryable: true,
158
+ usage,
159
+ context: { provider: "doubao", model: this.model, operation: "generate" },
160
+ });
161
+ }
162
+ }
163
+ return { text, usage, raw: res };
164
+ });
165
+ return { text: value.text, finishReason: "STOP", attempts, usage: addTokenUsage(failedUsage, value.usage), raw: value.raw };
166
+ }
167
+ }
168
+ // Real HTTP client over the Ark REST API using global fetch (Node 18+). No SDK
169
+ // dependency — the surface is tiny (4 calls) and multipart upload is trivial.
170
+ class HttpError extends Error {
171
+ status;
172
+ constructor(status, message) {
173
+ super(message);
174
+ this.status = status;
175
+ this.name = "HttpError";
176
+ }
177
+ }
178
+ function createArkClient(apiKey, baseUrl, timeoutMs) {
179
+ const root = baseUrl.replace(/\/$/, "");
180
+ const auth = { Authorization: `Bearer ${apiKey}` };
181
+ // Node's global fetch uses Undici's 5-minute response-header timeout even
182
+ // when the AbortSignal allows a longer model request. Ark video responses
183
+ // can legitimately take longer, so keep the transport deadline aligned with
184
+ // the provider timeout instead of failing every retry at exactly 5 minutes.
185
+ const dispatcher = new Agent({ headersTimeout: timeoutMs, bodyTimeout: timeoutMs });
186
+ function signalFor(extra) {
187
+ const timeout = AbortSignal.timeout(timeoutMs);
188
+ return extra ? AbortSignal.any([extra, timeout]) : timeout;
189
+ }
190
+ async function readError(res) {
191
+ const body = await res.text().catch(() => "");
192
+ throw new HttpError(res.status, body.slice(0, 500));
193
+ }
194
+ return {
195
+ async uploadFile({ filePath, mimeType, fps }) {
196
+ const form = new FormData();
197
+ const bytes = fs.readFileSync(filePath);
198
+ form.append("file", new File([bytes], path.basename(filePath), { type: mimeType }));
199
+ form.append("purpose", "user_data");
200
+ form.append("preprocess_configs[video][fps]", String(fps));
201
+ const res = await fetch(`${root}/files`, { method: "POST", headers: auth, body: form, signal: signalFor(), dispatcher });
202
+ if (!res.ok)
203
+ await readError(res);
204
+ return (await res.json());
205
+ },
206
+ async getFile({ id }) {
207
+ const res = await fetch(`${root}/files/${id}`, { headers: auth, signal: signalFor(), dispatcher });
208
+ if (!res.ok)
209
+ await readError(res);
210
+ return (await res.json());
211
+ },
212
+ async createResponse(params, signal) {
213
+ const res = await fetch(`${root}/responses`, {
214
+ method: "POST",
215
+ headers: { ...auth, "Content-Type": "application/json" },
216
+ body: JSON.stringify(params),
217
+ signal: signalFor(signal),
218
+ dispatcher,
219
+ });
220
+ if (!res.ok)
221
+ await readError(res);
222
+ return (await res.json());
223
+ },
224
+ async deleteFile({ id }) {
225
+ const res = await fetch(`${root}/files/${id}`, { method: "DELETE", headers: auth, signal: signalFor(), dispatcher });
226
+ if (!res.ok)
227
+ await readError(res);
228
+ },
229
+ };
230
+ }
231
+ //# sourceMappingURL=doubao-video-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doubao-video-model.js","sourceRoot":"","sources":["../../../src/infra/llm/doubao-video-model.ts"],"names":[],"mappings":"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"}
@@ -163,7 +163,7 @@ export const BUILTIN_LLM_CONFIG = {
163
163
  // reliably than grok did (skeleton leads split correctly, no paren-polluted
164
164
  // names), which markdown/text mode could not hold on this model.
165
165
  "ingest-normalize": { provider: "gw", model: "claude-sonnet-4-6-aihubmix", temperature: 0 },
166
- "ingest-video": { provider: "google-gemini", model: "gemini-3.7-flash" },
166
+ "ingest-video": { provider: "google-gemini", model: "gemini-3.8-flash" },
167
167
  // `scriptctl review` names this profile directly rather than through a
168
168
  // task id: it drives its own agent loop instead of the router, and one
169
169
  // Gemini credential serves both the loop and its video checks.
@@ -28,16 +28,13 @@ export declare class ModelRouter implements LlmTaskExecutor {
28
28
  usageEvents(): LlmUsageEvent[];
29
29
  private recordEvent;
30
30
  private tracked;
31
- private videoRoute;
32
- private resolvedVideoRoute;
33
- private proxyVideoRoutes;
34
31
  private resolveDoubao;
35
32
  private doubaoRoute;
36
33
  private adapter;
37
- protected videoAdapter(route: ResolvedRoute, model?: string): VideoUnderstandingPort;
34
+ protected videoAdapter(route: ResolvedRoute): VideoUnderstandingPort;
38
35
  private videoCredential;
39
36
  videoPort(task: LlmTaskId): TaskVideoPort;
40
- protected doubaoAdapter(route?: ResolvedRoute): DoubaoVideoRunner | null;
37
+ protected doubaoAdapter(route: ResolvedRoute): DoubaoVideoRunner | null;
41
38
  protected doubaoTextAdapter(): LlmAdapter | null;
42
39
  private arkAdapter;
43
40
  protected doubaoModel(): string;
@@ -1,6 +1,5 @@
1
1
  import * as crypto from "node:crypto";
2
2
  import { CliError, EXIT_INPUT, EXIT_RUNTIME } from "../common.js";
3
- import { aggregateFailures, classificationOf, contextOf, createOperationalFailure, formatFailure, } from "../failures.js";
4
3
  import { AnthropicModel } from "../infra/llm/anthropic-model.js";
5
4
  import { DoubaoModel, } from "../infra/llm/doubao-model.js";
6
5
  import { GeminiVideoModel } from "../infra/llm/gemini-video-model.js";
@@ -8,24 +7,7 @@ import { OpenAiCompatibleModel } from "../infra/llm/openai-compatible-model.js";
8
7
  import { loadLlmConfig, normalizeProviderBaseUrl, } from "./config.js";
9
8
  import { LLM_TASK_IDS, LLM_TASK_REGISTRY } from "./registry.js";
10
9
  import { LlmTransportError } from "./types.js";
11
- // Keep every built-in Gemini attempt on the current stable Flash model. A custom
12
- // routed model may fall back once to this model before the cross-provider Doubao
13
- // fallback. The Gemini Files handle is reused; only generateContent reruns.
14
- const VIDEO_FALLBACK_MODELS = ["gemini-3.7-flash"];
15
- const PROXY_GEMINI_MODELS = [
16
- "gemini-3.7-flash-c3",
17
- "gemini-3.6-flash-c3",
18
- "gemini-3.5-flash-c3",
19
- "gemini-3.1-pro-preview-think-c3",
20
- ];
21
- const PROXY_GEMINI_API_KEY_ENVS = ["GEMINI_PROXY_API_KEY", "REDRAW_GEMINI_PROXY_API_KEY"];
22
- const PROXY_GEMINI_BASE_URL_ENVS = ["GEMINI_PROXY_BASE_URL", "REDRAW_GEMINI_PROXY_BASE_URL"];
23
- // Cross-provider last resort after every Gemini model fails: Doubao on Volcengine
24
- // Ark. Different protocol (Files API sets fps at upload; Responses API references
25
- // the file id), so it re-uploads the local transcode to its own storage. Credential
26
- // is ARK_API_KEY; absent → the fallback is silently skipped, Gemini stays the only path.
27
- // `model` is an Ark inference-endpoint id (ep-…), which resolves server-side to a
28
- // video-understanding model. It's account-specific, so ARK_MODEL overrides the default.
10
+ // Ark defaults for explicitly selected Doubao video and text moderation recovery.
29
11
  const DOUBAO_FALLBACK = {
30
12
  model: "ep-20260721150136-98dj9",
31
13
  modelEnv: "ARK_MODEL",
@@ -65,23 +47,6 @@ function credentialError(provider) {
65
47
  data: { expected: ["credential environment variable referenced by the selected provider"], actual: [`provider: ${provider}`, "credential: missing"] },
66
48
  });
67
49
  }
68
- function routedFailure(error, route) {
69
- if (error instanceof LlmTransportError) {
70
- return createOperationalFailure(classificationOf(error.failure), {
71
- ...contextOf(error.failure),
72
- provider: route.provider,
73
- model: route.model,
74
- retryable: error.failure.retryable,
75
- message: error.failure.message,
76
- });
77
- }
78
- return createOperationalFailure({ failure_type: "unknown", failure_code: "unknown" }, {
79
- provider: route.provider,
80
- model: route.model,
81
- retryable: false,
82
- message: error instanceof Error ? error.message : String(error),
83
- });
84
- }
85
50
  export class ModelRouter {
86
51
  config;
87
52
  options;
@@ -239,54 +204,6 @@ export class ModelRouter {
239
204
  throw error;
240
205
  }
241
206
  }
242
- videoRoute(route, model) {
243
- const modelConfig = model === route.info.model ? route.modelConfig : { ...route.modelConfig, model };
244
- return {
245
- ...route.info,
246
- model,
247
- fingerprint: routeFingerprint(route.info.task, route.providerConfig, modelConfig),
248
- };
249
- }
250
- resolvedVideoRoute(route, model) {
251
- const modelConfig = model === route.info.model ? route.modelConfig : { ...route.modelConfig, model };
252
- return {
253
- info: this.videoRoute(route, model),
254
- providerConfig: route.providerConfig,
255
- modelConfig,
256
- };
257
- }
258
- proxyVideoRoutes(task) {
259
- if (this.options.videoProvider)
260
- return [];
261
- const apiKeyEnv = PROXY_GEMINI_API_KEY_ENVS.find((name) => (process.env[name] ?? "").trim());
262
- const baseUrlEnv = PROXY_GEMINI_BASE_URL_ENVS.find((name) => (process.env[name] ?? "").trim());
263
- if (!apiKeyEnv || !baseUrlEnv)
264
- return [];
265
- const baseUrl = normalizeProviderBaseUrl(process.env[baseUrlEnv], baseUrlEnv);
266
- return PROXY_GEMINI_MODELS.map((model, index) => {
267
- const providerConfig = {
268
- protocol: "google-gemini",
269
- baseUrl,
270
- apiKeyEnv,
271
- timeoutMs: 90_000,
272
- maxAttempts: index < 2 ? 2 : 1,
273
- };
274
- const modelConfig = { provider: "gemini-proxy", model };
275
- return {
276
- info: {
277
- task,
278
- profile: "gemini-proxy",
279
- provider: "gemini-proxy",
280
- protocol: "google-gemini",
281
- baseUrl,
282
- model,
283
- fingerprint: routeFingerprint(task, providerConfig, modelConfig),
284
- },
285
- providerConfig,
286
- modelConfig,
287
- };
288
- });
289
- }
290
207
  resolveDoubao(task, explicit) {
291
208
  const overrides = explicit ? this.options.videoProvider : undefined;
292
209
  const modelName = explicit
@@ -336,13 +253,11 @@ export class ModelRouter {
336
253
  this.adapters.set(key, adapter);
337
254
  return adapter;
338
255
  }
339
- // model defaults to the route's model; pass an override to build a peer adapter
340
- // that shares the provider/credential but targets a fallback model.
341
- videoAdapter(route, model) {
256
+ videoAdapter(route) {
342
257
  if (route.providerConfig.protocol !== "google-gemini") {
343
258
  throw configRuntimeError("Video tasks require a google-gemini provider.", ["provider.protocol: google-gemini"], [`provider: ${route.info.provider}`, `protocol: ${route.providerConfig.protocol}`]);
344
259
  }
345
- const modelName = model ?? route.info.model;
260
+ const modelName = route.info.model;
346
261
  const key = `${route.info.provider} ${route.providerConfig.baseUrl ?? "official"} ${modelName}`;
347
262
  const cached = this.videoAdapters.get(key);
348
263
  if (cached)
@@ -350,8 +265,7 @@ export class ModelRouter {
350
265
  const apiKey = this.videoCredential(route);
351
266
  if (!apiKey)
352
267
  throw credentialError(route.info.provider);
353
- const modelConfig = model ? { ...route.modelConfig, model } : route.modelConfig;
354
- const adapter = new GeminiVideoModel(route.providerConfig, modelConfig, apiKey);
268
+ const adapter = new GeminiVideoModel(route.providerConfig, route.modelConfig, apiKey);
355
269
  this.videoAdapters.set(key, adapter);
356
270
  return adapter;
357
271
  }
@@ -406,103 +320,16 @@ export class ModelRouter {
406
320
  if (route.providerConfig.protocol !== "google-gemini") {
407
321
  throw configRuntimeError("Video tasks require a google-gemini provider.", ["provider.protocol: google-gemini"], [`provider: ${route.info.provider}`, `protocol: ${route.providerConfig.protocol}`]);
408
322
  }
409
- const officialRoutes = (this.options.videoProvider
410
- ? [route.info.model]
411
- : [route.info.model, ...VIDEO_FALLBACK_MODELS.filter((m) => m !== route.info.model)]).map((model) => this.resolvedVideoRoute(route, model));
412
- const proxyRoutes = this.proxyVideoRoutes(task);
413
- if (this.options.videoProvider || proxyRoutes.length === 0)
414
- void this.videoAdapter(route);
323
+ const adapter = this.videoAdapter(route);
415
324
  return {
416
- prepare: async (localPath, mimeType, mode, signal) => {
417
- const prepareRoute = mode === "base64" && proxyRoutes.length > 0 ? proxyRoutes[0] : route;
418
- try {
419
- return await this.videoAdapter(prepareRoute).prepare(localPath, mimeType, mode, signal);
420
- }
421
- catch (error) {
422
- if (signal?.aborted || mode !== "file-api" || this.options.videoProvider || !this.doubaoAdapter())
423
- throw error;
424
- const failure = routedFailure(error, route.info);
425
- process.stderr.write(`↪️ Gemini 文件上传失败,改由豆包读取本地视频 (${formatFailure(failure)})\n`);
426
- return { kind: "local-fallback", path: localPath, mimeType, primaryFailure: failure };
427
- }
428
- },
429
- release: (media, signal) => media.kind === "base64" || media.kind === "local-fallback"
430
- ? Promise.resolve()
431
- : this.videoAdapter(route).release(media, signal),
432
- generate: async (request) => {
433
- const failures = request.media.kind === "local-fallback"
434
- ? [request.media.primaryFailure]
435
- : [];
436
- const skipped = [];
437
- const geminiChain = request.media.kind === "local-fallback"
438
- ? []
439
- : request.media.kind === "base64"
440
- ? [...proxyRoutes, ...officialRoutes]
441
- : officialRoutes;
442
- for (const [index, attemptRoute] of geminiChain.entries()) {
443
- try {
444
- const response = await this.tracked(attemptRoute.info, () => this.videoAdapter(attemptRoute).generate({ ...request, maxOutputTokens: spec.maxOutputTokens }));
445
- if (index > 0)
446
- process.stderr.write(`↪️ 已切换到备用模型 ${attemptRoute.info.model}\n`);
447
- return response;
448
- }
449
- catch (error) {
450
- // Abort is the caller's decision, not a model failure — stop the whole chain.
451
- if (request.signal?.aborted)
452
- throw error;
453
- const failure = routedFailure(error, attemptRoute.info);
454
- failures.push(failure);
455
- const detail = formatFailure(failure);
456
- if (index < geminiChain.length - 1) {
457
- process.stderr.write(`↪️ ${attemptRoute.info.model} 当前不可用,切换下一线路 (${detail})\n`);
458
- }
459
- }
460
- }
461
- // Cross-provider last resort: Doubao (Ark). Needs ARK_API_KEY + the local file.
462
- const doubao = this.options.videoProvider ? null : this.doubaoAdapter();
463
- const localPath = request.media.kind === "local-fallback" ? request.media.path : request.localPath;
464
- if (doubao && localPath) {
465
- const attemptRoute = this.doubaoRoute(task);
466
- try {
467
- process.stderr.write(`↪️ Gemini 全部失败,回退到豆包 ${this.doubaoModel()}\n`);
468
- const response = await this.tracked(attemptRoute, () => doubao.run({
469
- localPath,
470
- localMime: request.media.kind === "local-fallback" ? request.media.mimeType : request.localMime ?? "video/mp4",
471
- user: request.user,
472
- fps: request.fps,
473
- maxOutputTokens: spec.maxOutputTokens,
474
- ...(request.system ? { system: request.system } : {}),
475
- ...(request.responseJsonSchema ? { responseJsonSchema: request.responseJsonSchema } : {}),
476
- ...(request.signal ? { signal: request.signal } : {}),
477
- }));
478
- return response;
479
- }
480
- catch (error) {
481
- if (request.signal?.aborted)
482
- throw error;
483
- failures.push(routedFailure(error, attemptRoute));
484
- }
485
- }
486
- else if (!doubao) {
487
- if (!this.options.videoProvider) {
488
- skipped.push("doubao: skipped (ARK_API_KEY not set)");
489
- }
490
- }
491
- else {
492
- skipped.push("doubao: skipped (no local file to re-upload)");
493
- }
494
- const aggregate = aggregateFailures(failures, "All configured video model attempts failed.");
495
- throw new LlmTransportError("request_failed", aggregate.message, {
496
- retryable: aggregate.retryable,
497
- classification: classificationOf(aggregate),
498
- context: contextOf(aggregate),
499
- modelFailures: failures,
500
- details: [...failures.map(formatFailure), ...skipped],
501
- });
502
- },
325
+ prepare: (localPath, mimeType, mode, signal) => adapter.prepare(localPath, mimeType, mode, signal),
326
+ release: (media, signal) => adapter.release(media, signal),
327
+ generate: (request) => this.tracked(route.info, () => adapter.generate({
328
+ ...request, maxOutputTokens: spec.maxOutputTokens,
329
+ })),
503
330
  };
504
331
  }
505
- // Resolve an explicit Doubao route or the default fallback; absent fallback credentials skip it.
332
+ // Resolve explicitly selected Doubao video.
506
333
  // Overridable in tests to inject a fake Ark client.
507
334
  doubaoAdapter(route) {
508
335
  return this.arkAdapter(route);
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/llm/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/llm/router.ts"],"names":[],"mappings":"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"}
@@ -3020,7 +3020,7 @@ async function reviewUnit(doc, episode, video, config, asr) {
3020
3020
  });
3021
3021
  const google = createGoogleGenerativeAI({
3022
3022
  apiKey: config.apiKey,
3023
- ...config.baseUrl ? { baseURL: config.baseUrl } : {},
3023
+ ...config.baseUrl ? { baseURL: `${config.baseUrl.replace(/\/+$/, "").replace(/\/v1beta$/, "")}/v1beta` } : {},
3024
3024
  fetch: ((url, init) => fetch(url, {
3025
3025
  ...init,
3026
3026
  ...dispatcher() ? { dispatcher: dispatcher() } : {}