@lingjingai/scriptctl 0.36.3 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/changes/0.36.4.md +13 -0
  2. package/changes/0.36.5.md +13 -0
  3. package/changes/0.37.0.md +17 -0
  4. package/dist/cli.js +2 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/domain/ingest/assembler.js +14 -6
  7. package/dist/domain/ingest/assembler.js.map +1 -1
  8. package/dist/domain/ingest/asset-state-md-parser.d.ts +2 -0
  9. package/dist/domain/ingest/asset-state-md-parser.js +133 -0
  10. package/dist/domain/ingest/asset-state-md-parser.js.map +1 -0
  11. package/dist/domain/ingest/serial-context.d.ts +93 -0
  12. package/dist/domain/ingest/serial-context.js +186 -0
  13. package/dist/domain/ingest/serial-context.js.map +1 -0
  14. package/dist/domain/ingest/state-reconcile.d.ts +1 -0
  15. package/dist/domain/ingest/state-reconcile.js +2 -0
  16. package/dist/domain/ingest/state-reconcile.js.map +1 -1
  17. package/dist/help-text.js +1 -1
  18. package/dist/llm/config.js +9 -3
  19. package/dist/llm/config.js.map +1 -1
  20. package/dist/llm/registry.d.ts +1 -0
  21. package/dist/llm/registry.js +4 -0
  22. package/dist/llm/registry.js.map +1 -1
  23. package/dist/llm/tasks/ingest/episode-assets.d.ts +8 -0
  24. package/dist/llm/tasks/ingest/episode-assets.js +46 -0
  25. package/dist/llm/tasks/ingest/episode-assets.js.map +1 -0
  26. package/dist/llm/types.d.ts +1 -1
  27. package/dist/llm/types.js.map +1 -1
  28. package/dist/usecases/ingest/pipeline.js +60 -34
  29. package/dist/usecases/ingest/pipeline.js.map +1 -1
  30. package/dist/usecases/ingest/serial-govern.d.ts +23 -0
  31. package/dist/usecases/ingest/serial-govern.js +169 -0
  32. package/dist/usecases/ingest/serial-govern.js.map +1 -0
  33. package/dist/usecases/ingest/status.js +17 -1
  34. package/dist/usecases/ingest/status.js.map +1 -1
  35. package/dist/usecases/ingest/view-command.js +5 -0
  36. package/dist/usecases/ingest/view-command.js.map +1 -1
  37. package/dist/usecases/ingest/view-server.d.ts +16 -0
  38. package/dist/usecases/ingest/view-server.js +220 -0
  39. package/dist/usecases/ingest/view-server.js.map +1 -0
  40. package/package.json +1 -1
  41. package/skills/scriptctl/SKILL.md +1 -1
