@lingjingai/scriptctl 0.51.4 → 0.53.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 (78) hide show
  1. package/changes/0.52.0.md +14 -0
  2. package/changes/0.53.0.md +13 -0
  3. package/dist/cli/register-edits.js +8 -0
  4. package/dist/cli/register-edits.js.map +1 -1
  5. package/dist/cli/register-query.js +2 -1
  6. package/dist/cli/register-query.js.map +1 -1
  7. package/dist/domain/script/timestamp.d.ts +16 -0
  8. package/dist/domain/script/timestamp.js +88 -0
  9. package/dist/domain/script/timestamp.js.map +1 -0
  10. package/dist/domain/script/v3/patch/apply.js +1 -1
  11. package/dist/domain/script/v3/patch/apply.js.map +1 -1
  12. package/dist/domain/script/v3/patch/ops-extend.js +11 -0
  13. package/dist/domain/script/v3/patch/ops-extend.js.map +1 -1
  14. package/dist/domain/script/v3/patch/ops-timestamp.d.ts +6 -0
  15. package/dist/domain/script/v3/patch/ops-timestamp.js +47 -0
  16. package/dist/domain/script/v3/patch/ops-timestamp.js.map +1 -0
  17. package/dist/domain/script/v3/patch/registry.js +3 -0
  18. package/dist/domain/script/v3/patch/registry.js.map +1 -1
  19. package/dist/domain/script/v3/schema.js +2 -0
  20. package/dist/domain/script/v3/schema.js.map +1 -1
  21. package/dist/domain/script/v4/patch/ops-extend.js +18 -1
  22. package/dist/domain/script/v4/patch/ops-extend.js.map +1 -1
  23. package/dist/domain/script/v4/patch/ops-timestamp.d.ts +6 -0
  24. package/dist/domain/script/v4/patch/ops-timestamp.js +40 -0
  25. package/dist/domain/script/v4/patch/ops-timestamp.js.map +1 -0
  26. package/dist/domain/script/v4/patch/registry.js +3 -0
  27. package/dist/domain/script/v4/patch/registry.js.map +1 -1
  28. package/dist/domain/script/v4/patch/schema.js +2 -0
  29. package/dist/domain/script/v4/patch/schema.js.map +1 -1
  30. package/dist/infra/llm/anthropic-model.js +13 -11
  31. package/dist/infra/llm/anthropic-model.js.map +1 -1
  32. package/dist/infra/llm/doubao-video-model.js +8 -7
  33. package/dist/infra/llm/doubao-video-model.js.map +1 -1
  34. package/dist/infra/llm/gemini-video-model.js +9 -8
  35. package/dist/infra/llm/gemini-video-model.js.map +1 -1
  36. package/dist/infra/llm/openai-compatible-model.js +51 -31
  37. package/dist/infra/llm/openai-compatible-model.js.map +1 -1
  38. package/dist/infra/llm/retry.d.ts +3 -0
  39. package/dist/infra/llm/retry.js +22 -1
  40. package/dist/infra/llm/retry.js.map +1 -1
  41. package/dist/llm/router.d.ts +7 -3
  42. package/dist/llm/router.js +112 -28
  43. package/dist/llm/router.js.map +1 -1
  44. package/dist/llm/types.d.ts +22 -0
  45. package/dist/llm/types.js +4 -0
  46. package/dist/llm/types.js.map +1 -1
  47. package/dist/usecases/ingest/pipeline.js +257 -220
  48. package/dist/usecases/ingest/pipeline.js.map +1 -1
  49. package/dist/usecases/ingest/serial-govern.js +4 -1
  50. package/dist/usecases/ingest/serial-govern.js.map +1 -1
  51. package/dist/usecases/ingest/usage-report.d.ts +112 -4
  52. package/dist/usecases/ingest/usage-report.js +242 -45
  53. package/dist/usecases/ingest/usage-report.js.map +1 -1
  54. package/dist/usecases/ingest/video-pipeline.js +157 -117
  55. package/dist/usecases/ingest/video-pipeline.js.map +1 -1
  56. package/dist/usecases/ingest/view-server.d.ts +2 -22
  57. package/dist/usecases/ingest/view-server.js +14 -8
  58. package/dist/usecases/ingest/view-server.js.map +1 -1
  59. package/dist/usecases/script/actions.js +3 -2
  60. package/dist/usecases/script/actions.js.map +1 -1
  61. package/dist/usecases/script/command-constraints.d.ts +2 -0
  62. package/dist/usecases/script/command-constraints.js +29 -0
  63. package/dist/usecases/script/command-constraints.js.map +1 -1
  64. package/dist/usecases/script/lib.js +15 -1
  65. package/dist/usecases/script/lib.js.map +1 -1
  66. package/dist/usecases/script/timestamp-filter.d.ts +4 -0
  67. package/dist/usecases/script/timestamp-filter.js +55 -0
  68. package/dist/usecases/script/timestamp-filter.js.map +1 -0
  69. package/dist/usecases/script/timestamp.d.ts +3 -0
  70. package/dist/usecases/script/timestamp.js +11 -0
  71. package/dist/usecases/script/timestamp.js.map +1 -0
  72. package/dist/usecases/script/v4/queries.js +5 -0
  73. package/dist/usecases/script/v4/queries.js.map +1 -1
  74. package/package.json +1 -1
  75. package/skills/scriptctl/SKILL.md +7 -2
  76. package/skills/scriptctl/references/atomic-edit-workflow.md +2 -0
  77. package/skills/scriptctl/references/ingest-workflow.md +1 -0
  78. package/skills/scriptctl/references/video-transcript-repair.md +7 -7
