@lingjingai/scriptctl 0.60.5 → 0.60.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changes/0.60.10.md +5 -0
- package/changes/0.60.11.md +7 -0
- package/changes/0.60.6.md +3 -0
- package/changes/0.60.7.md +13 -0
- package/changes/0.60.8.md +13 -0
- package/changes/0.60.9.md +13 -0
- package/dist/domain/ingest/video-apply.js +3 -2
- package/dist/domain/ingest/video-apply.js.map +1 -1
- package/dist/domain/ingest/video-timestamp.d.ts +8 -0
- package/dist/domain/ingest/video-timestamp.js +26 -0
- package/dist/domain/ingest/video-timestamp.js.map +1 -0
- package/dist/infra/llm/doubao-video-model.js +24 -4
- package/dist/infra/llm/doubao-video-model.js.map +1 -1
- package/dist/infra/llm/gemini-video-model.d.ts +1 -0
- package/dist/infra/llm/gemini-video-model.js +40 -3
- package/dist/infra/llm/gemini-video-model.js.map +1 -1
- package/dist/llm/router.d.ts +2 -0
- package/dist/llm/router.js +92 -22
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/tasks/ingest/episode-assets.js +2 -1
- package/dist/llm/tasks/ingest/episode-assets.js.map +1 -1
- package/dist/llm/tasks/ingest/name-fix.js +1 -0
- package/dist/llm/tasks/ingest/name-fix.js.map +1 -1
- package/dist/llm/tasks/ingest/text-normalize.js +14 -11
- package/dist/llm/tasks/ingest/text-normalize.js.map +1 -1
- package/dist/llm/tasks/ingest/video-serial.js +4 -3
- package/dist/llm/tasks/ingest/video-serial.js.map +1 -1
- package/dist/llm/tasks/schemas.js +3 -3
- package/dist/llm/tasks/schemas.js.map +1 -1
- package/dist/llm/types.d.ts +5 -0
- package/dist/llm/types.js.map +1 -1
- package/dist/usecases/ingest/failure.js +2 -1
- package/dist/usecases/ingest/failure.js.map +1 -1
- package/dist/usecases/ingest/pipeline.js +5 -4
- package/dist/usecases/ingest/pipeline.js.map +1 -1
- package/dist/usecases/ingest/skip-video-episode.js +11 -3
- package/dist/usecases/ingest/skip-video-episode.js.map +1 -1
- package/dist/usecases/ingest/status.js +100 -57
- package/dist/usecases/ingest/status.js.map +1 -1
- package/dist/usecases/ingest/video-pipeline.d.ts +3 -0
- package/dist/usecases/ingest/video-pipeline.js +52 -27
- package/dist/usecases/ingest/video-pipeline.js.map +1 -1
- package/package.json +2 -1
- package/skills/scriptctl/SKILL.md +1 -1
- package/skills/scriptctl/references/ingest-workflow.md +3 -3
- package/skills/scriptctl/references/production-writing-standard.md +1 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 0.60.11
|
|
2
|
+
|
|
3
|
+
- 视频 ingest 在当前集与既有剧本合并校验失败时,把准确错误反馈给模型重新生成本集。
|
|
4
|
+
- 只有本集候选通过整合校验后才推进 context 与 episode checkpoint,避免重跑永久复用坏状态。
|
|
5
|
+
- 人物规范名提示词明确禁止用括号备注区分不同角色,并要求归一后仍保持唯一。
|
|
6
|
+
- 外部文本 ingest 现在逐字保留对白与内心独白的源语言,把动作、环境、转场、批注和表演提示忠实转换成简体中文,并让人物名在正文与资产中统一沿用原文拼写;转场示例不再误导模型保留 `FLASHBACK` 等外语格式词,文本 pipeline version 升至 12,旧 checkpoint 需同源 `--force` 重建。
|
|
7
|
+
- 文本规范化沿用视频 ingest 已验证的边界:只写可见事实和完整动作链,不凭语境补造表演提示,同场人物进出、换装或物件状态变化不再误切新场。
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# 0.60.6
|
|
2
|
+
|
|
3
|
+
- Fix Doubao video-understanding requests timing out at Undici's hidden five-minute response-header deadline. The Ark transport now uses the configured provider timeout for response headers and bodies, so the existing Gemini-to-Doubao fallback can finish long video analysis requests.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 0.60.7
|
|
2
|
+
|
|
3
|
+
## Added
|
|
4
|
+
- None.
|
|
5
|
+
|
|
6
|
+
## Changed
|
|
7
|
+
- Video-ingest prompts now state that timestamp seconds must remain in `00-59`.
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
- Canonicalize unambiguous exact-minute timestamps such as `00:60` before Script validation, including accepted episode checkpoints from an interrupted ingest.
|
|
11
|
+
|
|
12
|
+
## Breaking
|
|
13
|
+
- None.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 0.60.8
|
|
2
|
+
|
|
3
|
+
## Added
|
|
4
|
+
- None.
|
|
5
|
+
|
|
6
|
+
## Changed
|
|
7
|
+
- None.
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
- Video ingest now treats malformed JSON from Gemini or Doubao structured-output calls as a provider attempt failure, retries it through the configured provider policy, and only reports fallback success after receiving valid JSON.
|
|
11
|
+
|
|
12
|
+
## Breaking
|
|
13
|
+
- None.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 0.60.9
|
|
2
|
+
|
|
3
|
+
## Added
|
|
4
|
+
- None.
|
|
5
|
+
|
|
6
|
+
## Changed
|
|
7
|
+
- None.
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
- Video ingest now routes Gemini Files API upload failures such as quota and rate-limit responses directly to the configured Doubao fallback using the existing local transcode, instead of failing before the provider fallback chain begins.
|
|
11
|
+
|
|
12
|
+
## Breaking
|
|
13
|
+
- None.
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// structured name fields; the deterministic finalize sweep owns that map.
|
|
6
6
|
import { isCrowdName } from "./serial-context.js";
|
|
7
7
|
import { normalizeSceneTime } from "./environment.js";
|
|
8
|
+
import { normalizeVideoTimestamp } from "./video-timestamp.js";
|
|
8
9
|
// Rename a name, preserving a typed speaker prefix (broadcast:xxx → only xxx).
|
|
9
10
|
export function applyRename(name, map) {
|
|
10
11
|
if (!name)
|
|
@@ -71,7 +72,7 @@ export function docsToNameScript(docs, title) {
|
|
|
71
72
|
}
|
|
72
73
|
const actionIdentityOccurrences = new Map();
|
|
73
74
|
const actions = s.anchors.map((a) => {
|
|
74
|
-
const timestamp = (a.ts
|
|
75
|
+
const timestamp = normalizeVideoTimestamp(a.ts);
|
|
75
76
|
const actionAnchor = timestamp
|
|
76
77
|
? `time:${timestamp}`
|
|
77
78
|
: `content:${JSON.stringify([a.kind, a.speaker ?? "", a.content])}`;
|
|
@@ -90,7 +91,7 @@ export function docsToNameScript(docs, title) {
|
|
|
90
91
|
}
|
|
91
92
|
if (a.parenthetical)
|
|
92
93
|
out.parenthetical = a.parenthetical;
|
|
93
|
-
const ts = (a.ts
|
|
94
|
+
const ts = normalizeVideoTimestamp(a.ts);
|
|
94
95
|
if (ts)
|
|
95
96
|
out.extend = { timestamp: ts };
|
|
96
97
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-apply.js","sourceRoot":"","sources":["../../../src/domain/ingest/video-apply.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,0EAA0E;AAI1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"video-apply.js","sourceRoot":"","sources":["../../../src/domain/ingest/video-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonicalize a video-model clock value before it enters Script.
|
|
3
|
+
*
|
|
4
|
+
* Models occasionally express the exact minute boundary as `00:60`. The value
|
|
5
|
+
* is unambiguous, so carry overflow into the next minute. Values that are not a
|
|
6
|
+
* clock-shaped string stay unchanged and are reported by Script validation.
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeVideoTimestamp(raw: unknown): string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonicalize a video-model clock value before it enters Script.
|
|
3
|
+
*
|
|
4
|
+
* Models occasionally express the exact minute boundary as `00:60`. The value
|
|
5
|
+
* is unambiguous, so carry overflow into the next minute. Values that are not a
|
|
6
|
+
* clock-shaped string stay unchanged and are reported by Script validation.
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeVideoTimestamp(raw) {
|
|
9
|
+
const input = typeof raw === "string" ? raw.trim().replace(/\.\d+$/, "") : "";
|
|
10
|
+
const match = input.match(/^(?:(\d+):)?(\d+):(\d{2})$/);
|
|
11
|
+
if (!match)
|
|
12
|
+
return input;
|
|
13
|
+
const hours = Number(match[1] ?? 0);
|
|
14
|
+
const minutes = Number(match[2]);
|
|
15
|
+
const seconds = Number(match[3]);
|
|
16
|
+
if (![hours, minutes, seconds].every(Number.isSafeInteger))
|
|
17
|
+
return input;
|
|
18
|
+
const totalSeconds = hours * 3600 + minutes * 60 + seconds;
|
|
19
|
+
const canonicalHours = Math.floor(totalSeconds / 3600);
|
|
20
|
+
const canonicalMinutes = Math.floor((totalSeconds % 3600) / 60);
|
|
21
|
+
const canonicalSeconds = totalSeconds % 60;
|
|
22
|
+
return canonicalHours > 0
|
|
23
|
+
? `${canonicalHours}:${String(canonicalMinutes).padStart(2, "0")}:${String(canonicalSeconds).padStart(2, "0")}`
|
|
24
|
+
: `${String(canonicalMinutes).padStart(2, "0")}:${String(canonicalSeconds).padStart(2, "0")}`;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=video-timestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-timestamp.js","sourceRoot":"","sources":["../../../src/domain/ingest/video-timestamp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IACzE,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,YAAY,GAAG,EAAE,CAAC;IAC3C,OAAO,cAAc,GAAG,CAAC;QACvB,CAAC,CAAC,GAAG,cAAc,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAC/G,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAClG,CAAC"}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
// reached through a narrow structural client so tests inject a fake.
|
|
9
9
|
import * as fs from "node:fs";
|
|
10
10
|
import * as path from "node:path";
|
|
11
|
+
import { File } from "node:buffer";
|
|
12
|
+
import { Agent, fetch, FormData } from "undici";
|
|
11
13
|
import { LlmTransportError, } from "../../llm/types.js";
|
|
12
14
|
import { httpError, httpStatusOf, networkError } from "./failure-mapping.js";
|
|
13
15
|
import { addTokenUsage, withTransientRetry } from "./retry.js";
|
|
@@ -146,6 +148,18 @@ export class DoubaoVideoModel {
|
|
|
146
148
|
const text = extractText(res);
|
|
147
149
|
if (!text)
|
|
148
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
|
+
}
|
|
149
163
|
return { text, usage, raw: res };
|
|
150
164
|
});
|
|
151
165
|
return { text: value.text, finishReason: "STOP", attempts, usage: addTokenUsage(failedUsage, value.usage), raw: value.raw };
|
|
@@ -164,6 +178,11 @@ class HttpError extends Error {
|
|
|
164
178
|
function createArkClient(apiKey, baseUrl, timeoutMs) {
|
|
165
179
|
const root = baseUrl.replace(/\/$/, "");
|
|
166
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 });
|
|
167
186
|
function signalFor(extra) {
|
|
168
187
|
const timeout = AbortSignal.timeout(timeoutMs);
|
|
169
188
|
return extra ? AbortSignal.any([extra, timeout]) : timeout;
|
|
@@ -176,16 +195,16 @@ function createArkClient(apiKey, baseUrl, timeoutMs) {
|
|
|
176
195
|
async uploadFile({ filePath, mimeType, fps }) {
|
|
177
196
|
const form = new FormData();
|
|
178
197
|
const bytes = fs.readFileSync(filePath);
|
|
179
|
-
form.append("file", new
|
|
198
|
+
form.append("file", new File([bytes], path.basename(filePath), { type: mimeType }));
|
|
180
199
|
form.append("purpose", "user_data");
|
|
181
200
|
form.append("preprocess_configs[video][fps]", String(fps));
|
|
182
|
-
const res = await fetch(`${root}/files`, { method: "POST", headers: auth, body: form, signal: signalFor() });
|
|
201
|
+
const res = await fetch(`${root}/files`, { method: "POST", headers: auth, body: form, signal: signalFor(), dispatcher });
|
|
183
202
|
if (!res.ok)
|
|
184
203
|
await readError(res);
|
|
185
204
|
return (await res.json());
|
|
186
205
|
},
|
|
187
206
|
async getFile({ id }) {
|
|
188
|
-
const res = await fetch(`${root}/files/${id}`, { headers: auth, signal: signalFor() });
|
|
207
|
+
const res = await fetch(`${root}/files/${id}`, { headers: auth, signal: signalFor(), dispatcher });
|
|
189
208
|
if (!res.ok)
|
|
190
209
|
await readError(res);
|
|
191
210
|
return (await res.json());
|
|
@@ -196,13 +215,14 @@ function createArkClient(apiKey, baseUrl, timeoutMs) {
|
|
|
196
215
|
headers: { ...auth, "Content-Type": "application/json" },
|
|
197
216
|
body: JSON.stringify(params),
|
|
198
217
|
signal: signalFor(signal),
|
|
218
|
+
dispatcher,
|
|
199
219
|
});
|
|
200
220
|
if (!res.ok)
|
|
201
221
|
await readError(res);
|
|
202
222
|
return (await res.json());
|
|
203
223
|
},
|
|
204
224
|
async deleteFile({ id }) {
|
|
205
|
-
const res = await fetch(`${root}/files/${id}`, { method: "DELETE", headers: auth, signal: signalFor() });
|
|
225
|
+
const res = await fetch(`${root}/files/${id}`, { method: "DELETE", headers: auth, signal: signalFor(), dispatcher });
|
|
206
226
|
if (!res.ok)
|
|
207
227
|
await readError(res);
|
|
208
228
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doubao-video-model.js","sourceRoot":"","sources":["../../../src/infra/llm/doubao-video-model.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,kFAAkF;AAClF,2EAA2E;AAC3E,6EAA6E;AAC7E,gFAAgF;AAChF,qEAAqE;AAErE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doubao-video-model.js","sourceRoot":"","sources":["../../../src/infra/llm/doubao-video-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ export interface GeminiClient {
|
|
|
33
33
|
};
|
|
34
34
|
models: {
|
|
35
35
|
generateContent(params: Record<string, unknown>): Promise<GeminiGenerateResponse>;
|
|
36
|
+
generateContentStream?(params: Record<string, unknown>): Promise<AsyncIterable<GeminiGenerateResponse>>;
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
39
|
export declare class GeminiVideoModel implements VideoUnderstandingPort {
|
|
@@ -176,6 +176,9 @@ export class GeminiVideoModel {
|
|
|
176
176
|
return file;
|
|
177
177
|
}
|
|
178
178
|
async generate(request) {
|
|
179
|
+
if (request.media.kind === "local-fallback") {
|
|
180
|
+
throw new LlmTransportError("invalid_response", "A local fallback video cannot be sent to Gemini.");
|
|
181
|
+
}
|
|
179
182
|
const config = {
|
|
180
183
|
// High media resolution reads small on-screen text (subtitles, name cards)
|
|
181
184
|
// and fine visual anchors (§10.3).
|
|
@@ -204,7 +207,26 @@ export class GeminiVideoModel {
|
|
|
204
207
|
const { value, attempts, failedUsage } = await withTransientRetry(this.provider.maxAttempts, async () => {
|
|
205
208
|
let response;
|
|
206
209
|
try {
|
|
207
|
-
|
|
210
|
+
if (this.client.models.generateContentStream) {
|
|
211
|
+
let text = "";
|
|
212
|
+
let latest = {};
|
|
213
|
+
const stream = await this.client.models.generateContentStream(params);
|
|
214
|
+
for await (const chunk of stream) {
|
|
215
|
+
if (chunk.text)
|
|
216
|
+
text += chunk.text;
|
|
217
|
+
latest = {
|
|
218
|
+
...latest,
|
|
219
|
+
...chunk,
|
|
220
|
+
usageMetadata: chunk.usageMetadata ?? latest.usageMetadata,
|
|
221
|
+
promptFeedback: chunk.promptFeedback ?? latest.promptFeedback,
|
|
222
|
+
candidates: chunk.candidates ?? latest.candidates,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
response = { ...latest, text };
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
response = await this.client.models.generateContent(params);
|
|
229
|
+
}
|
|
208
230
|
}
|
|
209
231
|
catch (error) {
|
|
210
232
|
throw toTransportError(error, request.signal, "generate", this.apiKey, this.model.provider, this.model.model);
|
|
@@ -259,12 +281,24 @@ export class GeminiVideoModel {
|
|
|
259
281
|
context: baseContext,
|
|
260
282
|
});
|
|
261
283
|
}
|
|
284
|
+
if (request.responseJsonSchema) {
|
|
285
|
+
try {
|
|
286
|
+
JSON.parse(text);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
throw new LlmTransportError("invalid_response", "Gemini returned malformed JSON for a structured video response.", {
|
|
290
|
+
retryable: true,
|
|
291
|
+
usage,
|
|
292
|
+
context: baseContext,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
262
296
|
return { text, finishReason, usage, raw: response };
|
|
263
297
|
});
|
|
264
298
|
return { text: value.text, finishReason: value.finishReason, attempts, usage: addTokenUsage(failedUsage, value.usage), raw: value.raw };
|
|
265
299
|
}
|
|
266
300
|
async release(media, signal) {
|
|
267
|
-
if (media.kind === "base64")
|
|
301
|
+
if (media.kind === "base64" || media.kind === "local-fallback")
|
|
268
302
|
return;
|
|
269
303
|
try {
|
|
270
304
|
await this.client.files.delete({ name: media.file.name });
|
|
@@ -310,7 +344,10 @@ function createGoogleClient(apiKey, timeoutMs, baseUrl) {
|
|
|
310
344
|
get: (p) => sdk.files.get(p),
|
|
311
345
|
delete: (p) => sdk.files.delete(p),
|
|
312
346
|
},
|
|
313
|
-
models: {
|
|
347
|
+
models: {
|
|
348
|
+
generateContent: (p) => sdk.models.generateContent(p),
|
|
349
|
+
generateContentStream: (p) => sdk.models.generateContentStream(p),
|
|
350
|
+
},
|
|
314
351
|
};
|
|
315
352
|
}
|
|
316
353
|
//# sourceMappingURL=gemini-video-model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-video-model.js","sourceRoot":"","sources":["../../../src/infra/llm/gemini-video-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gemini-video-model.js","sourceRoot":"","sources":["../../../src/infra/llm/gemini-video-model.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/router.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ export declare class ModelRouter implements LlmTaskExecutor {
|
|
|
29
29
|
private recordEvent;
|
|
30
30
|
private tracked;
|
|
31
31
|
private videoRoute;
|
|
32
|
+
private resolvedVideoRoute;
|
|
33
|
+
private proxyVideoRoutes;
|
|
32
34
|
private doubaoRoute;
|
|
33
35
|
private adapter;
|
|
34
36
|
protected videoAdapter(route: ResolvedRoute, model?: string): VideoUnderstandingPort;
|
package/dist/llm/router.js
CHANGED
|
@@ -12,6 +12,14 @@ import { LlmTransportError } from "./types.js";
|
|
|
12
12
|
// routed model may fall back once to this model before the cross-provider Doubao
|
|
13
13
|
// fallback. The Gemini Files handle is reused; only generateContent reruns.
|
|
14
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"];
|
|
15
23
|
// Cross-provider last resort after every Gemini model fails: Doubao on Volcengine
|
|
16
24
|
// Ark. Different protocol (Files API sets fps at upload; Responses API references
|
|
17
25
|
// the file id), so it re-uploads the local transcode to its own storage. Credential
|
|
@@ -234,6 +242,46 @@ export class ModelRouter {
|
|
|
234
242
|
fingerprint: routeFingerprint(route.info.task, route.providerConfig, modelConfig),
|
|
235
243
|
};
|
|
236
244
|
}
|
|
245
|
+
resolvedVideoRoute(route, model) {
|
|
246
|
+
const modelConfig = model === route.info.model ? route.modelConfig : { ...route.modelConfig, model };
|
|
247
|
+
return {
|
|
248
|
+
info: this.videoRoute(route, model),
|
|
249
|
+
providerConfig: route.providerConfig,
|
|
250
|
+
modelConfig,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
proxyVideoRoutes(task) {
|
|
254
|
+
if (this.options.videoProvider)
|
|
255
|
+
return [];
|
|
256
|
+
const apiKeyEnv = PROXY_GEMINI_API_KEY_ENVS.find((name) => (process.env[name] ?? "").trim());
|
|
257
|
+
const baseUrlEnv = PROXY_GEMINI_BASE_URL_ENVS.find((name) => (process.env[name] ?? "").trim());
|
|
258
|
+
if (!apiKeyEnv || !baseUrlEnv)
|
|
259
|
+
return [];
|
|
260
|
+
const baseUrl = normalizeProviderBaseUrl(process.env[baseUrlEnv], baseUrlEnv);
|
|
261
|
+
return PROXY_GEMINI_MODELS.map((model, index) => {
|
|
262
|
+
const providerConfig = {
|
|
263
|
+
protocol: "google-gemini",
|
|
264
|
+
baseUrl,
|
|
265
|
+
apiKeyEnv,
|
|
266
|
+
timeoutMs: 90_000,
|
|
267
|
+
maxAttempts: index < 2 ? 2 : 1,
|
|
268
|
+
};
|
|
269
|
+
const modelConfig = { provider: "gemini-proxy", model };
|
|
270
|
+
return {
|
|
271
|
+
info: {
|
|
272
|
+
task,
|
|
273
|
+
profile: "gemini-proxy",
|
|
274
|
+
provider: "gemini-proxy",
|
|
275
|
+
protocol: "google-gemini",
|
|
276
|
+
baseUrl,
|
|
277
|
+
model,
|
|
278
|
+
fingerprint: routeFingerprint(task, providerConfig, modelConfig),
|
|
279
|
+
},
|
|
280
|
+
providerConfig,
|
|
281
|
+
modelConfig,
|
|
282
|
+
};
|
|
283
|
+
});
|
|
284
|
+
}
|
|
237
285
|
doubaoRoute(task) {
|
|
238
286
|
const provider = {
|
|
239
287
|
protocol: "openai-compatible",
|
|
@@ -274,7 +322,7 @@ export class ModelRouter {
|
|
|
274
322
|
throw configRuntimeError("Video tasks require a google-gemini provider.", ["provider.protocol: google-gemini"], [`provider: ${route.info.provider}`, `protocol: ${route.providerConfig.protocol}`]);
|
|
275
323
|
}
|
|
276
324
|
const modelName = model ?? route.info.model;
|
|
277
|
-
const key = `${route.info.provider} ${modelName}`;
|
|
325
|
+
const key = `${route.info.provider} ${route.providerConfig.baseUrl ?? "official"} ${modelName}`;
|
|
278
326
|
const cached = this.videoAdapters.get(key);
|
|
279
327
|
if (cached)
|
|
280
328
|
return cached;
|
|
@@ -302,49 +350,71 @@ export class ModelRouter {
|
|
|
302
350
|
if (spec.mode !== "video")
|
|
303
351
|
throw configRuntimeError("The task does not support video generation.", ["video task"], [`task: ${task}`]);
|
|
304
352
|
const route = this.resolve(task);
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
353
|
+
if (route.providerConfig.protocol !== "google-gemini") {
|
|
354
|
+
throw configRuntimeError("Video tasks require a google-gemini provider.", ["provider.protocol: google-gemini"], [`provider: ${route.info.provider}`, `protocol: ${route.providerConfig.protocol}`]);
|
|
355
|
+
}
|
|
356
|
+
const officialRoutes = (this.options.videoProvider
|
|
308
357
|
? [route.info.model]
|
|
309
|
-
: [route.info.model, ...VIDEO_FALLBACK_MODELS.filter((m) => m !== route.info.model)];
|
|
358
|
+
: [route.info.model, ...VIDEO_FALLBACK_MODELS.filter((m) => m !== route.info.model)]).map((model) => this.resolvedVideoRoute(route, model));
|
|
359
|
+
const proxyRoutes = this.proxyVideoRoutes(task);
|
|
360
|
+
if (this.options.videoProvider || proxyRoutes.length === 0)
|
|
361
|
+
void this.videoAdapter(route);
|
|
310
362
|
return {
|
|
311
|
-
prepare: (localPath, mimeType, mode, signal) =>
|
|
312
|
-
|
|
363
|
+
prepare: async (localPath, mimeType, mode, signal) => {
|
|
364
|
+
const prepareRoute = mode === "base64" && proxyRoutes.length > 0 ? proxyRoutes[0] : route;
|
|
365
|
+
try {
|
|
366
|
+
return await this.videoAdapter(prepareRoute).prepare(localPath, mimeType, mode, signal);
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
if (signal?.aborted || mode !== "file-api" || this.options.videoProvider || !this.doubaoAdapter())
|
|
370
|
+
throw error;
|
|
371
|
+
const failure = routedFailure(error, route.info);
|
|
372
|
+
process.stderr.write(`↪️ Gemini 文件上传失败,改由豆包读取本地视频 (${formatFailure(failure)})\n`);
|
|
373
|
+
return { kind: "local-fallback", path: localPath, mimeType, primaryFailure: failure };
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
release: (media, signal) => media.kind === "base64" || media.kind === "local-fallback"
|
|
377
|
+
? Promise.resolve()
|
|
378
|
+
: this.videoAdapter(route).release(media, signal),
|
|
313
379
|
generate: async (request) => {
|
|
314
|
-
const failures =
|
|
380
|
+
const failures = request.media.kind === "local-fallback"
|
|
381
|
+
? [request.media.primaryFailure]
|
|
382
|
+
: [];
|
|
315
383
|
const skipped = [];
|
|
316
|
-
|
|
317
|
-
|
|
384
|
+
const geminiChain = request.media.kind === "local-fallback"
|
|
385
|
+
? []
|
|
386
|
+
: request.media.kind === "base64"
|
|
387
|
+
? [...proxyRoutes, ...officialRoutes]
|
|
388
|
+
: officialRoutes;
|
|
389
|
+
for (const [index, attemptRoute] of geminiChain.entries()) {
|
|
318
390
|
try {
|
|
319
|
-
const response = await this.tracked(attemptRoute, () => this.videoAdapter(
|
|
320
|
-
if (
|
|
321
|
-
process.stderr.write(`↪️
|
|
391
|
+
const response = await this.tracked(attemptRoute.info, () => this.videoAdapter(attemptRoute).generate({ ...request, maxOutputTokens: spec.maxOutputTokens }));
|
|
392
|
+
if (index > 0)
|
|
393
|
+
process.stderr.write(`↪️ 已切换到备用模型 ${attemptRoute.info.model}\n`);
|
|
322
394
|
return response;
|
|
323
395
|
}
|
|
324
396
|
catch (error) {
|
|
325
397
|
// Abort is the caller's decision, not a model failure — stop the whole chain.
|
|
326
398
|
if (request.signal?.aborted)
|
|
327
399
|
throw error;
|
|
328
|
-
const failure = routedFailure(error, attemptRoute);
|
|
400
|
+
const failure = routedFailure(error, attemptRoute.info);
|
|
329
401
|
failures.push(failure);
|
|
330
402
|
const detail = formatFailure(failure);
|
|
331
|
-
if (index <
|
|
332
|
-
process.stderr.write(
|
|
403
|
+
if (index < geminiChain.length - 1) {
|
|
404
|
+
process.stderr.write(`↪️ ${attemptRoute.info.model} 当前不可用,切换下一线路 (${detail})\n`);
|
|
333
405
|
}
|
|
334
406
|
}
|
|
335
407
|
}
|
|
336
408
|
// Cross-provider last resort: Doubao (Ark). Needs ARK_API_KEY + the local file.
|
|
337
|
-
const doubao = this.options.videoProvider
|
|
338
|
-
|
|
339
|
-
: this.doubaoAdapter();
|
|
340
|
-
const localPath = request.localPath;
|
|
409
|
+
const doubao = this.options.videoProvider ? null : this.doubaoAdapter();
|
|
410
|
+
const localPath = request.media.kind === "local-fallback" ? request.media.path : request.localPath;
|
|
341
411
|
if (doubao && localPath) {
|
|
342
412
|
const attemptRoute = this.doubaoRoute(task);
|
|
343
413
|
try {
|
|
344
414
|
process.stderr.write(`↪️ Gemini 全部失败,回退到豆包 ${this.doubaoModel()}\n`);
|
|
345
415
|
const response = await this.tracked(attemptRoute, () => doubao.run({
|
|
346
416
|
localPath,
|
|
347
|
-
localMime: request.localMime ?? "video/mp4",
|
|
417
|
+
localMime: request.media.kind === "local-fallback" ? request.media.mimeType : request.localMime ?? "video/mp4",
|
|
348
418
|
user: request.user,
|
|
349
419
|
fps: request.fps,
|
|
350
420
|
maxOutputTokens: spec.maxOutputTokens,
|
|
@@ -361,7 +431,7 @@ export class ModelRouter {
|
|
|
361
431
|
}
|
|
362
432
|
}
|
|
363
433
|
else if (!doubao) {
|
|
364
|
-
if (!this.options.videoProvider
|
|
434
|
+
if (!this.options.videoProvider) {
|
|
365
435
|
skipped.push("doubao: skipped (ARK_API_KEY not set)");
|
|
366
436
|
}
|
|
367
437
|
}
|