@@ -0,0 +1,186 @@
1
+ // Serial-govern running context (§ serial), built INCREMENTALLY. The front gives
2
+ // only the body (scenes + dialogue/action, speakers by name); it does NOT feed any
3
+ // pre-extracted assets/states. This module maintains a registry that starts EMPTY
4
+ // and grows episode by episode: the model, reading one episode's body plus the
5
+ // context-so-far, discovers entities (with importance + 造型/looks + descriptions),
6
+ // merges identities, and states — per scene — who is present and in which 造型.
7
+ //
8
+ // Nothing here is seeded from the jsonl roster. render() shows only what has been
9
+ // discovered up to now (so episode 1 is small). The persistent core (entities +
10
+ // looks + per-scene refs) never compacts; the plot narrative (recent → synopsis →
11
+ // arc) ages down a ladder to stay within budget. The final v3 assets/scene-refs
12
+ // are built from THIS registry, not the roster.
13
+ const norm = (s) => s.normalize("NFC").replace(/\s+/g, " ").trim();
14
+ export const emptyDelta = () => ({ newEntities: [], merges: [], looks: [], importance: [], sceneRefs: [], subEvents: [], summary: "" });
15
+ export const emptyContext = () => ({ entities: [], scenes: {}, recent: [], synopsis: [] });
16
+ export const DEFAULT_COMPACT = { recentEpisodes: 6, synopsisChars: 3500, arcFold: 10 };
17
+ const KIND_LABEL = { actor: "人物", location: "场景", prop: "道具" };
18
+ const LABEL_KIND = { 人物: "actor", 场景: "location", 地点: "location", 道具: "prop" };
19
+ export const kindFromLabel = (s) => LABEL_KIND[s.trim()];
20
+ export function findEntity(ctx, name) {
21
+ const key = norm(name);
22
+ return ctx.entities.find((e) => norm(e.canonical) === key || e.aliases.some((a) => norm(a) === key));
23
+ }
24
+ const addAlias = (e, name) => {
25
+ if (norm(name) !== norm(e.canonical) && !e.aliases.some((a) => norm(a) === norm(name)))
26
+ e.aliases.push(name);
27
+ };
28
+ // Age/size modifier prefixes that a proper name would not carry — a name whose
29
+ // only extra over a shorter one is such a modifier is NOT "fuller" (年轻苏远桥 is
30
+ // not fuller than 苏远桥; 苏若雪 IS fuller than 若雪 because 苏 is a surname).
31
+ const MODIFIERS = ["年轻", "年老", "年幼", "年少", "中年", "青年", "少年", "老年", "幼年", "老", "小", "大", "少", "幼"];
32
+ // n properly extends m if it contains m and the leftover part is a real name
33
+ // fragment (a surname), not just a modifier.
34
+ function properlyExtends(n, m) {
35
+ const N = norm(n), M = norm(m);
36
+ if (N === M || !N.includes(M))
37
+ return false;
38
+ const extra = N.replace(M, "").trim();
39
+ return extra.length > 0 && !MODIFIERS.some((mod) => extra === mod || extra.startsWith(mod));
40
+ }
41
+ // The "fullest" name in a set = the longest one that PROPERLY extends another
42
+ // (surname prefix, not a modifier). If none does, keep the first (current
43
+ // canonical) — avoids promoting a modified or unrelated long name.
44
+ export function fullest(names) {
45
+ const supers = names.filter((n) => names.some((m) => m !== n && properlyExtends(n, m)));
46
+ return supers.length ? supers.reduce((a, b) => (b.length > a.length ? b : a)) : names[0];
47
+ }
48
+ // Canonical name for any name/alias (post-merge), else the name unchanged.
49
+ export function resolveCanon(ctx, name) {
50
+ return findEntity(ctx, name)?.canonical ?? name;
51
+ }
52
+ // Canonical look name for a look name/alias on an entity, else the name unchanged.
53
+ export function resolveLook(e, name) {
54
+ const key = norm(name);
55
+ return e.looks.find((l) => norm(l.name) === key || l.aliases.some((a) => norm(a) === key))?.name ?? name;
56
+ }
57
+ // The entity's baseline "常态" look name (everyday appearance) — the explicitly
58
+ // labelled one if present, else the first look reported. Scenes with no specific
59
+ // look fall back to this, so an ordinary scene never inherits a dramatic outfit.
60
+ const BASE_LABELS = ["常态", "日常", "平时", "基础", "普通"];
61
+ export function baseLook(e) {
62
+ if (e.looks.length === 0)
63
+ return undefined;
64
+ return (e.looks.find((l) => BASE_LABELS.some((b) => l.name.includes(b))) ?? e.looks[0]).name;
65
+ }
66
+ export function applyDelta(ctx, delta, episode) {
67
+ for (const ne of delta.newEntities) {
68
+ if (findEntity(ctx, ne.name))
69
+ continue;
70
+ ctx.entities.push({ kind: ne.kind, canonical: ne.name, aliases: [], description: ne.description, looks: [], ...(ne.importance ? { importance: ne.importance } : {}) });
71
+ }
72
+ for (const { name, tier } of delta.importance) {
73
+ const e = findEntity(ctx, name);
74
+ if (e)
75
+ e.importance = tier;
76
+ }
77
+ for (const { from, into } of delta.merges) {
78
+ const dst = findEntity(ctx, into);
79
+ if (!dst)
80
+ continue;
81
+ const src = findEntity(ctx, from);
82
+ if (src && src !== dst && src.kind === dst.kind) {
83
+ // `from` is a registered duplicate → fold it into dst.
84
+ for (const n of [src.canonical, ...src.aliases])
85
+ addAlias(dst, n);
86
+ for (const l of src.looks)
87
+ if (!dst.looks.some((d) => norm(d.name) === norm(l.name)))
88
+ dst.looks.push(l);
89
+ if (dst.importance === undefined)
90
+ dst.importance = src.importance;
91
+ if (!dst.description)
92
+ dst.description = src.description;
93
+ ctx.entities = ctx.entities.filter((e) => e !== src);
94
+ }
95
+ else if (!src) {
96
+ // `from` is just a new alias name (a fuller/other spelling) for dst.
97
+ addAlias(dst, from);
98
+ }
99
+ else
100
+ continue; // src === dst or cross-kind: no-op
101
+ // Promote the fullest name (a superstring of another in the set) to canonical,
102
+ // so 苏若雪 wins over 若雪, 顾夜渊 over 夜渊.
103
+ const all = [dst.canonical, ...dst.aliases];
104
+ const best = fullest(all);
105
+ if (norm(best) !== norm(dst.canonical)) {
106
+ dst.canonical = best;
107
+ dst.aliases = all.filter((n) => norm(n) !== norm(best));
108
+ }
109
+ }
110
+ for (const { entity, names: raw, description } of delta.looks) {
111
+ const e = findEntity(ctx, entity);
112
+ if (!e)
113
+ continue;
114
+ const names = raw.map((n) => n.trim()).filter(Boolean);
115
+ if (!names.length)
116
+ continue;
117
+ const canonical = names[0];
118
+ const existing = e.looks.find((l) => norm(l.name) === norm(canonical) || names.some((n) => l.aliases.some((a) => norm(a) === norm(n))));
119
+ if (existing) {
120
+ if (description)
121
+ existing.description = description;
122
+ for (const n of names.slice(1))
123
+ if (!existing.aliases.some((a) => norm(a) === norm(n)))
124
+ existing.aliases.push(n);
125
+ }
126
+ else
127
+ e.looks.push({ name: canonical, aliases: names.slice(1), description });
128
+ e.currentLook = canonical;
129
+ }
130
+ for (const sr of delta.sceneRefs) {
131
+ ctx.scenes[sr.scene] = { ...(sr.location ? { location: sr.location } : {}), actors: sr.actors, props: sr.props };
132
+ }
133
+ ctx.recent.push({ episode, summary: delta.summary, subEvents: delta.subEvents });
134
+ return ctx;
135
+ }
136
+ const recentChars = (r) => r.summary.length + r.subEvents.reduce((n, s) => n + s.length, 0);
137
+ export function compact(ctx, opts = DEFAULT_COMPACT) {
138
+ while (ctx.recent.length > opts.recentEpisodes || (ctx.recent.length > 1 && ctx.recent.reduce((n, r) => n + recentChars(r), 0) > 6000)) {
139
+ const oldest = ctx.recent.shift();
140
+ if (oldest.summary.trim())
141
+ ctx.synopsis.push({ label: `第${oldest.episode}集`, line: oldest.summary.trim() });
142
+ }
143
+ while (ctx.synopsis.reduce((n, s) => n + s.line.length, 0) > opts.synopsisChars && ctx.synopsis.length > opts.arcFold) {
144
+ const fold = ctx.synopsis.splice(0, opts.arcFold);
145
+ ctx.synopsis.unshift({ label: `${fold[0].label}–${fold[fold.length - 1].label}`, line: fold.map((f) => f.line).join(";") });
146
+ }
147
+ return ctx;
148
+ }
149
+ // Render the WHOLE discovered-so-far context as md — this string is BOTH the prompt
150
+ // and the per-step full trace. Empty at episode 1, grows as entities are found.
151
+ export function render(ctx) {
152
+ const out = ["# 设定"];
153
+ for (const kind of ["actor", "location", "prop"]) {
154
+ const list = ctx.entities.filter((e) => e.kind === kind);
155
+ if (!list.length)
156
+ continue;
157
+ out.push(`## ${KIND_LABEL[kind]}`);
158
+ for (const e of list) {
159
+ const bits = [e.importance ?? "?", ...(e.aliases.length ? [`别名 ${e.aliases.join("、")}`] : []), ...(e.currentLook ? [`当前造型 ${e.currentLook}`] : [])];
160
+ out.push(`- ${e.canonical}|${bits.join("|")}`);
161
+ if (e.description)
162
+ out.push(` 简介:${e.description}`);
163
+ for (const l of e.looks) {
164
+ const nm = l.aliases.length ? `${l.name}(=${l.aliases.join("=")})` : l.name;
165
+ out.push(` 造型 ${nm}${l.description ? `:${l.description}` : ""}`);
166
+ }
167
+ }
168
+ }
169
+ if (ctx.synopsis.length) {
170
+ out.push("", "# 前情");
171
+ for (const s of ctx.synopsis)
172
+ out.push(`- ${s.label}:${s.line}`);
173
+ }
174
+ if (ctx.recent.length) {
175
+ out.push("", "# 最近");
176
+ for (const r of ctx.recent) {
177
+ out.push(`## 第${r.episode}集`);
178
+ if (r.summary.trim())
179
+ out.push(`梗概:${r.summary.trim()}`);
180
+ for (const e of r.subEvents)
181
+ out.push(`- ${e}`);
182
+ }
183
+ }
184
+ return out.join("\n");
185
+ }
186
+ //# sourceMappingURL=serial-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serial-context.js","sourceRoot":"","sources":["../../../src/domain/ingest/serial-context.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export type StateGroup = {
2
2
  canonical: string;