@@ -26,29 +26,29 @@ import { mapSettled } from "./fanout.js";
26
26
  import { runSerialGovern } from "./serial-govern.js";
27
27
  import { assetAuditWarnings, auditWorkspaceScriptAssets } from "./final-asset-audit.js";
28
28
  import { Timings } from "./timings.js";
29
- import { writeUsage } from "./usage-report.js";
30
- const PIPELINE_VERSION = "6";
29
+ import { UsageLedger } from "./usage-report.js";
30
+ const PIPELINE_VERSION = "7";
31
31
  const pad = (n) => String(n).padStart(3, "0");
32
32
  const serializeJsonl = (records) => records.map((r) => JSON.stringify(r)).join("\n") + "\n";
33
33
  function checkLifecycle(store, sourceSha, force) {
34
- if (!store.has("manifest.json"))
35
- return;
36
- const manifest = store.readJson("manifest.json");
37
- if (manifest.source?.sha256 && manifest.source.sha256 !== sourceSha) {
38
- throw new CliError("This workspace was built from a different source. --force cannot switch sources.", {
39
- exitCode: EXIT_INPUT,
40
- errorCode: "INGEST_SOURCE_MISMATCH",
41
- hint: "Choose a fresh --workspace-path for the new source.",
42
- data: { actual: ["workspace source differs from --source-path"] },
43
- });
44
- }
45
- if (!force && manifest.pipeline_version && manifest.pipeline_version !== PIPELINE_VERSION) {
46
- throw new CliError("This workspace was created by an older text-ingest pipeline.", {
47
- exitCode: EXIT_INPUT,
48
- errorCode: "INGEST_PIPELINE_MISMATCH",
49
- hint: "Rerun `scriptctl ingest --force` with the same source to rebuild its checkpoints.",
50
- data: { actual: [`workspace pipeline ${manifest.pipeline_version}; current ${PIPELINE_VERSION}`] },
51
- });
34
+ if (store.has("manifest.json")) {
35
+ const manifest = store.readJson("manifest.json");
36
+ if (manifest.source?.sha256 && manifest.source.sha256 !== sourceSha) {
37
+ throw new CliError("This workspace was built from a different source. --force cannot switch sources.", {
38
+ exitCode: EXIT_INPUT,
39
+ errorCode: "INGEST_SOURCE_MISMATCH",
40
+ hint: "Choose a fresh --workspace-path for the new source.",
41
+ data: { actual: ["workspace source differs from --source-path"] },
42
+ });
43
+ }
44
+ if (!force && manifest.pipeline_version && manifest.pipeline_version !== PIPELINE_VERSION) {
45
+ throw new CliError("This workspace was created by an older text-ingest pipeline.", {
46
+ exitCode: EXIT_INPUT,
47
+ errorCode: "INGEST_PIPELINE_MISMATCH",
48
+ hint: "Rerun `scriptctl ingest --force` with the same source to rebuild its checkpoints.",
49
+ data: { actual: [`workspace pipeline ${manifest.pipeline_version}; current ${PIPELINE_VERSION}`] },
50
+ });
51
+ }
52
52
  }
53
53
  if (force) {
54
54
  for (const dir of ["pass1", "pass2", "pass3", "pass5", "serial"])
@@ -62,6 +62,7 @@ function checkLifecycle(store, sourceSha, force) {
62
62
  "notes.json",
63
63
  "issues.json",
64
64
  "provisional_assets.json",
65
+ "usage.json",
65
66
  "v4_identity_map.json",
66
67
  ])
67
68
  fs.rmSync(store.path(f), { force: true });
@@ -82,216 +83,252 @@ export async function runTextIngest(opts) {
82
83
  checkLifecycle(store, sourceSha, opts.force ?? false);
83
84
  // Accurate per-run timing → workspace/timings.json (view --watch / ingest status).
84
85
  const timings = new Timings((t) => store.writeJson("timings.json", t));
85
- // pass0: locate where the real screenplay body begins and drop the planning
86
- // front matter (大纲/角色卡/宏观结构/一卡集纲) before it. Cheap tool-mode LLM scan,
87
- // cached under pass1/ so a rerun skips it; --force wipes pass1 and recomputes.
88
- let bodyStart = 0;
89
- if (!opts.force && store.has("pass1/body_start.json")) {
90
- bodyStart = store.readJson("pass1/body_start.json").line ?? 0;
91
- }
92
- else {
93
- const scan = await detectBodyStart(opts.executor, text, opts.signal);
94
- bodyStart = scan.line;
95
- store.writeJson("pass1/body_start.json", scan);
96
- }
97
- const lines0 = text.split("\n");
98
- const bodyText = bodyStart > 0 ? lines0.slice(bodyStart).join("\n") : text;
99
- // The stripped front matter (角色卡/设定) — capped — is fed to serial govern as an
100
- // 原文设定 reference so descriptions can draw on the source's own wording.
101
- const sourceRef = bodyStart > 0 ? lines0.slice(0, bodyStart).join("\n").trim().slice(0, 6000) : "";
102
- // pass1: prepare + chunk (the body only; full source kept for reference).
103
- const chunks = chunkSource(bodyText);
104
- store.writeText("pass1/source.txt", text);
105
- store.writeJson("pass1/chunks.json", chunks.map((c) => ({ index: c.index, core_line_start: c.core_line_start, core_line_end: c.core_line_end })));
106
- store.writeJson("manifest.json", {
107
- version: 1,
108
- pipeline_version: PIPELINE_VERSION,
109
- updated: new Date().toISOString(),
110
- source: { path: path.resolve(resolved.path), sha256: sourceSha, kind: "text", ext: resolved.ext },
111
- chunks: chunks.length,
112
- });
113
- // pass2: normalize fanout with per-chunk structured JSON checkpoint.
114
- let reused = 0;
115
- timings.phaseStart("normalize");
116
- const settled = await mapSettled(chunks, opts.concurrency ?? 30, async (chunk) => {
117
- const jsonRel = `pass2/chunk_${pad(chunk.index)}.json`;
118
- const errorRel = `pass2/chunk_${pad(chunk.index)}.error.json`;
119
- if (store.has(jsonRel) && !opts.force) {
120
- const records = parseNormalizeOutput(store.readJson(jsonRel), chunk);
86
+ const usage = new UsageLedger(store, opts.executor);
87
+ let runStatus = "failed";
88
+ try {
89
+ const prepareStartedMs = Date.now();
90
+ // pass0: locate where the real screenplay body begins and drop the planning
91
+ // front matter (大纲/角色卡/宏观结构/一卡集纲) before it. Cheap tool-mode LLM scan,
92
+ // cached under pass1/ so a rerun skips it; --force wipes pass1 and recomputes.
93
+ let bodyStart = 0;
94
+ if (!opts.force && store.has("pass1/body_start.json")) {
95
+ bodyStart = store.readJson("pass1/body_start.json").line ?? 0;
96
+ opts.executor.recordReuse("ingest.body-start");
97
+ }
98
+ else {
99
+ const scan = await detectBodyStart(opts.executor, text, opts.signal);
100
+ bodyStart = scan.line;
101
+ store.writeJson("pass1/body_start.json", scan);
102
+ }
103
+ const lines0 = text.split("\n");
104
+ const bodyText = bodyStart > 0 ? lines0.slice(bodyStart).join("\n") : text;
105
+ // The stripped front matter (角色卡/设定) — capped — is fed to serial govern as an
106
+ // 原文设定 reference so descriptions can draw on the source's own wording.
107
+ const sourceRef = bodyStart > 0 ? lines0.slice(0, bodyStart).join("\n").trim().slice(0, 6000) : "";
108
+ // pass1: prepare + chunk (the body only; full source kept for reference).
109
+ const chunks = chunkSource(bodyText);
110
+ store.writeText("pass1/source.txt", text);
111
+ store.writeJson("pass1/chunks.json", chunks.map((c) => ({ index: c.index, core_line_start: c.core_line_start, core_line_end: c.core_line_end })));
112
+ store.writeJson("manifest.json", {
113
+ version: 1,
114
+ pipeline_version: PIPELINE_VERSION,
115
+ updated: new Date().toISOString(),
116
+ source: { path: path.resolve(resolved.path), sha256: sourceSha, kind: "text", ext: resolved.ext },
117
+ chunks: chunks.length,
118
+ });
119
+ usage.flush({
120
+ scope: { kind: "phase", phase: "prepare" },
121
+ status: "succeeded",
122
+ startedAtMs: prepareStartedMs,
123
+ });
124
+ // pass2: normalize fanout with per-chunk structured JSON checkpoint.
125
+ let reused = 0;
126
+ timings.phaseStart("normalize");
127
+ const settled = await mapSettled(chunks, opts.concurrency ?? 30, async (chunk) => {
128
+ const jsonRel = `pass2/chunk_${pad(chunk.index)}.json`;
129
+ const errorRel = `pass2/chunk_${pad(chunk.index)}.error.json`;
130
+ if (store.has(jsonRel) && !opts.force) {
131
+ const records = parseNormalizeOutput(store.readJson(jsonRel), chunk);
132
+ store.clearError(errorRel);
133
+ reused++;
134
+ opts.executor.recordReuse("ingest.text-normalize");
135
+ return records;
136
+ }
137
+ const { raw, records } = await runTextNormalize(opts.executor, chunk, opts.signal);
138
+ store.writeText(jsonRel, raw);
139
+ store.writeText(`pass2/chunk_${pad(chunk.index)}.jsonl`, serializeJsonl(records));
121
140
  store.clearError(errorRel);
122
- reused++;
123
141
  return records;
142
+ });
143
+ const failures = settled.filter((s) => !s.ok);
144
+ for (const f of failures) {
145
+ const message = f.error instanceof Error ? f.error.message : String(f.error);
146
+ store.writeJson(`pass2/chunk_${pad(f.index)}.error.json`, { chunk: f.index, error: message });
124
147
  }
125
- const { raw, records } = await runTextNormalize(opts.executor, chunk, opts.signal);
126
- store.writeText(jsonRel, raw);
127
- store.writeText(`pass2/chunk_${pad(chunk.index)}.jsonl`, serializeJsonl(records));
128
- store.clearError(errorRel);
129
- return records;
130
- });
131
- const failures = settled.filter((s) => !s.ok);
132
- for (const f of failures) {
133
- const message = f.error instanceof Error ? f.error.message : String(f.error);
134
- store.writeJson(`pass2/chunk_${pad(f.index)}.error.json`, { chunk: f.index, error: message });
135
- }
136
- if (failures.length > 0) {
137
- throw new CliError(`${failures.length}/${chunks.length} chunk(s) failed normalization.`, {
138
- exitCode: EXIT_INPUT,
139
- errorCode: "INGEST_NORMALIZE_INCOMPLETE",
140
- hint: "Inspect pass2/chunk_NNN.error.json and rerun `scriptctl ingest` to resume.",
141
- data: { actual: failures.map((f) => `chunk ${f.index}`) },
148
+ usage.flush({
149
+ scope: { kind: "phase", phase: "normalize" },
150
+ status: failures.length ? "failed" : "succeeded",
142
151
  });
143
- }
144
- timings.phaseEnd("normalize");
145
- // pass3 merge → pass4 mention-resolve → assemble = the name-based BODY (正文).
146
- // NO asset extraction / id assignment here — the serial pass discovers assets,
147
- // 造型 and per-scene presence itself from the body. Reuse body.json on a rerun so
148
- // a serial failure doesn't redo pass3/pass4/assemble.
149
- let body;
150
- let recordCount;
151
- let noteCount;
152
- if (!opts.force && store.has("body.json")) {
153
- body = store.readJson("body.json");
154
- recordCount = store.has("pass3/script.jsonl") ? parseJsonl(store.readText("pass3/script.jsonl")).length : 0;
155
- noteCount = store.has("notes.json") ? store.readJson("notes.json").length : 0;
156
- reused++;
157
- }
158
- else {
159
- // pass3: merge in chunk order. Content is kept VERBATIM — no pronoun resolution
160
- // (dialogue must stay word-for-word as spoken); the serial pass resolves
161
- // identity from context instead of rewriting the body.
162
- const merged = [];
163
- for (const s of settled)
164
- if (s.ok)
165
- merged.push(...s.value);
166
- store.writeText("pass3/script.jsonl", serializeJsonl(merged));
167
- const reparsed = parseJsonl(store.readText("pass3/script.jsonl")); // round-trip validation
168
- // compile: assemble the name-based body (scenes + actions).
169
- const title = deriveTitle(resolved.path);
170
- const assembled = assemble(reparsed, { title });
171
- store.writeJson("notes.json", assembled.notes);
172
- body = assembled.script;
173
- store.writeJson("body.json", body);
174
- recordCount = merged.length;
175
- noteCount = assembled.notes.length;
176
- }
177
- // Serial govern: context starts EMPTY and grows per episode; the model reads each
178
- // episode's body + context-so-far and reports discovered entities / importance /
179
- // 造型 / per-scene presence. The governed v3 intermediate is converted to v4. Every step
180
- // persists the full context md (= prompt) and the model's `# 更新` md; resume
181
- // replays cached `# 更新` (no LLM). Cleared by --force (serial dir wiped).
182
- const pad3 = (n) => String(n).padStart(3, "0");
183
- // One window (1+ contiguous episodes) per `serial/win_<start>_<end>.json`; the
184
- // filename range is deterministic (pure packing), so resume replays from cache.
185
- // Content is the model's raw tool-call Delta (JSON) `.json`, not `.md`. The
186
- // context_ trace (rendered prompt) and arc_ summary stay markdown.
187
- const winRel = (startEp, endEp) => `serial/win_${pad3(startEp)}_${pad3(endEp)}.json`;
188
- const serialCheckpoint = {
189
- readUpdate: (startEp, endEp) => (store.has(winRel(startEp, endEp)) ? store.readText(winRel(startEp, endEp)) : undefined),
190
- writeStep: (startEp, endEp, contextMd, updateMd) => {
191
- store.writeText(`serial/context_${pad3(startEp)}.md`, contextMd);
192
- store.writeText(winRel(startEp, endEp), updateMd);
193
- },
194
- readArc: (startEp, endEp) => {
195
- const rel = `serial/arc_${pad3(startEp)}_${pad3(endEp)}.md`;
196
- return store.has(rel) ? store.readText(rel) : undefined;
197
- },
198
- writeArc: (startEp, endEp, summaryMd) => {
199
- store.writeText(`serial/arc_${pad3(startEp)}_${pad3(endEp)}.md`, summaryMd);
200
- },
201
- readNameFix: (startEp, endEp) => {
202
- const rel = `serial/fix_${pad3(startEp)}_${pad3(endEp)}.json`;
203
- return store.has(rel) ? store.readText(rel) : undefined;
204
- },
205
- writeNameFix: (startEp, endEp, raw) => store.writeText(`serial/fix_${pad3(startEp)}_${pad3(endEp)}.json`, raw),
206
- };
207
- timings.phaseStart("serial");
208
- const serial = await runSerialGovern(body, {
209
- executor: opts.executor, checkpoint: serialCheckpoint, force: opts.force ?? false,
210
- ...(sourceRef ? { sourceRef } : {}),
211
- onWindow: (t) => { if (t.index === 0)
212
- timings.serialStart(t.total, t.totalEpisodes); timings.windowDone(t.startEp, t.endEp, t.ms, t.cached); },
213
- ...(opts.signal ? { signal: opts.signal } : {}),
214
- });
215
- const governed = serial.doc;
216
- reused += serial.reused;
217
- // Audit: entities the engine auto-created because a merge named an unregistered
218
- // `into`. Written so this implicit step is inspectable, never silent.
219
- if (serial.autoCreated.length)
220
- store.writeText("serial/auto_created.json", JSON.stringify(serial.autoCreated, null, 2));
221
- timings.phaseEnd("serial");
222
- // Persist serial-model spend before deterministic conversion. A structural
223
- // failure must not erase spend that a resumed run cannot reconstruct.
224
- writeUsage(store, opts.executor);
225
- // Final clean numbering: contiguous per-kind asset ids + per-asset state ids.
226
- timings.phaseStart("govern");
227
- const { script: renumbered, idMap } = renumberIds(governed);
228
- store.writeJson("id_map.json", idMap);
229
- const intermediateValidation = validateScriptV3(renumbered);
230
- if (!intermediateValidation.ok) {
231
- store.writeJson("validation.json", intermediateValidation);
232
- throw new CliError("Intermediate script failed validation before v4 identity assignment.", {
233
- exitCode: EXIT_INPUT,
234
- errorCode: "INGEST_VALIDATION_FAILED",
235
- hint: "Inspect validation.json.",
236
- data: { actual: intermediateValidation.errors.slice(0, 5).map((e) => `${e.path}: ${e.message}`) },
152
+ if (failures.length > 0) {
153
+ throw new CliError(`${failures.length}/${chunks.length} chunk(s) failed normalization.`, {
154
+ exitCode: EXIT_INPUT,
155
+ errorCode: "INGEST_NORMALIZE_INCOMPLETE",
156
+ hint: "Inspect pass2/chunk_NNN.error.json and rerun `scriptctl ingest` to resume.",
157
+ data: { actual: failures.map((f) => `chunk ${f.index}`) },
158
+ });
159
+ }
160
+ timings.phaseEnd("normalize");
161
+ // pass3 merge → pass4 mention-resolve → assemble = the name-based BODY (正文).
162
+ // NO asset extraction / id assignment here — the serial pass discovers assets,
163
+ // 造型 and per-scene presence itself from the body. Reuse body.json on a rerun so
164
+ // a serial failure doesn't redo pass3/pass4/assemble.
165
+ let body;
166
+ let recordCount;
167
+ let noteCount;
168
+ if (!opts.force && store.has("body.json")) {
169
+ body = store.readJson("body.json");
170
+ recordCount = store.has("pass3/script.jsonl") ? parseJsonl(store.readText("pass3/script.jsonl")).length : 0;
171
+ noteCount = store.has("notes.json") ? store.readJson("notes.json").length : 0;
172
+ reused++;
173
+ }
174
+ else {
175
+ // pass3: merge in chunk order. Content is kept VERBATIM — no pronoun resolution
176
+ // (dialogue must stay word-for-word as spoken); the serial pass resolves
177
+ // identity from context instead of rewriting the body.
178
+ const merged = [];
179
+ for (const s of settled)
180
+ if (s.ok)
181
+ merged.push(...s.value);
182
+ store.writeText("pass3/script.jsonl", serializeJsonl(merged));
183
+ const reparsed = parseJsonl(store.readText("pass3/script.jsonl")); // round-trip validation
184
+ // compile: assemble the name-based body (scenes + actions).
185
+ const title = deriveTitle(resolved.path);
186
+ const assembled = assemble(reparsed, { title });
187
+ store.writeJson("notes.json", assembled.notes);
188
+ body = assembled.script;
189
+ store.writeJson("body.json", body);
190
+ recordCount = merged.length;
191
+ noteCount = assembled.notes.length;
192
+ }
193
+ // Serial govern: context starts EMPTY and grows per episode; the model reads each
194
+ // episode's body + context-so-far and reports discovered entities / importance /
195
+ // 造型 / per-scene presence. The governed v3 intermediate is converted to v4. Every step
196
+ // persists the full context md (= prompt) and the model's `# 更新` md; resume
197
+ // replays cached `# 更新` (no LLM). Cleared by --force (serial dir wiped).
198
+ const pad3 = (n) => String(n).padStart(3, "0");
199
+ // One window (1+ contiguous episodes) per `serial/win_<start>_<end>.json`; the
200
+ // filename range is deterministic (pure packing), so resume replays from cache.
201
+ // Content is the model's raw tool-call Delta (JSON) — `.json`, not `.md`. The
202
+ // context_ trace (rendered prompt) and arc_ summary stay markdown.
203
+ const winRel = (startEp, endEp) => `serial/win_${pad3(startEp)}_${pad3(endEp)}.json`;
204
+ const serialCheckpoint = {
205
+ readUpdate: (startEp, endEp) => (store.has(winRel(startEp, endEp)) ? store.readText(winRel(startEp, endEp)) : undefined),
206
+ writeStep: (startEp, endEp, contextMd, updateMd) => {
207
+ store.writeText(`serial/context_${pad3(startEp)}.md`, contextMd);
208
+ store.writeText(winRel(startEp, endEp), updateMd);
209
+ },
210
+ readArc: (startEp, endEp) => {
211
+ const rel = `serial/arc_${pad3(startEp)}_${pad3(endEp)}.md`;
212
+ return store.has(rel) ? store.readText(rel) : undefined;
213
+ },
214
+ writeArc: (startEp, endEp, summaryMd) => {
215
+ store.writeText(`serial/arc_${pad3(startEp)}_${pad3(endEp)}.md`, summaryMd);
216
+ },
217
+ readNameFix: (startEp, endEp) => {
218
+ const rel = `serial/fix_${pad3(startEp)}_${pad3(endEp)}.json`;
219
+ return store.has(rel) ? store.readText(rel) : undefined;
220
+ },
221
+ writeNameFix: (startEp, endEp, raw) => store.writeText(`serial/fix_${pad3(startEp)}_${pad3(endEp)}.json`, raw),
222
+ };
223
+ timings.phaseStart("serial");
224
+ const serial = await runSerialGovern(body, {
225
+ executor: opts.executor, checkpoint: serialCheckpoint, force: opts.force ?? false,
226
+ ...(sourceRef ? { sourceRef } : {}),
227
+ onWindow: (t) => {
228
+ if (t.index === 0)
229
+ timings.serialStart(t.total, t.totalEpisodes);
230
+ timings.windowDone(t.startEp, t.endEp, t.ms, t.cached);
231
+ const scope = t.startEp === t.endEp
232
+ ? { kind: "episode", episode: t.startEp }
233
+ : { kind: "episode-range", startEpisode: t.startEp, endEpisode: t.endEp };
234
+ const endedAtMs = Date.now();
235
+ usage.flush({
236
+ scope,
237
+ status: t.cached ? "reused" : "succeeded",
238
+ startedAtMs: endedAtMs - t.ms,
239
+ endedAtMs,
240
+ });
241
+ },
242
+ ...(opts.signal ? { signal: opts.signal } : {}),
237
243
  });
238
- }
239
- const priorIdentity = !opts.force && store.has("v4_identity_map.json")
240
- ? store.readJson("v4_identity_map.json")
241
- : undefined;
242
- // V4 identities bind to the stable pre-renumber ingest keys. The contiguous
243
- // V3 ids in `renumbered` are an audit artifact only: deleting or merging an
244
- // earlier entity can shift them onto a different surviving entity.
245
- const converted = newScriptV4FromV3WithIdentity(requireScriptV3(governed), priorIdentity, serial.identityKeys);
246
- const finalScript = converted.script;
247
- const structuralValidation = validateScriptV4(finalScript);
248
- let auditWarnings = [];
249
- try {
250
- if (structuralValidation.ok) {
251
- const audit = await auditWorkspaceScriptAssets(store, finalScript, opts.executor, {
252
- force: opts.force ?? false,
253
- ...(opts.signal ? { signal: opts.signal } : {}),
244
+ const governed = serial.doc;
245
+ reused += serial.reused;
246
+ // Audit: entities the engine auto-created because a merge named an unregistered
247
+ // `into`. Written so this implicit step is inspectable, never silent.
248
+ if (serial.autoCreated.length)
249
+ store.writeText("serial/auto_created.json", JSON.stringify(serial.autoCreated, null, 2));
250
+ timings.phaseEnd("serial");
251
+ // Final clean numbering: contiguous per-kind asset ids + per-asset state ids.
252
+ timings.phaseStart("govern");
253
+ const { script: renumbered, idMap } = renumberIds(governed);
254
+ store.writeJson("id_map.json", idMap);
255
+ const intermediateValidation = validateScriptV3(renumbered);
256
+ if (!intermediateValidation.ok) {
257
+ store.writeJson("validation.json", intermediateValidation);
258
+ throw new CliError("Intermediate script failed validation before v4 identity assignment.", {
259
+ exitCode: EXIT_INPUT,
260
+ errorCode: "INGEST_VALIDATION_FAILED",
261
+ hint: "Inspect validation.json.",
262
+ data: { actual: intermediateValidation.errors.slice(0, 5).map((e) => `${e.path}: ${e.message}`) },
254
263
  });
255
- auditWarnings = assetAuditWarnings(audit.report);
256
264
  }
265
+ const priorIdentity = !opts.force && store.has("v4_identity_map.json")
266
+ ? store.readJson("v4_identity_map.json")
267
+ : undefined;
268
+ // V4 identities bind to the stable pre-renumber ingest keys. The contiguous
269
+ // V3 ids in `renumbered` are an audit artifact only: deleting or merging an
270
+ // earlier entity can shift them onto a different surviving entity.
271
+ const converted = newScriptV4FromV3WithIdentity(requireScriptV3(governed), priorIdentity, serial.identityKeys);
272
+ const finalScript = converted.script;
273
+ const structuralValidation = validateScriptV4(finalScript);
274
+ let auditWarnings = [];
275
+ const auditStartedMs = Date.now();
276
+ let auditStatus = "failed";
277
+ try {
278
+ if (structuralValidation.ok) {
279
+ const audit = await auditWorkspaceScriptAssets(store, finalScript, opts.executor, {
280
+ force: opts.force ?? false,
281
+ ...(opts.signal ? { signal: opts.signal } : {}),
282
+ });
283
+ auditWarnings = assetAuditWarnings(audit.report);
284
+ }
285
+ auditStatus = "succeeded";
286
+ }
287
+ finally {
288
+ usage.flush({
289
+ scope: { kind: "phase", phase: "asset-audit" },
290
+ status: auditStatus,
291
+ startedAtMs: auditStartedMs,
292
+ });
293
+ }
294
+ const validation = {
295
+ ...structuralValidation,
296
+ warnings: [
297
+ ...structuralValidation.warnings,
298
+ ...validateProductionStandard(finalScript),
299
+ ...auditWarnings,
300
+ ],
301
+ };
302
+ store.writeJson("pass5/script.json", finalScript);
303
+ store.writeJson("v4_identity_map.json", converted.identityMap);
304
+ store.writeJson("validation.json", validation);
305
+ if (!validation.ok) {
306
+ throw new CliError("Final script.json failed v4 validation.", {
307
+ exitCode: EXIT_INPUT,
308
+ errorCode: "INGEST_VALIDATION_FAILED",
309
+ hint: "Inspect validation.json.",
310
+ data: { actual: validation.errors.slice(0, 5).map((e) => `${e.path}: ${e.message}`) },
311
+ });
312
+ }
313
+ store.writeJson("script.json", finalScript);
314
+ timings.phaseEnd("govern");
315
+ timings.finish();
316
+ const g = finalScript;
317
+ runStatus = "succeeded";
318
+ return {
319
+ workspacePath: store.root,
320
+ chunks: chunks.length,
321
+ reused,
322
+ records: recordCount,
323
+ notes: noteCount,
324
+ assets: { actors: g.actors?.length ?? 0, locations: g.locations?.length ?? 0, props: g.props?.length ?? 0 },
325
+ scriptPath: store.path("script.json"),
326
+ validation: { ok: validation.ok, errors: validation.errors.length, warnings: validation.warnings.length },
327
+ };
257
328
  }
258
329
  finally {
259
- // The audit is model-backed. Persist its usage even when it fails.
260
- writeUsage(store, opts.executor);
261
- }
262
- const validation = {
263
- ...structuralValidation,
264
- warnings: [
265
- ...structuralValidation.warnings,
266
- ...validateProductionStandard(finalScript),
267
- ...auditWarnings,
268
- ],
269
- };
270
- store.writeJson("pass5/script.json", finalScript);
271
- store.writeJson("v4_identity_map.json", converted.identityMap);
272
- store.writeJson("validation.json", validation);
273
- if (!validation.ok) {
274
- throw new CliError("Final script.json failed v4 validation.", {
275
- exitCode: EXIT_INPUT,
276
- errorCode: "INGEST_VALIDATION_FAILED",
277
- hint: "Inspect validation.json.",
278
- data: { actual: validation.errors.slice(0, 5).map((e) => `${e.path}: ${e.message}`) },
279
- });
330
+ usage.finish(runStatus);
280
331
  }
281
- store.writeJson("script.json", finalScript);
282
- timings.phaseEnd("govern");
283
- timings.finish();
284
- const g = finalScript;
285
- return {
286
- workspacePath: store.root,
287
- chunks: chunks.length,
288
- reused,
289
- records: recordCount,
290
- notes: noteCount,
291
- assets: { actors: g.actors?.length ?? 0, locations: g.locations?.length ?? 0, props: g.props?.length ?? 0 },
292
- scriptPath: store.path("script.json"),
293
- validation: { ok: validation.ok, errors: validation.errors.length, warnings: validation.warnings.length },
294
- };
295
332
  }
296
333
  function deriveTitle(sourcePath) {
297
334
  return path.basename(sourcePath, path.extname(sourcePath));
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/usecases/ingest/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/usecases/ingest/pipeline.ts"],"names":[],"mappings":"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"}