@lingjingai/scriptctl 0.43.0 → 0.46.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.
- package/changes/0.44.0.md +15 -0
- package/changes/0.45.0.md +39 -0
- package/dist/domain/ingest/serial-context.d.ts +16 -27
- package/dist/domain/ingest/serial-context.js +126 -57
- package/dist/domain/ingest/serial-context.js.map +1 -1
- package/dist/infra/ingest/review-renderer.js +11 -2
- package/dist/infra/ingest/review-renderer.js.map +1 -1
- package/dist/infra/ingest/video-transcode.js +16 -3
- package/dist/infra/ingest/video-transcode.js.map +1 -1
- package/dist/infra/llm/openai-compatible-model.js +1 -0
- package/dist/infra/llm/openai-compatible-model.js.map +1 -1
- package/dist/llm/config.d.ts +1 -0
- package/dist/llm/config.js +18 -4
- package/dist/llm/config.js.map +1 -1
- package/dist/llm/registry.d.ts +1 -0
- package/dist/llm/registry.js +10 -4
- package/dist/llm/registry.js.map +1 -1
- package/dist/llm/tasks/ingest/episode-assets.d.ts +3 -2
- package/dist/llm/tasks/ingest/episode-assets.js +119 -24
- package/dist/llm/tasks/ingest/episode-assets.js.map +1 -1
- package/dist/llm/tasks/ingest/name-fix.d.ts +9 -0
- package/dist/llm/tasks/ingest/name-fix.js +64 -0
- package/dist/llm/tasks/ingest/name-fix.js.map +1 -0
- package/dist/llm/tasks/ingest/video-serial.d.ts +2 -1
- package/dist/llm/tasks/ingest/video-serial.js +184 -85
- package/dist/llm/tasks/ingest/video-serial.js.map +1 -1
- package/dist/llm/tasks/schemas.d.ts +3 -0
- package/dist/llm/tasks/schemas.js +240 -0
- package/dist/llm/tasks/schemas.js.map +1 -1
- package/dist/llm/types.d.ts +1 -1
- package/dist/llm/types.js.map +1 -1
- package/dist/usecases/ingest/pipeline.js +13 -2
- package/dist/usecases/ingest/pipeline.js.map +1 -1
- package/dist/usecases/ingest/serial-govern.d.ts +4 -0
- package/dist/usecases/ingest/serial-govern.js +212 -31
- package/dist/usecases/ingest/serial-govern.js.map +1 -1
- package/dist/usecases/ingest/status.js +3 -3
- package/dist/usecases/ingest/status.js.map +1 -1
- package/dist/usecases/ingest/view-server.js +1 -1
- package/dist/usecases/ingest/view-server.js.map +1 -1
- package/package.json +1 -1
- package/skills/scriptctl/SKILL.md +13 -2
- package/skills/scriptctl/references/atomic-write-workflow.md +45 -16
- package/dist/domain/ingest/asset-state-md-parser.d.ts +0 -2
- package/dist/domain/ingest/asset-state-md-parser.js +0 -133
- package/dist/domain/ingest/asset-state-md-parser.js.map +0 -1
|
@@ -1,94 +1,33 @@
|
|
|
1
1
|
// ingest.video-serial task (§10.2). The single Gemini pass of the serial video
|
|
2
2
|
// pipeline: it watches ONE episode's video WITH the running cross-episode context
|
|
3
|
-
// (registry + plot digest + open threads) and
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// (
|
|
7
|
-
// the
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
3
|
+
// (registry + plot digest + open threads) and returns ONE structured JSON object
|
|
4
|
+
// (responseMimeType application/json + VIDEO_SERIAL_SCHEMA) carrying both (a) the
|
|
5
|
+
// episode's high-fidelity screenplay (scenes → per-shot anchors) and (b) incremental
|
|
6
|
+
// registry maintenance (new_entities / enrich / resolve) + open threads. This
|
|
7
|
+
// replaces the old "emit markdown → parseSerialMd" contract: structured output
|
|
8
|
+
// removes a whole fragile text-parsing layer and lets the schema forbid the outfit-
|
|
9
|
+
// name pollution (parens/slashes) at the source. Because it parses in order with
|
|
10
|
+
// full plot context, identity is resolved by story — reusing canonical names,
|
|
11
|
+
// registering anchored provisionals for unknowns, and issuing a `还原` once a later
|
|
12
|
+
// episode reveals a provisional's real identity.
|
|
13
13
|
import { CliError, EXIT_RUNTIME } from "../../../common.js";
|
|
14
|
-
import {
|
|
14
|
+
import { VIDEO_SERIAL_SCHEMA } from "../schemas.js";
|
|
15
15
|
export const VIDEO_SERIAL_SYSTEM = "你是短剧视频转剧本的串行解析器。输入是**某一集**竖屏短剧视频(1-2 分钟)+ 一份到上一集为止累积的**已知设定**(人物花名册/剧情进展/未闭合线索)。" +
|
|
16
|
-
"
|
|
16
|
+
"你要输出**一个结构化 JSON 对象**(严格符合系统给定的输出 schema),同时包含:①这一集**逐镜头、高保真**的剧本(scenes);②对已知设定的**增量维护**(registry_delta:人物花名册带状态标注、身份还原)+ 剧情线索(open_threads)。**只输出该 JSON,不要任何额外文字、解释或代码块包裹。**\n" +
|
|
17
17
|
"核心要求:不漏镜头、动作/对白/实体准确、不脑补、时间戳对齐画面。\n" +
|
|
18
18
|
"【身份归属——本任务重点】带着已知设定看这一集:\n" +
|
|
19
19
|
"- 出现的人先判断**是不是花名册里已有的某个人**(比对锚点:发型/眼镜/脸型/体型/年龄段 + 剧情关系)。是 ⇒ 直接沿用其**规范名**,不要另起新名。\n" +
|
|
20
|
-
"- 认不出、也没听到本名的人 ⇒
|
|
21
|
-
"- 已知设定里标了 ·待定 的 provisional 人物,若这一集剧情让你看清了他是谁 ⇒ 在
|
|
20
|
+
"- 认不出、也没听到本名的人 ⇒ **不要硬猜、不要编带姓的假名**。用不含姓氏的描述名(如「湿发中年男」),status 标 `provisional`,写清锚点与作用。\n" +
|
|
21
|
+
"- 已知设定里标了 ·待定 的 provisional 人物,若这一集剧情让你看清了他是谁 ⇒ 在 registry_delta.resolve 里写 {provisional_name, canonical_name, reason}。\n" +
|
|
22
22
|
"【说话人——用剧情锁定,别只看脸】短剧常有几个长相相似的中老年男性高管,单帧人脸会认错。先从台词内容、彼此称呼(谁叫谁「哥」「X总」)、场景关系(谁求谁、谁训谁、谁下跪)推断这场在场是谁、谁对谁说,再定说话人。剧情锁定优先于外貌。\n" +
|
|
23
23
|
"【命名优先级】书面正式姓名(人物介绍条/工牌/来电显示)> 台词喊出的本名 > 纯描述名。有书面正式姓名就用它当规范名,哪怕全集只喊职务。绝不凭空捏造带姓氏的假名。\n" +
|
|
24
24
|
"【画面字幕铁律】每句台词底部压的对白字幕是台词的冗余复制,**必须丢弃**,只保留对应的 dlg,绝不在 act 里复述台词。只有承载新信息的画面文字(人物介绍条/身份头衔/时间地点交代/系统提示/关键道具上的字)才写进 act。\n" +
|
|
25
|
-
"
|
|
25
|
+
"【状态=造型】state / states = 一个角色一整套稳定扮相(着装+发型+持续妆造,如「深灰西装」),不是情绪/姿态,也不是单件衣服。给某角色标造型前,先看已知设定里他名下的「已知造型」清单——只要本集是他已列过的某套扮相(哪怕只拍到上半身/换了角度/光线不同/多看到少看到一件单品),**逐字照抄清单里那个造型名**,只有整套换装才新建。**造型名只填档位名本身,绝不带括号、斜杠、逗号或任何描述文字**(描述放实体 appearance,不要塞进造型名)。";
|
|
26
26
|
export function buildSerialUser(episodeNo, contextText) {
|
|
27
27
|
const ctx = contextText.trim()
|
|
28
28
|
? `========== 已知设定(到上一集为止,规范名以此为准) ==========\n${contextText}\n`
|
|
29
29
|
: "(这是第一集,暂无已知设定。)\n";
|
|
30
|
-
return `解析第 ${episodeNo}
|
|
31
|
-
|
|
32
|
-
${ctx}
|
|
33
|
-
========== 输出格式(严格照此,不要用代码块包裹,不要额外解释) ==========
|
|
34
|
-
## 梗概
|
|
35
|
-
<按发生顺序概括本集剧情,200-300 字纯文本>
|
|
36
|
-
|
|
37
|
-
# 剧本
|
|
38
|
-
|
|
39
|
-
## 场景 1
|
|
40
|
-
- 时空: <内|外> <日|夜>
|
|
41
|
-
- 时间: <MM:SS-MM:SS 本场起止>
|
|
42
|
-
- 地点: <稳定主空间地点名,沿用规范名>
|
|
43
|
-
- 角色: <角色1>(造型), <角色2>
|
|
44
|
-
- 道具: <道具1>, <道具2>
|
|
45
|
-
> [act] [MM:SS] 逐镜头动作/环境描写(含景别;不抄台词字幕)。
|
|
46
|
-
> [dlg|角色名|情绪] [MM:SS] 对白(以口型/音轨为准,称呼保留原话)。
|
|
47
|
-
> [dlg|broadcast:名] [MM:SS] 广播/画外音等非人物发声。
|
|
48
|
-
> [think|角色名] [MM:SS] 内心独白。
|
|
49
|
-
|
|
50
|
-
## 场景 2
|
|
51
|
-
...
|
|
52
|
-
|
|
53
|
-
# 资产维护
|
|
54
|
-
**只报增量。** 已知设定里已有、且本集无新信息的人/物,**不要重复输出**——他们已在花名册里,正文场景的「角色/道具」行照常列全即可。这一区只写:①首次出现的(新增);②已知但需补充/更正的(修正);③身份还原。
|
|
55
|
-
|
|
56
|
-
## 新增人物
|
|
57
|
-
只登记**已知设定里没有**的具体单人角色(首次出现),用多行块,首行标注 canonical/provisional 与 featured/background:
|
|
58
|
-
- <角色名> | <canonical|provisional> | <featured|background>
|
|
59
|
-
外观: <跨集恒定长相:性别+年龄段+脸型+发型+固定标记,不含服饰。认不出可留空>
|
|
60
|
-
锚点: <1-3 个最好认的视觉特征,用于跨集重新指认>
|
|
61
|
-
作用: <剧情身份与关系>
|
|
62
|
-
造型: <本集该角色出现的造型名,多个用 / 分隔;无则省略此行>
|
|
63
|
-
别名: <本集见到的其它称呼,多个用 / 分隔;无则省略此行>
|
|
64
|
-
|
|
65
|
-
## 修正
|
|
66
|
-
对**已知设定里已有**角色的补充/更正——一行一人,**只写发生变化的字段**(看清了更准的外观、本集新造型、新称呼、剧情让作用更明确)。无变化的人不要出现在这里:
|
|
67
|
-
- <角色名> | 外观: <更准外观> | 锚点: <更好的指认特征> | 作用: <更明确身份> | 造型: <本集新造型> | 别名: <本集新称呼>
|
|
68
|
-
|
|
69
|
-
## 新增场景
|
|
70
|
-
只登记已知设定里没有的地点:
|
|
71
|
-
- <地点名> | <featured|background>: <空间类型/风格/主色调/光线/陈设>
|
|
72
|
-
|
|
73
|
-
## 新增道具
|
|
74
|
-
只登记已知设定里没有的道具:
|
|
75
|
-
- <道具名> | <featured|background>: <类别/材质/颜色/标志特征>
|
|
76
|
-
|
|
77
|
-
## 还原
|
|
78
|
-
把已知设定里 provisional(·待定)的人,凭本集剧情还原成真身(没有就整段省略):
|
|
79
|
-
- <之前的描述名> => <真名> | 依据: <剧情依据一句话>
|
|
80
|
-
|
|
81
|
-
## 线索
|
|
82
|
-
本集剧情线索维护(没有就整段省略):
|
|
83
|
-
+ <本集新开、尚未交代结果的悬念/关系变化>
|
|
84
|
-
- [<已知设定里该线索的 id,如 t3_1>] ← 本集交代了结果、关闭它
|
|
85
|
-
|
|
86
|
-
规则:
|
|
87
|
-
- 只登记具体单人角色;群众/路人写进 action 或用 group:名 发声,不进花名册。
|
|
88
|
-
- **已知设定里已有的人/物,除非要补充或更正,否则一个字都别再写**——正文场景行照常列全即可。
|
|
89
|
-
- 造型用描述性命名(深灰西装/金色礼服),不用「默认/常态」。
|
|
90
|
-
- 认不出的人首次登记为 provisional 并写锚点;不要编带姓假名。
|
|
91
|
-
- 每个 act/dlg/think 都带 [MM:SS] 时间戳(分:秒,无需亚秒)。`;
|
|
30
|
+
return `解析第 ${episodeNo} 集:对照本集原视频,按输出 schema 返回 JSON 对象。scenes 逐场逐镜头覆盖全集;registry_delta 只报增量(已知且无新信息的实体不要写)。\n\n${ctx}`;
|
|
92
31
|
}
|
|
93
32
|
function serialError(message, received) {
|
|
94
33
|
return new CliError("INGEST VIDEO SERIAL FAILED", message, {
|
|
@@ -98,23 +37,183 @@ function serialError(message, received) {
|
|
|
98
37
|
nextSteps: ["Inspect the episode error sidecar and rerun `scriptctl ingest` to resume."],
|
|
99
38
|
});
|
|
100
39
|
}
|
|
101
|
-
|
|
102
|
-
|
|
40
|
+
const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
41
|
+
const asStr = (v) => (typeof v === "string" ? v.trim() : "");
|
|
42
|
+
const asArr = (v) => (Array.isArray(v) ? v : []);
|
|
43
|
+
// Deterministic backstop for outfit-name pollution the schema description already
|
|
44
|
+
// forbids but a model may still leak: a state must be a bare wardrobe label. Strip
|
|
45
|
+
// everything from the first paren/slash/comma separator on — `黑丝短裙(身穿收银短袖)`
|
|
46
|
+
// and `黑丝短裙/绷带短裙` both collapse to `黑丝短裙`, folding the ep39/40/17-style
|
|
47
|
+
// fragments back onto the canonical outfit. Empty stays empty (no change this scene).
|
|
48
|
+
const cleanState = (raw) => {
|
|
49
|
+
const s = asStr(raw);
|
|
50
|
+
return s ? s.split(/[((//,,、]/)[0].trim() : "";
|
|
51
|
+
};
|
|
52
|
+
// Structured-output JSON → SerialOutput. The schema guarantees shape; this is a
|
|
53
|
+
// defensive projection (tolerates missing/wrong-typed fields) that also runs every
|
|
54
|
+
// state through cleanState and re-nests space/time into `environment` the way
|
|
55
|
+
// applyDelta / deltaToDoc expect.
|
|
56
|
+
export function toSerialOutput(input) {
|
|
57
|
+
const out = { synopsis: "", scenes: [], registry_delta: { new_entities: [], enrich: [], resolve: [] }, open_threads: { opened: [], closed: [] } };
|
|
58
|
+
if (!isObj(input))
|
|
59
|
+
return out;
|
|
60
|
+
out.synopsis = asStr(input.synopsis);
|
|
61
|
+
for (const s of asArr(input.scenes)) {
|
|
62
|
+
if (!isObj(s))
|
|
63
|
+
continue;
|
|
64
|
+
const environment = {};
|
|
65
|
+
const space = asStr(s.space);
|
|
66
|
+
if (space)
|
|
67
|
+
environment.space = space;
|
|
68
|
+
const time = asStr(s.time);
|
|
69
|
+
if (time)
|
|
70
|
+
environment.time = time;
|
|
71
|
+
const scene = {
|
|
72
|
+
environment,
|
|
73
|
+
characters: asArr(s.characters).flatMap((c) => {
|
|
74
|
+
if (!isObj(c))
|
|
75
|
+
return [];
|
|
76
|
+
const name = asStr(c.name);
|
|
77
|
+
if (!name)
|
|
78
|
+
return [];
|
|
79
|
+
const state = cleanState(c.state);
|
|
80
|
+
return [state ? { name, state } : { name }];
|
|
81
|
+
}),
|
|
82
|
+
props: asArr(s.props).map(asStr).filter(Boolean),
|
|
83
|
+
anchors: asArr(s.anchors).flatMap((a) => {
|
|
84
|
+
if (!isObj(a))
|
|
85
|
+
return [];
|
|
86
|
+
const kind = asStr(a.kind);
|
|
87
|
+
if (kind !== "act" && kind !== "dlg" && kind !== "think")
|
|
88
|
+
return [];
|
|
89
|
+
const anchor = { kind, content: asStr(a.content) };
|
|
90
|
+
const speaker = asStr(a.speaker);
|
|
91
|
+
if (speaker)
|
|
92
|
+
anchor.speaker = speaker;
|
|
93
|
+
const emotion = asStr(a.emotion);
|
|
94
|
+
if (emotion)
|
|
95
|
+
anchor.emotion = emotion;
|
|
96
|
+
const ts = asStr(a.ts).replace(/\.\d+$/, "");
|
|
97
|
+
if (ts)
|
|
98
|
+
anchor.ts = ts; // drop any sub-second the model leaks → MM:SS
|
|
99
|
+
return [anchor];
|
|
100
|
+
}),
|
|
101
|
+
};
|
|
102
|
+
const timeRange = asStr(s.timeRange);
|
|
103
|
+
if (timeRange)
|
|
104
|
+
scene.timeRange = timeRange;
|
|
105
|
+
const location = asStr(s.location);
|
|
106
|
+
if (location)
|
|
107
|
+
scene.location = location;
|
|
108
|
+
out.scenes.push(scene);
|
|
109
|
+
}
|
|
110
|
+
const rd = isObj(input.registry_delta) ? input.registry_delta : {};
|
|
111
|
+
for (const e of asArr(rd.new_entities)) {
|
|
112
|
+
if (!isObj(e))
|
|
113
|
+
continue;
|
|
114
|
+
const name = asStr(e.name);
|
|
115
|
+
const kind = asStr(e.kind);
|
|
116
|
+
if (!name || (kind !== "actor" && kind !== "location" && kind !== "prop"))
|
|
117
|
+
continue;
|
|
118
|
+
const ent = {
|
|
119
|
+
name,
|
|
120
|
+
kind,
|
|
121
|
+
status: asStr(e.status) === "provisional" ? "provisional" : "canonical",
|
|
122
|
+
importance: asStr(e.importance) === "background" ? "background" : "featured",
|
|
123
|
+
};
|
|
124
|
+
const anchor = asStr(e.anchor);
|
|
125
|
+
if (anchor)
|
|
126
|
+
ent.anchor = anchor;
|
|
127
|
+
const appearance = asStr(e.appearance);
|
|
128
|
+
if (appearance)
|
|
129
|
+
ent.appearance = appearance;
|
|
130
|
+
const role = asStr(e.role);
|
|
131
|
+
if (role)
|
|
132
|
+
ent.role = role;
|
|
133
|
+
const states = asArr(e.states).map(cleanState).filter(Boolean);
|
|
134
|
+
if (states.length)
|
|
135
|
+
ent.states = states;
|
|
136
|
+
const aliases = asArr(e.aliases).map(asStr).filter(Boolean);
|
|
137
|
+
if (aliases.length)
|
|
138
|
+
ent.aliases = aliases;
|
|
139
|
+
out.registry_delta.new_entities.push(ent);
|
|
140
|
+
}
|
|
141
|
+
for (const e of asArr(rd.enrich)) {
|
|
142
|
+
if (!isObj(e))
|
|
143
|
+
continue;
|
|
144
|
+
const name = asStr(e.name);
|
|
145
|
+
if (!name)
|
|
146
|
+
continue;
|
|
147
|
+
const en = { name };
|
|
148
|
+
const anchor = asStr(e.anchor);
|
|
149
|
+
if (anchor)
|
|
150
|
+
en.anchor = anchor;
|
|
151
|
+
const appearance = asStr(e.appearance);
|
|
152
|
+
if (appearance)
|
|
153
|
+
en.appearance = appearance;
|
|
154
|
+
const role = asStr(e.role);
|
|
155
|
+
if (role)
|
|
156
|
+
en.role = role;
|
|
157
|
+
const addA = asArr(e.add_aliases).map(asStr).filter(Boolean);
|
|
158
|
+
if (addA.length)
|
|
159
|
+
en.add_aliases = addA;
|
|
160
|
+
const addS = asArr(e.add_states).map(cleanState).filter(Boolean);
|
|
161
|
+
if (addS.length)
|
|
162
|
+
en.add_states = addS;
|
|
163
|
+
if (Object.keys(en).length > 1)
|
|
164
|
+
out.registry_delta.enrich.push(en);
|
|
165
|
+
}
|
|
166
|
+
for (const r of asArr(rd.resolve)) {
|
|
167
|
+
if (!isObj(r))
|
|
168
|
+
continue;
|
|
169
|
+
const p = asStr(r.provisional_name);
|
|
170
|
+
const c = asStr(r.canonical_name);
|
|
171
|
+
if (p && c)
|
|
172
|
+
out.registry_delta.resolve.push({ provisional_name: p, canonical_name: c, reason: asStr(r.reason) });
|
|
173
|
+
}
|
|
174
|
+
const ot = isObj(input.open_threads) ? input.open_threads : {};
|
|
175
|
+
for (const o of asArr(ot.opened)) {
|
|
176
|
+
if (!isObj(o))
|
|
177
|
+
continue;
|
|
178
|
+
const text = asStr(o.text);
|
|
179
|
+
if (text)
|
|
180
|
+
out.open_threads.opened.push({ text });
|
|
181
|
+
}
|
|
182
|
+
for (const c of asArr(ot.closed)) {
|
|
183
|
+
if (!isObj(c))
|
|
184
|
+
continue;
|
|
185
|
+
const ref = asStr(c.ref);
|
|
186
|
+
if (ref)
|
|
187
|
+
out.open_threads.closed.push({ ref });
|
|
188
|
+
}
|
|
189
|
+
return out;
|
|
190
|
+
}
|
|
191
|
+
// Returns the raw JSON text (pretty-printed, persisted for human review) alongside
|
|
192
|
+
// the parsed SerialOutput the pipeline folds into context.
|
|
103
193
|
export async function runVideoSerial(port, file, episodeNo, contextText, fps, signal) {
|
|
104
194
|
const response = await port.generate({
|
|
105
195
|
file,
|
|
106
196
|
system: VIDEO_SERIAL_SYSTEM,
|
|
107
197
|
user: buildSerialUser(episodeNo, contextText),
|
|
108
198
|
fps,
|
|
199
|
+
responseJsonSchema: VIDEO_SERIAL_SCHEMA,
|
|
109
200
|
...(signal ? { signal } : {}),
|
|
110
201
|
});
|
|
111
|
-
const
|
|
112
|
-
// A too-short
|
|
113
|
-
if (
|
|
114
|
-
throw serialError(`episode ${episodeNo}: serial
|
|
115
|
-
|
|
202
|
+
const raw = response.text.trim();
|
|
203
|
+
// A too-short body means a failed/empty generation (§12.3: not retried).
|
|
204
|
+
if (raw.length < 40)
|
|
205
|
+
throw serialError(`episode ${episodeNo}: serial output too short (finishReason=${response.finishReason})`, [`length: ${raw.length}`]);
|
|
206
|
+
let parsed;
|
|
207
|
+
try {
|
|
208
|
+
parsed = JSON.parse(raw);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
throw serialError(`episode ${episodeNo}: serial output was not valid JSON (finishReason=${response.finishReason})`, [raw.slice(0, 200)]);
|
|
212
|
+
}
|
|
213
|
+
const output = toSerialOutput(parsed);
|
|
116
214
|
if (output.scenes.length === 0)
|
|
117
|
-
throw serialError(`episode ${episodeNo}: serial
|
|
215
|
+
throw serialError(`episode ${episodeNo}: serial output produced no scenes`, [raw.slice(0, 200)]);
|
|
216
|
+
const md = JSON.stringify(parsed, null, 2);
|
|
118
217
|
return { md, output };
|
|
119
218
|
}
|
|
120
219
|
//# sourceMappingURL=video-serial.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-serial.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/video-serial.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kFAAkF;AAClF
|
|
1
|
+
{"version":3,"file":"video-serial.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/video-serial.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,qFAAqF;AACrF,8EAA8E;AAC9E,+EAA+E;AAC/E,oFAAoF;AACpF,iFAAiF;AACjF,8EAA8E;AAC9E,kFAAkF;AAClF,iDAAiD;AAEjD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAKpD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,kFAAkF;IAClF,kLAAkL;IAClL,qCAAqC;IACrC,4BAA4B;IAC5B,oFAAoF;IACpF,0FAA0F;IAC1F,2HAA2H;IAC3H,uHAAuH;IACvH,sFAAsF;IACtF,uHAAuH;IACvH,6OAA6O,CAAC;AAEhP,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,WAAmB;IACpE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE;QAC5B,CAAC,CAAC,+CAA+C,WAAW,IAAI;QAChE,CAAC,CAAC,mBAAmB,CAAC;IACxB,OAAO,OAAO,SAAS,4FAA4F,GAAG,EAAE,CAAC;AAC3H,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,QAAkB;IACtD,OAAO,IAAI,QAAQ,CAAC,4BAA4B,EAAE,OAAO,EAAE;QACzD,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,4BAA4B;QACvC,QAAQ;QACR,SAAS,EAAE,CAAC,2EAA2E,CAAC;KACzF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrH,MAAM,KAAK,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9E,MAAM,KAAK,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAErE,kFAAkF;AAClF,mFAAmF;AACnF,4EAA4E;AAC5E,wEAAwE;AACxE,sFAAsF;AACtF,MAAM,UAAU,GAAG,CAAC,GAAY,EAAU,EAAE;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,gFAAgF;AAChF,mFAAmF;AACnF,8EAA8E;AAC9E,kCAAkC;AAClC,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,GAAG,GAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;IAChK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAErC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,WAAW,GAAsC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAAC,IAAI,KAAK;YAAE,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;QACnE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,IAAI;YAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;QAC9D,MAAM,KAAK,GAAgB;YACzB,WAAW;YACX,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,OAAO,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAAC,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC;YACF,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YAChD,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,OAAO,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO;oBAAE,OAAO,EAAE,CAAC;gBACpE,MAAM,MAAM,GAAmC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAAC,IAAI,OAAO;oBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;gBACxE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAAC,IAAI,OAAO;oBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;gBACxE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAAC,IAAI,EAAE;oBAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,8CAA8C;gBACpH,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;SACH,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAAC,IAAI,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QACjF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAC,IAAI,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,EAAE,GAA4B,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,CAAC;YAAE,SAAS;QACpF,MAAM,GAAG,GAAiB;YACxB,IAAI;YACJ,IAAI;YACJ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW;YACvE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;SAC7E,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QAChE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,UAAU;YAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;QACpF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QACtD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,MAAM,CAAC,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACvG,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,OAAO,CAAC,MAAM;YAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACvG,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,CAAC,IAAI;YAAE,SAAS;QAChD,MAAM,EAAE,GAAqD,EAAE,IAAI,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,MAAM;YAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,UAAU;YAAE,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC;QACnF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,IAAI;YAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,IAAI,CAAC,MAAM;YAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;QACrG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,IAAI,CAAC,MAAM;YAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;QACxG,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,MAAM,EAAE,GAA4B,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QAAC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,IAAI;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAC5I,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QAAC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,IAAI,GAAG;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAAC,CAAC;IAExI,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mFAAmF;AACnF,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAmB,EACnB,IAAqB,EACrB,SAAiB,EACjB,WAAmB,EACnB,GAAW,EACX,MAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI;QACJ,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC;QAC7C,GAAG;QACH,kBAAkB,EAAE,mBAAmB;QACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,yEAAyE;IACzE,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,WAAW,CAAC,WAAW,SAAS,2CAA2C,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3J,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,WAAW,CAAC,WAAW,SAAS,oDAAoD,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3I,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,WAAW,CAAC,WAAW,SAAS,oCAAoC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACjI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -3,3 +3,6 @@ export declare const EPISODE_TITLE_SCHEMA: JsonSchema;
|
|
|
3
3
|
export declare const SYNOPSIS_SCHEMA: JsonSchema;
|
|
4
4
|
export declare const SCRIPT_SYNOPSIS_SCHEMA: JsonSchema;
|
|
5
5
|
export declare const STATE_BINDING_SCHEMA: JsonSchema;
|
|
6
|
+
export declare const SERIAL_DELTA_SCHEMA: JsonSchema;
|
|
7
|
+
export declare const VIDEO_SERIAL_SCHEMA: JsonSchema;
|
|
8
|
+
export declare const NAME_FIX_SCHEMA: JsonSchema;
|
|
@@ -104,4 +104,244 @@ export const STATE_BINDING_SCHEMA = {
|
|
|
104
104
|
},
|
|
105
105
|
},
|
|
106
106
|
};
|
|
107
|
+
// Serial per-window asset/state Delta (§ serial, ingest.episode-assets). Native
|
|
108
|
+
// structured output: the model returns this object directly, so canonical names
|
|
109
|
+
// never get mangled by markdown delimiters. `name` holds ONLY the pure canonical
|
|
110
|
+
// name; every translation / past-life / alt name goes in `aliases` — the split
|
|
111
|
+
// the markdown `名 | 名 | 描述` format could not enforce.
|
|
112
|
+
export const SERIAL_DELTA_SCHEMA = {
|
|
113
|
+
type: "object",
|
|
114
|
+
required: ["newEntities", "merges", "looks", "lookChanges", "subEvents", "summary"],
|
|
115
|
+
additionalProperties: false,
|
|
116
|
+
properties: {
|
|
117
|
+
newEntities: {
|
|
118
|
+
type: "array",
|
|
119
|
+
description: "本段新登记的实体(人物/场景/道具)。name=canonical,aliases 列全这段里它的所有其他叫法",
|
|
120
|
+
items: {
|
|
121
|
+
type: "object",
|
|
122
|
+
required: ["kind", "name", "description", "aliases"],
|
|
123
|
+
additionalProperties: false,
|
|
124
|
+
properties: {
|
|
125
|
+
kind: { type: "string", enum: ["actor", "location", "prop"] },
|
|
126
|
+
name: { type: "string", description: "纯 canonical 名,不含括号/斜杠/译名夹注/对白标记" },
|
|
127
|
+
description: { type: "string", description: "一句话说明这个实体本身是谁/什么身份/什么东西,非空;只写自身身份/角色/关系/外形,绝不写所处场景/环境/地点" },
|
|
128
|
+
aliases: { type: "array", items: { type: "string" }, description: "这段里该实体的所有其他叫法:别名/译名/前世名/短名全名/对白说话人在正文里的写法,逐个单列(纯名,不带对白/情绪标记)" },
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
merges: {
|
|
133
|
+
type: "array",
|
|
134
|
+
description: "本段里某个尚未登记的称呼,其实是某个已登记实体的别名",
|
|
135
|
+
items: {
|
|
136
|
+
type: "object",
|
|
137
|
+
required: ["from", "into"],
|
|
138
|
+
additionalProperties: false,
|
|
139
|
+
properties: {
|
|
140
|
+
from: { type: "string", description: "本段这个称呼(尚未作为独立实体登记过)" },
|
|
141
|
+
into: { type: "string", description: "它所指的已登记实体的 canonical 名" },
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
looks: {
|
|
146
|
+
type: "array",
|
|
147
|
+
items: {
|
|
148
|
+
type: "object",
|
|
149
|
+
required: ["entity", "name", "aliases", "description"],
|
|
150
|
+
additionalProperties: false,
|
|
151
|
+
properties: {
|
|
152
|
+
entity: { type: "string", description: "实体 canonical 名" },
|
|
153
|
+
name: { type: "string", description: "造型名,必须中文,英文专名先译成中文" },
|
|
154
|
+
aliases: { type: "array", items: { type: "string" }, description: "同义造型名" },
|
|
155
|
+
description: { type: "string", description: "这套外观一句话" },
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
lookChanges: {
|
|
160
|
+
type: "array",
|
|
161
|
+
description: "造型变化:只在某实体的造型从这一场起发生变化时标一条;不变的场不用标(系统自动沿用)",
|
|
162
|
+
items: {
|
|
163
|
+
type: "object",
|
|
164
|
+
required: ["scene", "entity", "look"],
|
|
165
|
+
additionalProperties: false,
|
|
166
|
+
properties: {
|
|
167
|
+
scene: { type: "string", description: "变化发生的场景 id,如 scn_012" },
|
|
168
|
+
entity: { type: "string", description: "实体 canonical 名" },
|
|
169
|
+
look: { type: "string", description: "从这场起穿的造型名(必须是已在 looks 里注册过的档位)" },
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
subEvents: { type: "array", items: { type: "string" }, description: "本段关键剧情原子,每条一句话" },
|
|
174
|
+
summary: { type: "string", description: "本段一句话梗概" },
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
// Serial VIDEO-pass structured output (§10.2, ingest.video-serial). Replaces the
|
|
178
|
+
// old "emit one markdown doc → parseSerialMd" contract: Gemini returns THIS object
|
|
179
|
+
// directly (responseMimeType application/json + responseJsonSchema). It carries
|
|
180
|
+
// both the episode screenplay (scenes → per-shot anchors) and incremental registry
|
|
181
|
+
// maintenance (new_entities / enrich / resolve) + open threads. Mirrors the
|
|
182
|
+
// SerialOutput interface, with environment flattened to space/time. `state`/`states`
|
|
183
|
+
// descriptions forbid parens/slashes at the source — the drift that fragmented one
|
|
184
|
+
// outfit into 「黑丝短裙(身穿收银短袖」/「黑丝短裙/绷带短裙」under the md format —
|
|
185
|
+
// with a deterministic clean pass in runVideoSerial as backstop.
|
|
186
|
+
const KIND3 = { type: "string", enum: ["actor", "location", "prop"] };
|
|
187
|
+
const STATE_ITEM = { type: "string", description: "造型档位名,只填名字本身;禁止括号、斜杠、逗号或描述性文字" };
|
|
188
|
+
export const VIDEO_SERIAL_SCHEMA = {
|
|
189
|
+
type: "object",
|
|
190
|
+
required: ["synopsis", "scenes", "registry_delta", "open_threads"],
|
|
191
|
+
additionalProperties: false,
|
|
192
|
+
properties: {
|
|
193
|
+
synopsis: { type: "string", description: "本集剧情梗概,按发生顺序,200-300 字纯文本" },
|
|
194
|
+
scenes: {
|
|
195
|
+
type: "array",
|
|
196
|
+
description: "本集所有场景,按时间顺序,逐场逐镜头",
|
|
197
|
+
items: {
|
|
198
|
+
type: "object",
|
|
199
|
+
required: ["space", "time", "timeRange", "location", "characters", "props", "anchors"],
|
|
200
|
+
additionalProperties: false,
|
|
201
|
+
properties: {
|
|
202
|
+
space: { type: "string", description: "内景填「内」/外景填「外」;不确定填空串" },
|
|
203
|
+
time: { type: "string", description: "白天填「日」/夜晚填「夜」;不确定填空串" },
|
|
204
|
+
timeRange: { type: "string", description: "本场起止时间 MM:SS-MM:SS" },
|
|
205
|
+
location: { type: "string", description: "稳定主空间地点名,沿用规范名" },
|
|
206
|
+
characters: {
|
|
207
|
+
type: "array",
|
|
208
|
+
description: "本场在场的具体单人角色(群众不列)",
|
|
209
|
+
items: {
|
|
210
|
+
type: "object",
|
|
211
|
+
required: ["name", "state"],
|
|
212
|
+
additionalProperties: false,
|
|
213
|
+
properties: {
|
|
214
|
+
name: { type: "string", description: "角色规范名" },
|
|
215
|
+
state: { ...STATE_ITEM, description: "本场该角色的造型/状态名:整套着装档位名,只填名字本身。禁止括号、斜杠、逗号或描述文字(错误:『黑丝短裙(身穿收银短袖)』『黑丝短裙/绷带短裙』;正确:『黑丝短裙』)。同一套造型沿用已知设定里的既有名。没换装或看不清填空串" },
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
props: { type: "array", items: { type: "string" }, description: "本场在场的关键道具名" },
|
|
220
|
+
anchors: {
|
|
221
|
+
type: "array",
|
|
222
|
+
description: "本场逐镜头锚点,按时间顺序,不漏镜头",
|
|
223
|
+
items: {
|
|
224
|
+
type: "object",
|
|
225
|
+
required: ["kind", "speaker", "emotion", "ts", "content"],
|
|
226
|
+
additionalProperties: false,
|
|
227
|
+
properties: {
|
|
228
|
+
kind: { type: "string", enum: ["act", "dlg", "think"], description: "act=动作/环境;dlg=对白;think=内心独白" },
|
|
229
|
+
speaker: { type: "string", description: "dlg/think 的说话人规范名(旁白/广播用『broadcast:名』);act 填空串" },
|
|
230
|
+
emotion: { type: "string", description: "dlg/think 的情绪;act 或无情绪填空串" },
|
|
231
|
+
ts: { type: "string", description: "本条时间戳 MM:SS(分:秒)" },
|
|
232
|
+
content: { type: "string", description: "act=逐镜头动作/环境描写(含景别,绝不复述台词字幕);dlg=对白原话(称呼保留原样);think=内心独白" },
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
registry_delta: {
|
|
240
|
+
type: "object",
|
|
241
|
+
description: "对已知设定的增量维护。已有且无新信息的实体一个字都别写",
|
|
242
|
+
required: ["new_entities", "enrich", "resolve"],
|
|
243
|
+
additionalProperties: false,
|
|
244
|
+
properties: {
|
|
245
|
+
new_entities: {
|
|
246
|
+
type: "array",
|
|
247
|
+
description: "本集首次出现、且已知设定里没有的实体(只登记具体单人角色/地点/道具;群众不登记)",
|
|
248
|
+
items: {
|
|
249
|
+
type: "object",
|
|
250
|
+
required: ["name", "kind", "status", "importance", "anchor", "appearance", "role", "states", "aliases"],
|
|
251
|
+
additionalProperties: false,
|
|
252
|
+
properties: {
|
|
253
|
+
name: { type: "string", description: "规范名;认不出且无本名的人用不含姓的描述名(如『湿发中年男』),绝不编带姓假名" },
|
|
254
|
+
kind: KIND3,
|
|
255
|
+
status: { type: "string", enum: ["canonical", "provisional"], description: "canonical=身份已确认;provisional=认不出/未点名,待后续还原" },
|
|
256
|
+
importance: { type: "string", enum: ["featured", "background"] },
|
|
257
|
+
anchor: { type: "string", description: "1-3 个跨集重新指认的视觉特征" },
|
|
258
|
+
appearance: { type: "string", description: "跨集恒定长相:性别+年龄段+脸型+发型+固定标记,不含服饰;认不出填空串" },
|
|
259
|
+
role: { type: "string", description: "剧情身份与关系" },
|
|
260
|
+
states: { type: "array", items: STATE_ITEM, description: "本集该实体出现的造型名(可多个)" },
|
|
261
|
+
aliases: { type: "array", items: { type: "string" }, description: "本集见到的其它称呼" },
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
enrich: {
|
|
266
|
+
type: "array",
|
|
267
|
+
description: "对已知设定里已有实体的补充/更正,只写发生变化的字段;无变化的字段填空串/空数组,整体无变化的实体不要出现",
|
|
268
|
+
items: {
|
|
269
|
+
type: "object",
|
|
270
|
+
required: ["name", "anchor", "appearance", "role", "add_aliases", "add_states"],
|
|
271
|
+
additionalProperties: false,
|
|
272
|
+
properties: {
|
|
273
|
+
name: { type: "string", description: "已知实体的规范名" },
|
|
274
|
+
anchor: { type: "string", description: "更好的重认特征;无更新填空串" },
|
|
275
|
+
appearance: { type: "string", description: "更准的外观;无更新填空串" },
|
|
276
|
+
role: { type: "string", description: "更明确的身份;无更新填空串" },
|
|
277
|
+
add_aliases: { type: "array", items: { type: "string" }, description: "本集新出现的称呼" },
|
|
278
|
+
add_states: { type: "array", items: STATE_ITEM, description: "本集新造型" },
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
resolve: {
|
|
283
|
+
type: "array",
|
|
284
|
+
description: "把已知设定里 provisional(待定)的人凭本集剧情还原成真身",
|
|
285
|
+
items: {
|
|
286
|
+
type: "object",
|
|
287
|
+
required: ["provisional_name", "canonical_name", "reason"],
|
|
288
|
+
additionalProperties: false,
|
|
289
|
+
properties: {
|
|
290
|
+
provisional_name: { type: "string", description: "之前登记的描述名" },
|
|
291
|
+
canonical_name: { type: "string", description: "本集看清后的真名" },
|
|
292
|
+
reason: { type: "string", description: "剧情依据一句话" },
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
open_threads: {
|
|
299
|
+
type: "object",
|
|
300
|
+
required: ["opened", "closed"],
|
|
301
|
+
additionalProperties: false,
|
|
302
|
+
properties: {
|
|
303
|
+
opened: { type: "array", description: "本集新开、尚未交代结果的悬念/关系变化", items: { type: "object", required: ["text"], additionalProperties: false, properties: { text: { type: "string" } } } },
|
|
304
|
+
closed: { type: "array", description: "本集交代了结果、要关闭的已知线索 id(如 t3_1)", items: { type: "object", required: ["ref"], additionalProperties: false, properties: { ref: { type: "string" } } } },
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
// Name-fix repair (§ ingest.name-fix): for each body name that resolved to no
|
|
310
|
+
// registry entity, the model either merges it into an existing canonical or
|
|
311
|
+
// declares it a genuinely new entity. Same two acts as the serial pass, no scenes.
|
|
312
|
+
export const NAME_FIX_SCHEMA = {
|
|
313
|
+
type: "object",
|
|
314
|
+
required: ["merges", "newEntities"],
|
|
315
|
+
additionalProperties: false,
|
|
316
|
+
properties: {
|
|
317
|
+
merges: {
|
|
318
|
+
type: "array",
|
|
319
|
+
description: "未登记名字其实是某已登记实体的别名",
|
|
320
|
+
items: {
|
|
321
|
+
type: "object",
|
|
322
|
+
required: ["from", "into"],
|
|
323
|
+
additionalProperties: false,
|
|
324
|
+
properties: {
|
|
325
|
+
from: { type: "string", description: "这个未登记的名字" },
|
|
326
|
+
into: { type: "string", description: "它所指的已登记实体 canonical 名" },
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
newEntities: {
|
|
331
|
+
type: "array",
|
|
332
|
+
description: "确实是全新实体的名字,各登记一条",
|
|
333
|
+
items: {
|
|
334
|
+
type: "object",
|
|
335
|
+
required: ["kind", "name", "description", "aliases"],
|
|
336
|
+
additionalProperties: false,
|
|
337
|
+
properties: {
|
|
338
|
+
kind: { type: "string", enum: ["actor", "location", "prop"] },
|
|
339
|
+
name: { type: "string", description: "纯 canonical 名" },
|
|
340
|
+
description: { type: "string", description: "一句话身份,非空" },
|
|
341
|
+
aliases: { type: "array", items: { type: "string" }, description: "其他叫法" },
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
};
|
|
107
347
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/llm/tasks/schemas.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAe;IAC9C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IAC5B,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,cAAc,EAAE;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;gBAC9B,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;aACxE;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAe;IAChD,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC;IACtE,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,eAAe,EAAE;YACf,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC1B,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;aACnE;SACF;KACF;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAe;IACnC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAClC,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;KACrF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAe;IAC9C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,UAAU,CAAC;gBACtB,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,MAAM,EAAE;wBACN,GAAG,gBAAgB;wBACnB,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,oBAAoB,EAAE,KAAK;4BAC/E,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;yBACrF;qBACF;oBACD,SAAS,EAAE;wBACT,GAAG,gBAAgB;wBACnB,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,oBAAoB,EAAE,KAAK;4BAClF,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;yBACxF;qBACF;oBACD,KAAK,EAAE;wBACL,GAAG,gBAAgB;wBACnB,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,oBAAoB,EAAE,KAAK;4BAC9E,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;yBACpF;qBACF;oBACD,aAAa,EAAE;wBACb,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC;4BACrE,oBAAoB,EAAE,KAAK;4BAC3B,UAAU,EAAE;gCACV,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gCACjC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE;gCACpE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCAC7B,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;gCAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCAC/B,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE;6BAC5E;yBACF;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/llm/tasks/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type LlmProtocol = "anthropic" | "openai-compatible" | "google-gemini";
|
|
2
|
-
export type LlmTaskId = "direct.episode-titles" | "direct.batch-extract" | "direct.episode-synopsis" | "direct.synopsis-reduction" | "direct.script-synopsis" | "direct.asset-grouping" | "direct.asset-curation" | "direct.asset-curation-audit" | "direct.location-canonicalization" | "direct.state-curation" | "direct.state-binding" | "metadata.global" | "metadata.descriptions" | "synopsis.chunk" | "synopsis.episode" | "synopsis.arc" | "synopsis.script-overview" | "ingest.body-start" | "ingest.arc-summary" | "ingest.text-normalize" | "ingest.episode-assets" | "ingest.mention-resolve" | "ingest.asset-extract" | "ingest.asset-curate" | "ingest.asset-recall" | "ingest.asset-refine" | "ingest.state-reconcile" | "ingest.speaker-audit" | "ingest.video-serial";
|
|
2
|
+
export type LlmTaskId = "direct.episode-titles" | "direct.batch-extract" | "direct.episode-synopsis" | "direct.synopsis-reduction" | "direct.script-synopsis" | "direct.asset-grouping" | "direct.asset-curation" | "direct.asset-curation-audit" | "direct.location-canonicalization" | "direct.state-curation" | "direct.state-binding" | "metadata.global" | "metadata.descriptions" | "synopsis.chunk" | "synopsis.episode" | "synopsis.arc" | "synopsis.script-overview" | "ingest.body-start" | "ingest.arc-summary" | "ingest.text-normalize" | "ingest.episode-assets" | "ingest.name-fix" | "ingest.mention-resolve" | "ingest.asset-extract" | "ingest.asset-curate" | "ingest.asset-recall" | "ingest.asset-refine" | "ingest.state-reconcile" | "ingest.speaker-audit" | "ingest.video-serial";
|
|
3
3
|
export type LlmTaskMode = "text" | "tool" | "video";
|
|
4
4
|
export type JsonSchema = Record<string, unknown>;
|
|
5
5
|
export interface TextGenerationRequest {
|