3
3
  state_ids: string[];
4
+ description?: string;
4
5
  };
5
6
  type Obj = Record<string, unknown>;
6
7
  export declare function mergeableStates(asset: Obj): Array<{
@@ -41,6 +41,8 @@ export function applyStateReconcile(input, keepByAsset) {
41
41
  continue;
42
42
  const rep = members[0];
43
43
  byId.get(rep).state_name = g.canonical;
44
+ if (g.description)
45
+ byId.get(rep).description = g.description; // 造型 visual description for image gen
44
46
  kept.push(byId.get(rep));
45
47
  for (const m of members) {
46
48
  remap.set(m, rep);
@@ -1 +1 @@
1
- {"version":3,"file":"state-reconcile.js","sourceRoot":"","sources":["../../../src/domain/ingest/state-reconcile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-reconcile.js","sourceRoot":"","sources":["../../../src/domain/ingest/state-reconcile.ts"],"names":[],"mappings":"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"}
package/dist/help-text.js CHANGED
@@ -806,7 +806,7 @@ Behavior
806
806
  - Uses a text-output contract and parser, not tool_use.
807
807
 
808
808
  Options
809
- - --llm-config <path> task/model routing YAML; built-in route uses the deepseek gateway
809
+ - --llm-config <path> task/model routing YAML; built-in route uses the grok gateway
810
810
  - --concurrency <n> parallel chunk extraction, default 30
811
811
  - --checkpoint <dir> checkpoint directory, default workspace direct loom dir
812
812
  - --overwrite regenerate existing synopsis fields
@@ -142,9 +142,12 @@ export const BUILTIN_LLM_CONFIG = {
142
142
  "google-gemini": { protocol: "google-gemini", baseUrl: null, apiKeyEnv: "GEMINI_API_KEY", timeoutMs: 600_000, maxAttempts: 3 },
143
143
  },
144
144
  models: {
145
- default: { provider: "gw", model: "deepseek-v4-pro-packy" },
146
- "ingest-low": { provider: "gw", model: "deepseek-v4-flash-packy", reasoning: "max" },
147
- "ingest-normalize": { provider: "gw", model: "deepseek-v4-pro-packy", reasoning: "max" },
145
+ // grok-4.5-packy (reasons by default, no explicit reasoning_effort) for the
146
+ // judgment-heavy profiles; the cheap high-volume profile stays on deepseek
147
+ // flash for normalize/mention/recall.
148
+ default: { provider: "gw", model: "grok-4.5-packy" },
149
+ "ingest-low": { provider: "gw", model: "deepseek-v4-flash-packy" },
150
+ "ingest-normalize": { provider: "gw", model: "grok-4.5-packy" },
148
151
  "ingest-video": { provider: "google-gemini", model: "gemini-3.5-flash" },
149
152
  },
150
153
  tasks: {
@@ -154,6 +157,9 @@ export const BUILTIN_LLM_CONFIG = {
154
157
  "ingest.text-normalize": "ingest-low",
155
158
  "ingest.mention-resolve": "ingest-low",
156
159
  "ingest.asset-recall": "ingest-low",
160
+ // Serial asset/state pass is judgment-heavy (importance / durable-vs-transient
161
+ // with plot context) → high model with max reasoning.
162
+ "ingest.episode-assets": "ingest-normalize",
157
163
  // Video understanding → Gemini (§10.3).
158
164
  "ingest.video-transcribe": "ingest-video",
159
165
  "ingest.video-correct": "ingest-video",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/llm/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/llm/config.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ export declare const LLM_TASK_REGISTRY: {
25
25
  "synopsis.arc": LlmTaskSpec;
26
26
  "synopsis.script-overview": LlmTaskSpec;
27
27
  "ingest.text-normalize": LlmTaskSpec;
28
+ "ingest.episode-assets": LlmTaskSpec;
28
29
  "ingest.mention-resolve": LlmTaskSpec;
29
30
  "ingest.asset-extract": LlmTaskSpec;
30
31
  "ingest.asset-curate": LlmTaskSpec;
@@ -20,6 +20,10 @@ export const LLM_TASK_REGISTRY = {
20
20
  "synopsis.arc": spec("synopsis.arc", "text", 4096),
21
21
  "synopsis.script-overview": spec("synopsis.script-overview", "text", 4096),
22
22
  "ingest.text-normalize": spec("ingest.text-normalize", "text", 16000),
23
+ // Serial per-episode asset/state annotation: model reads the running context +
24
+ // one episode body, emits a compact `# 更新` md (decisions, not the body), so a
25
+ // modest output budget suffices.
26
+ "ingest.episode-assets": spec("ingest.episode-assets", "text", 8000),
23
27
  "ingest.mention-resolve": spec("ingest.mention-resolve", "text", 8000),
24
28
  "ingest.asset-extract": spec("ingest.asset-extract", "text", 8000),
25
29
  "ingest.asset-curate": spec("ingest.asset-curate", "text", 32000),
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/llm/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/llm/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Delta } from "../../../domain/ingest/serial-context.js";
2
+ import type { LlmTaskExecutor } from "../../types.js";
3
+ export declare const EPISODE_ASSETS_SYSTEM: string;
4
+ export declare function buildEpisodeAssetsUser(contextMd: string, bodyMd: string): string;
5
+ export declare function runEpisodeAssets(executor: LlmTaskExecutor, contextMd: string, bodyMd: string, signal?: AbortSignal): Promise<{
6
+ markdown: string;
7
+ delta: Delta;
8
+ }>;
@@ -0,0 +1,46 @@
1
+ // ingest.episode-assets task (§ serial). The front gives ONLY the body (scenes +
2
+ // dialogue/action, speakers by name) — no pre-extracted cast/props/state. Walking
3
+ // episodes IN ORDER with a running context that starts EMPTY, the model discovers
4
+ // entities, importance, 造型 (looks), identity merges, and — per scene — who is
5
+ // present, where, and in which look. Output is the `# 更新` md (decisions);
6
+ // asset-state-md-parser turns it into a Delta. Text mode, no tool-call JSON.
7
+ import { parseUpdateMarkdown } from "../../../domain/ingest/asset-state-md-parser.js";
8
+ export const EPISODE_ASSETS_SYSTEM = [
9
+ "你是剧本资产/造型标注器。前段只给了正文(场景、台词、动作),**没有任何现成的人物/道具/造型清单**——资产与造型全部由你从正文里逐集发现、逐集维护。",
10
+ "结合【已知设定】(到目前为止你已建立的登记)与【本集正文】,输出一份 `# 更新` markdown:不要代码围栏,前后无多余文字,空小节整节省略。",
11
+ "始终使用【已知设定】里的既有 canonical 名字;同一个人全剧保持同一名字。",
12
+ "",
13
+ "## 新增 本集**首次出现**、且【已知设定】里还没有的实体,每行 `- <类型> <名字> | <重要度> | <简介>`:",
14
+ " 类型=人物/场景/道具;重要度=featured(值得单独出图:有名有戏的人物、反复出现的关键场景/道具)|background(龙套/背景/一次性);简介=一句话是谁/是什么。",
15
+ " 群体名或复合名一律 background(轿夫4名、众人、丫鬟们、李叔和张妈)。推动剧情的关键物件即使只出现一两次也 featured(婚书、密信、玉佩、毒药)。已登记的不要重复新增。",
16
+ " 人物名字**尽量用最完整的姓名**(带姓,如『苏若雪』而非『若雪』、『顾夜渊』而非『夜渊』)。",
17
+ "## 合并 本集发现某名字其实是某已知实体(化名/别称/先前只用了短名或未点名):`- 本集名字 -> 已知canonical`。方向随意——系统会自动用更完整的姓名做 canonical。",
18
+ "## 造型 仅 featured 人物的**视觉扮相**,每种一行 `- 实体 | 造型名(=同义) | 描述`:",
19
+ " **每个 featured 人物首次出现时,先给一条『常态』基础造型**(TA 平时/最常见的样子,如『常态』),作为默认外观;之后再给特殊换装。",
20
+ " 造型名=需要美术单独画一张造型图的服装/发型/整体外观(常态、婚服、西装、龙形、素缟孝服);同一扮相不同叫法用 `=` 合并(婚服=大红嫁衣)。",
21
+ " 描述=这套扮相长什么样的一句话(服饰、颜色、发型、关键配饰),如『大红喜服,凤冠霞帔,金线云纹』。",
22
+ " **绝不写心情/身体状况/胖瘦**:满脸泪痕、愤怒、雍容华贵、虚弱濒死、白嫩圆润、消耗福气、受伤、昏迷、消瘦、站立、坐轮椅——这些不是造型。判据:换成它,美术要不要另画一张扮相图。",
23
+ "## 场景 本集**每一个**场景谁在场、在哪、什么造型,每场一行:`- <场景id> | 地点:<场景名> | 人物:张三(婚服),李四 | 道具:婚戒`",
24
+ " 场景id 用正文里给的(如 scn_012);地点/人物/道具都用 canonical 名;造型写在人物名后的括号里(没换装/沿用上场造型可不写)。凡正文里出现的场景都要有一行。",
25
+ "## 重要度 需要修订某个已登记实体的重要度时:`- 名字: featured` 或 `- 名字: background`",
26
+ "## 子事件 本集关键剧情原子,每条一句话(维护剧情理解与压缩)",
27
+ "## 梗概 本集一句话梗概(散文,不加 `-`)",
28
+ ].join("\n");
29
+ export function buildEpisodeAssetsUser(contextMd, bodyMd) {
30
+ return [
31
+ "【已知设定】(截至上一集你已建立的登记;本集为开篇时为空)",
32
+ contextMd.trim() || "(空,从本集开始建立)",
33
+ "",
34
+ "【本集正文】",
35
+ bodyMd.trim(),
36
+ ].join("\n");
37
+ }
38
+ export async function runEpisodeAssets(executor, contextMd, bodyMd, signal) {
39
+ const response = await executor.generateText("ingest.episode-assets", {
40
+ system: EPISODE_ASSETS_SYSTEM,
41
+ user: buildEpisodeAssetsUser(contextMd, bodyMd),
42
+ ...(signal ? { signal } : {}),
43
+ });
44
+ return { markdown: response.text, delta: parseUpdateMarkdown(response.text) };
45
+ }
46
+ //# sourceMappingURL=episode-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"episode-assets.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/episode-assets.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,kFAAkF;AAClF,kFAAkF;AAClF,8EAA8E;AAC9E,0EAA0E;AAC1E,6EAA6E;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAItF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,+EAA+E;IAC/E,4EAA4E;IAC5E,2CAA2C;IAC3C,EAAE;IACF,oEAAoE;IACpE,qGAAqG;IACrG,wGAAwG;IACxG,2DAA2D;IAC3D,mGAAmG;IACnG,6DAA6D;IAC7D,qFAAqF;IACrF,oFAAoF;IACpF,6DAA6D;IAC7D,sGAAsG;IACtG,kFAAkF;IAClF,qGAAqG;IACrG,+DAA+D;IAC/D,kCAAkC;IAClC,4BAA4B;CAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,MAAc;IACtE,OAAO;QACL,+BAA+B;QAC/B,SAAS,CAAC,IAAI,EAAE,IAAI,aAAa;QACjC,EAAE;QACF,QAAQ;QACR,MAAM,CAAC,IAAI,EAAE;KACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAyB,EAAE,SAAiB,EAAE,MAAc,EAAE,MAAoB;IACvH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,uBAAuB,EAAE;QACpE,MAAM,EAAE,qBAAqB;QAC7B,IAAI,EAAE,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAChF,CAAC"}
@@ -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.text-normalize" | "ingest.mention-resolve" | "ingest.asset-extract" | "ingest.asset-curate" | "ingest.asset-recall" | "ingest.asset-refine" | "ingest.state-reconcile" | "ingest.speaker-audit" | "ingest.video-transcribe" | "ingest.video-correct" | "ingest.roster-recall" | "ingest.roster-refine" | "ingest.roster-canon" | "ingest.roster-remerge" | "ingest.state-merge";
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.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-transcribe" | "ingest.video-correct" | "ingest.roster-recall" | "ingest.roster-refine" | "ingest.roster-canon" | "ingest.roster-remerge" | "ingest.state-merge";
3
3
  export type LlmTaskMode = "text" | "tool" | "video";
4
4
  export type JsonSchema = Record<string, unknown>;
5
5
  export interface TextGenerationRequest {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AA0JA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAe;IACnB,SAAS,CAAU;IACnB,OAAO,CAAW;IAE3B,YAAY,IAAkB,EAAE,OAAe,EAAE,UAAuD,EAAE;QACxG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AA2JA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAe;IACnB,SAAS,CAAU;IACnB,OAAO,CAAW;IAE3B,YAAY,IAAkB,EAAE,OAAe,EAAE,UAAuD,EAAE;QACxG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;CACF"}
@@ -1,11 +1,14 @@
1
1
  // Text ingest pipeline (§6): pass1-prepare → pass2-normalize (fanout) →
2
- // pass3-merge → compile (deterministic assembler) → pass5-govern. Only the
3
- // normalize LLM stage checkpoints (per-chunk markdown); everything else is
4
- // deterministic and recomputed. Workspace lifecycle per §5.3.
2
+ // pass3-merge → pass4-mention-resolve → compile (deterministic assembler) →
3
+ // pass5-extract SERIAL govern. The front (through assemble+extract) handles the
4
+ // context-local body in parallel; the serial govern pass then walks episodes in
5
+ // order carrying a running context to decide identity/importance/durable-states
6
+ // WITH plot understanding (see serial-govern.ts), replacing the old parallel
7
+ // curate/recall/refine/state-reconcile compensation. Workspace lifecycle per §5.3.
5
8
  import * as fs from "node:fs";
6
9
  import * as path from "node:path";
7
10
  import { CliError, EXIT_INPUT, sha256Text } from "../../common.js";
8
- import { assemble, assignProvisionalIds } from "../../domain/ingest/assembler.js";
11
+ import { assemble } from "../../domain/ingest/assembler.js";
9
12
  import { chunkSource } from "../../domain/ingest/chunker.js";
10
13
  import { parseJsonl } from "../../domain/ingest/jsonl-parser.js";
11
14
  import { renumberIds } from "../../domain/ingest/renumber.js";
@@ -15,9 +18,7 @@ import { readTextSource } from "../../infra/ingest/text-reader.js";
15
18
  import { WorkspaceStore } from "../../infra/ingest/workspace-store.js";
16
19
  import { runTextNormalize, parseNormalizeOutput } from "../../llm/tasks/ingest/text-normalize.js";
17
20
  import { mapSettled } from "./fanout.js";
18
- import { runMentionResolvePass } from "./pass4-mention-resolve.js";
19
- import { runExtractPass } from "./pass5-extract.js";
20
- import { runGovern } from "./pass5-govern.js";
21
+ import { runSerialGovern } from "./serial-govern.js";
21
22
  const PIPELINE_VERSION = "1";
22
23
  const pad = (n) => String(n).padStart(3, "0");
23
24
  const serializeJsonl = (records) => records.map((r) => JSON.stringify(r)).join("\n") + "\n";
@@ -34,9 +35,9 @@ function checkLifecycle(store, sourceSha, force) {
34
35
  });
35
36
  }
36
37
  if (force) {
37
- for (const dir of ["pass1", "pass2", "pass3", "pass5"])
38
+ for (const dir of ["pass1", "pass2", "pass3", "pass5", "serial"])
38
39
  fs.rmSync(store.path(dir), { recursive: true, force: true });
39
- for (const f of ["script.initial.json", "script.json", "validation.json", "notes.json", "issues.json", "provisional_assets.json"])
40
+ for (const f of ["body.json", "script.initial.json", "script.json", "validation.json", "notes.json", "issues.json", "provisional_assets.json"])
40
41
  fs.rmSync(store.path(f), { force: true });
41
42
  }
42
43
  }
@@ -88,29 +89,54 @@ export async function runTextIngest(opts) {
88
89
  nextSteps: ["Inspect pass2/chunk_NNN.error.json and rerun `scriptctl ingest` to resume."],
89
90
  });
90
91
  }
91
- // pass3: merge in chunk order.
92
- const merged = [];
93
- for (const s of settled)
94
- if (s.ok)
95
- merged.push(...s.value);
96
- store.writeText("pass3/script.jsonl", serializeJsonl(merged));
97
- const reparsed = parseJsonl(store.readText("pass3/script.jsonl")); // round-trip validation
98
- // pass4-mention-resolve: rewrite plain-text pronouns → concrete cast names.
99
- const { records: resolvedRecords } = await runMentionResolvePass(reparsed, { executor: opts.executor, concurrency: opts.concurrency ?? 80, ...(opts.signal ? { signal: opts.signal } : {}) });
100
- store.writeText("pass4/script.jsonl", serializeJsonl(resolvedRecords));
101
- // compile: assemble name-based skeleton (plain-text content; scene cast =
102
- // declared 人物 ∪ speakers).
103
- const title = deriveTitle(resolved.path);
104
- const assembled = assemble(resolvedRecords, { title });
105
- store.writeJson("notes.json", assembled.notes);
106
- // pass5-extract: augment scene cast/props from the body (declared = prior).
107
- const extracted = await runExtractPass(assembled.script, { executor: opts.executor, concurrency: opts.concurrency ?? 80, ...(opts.signal ? { signal: opts.signal } : {}) });
108
- // assign provisional ids + evidence roster → provisional script.initial.json.
109
- const { script: initial, assets } = assignProvisionalIds(extracted);
110
- store.writeJson("script.initial.json", initial);
111
- store.writeJson("provisional_assets.json", assets);
112
- // pass6-govern: curate (importance) + recall/refine (merge) + state reconcile.
113
- const governed = await runGovern(initial, assets, { executor: opts.executor, concurrency: opts.concurrency ?? 80, ...(opts.signal ? { signal: opts.signal } : {}) });
92
+ // pass3 merge pass4 mention-resolve → assemble = the name-based BODY (正文).
93
+ // NO asset extraction / id assignment here — the serial pass discovers assets,
94
+ // 造型 and per-scene presence itself from the body. Reuse body.json on a rerun so
95
+ // a serial failure doesn't redo pass3/pass4/assemble.
96
+ let body;
97
+ let recordCount;
98
+ let noteCount;
99
+ if (!opts.force && store.has("body.json")) {
100
+ body = store.readJson("body.json");
101
+ recordCount = store.has("pass3/script.jsonl") ? parseJsonl(store.readText("pass3/script.jsonl")).length : 0;
102
+ noteCount = store.has("notes.json") ? store.readJson("notes.json").length : 0;
103
+ reused++;
104
+ }
105
+ else {
106
+ // pass3: merge in chunk order. Content is kept VERBATIM — no pronoun resolution
107
+ // (dialogue must stay word-for-word as spoken); the serial pass resolves
108
+ // identity from context instead of rewriting the body.
109
+ const merged = [];
110
+ for (const s of settled)
111
+ if (s.ok)
112
+ merged.push(...s.value);
113
+ store.writeText("pass3/script.jsonl", serializeJsonl(merged));
114
+ const reparsed = parseJsonl(store.readText("pass3/script.jsonl")); // round-trip validation
115
+ // compile: assemble the name-based body (scenes + actions).
116
+ const title = deriveTitle(resolved.path);
117
+ const assembled = assemble(reparsed, { title });
118
+ store.writeJson("notes.json", assembled.notes);
119
+ body = assembled.script;
120
+ store.writeJson("body.json", body);
121
+ recordCount = merged.length;
122
+ noteCount = assembled.notes.length;
123
+ }
124
+ // Serial govern: context starts EMPTY and grows per episode; the model reads each
125
+ // episode's body + context-so-far and reports discovered entities / importance /
126
+ // 造型 / per-scene presence. The final v3 is built from that registry. Every step
127
+ // persists the full context md (= prompt) and the model's `# 更新` md; resume
128
+ // replays cached `# 更新` (no LLM). Cleared by --force (serial dir wiped).
129
+ const pad3 = (n) => String(n).padStart(3, "0");
130
+ const serialCheckpoint = {
131
+ readUpdate: (ep) => (store.has(`serial/ep_${pad3(ep)}.md`) ? store.readText(`serial/ep_${pad3(ep)}.md`) : undefined),
132
+ writeStep: (ep, contextMd, updateMd) => {
133
+ store.writeText(`serial/context_${pad3(ep)}.md`, contextMd);
134
+ store.writeText(`serial/ep_${pad3(ep)}.md`, updateMd);
135
+ },
136
+ };
137
+ const serial = await runSerialGovern(body, { executor: opts.executor, checkpoint: serialCheckpoint, force: opts.force ?? false, ...(opts.signal ? { signal: opts.signal } : {}) });
138
+ const governed = serial.doc;
139
+ reused += serial.reused;
114
140
  // Final clean numbering: contiguous per-kind asset ids + per-asset state ids.
115
141
  const { script: renumbered, idMap } = renumberIds(governed);
116
142
  store.writeJson("id_map.json", idMap);
@@ -131,8 +157,8 @@ export async function runTextIngest(opts) {
131
157
  workspacePath: store.root,
132
158
  chunks: chunks.length,
133
159
  reused,
134
- records: merged.length,
135
- notes: assembled.notes.length,
160
+ records: recordCount,
161
+ notes: noteCount,
136
162
  assets: { actors: g.actors?.length ?? 0, locations: g.locations?.length ?? 0, props: g.props?.length ?? 0 },
137
163
  scriptPath: store.path("script.json"),
138
164
  validation: { ok: validation.ok, errors: validation.errors.length, warnings: validation.warnings.length },