@lingjingai/scriptctl 0.53.7 → 0.53.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ # 0.53.8
2
+
3
+ ## Added
4
+ - `scriptctl ingest` accepts continuous tail episodes added to an existing video directory workspace, reusing completed episode checkpoints and cross-episode context; video JSON results include `processed` and `reused` episode counts.
5
+
6
+ ## Changed
7
+ - None.
8
+
9
+ ## Fixed
10
+ - `scriptctl ingest` serial no longer drops a window's characters/looks when the model returns double-encoded or quote-broken JSON arrays; it re-parses (with repair), retries, or re-runs a corrupt checkpoint instead of shipping empty descriptions that collapse into the actor name or the default look text.
11
+ - `scriptctl ingest` video pre-upload transcoding writes an explicit MP4 container for atomic temporary outputs instead of falling back to uploading the full original video.
12
+
13
+ ## Breaking
14
+ - Video ingest now requires numbered directory sources to form a continuous `1..N` sequence and records per-episode content identity in a new manifest format. Existing video workspaces must use a fresh `-w`; they are not upgraded with `--force`.
@@ -0,0 +1,13 @@
1
+ # 0.53.9
2
+
3
+ ## Added
4
+ - None.
5
+
6
+ ## Changed
7
+ - None.
8
+
9
+ ## Fixed
10
+ - `scriptctl publish` now updates the project group's episode count after a successful remote publish.
11
+
12
+ ## Breaking
13
+ - None.
@@ -0,0 +1,21 @@
1
+ export interface VideoSourceEpisodeIdentity {
2
+ episode: number;
3
+ path: string;
4
+ ext: string;
5
+ mime: string;
6
+ sha256: string;
7
+ }
8
+ export type VideoSourceEvolution = {
9
+ kind: "unchanged";
10
+ appended: [];
11
+ } | {
12
+ kind: "append";
13
+ appended: VideoSourceEpisodeIdentity[];
14
+ } | {
15
+ kind: "incompatible";
16
+ reason: string;
17
+ };
18
+ export declare function classifyVideoSourceEvolution(previous: VideoSourceEpisodeIdentity[], current: VideoSourceEpisodeIdentity[]): VideoSourceEvolution;
19
+ export declare function validateContinuousEpisodeSequence(episodes: ReadonlyArray<{
20
+ episode: number;
21
+ }>): string | null;
@@ -0,0 +1,43 @@
1
+ function identityMismatch(previous, current) {
2
+ if (previous.episode !== current.episode) {
3
+ return `episode ${previous.episode} was replaced by episode ${current.episode}`;
4
+ }
5
+ if (previous.path !== current.path) {
6
+ return `episode ${previous.episode} moved from ${previous.path} to ${current.path}`;
7
+ }
8
+ if (previous.ext !== current.ext || previous.mime !== current.mime) {
9
+ return `episode ${previous.episode} changed media type`;
10
+ }
11
+ if (previous.sha256 !== current.sha256) {
12
+ return `episode ${previous.episode} content changed`;
13
+ }
14
+ return null;
15
+ }
16
+ export function classifyVideoSourceEvolution(previous, current) {
17
+ if (current.length < previous.length) {
18
+ return {
19
+ kind: "incompatible",
20
+ reason: `source removed ${previous.length - current.length} previously accepted episode(s)`,
21
+ };
22
+ }
23
+ for (let index = 0; index < previous.length; index += 1) {
24
+ const mismatch = identityMismatch(previous[index], current[index]);
25
+ if (mismatch)
26
+ return { kind: "incompatible", reason: mismatch };
27
+ }
28
+ const appended = current.slice(previous.length);
29
+ return appended.length === 0
30
+ ? { kind: "unchanged", appended: [] }
31
+ : { kind: "append", appended };
32
+ }
33
+ export function validateContinuousEpisodeSequence(episodes) {
34
+ for (let index = 0; index < episodes.length; index += 1) {
35
+ const expected = index + 1;
36
+ const actual = episodes[index].episode;
37
+ if (actual !== expected) {
38
+ return `expected episode ${expected}, found episode ${actual}`;
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+ //# sourceMappingURL=video-source-evolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-source-evolution.js","sourceRoot":"","sources":["../../../src/domain/ingest/video-source-evolution.ts"],"names":[],"mappings":"AAaA,SAAS,gBAAgB,CACvB,QAAoC,EACpC,OAAmC;IAEnC,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,OAAO,WAAW,QAAQ,CAAC,OAAO,4BAA4B,OAAO,CAAC,OAAO,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,WAAW,QAAQ,CAAC,OAAO,eAAe,QAAQ,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,WAAW,QAAQ,CAAC,OAAO,qBAAqB,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,WAAW,QAAQ,CAAC,OAAO,kBAAkB,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAsC,EACtC,OAAqC;IAErC,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kBAAkB,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,iCAAiC;SAC5F,CAAC;IACJ,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAE,EAAE,OAAO,CAAC,KAAK,CAAE,CAAC,CAAC;QACrE,IAAI,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,QAA4C;IAE5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC;QACxC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,oBAAoB,QAAQ,mBAAmB,MAAM,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { VideoSourceEpisodeIdentity } from "../../domain/ingest/video-source-evolution.js";
2
+ import type { VideoEpisode } from "./video-discovery.js";
3
+ export declare function snapshotVideoSource(episodes: VideoEpisode[]): VideoSourceEpisodeIdentity[];
4
+ export declare function videoSourceFingerprint(episodes: VideoSourceEpisodeIdentity[]): string;
@@ -0,0 +1,24 @@
1
+ import * as path from "node:path";
2
+ import { sha256File, sha256Text } from "../../common.js";
3
+ export function snapshotVideoSource(episodes) {
4
+ return episodes.map((episode) => {
5
+ const absolutePath = path.resolve(episode.path);
6
+ return {
7
+ episode: episode.episode,
8
+ path: absolutePath,
9
+ ext: episode.ext,
10
+ mime: episode.mime,
11
+ sha256: sha256File(absolutePath),
12
+ };
13
+ });
14
+ }
15
+ export function videoSourceFingerprint(episodes) {
16
+ return sha256Text(JSON.stringify(episodes.map((episode) => ({
17
+ episode: episode.episode,
18
+ path: episode.path,
19
+ ext: episode.ext,
20
+ mime: episode.mime,
21
+ sha256: episode.sha256,
22
+ }))));
23
+ }
24
+ //# sourceMappingURL=video-source-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-source-snapshot.js","sourceRoot":"","sources":["../../../src/infra/ingest/video-source-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIzD,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC;SACjC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAsC;IAC3E,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -24,6 +24,7 @@ function ffmpegArgs(src, out) {
24
24
  "-c:v", "libx264", "-preset", "medium", "-crf", "27", "-pix_fmt", "yuv420p",
25
25
  "-c:a", "aac", "-b:a", "96k",
26
26
  "-movflags", "+faststart",
27
+ "-f", "mp4",
27
28
  out,
28
29
  ];
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"video-transcode.js","sourceRoot":"","sources":["../../../src/infra/ingest/video-transcode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-transcode.js","sourceRoot":"","sources":["../../../src/infra/ingest/video-transcode.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,24 @@ export declare function runEpisodeAssets(executor: LlmTaskExecutor, contextMd: s
6
6
  delta: Delta;
7
7
  raw: string;
8
8
  }>;
9
+ /** Thrown when a serial delta field is not a usable array (incl. failed re-parse). */
10
+ export declare class SerialDeltaShapeError extends Error {
11
+ readonly code: "serial_delta_shape";
12
+ constructor(message: string);
13
+ }
14
+ /**
15
+ * Best-effort repair when the model double-encodes an array as a JSON string and
16
+ * uses bare `"` as Chinese quotation marks inside values
17
+ * (e.g. `市中心"金鳞"商业地皮`, `皇冠"世纪之星"`). Strict JSON.parse fails; we
18
+ * walk the text as JSON-ish strings and escape interior `"` that cannot close a
19
+ * value (next non-ws is not `,` `}` `]` `:` or EOF). Only applied after a strict
20
+ * parse fails — callers must not use this on already-valid JSON.
21
+ */
22
+ export declare function repairDoubleEncodedJson(raw: string): string;
23
+ /**
24
+ * Coerce a tool field to an array. Accepts real arrays, null/undefined/"" → [],
25
+ * and JSON-encoded array strings (double-encoding, with quote-repair). Anything
26
+ * else throws — never silently collapses to [].
27
+ */
28
+ export declare function coerceJsonArray(v: unknown, field: string): unknown[];
9
29
  export declare function toDelta(input: unknown): Delta;
@@ -60,10 +60,108 @@ export async function runEpisodeAssets(executor, contextMd, bodyMd, signal) {
60
60
  // straight, defensive projection: entity `aliases` become immediate merges into
61
61
  // the canonical name (so translations/past-life/alt names fold in), and look
62
62
  // name+aliases become the `names[]` list (names[0]=canonical) applyDelta expects.
63
+ //
64
+ // Models (and some tool bridges) still occasionally emit array fields as JSON
65
+ // *strings* (double-encoded), sometimes with unescaped quotes inside. Historically
66
+ // `arr()` treated any non-array as `[]` and serial silently dropped every entity /
67
+ // look for that window. We now re-parse stringified arrays and **throw** on shape
68
+ // failure so the window can retry instead of shipping an empty registry.
63
69
  const KIND = new Set(["actor", "location", "prop"]);
64
70
  const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
65
- const arr = (v) => (Array.isArray(v) ? v : []);
66
71
  const str = (v) => (typeof v === "string" ? v.trim() : "");
72
+ /** Thrown when a serial delta field is not a usable array (incl. failed re-parse). */
73
+ export class SerialDeltaShapeError extends Error {
74
+ code = "serial_delta_shape";
75
+ constructor(message) {
76
+ super(message);
77
+ this.name = "SerialDeltaShapeError";
78
+ }
79
+ }
80
+ /**
81
+ * Best-effort repair when the model double-encodes an array as a JSON string and
82
+ * uses bare `"` as Chinese quotation marks inside values
83
+ * (e.g. `市中心"金鳞"商业地皮`, `皇冠"世纪之星"`). Strict JSON.parse fails; we
84
+ * walk the text as JSON-ish strings and escape interior `"` that cannot close a
85
+ * value (next non-ws is not `,` `}` `]` `:` or EOF). Only applied after a strict
86
+ * parse fails — callers must not use this on already-valid JSON.
87
+ */
88
+ export function repairDoubleEncodedJson(raw) {
89
+ let out = "";
90
+ let inString = false;
91
+ for (let i = 0; i < raw.length; i++) {
92
+ const c = raw[i];
93
+ if (!inString) {
94
+ out += c;
95
+ if (c === '"')
96
+ inString = true;
97
+ continue;
98
+ }
99
+ if (c === "\\" && i + 1 < raw.length) {
100
+ out += c + raw[i + 1];
101
+ i++;
102
+ continue;
103
+ }
104
+ if (c === '"') {
105
+ let j = i + 1;
106
+ while (j < raw.length && /\s/.test(raw[j]))
107
+ j++;
108
+ const next = j < raw.length ? raw[j] : "";
109
+ // Structural close of a JSON string (key or value).
110
+ if (next === "" || next === "," || next === "}" || next === "]" || next === ":") {
111
+ out += c;
112
+ inString = false;
113
+ }
114
+ else {
115
+ // Interior bare quote (Chinese quotation marks etc.) → escape.
116
+ out += '\\"';
117
+ }
118
+ continue;
119
+ }
120
+ out += c;
121
+ }
122
+ return out;
123
+ }
124
+ function parseJsonArrayString(t, field) {
125
+ const tryParse = (s) => JSON.parse(s);
126
+ let parsed;
127
+ try {
128
+ parsed = tryParse(t);
129
+ }
130
+ catch (first) {
131
+ const repaired = repairDoubleEncodedJson(t);
132
+ if (repaired === t) {
133
+ throw new SerialDeltaShapeError(`${field}: expected JSON array string, parse failed: ${first instanceof Error ? first.message : String(first)}`);
134
+ }
135
+ try {
136
+ parsed = tryParse(repaired);
137
+ }
138
+ catch (second) {
139
+ throw new SerialDeltaShapeError(`${field}: expected JSON array string, parse failed after quote-repair: ${second instanceof Error ? second.message : String(second)}`);
140
+ }
141
+ }
142
+ if (!Array.isArray(parsed)) {
143
+ throw new SerialDeltaShapeError(`${field}: expected JSON array string, got ${typeof parsed}`);
144
+ }
145
+ return parsed;
146
+ }
147
+ /**
148
+ * Coerce a tool field to an array. Accepts real arrays, null/undefined/"" → [],
149
+ * and JSON-encoded array strings (double-encoding, with quote-repair). Anything
150
+ * else throws — never silently collapses to [].
151
+ */
152
+ export function coerceJsonArray(v, field) {
153
+ if (v == null)
154
+ return [];
155
+ if (Array.isArray(v))
156
+ return v;
157
+ if (typeof v === "string") {
158
+ const t = v.trim();
159
+ if (!t)
160
+ return [];
161
+ return parseJsonArrayString(t, field);
162
+ }
163
+ throw new SerialDeltaShapeError(`${field}: expected array, got ${typeof v}`);
164
+ }
67
165
  // Deterministic backstop for the one thing the model still slips on: a canonical
68
166
  // name carrying an inline paren annotation — `大骨头(Big Bones / Marcus Vale)`,
69
167
  // `银蕾丝(SilverLace)`. The schema asks for name/aliases split, but a few leak
@@ -86,11 +184,33 @@ function splitParen(raw) {
86
184
  return { name, aliases };
87
185
  }
88
186
  const cleanName = (raw) => splitParen(str(raw)).name;
187
+ function asDeltaObject(input) {
188
+ if (isObj(input))
189
+ return input;
190
+ if (typeof input === "string") {
191
+ const t = input.trim();
192
+ if (!t)
193
+ return null;
194
+ let parsed;
195
+ try {
196
+ parsed = JSON.parse(t);
197
+ }
198
+ catch (e) {
199
+ throw new SerialDeltaShapeError(`delta: top-level JSON string failed to parse: ${e instanceof Error ? e.message : String(e)}`);
200
+ }
201
+ if (!isObj(parsed)) {
202
+ throw new SerialDeltaShapeError(`delta: top-level JSON string must be an object, got ${typeof parsed}`);
203
+ }
204
+ return parsed;
205
+ }
206
+ return null;
207
+ }
89
208
  export function toDelta(input) {
90
209
  const d = emptyDelta();
91
- if (!isObj(input))
210
+ const obj = asDeltaObject(input);
211
+ if (!obj)
92
212
  return d;
93
- for (const e of arr(input.newEntities)) {
213
+ for (const e of coerceJsonArray(obj.newEntities, "newEntities")) {
94
214
  if (!isObj(e))
95
215
  continue;
96
216
  const kind = str(e.kind);
@@ -101,7 +221,7 @@ export function toDelta(input) {
101
221
  // (`旧药箱(带三角划痕)`) — split it, else the polluted form registers as an
102
222
  // alias and its extra length promotes it to canonical (fuller-name rule).
103
223
  const aliasNames = [...parenAliases];
104
- for (const a of arr(e.aliases)) {
224
+ for (const a of coerceJsonArray(e.aliases, "newEntities.aliases")) {
105
225
  const { name: base, aliases: inner } = splitParen(str(a));
106
226
  if (base)
107
227
  aliasNames.push(base);
@@ -110,7 +230,7 @@ export function toDelta(input) {
110
230
  const aliases = [...new Set(aliasNames.filter((a) => a && a !== name))];
111
231
  d.newEntities.push({ name, kind: kind, description: str(e.description), aliases });
112
232
  }
113
- for (const m of arr(input.merges)) {
233
+ for (const m of coerceJsonArray(obj.merges, "merges")) {
114
234
  if (!isObj(m))
115
235
  continue;
116
236
  const from = cleanName(m.from);
@@ -118,17 +238,17 @@ export function toDelta(input) {
118
238
  if (from && into && from !== into)
119
239
  d.merges.push({ from, into });
120
240
  }
121
- for (const l of arr(input.looks)) {
241
+ for (const l of coerceJsonArray(obj.looks, "looks")) {
122
242
  if (!isObj(l))
123
243
  continue;
124
244
  const entity = cleanName(l.entity);
125
245
  const name = cleanName(l.name);
126
246
  if (!entity || !name)
127
247
  continue;
128
- const names = [name, ...arr(l.aliases).map(cleanName).filter(Boolean)];
248
+ const names = [name, ...coerceJsonArray(l.aliases, "looks.aliases").map(cleanName).filter(Boolean)];
129
249
  d.looks.push({ entity, names, description: str(l.description) });
130
250
  }
131
- for (const c of arr(input.lookChanges)) {
251
+ for (const c of coerceJsonArray(obj.lookChanges, "lookChanges")) {
132
252
  if (!isObj(c))
133
253
  continue;
134
254
  const scene = str(c.scene);
@@ -137,8 +257,8 @@ export function toDelta(input) {
137
257
  if (scene && entity && look)
138
258
  d.lookChanges.push({ scene, entity, look });
139
259
  }
140
- d.subEvents = arr(input.subEvents).map(str).filter(Boolean);
141
- d.summary = str(input.summary);
260
+ d.subEvents = coerceJsonArray(obj.subEvents, "subEvents").map(str).filter(Boolean);
261
+ d.summary = str(obj.summary);
142
262
  return d;
143
263
  }
144
264
  //# sourceMappingURL=episode-assets.js.map
@@ -1 +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,6EAA6E;AAC7E,mFAAmF;AACnF,8EAA8E;AAC9E,2EAA2E;AAC3E,kFAAkF;AAElF,OAAO,EAAE,UAAU,EAAc,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,+EAA+E;IAC/E,kFAAkF;IAClF,4EAA4E;IAC5E,2CAA2C;IAC3C,EAAE;IACF,4CAA4C;IAC5C,+IAA+I;IAC/I,iQAAiQ;IACjQ,0IAA0I;IAC1I,+BAA+B;IAC/B,gTAAgT;IAChT,2VAA2V;IAC3V,8DAA8D;IAC9D,qSAAqS;IACrS,wMAAwM;IACxM,oMAAoM;IACpM,wGAAwG;IACxG,mLAAmL;IACnL,6GAA6G;IAC7G,kLAAkL;IAClL,oJAAoJ;IACpJ,8JAA8J;IAC9J,kIAAkI;IAClI,yDAAyD;IACzD,iEAAiE;IACjE,sCAAsC;IACtC,kCAAkC;CACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,MAAc;IACtE,OAAO;QACL,4BAA4B;QAC5B,SAAS,CAAC,IAAI,EAAE,IAAI,cAAc;QAClC,EAAE;QACF,iCAAiC;QACjC,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,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,mBAAmB,EAAE;QAClG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,iFAAiF;AACjF,gFAAgF;AAChF,6EAA6E;AAC7E,kFAAkF;AAClF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,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,GAAG,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnE,MAAM,GAAG,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE5E,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,iFAAiF;AACjF,kFAAkF;AAClF,6EAA6E;AAC7E,iFAAiF;AACjF,+EAA+E;AAC/E,sCAAsC;AACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AACrC,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AACD,MAAM,SAAS,GAAG,CAAC,GAAY,EAAU,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAEtE,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,SAAS;QACvC,oEAAoE;QACpE,oEAAoE;QACpE,0EAA0E;QAC1E,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,IAAI,IAAI;gBAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAAC,CAAC;QAC1J,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAqC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI;YAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"episode-assets.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/episode-assets.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  // Output is a Delta with only newEntities + merges (no looks/scenes). Tool mode.
6
6
  import { emptyDelta } from "../../../domain/ingest/serial-context.js";
7
7
  import { NAME_FIX_SCHEMA } from "../schemas.js";
8
+ import { coerceJsonArray } from "./episode-assets.js";
8
9
  export const NAME_FIX_SYSTEM = [
9
10
  "你是剧本实体归一修复器。【已知设定】是已建立的实体登记(register)。下面【待归一名字】是正文里出现、但还没能对应到 register 里任何实体的名字。",
10
11
  "对**每一个**待归一名字,判断它是不是 register 里某个已登记实体的另一种叫法:",
@@ -34,14 +35,13 @@ export async function runNameFix(executor, contextMd, names, signal) {
34
35
  return { delta: nameFixToDelta(response.input), raw: JSON.stringify(response.input) };
35
36
  }
36
37
  const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
37
- const arr = (v) => (Array.isArray(v) ? v : []);
38
38
  const str = (v) => (typeof v === "string" ? v.trim() : "");
39
39
  const KIND = new Set(["actor", "location", "prop"]);
40
40
  export function nameFixToDelta(input) {
41
41
  const d = emptyDelta();
42
42
  if (!isObj(input))
43
43
  return d;
44
- for (const m of arr(input.merges)) {
44
+ for (const m of coerceJsonArray(input.merges, "merges")) {
45
45
  if (!isObj(m))
46
46
  continue;
47
47
  const from = str(m.from);
@@ -49,14 +49,14 @@ export function nameFixToDelta(input) {
49
49
  if (from && into && from !== into)
50
50
  d.merges.push({ from, into });
51
51
  }
52
- for (const e of arr(input.newEntities)) {
52
+ for (const e of coerceJsonArray(input.newEntities, "newEntities")) {
53
53
  if (!isObj(e))
54
54
  continue;
55
55
  const kind = str(e.kind);
56
56
  const name = str(e.name);
57
57
  if (!KIND.has(kind) || !name)
58
58
  continue;
59
- const aliases = [...new Set(arr(e.aliases).map(str).filter((a) => a && a !== name))];
59
+ const aliases = [...new Set(coerceJsonArray(e.aliases, "newEntities.aliases").map(str).filter((a) => a && a !== name))];
60
60
  d.newEntities.push({ name, kind: kind, description: str(e.description), aliases });
61
61
  }
62
62
  return d;
@@ -1 +1 @@
1
- {"version":3,"file":"name-fix.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/name-fix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"name-fix.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/name-fix.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export async function commandIngest(opts, composition = PRODUCTION_LLM_COMPOSITI
39
39
  });
40
40
  const result = [
41
41
  `workspace: ${report.workspacePath}`,
42
- `${report.episodes} episodes → ${report.scriptPath}`,
42
+ `${report.episodes} episodes (${report.processed} processed / ${report.reused} reused) → ${report.scriptPath}`,
43
43
  `assets: ${report.assets.actors} actors / ${report.assets.locations} locations / ${report.assets.props} props`,
44
44
  ];
45
45
  return [{
@@ -48,6 +48,8 @@ export async function commandIngest(opts, composition = PRODUCTION_LLM_COMPOSITI
48
48
  workspace: report.workspacePath,
49
49
  script_path: report.scriptPath,
50
50
  episodes: report.episodes,
51
+ processed: report.processed,
52
+ reused: report.reused,
51
53
  assets: report.assets,
52
54
  },
53
55
  }, EXIT_OK];
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/usecases/ingest/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/usecases/ingest/command.ts"],"names":[],"mappings":"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"}