@lingjingai/scriptctl 0.56.0 → 0.57.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.57.0.md +14 -0
- package/dist/cli/register-workflows.js +8 -0
- package/dist/cli/register-workflows.js.map +1 -1
- package/dist/domain/ingest/video-context.d.ts +2 -0
- package/dist/domain/ingest/video-context.js +8 -1
- package/dist/domain/ingest/video-context.js.map +1 -1
- package/dist/infra/ingest/workspace-lock.d.ts +1 -0
- package/dist/infra/ingest/workspace-lock.js +32 -0
- package/dist/infra/ingest/workspace-lock.js.map +1 -0
- package/dist/usecases/ingest/command.js +5 -0
- package/dist/usecases/ingest/command.js.map +1 -1
- package/dist/usecases/ingest/skip-video-episode.d.ts +4 -0
- package/dist/usecases/ingest/skip-video-episode.js +112 -0
- package/dist/usecases/ingest/skip-video-episode.js.map +1 -0
- package/dist/usecases/ingest/status.d.ts +12 -0
- package/dist/usecases/ingest/status.js +36 -8
- package/dist/usecases/ingest/status.js.map +1 -1
- package/dist/usecases/ingest/video-pipeline.d.ts +38 -0
- package/dist/usecases/ingest/video-pipeline.js +66 -34
- package/dist/usecases/ingest/video-pipeline.js.map +1 -1
- package/dist/usecases/ingest/video-skip-state.d.ts +29 -0
- package/dist/usecases/ingest/video-skip-state.js +148 -0
- package/dist/usecases/ingest/video-skip-state.js.map +1 -0
- package/package.json +1 -1
- package/skills/scriptctl/SKILL.md +2 -2
- package/skills/scriptctl/references/ingest-workflow.md +26 -4
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import { type VideoSourceEpisodeIdentity } from "../../domain/ingest/video-source-evolution.js";
|
|
2
|
+
import { type V4IdentityMap } from "../../domain/script/v4/from-v3.js";
|
|
3
|
+
import { validateScriptV4 } from "../../domain/script/v4/validation.js";
|
|
4
|
+
import { type RunContext } from "../../domain/ingest/video-context.js";
|
|
5
|
+
import type { VideoEpisodeDoc } from "../../domain/ingest/video-records.js";
|
|
6
|
+
import { WorkspaceStore } from "../../infra/ingest/workspace-store.js";
|
|
1
7
|
import { type LlmTaskExecutor, type VideoUploadMode } from "../../llm/types.js";
|
|
8
|
+
import { type VideoSkipRecord } from "./video-skip-state.js";
|
|
9
|
+
export declare const VIDEO_PIPELINE_VERSION = "13";
|
|
2
10
|
export interface VideoIngestOptions {
|
|
3
11
|
sourcePath: string;
|
|
4
12
|
workspacePath: string;
|
|
@@ -14,6 +22,8 @@ export interface VideoIngestReport {
|
|
|
14
22
|
episodes: number;
|
|
15
23
|
processed: number;
|
|
16
24
|
reused: number;
|
|
25
|
+
skipped: number;
|
|
26
|
+
skippedEpisodes: number[];
|
|
17
27
|
completed: number;
|
|
18
28
|
remaining: number;
|
|
19
29
|
complete: boolean;
|
|
@@ -31,5 +41,33 @@ export interface VideoIngestReport {
|
|
|
31
41
|
warnings: number;
|
|
32
42
|
};
|
|
33
43
|
}
|
|
44
|
+
export type VideoSourceKind = "video-file" | "video-directory";
|
|
45
|
+
export interface VideoIngestManifest {
|
|
46
|
+
version: 2;
|
|
47
|
+
pipeline_version: string;
|
|
48
|
+
updated: string;
|
|
49
|
+
source: {
|
|
50
|
+
kind: VideoSourceKind;
|
|
51
|
+
path: string;
|
|
52
|
+
sha256: string;
|
|
53
|
+
};
|
|
54
|
+
episodes: VideoSourceEpisodeIdentity[];
|
|
55
|
+
fps: number;
|
|
56
|
+
}
|
|
34
57
|
export declare function assertInlineVideoSize(filePath: string, episode: number): void;
|
|
58
|
+
export declare function readCurrentVideoManifest(store: WorkspaceStore): VideoIngestManifest | null;
|
|
59
|
+
export declare function migrateVideoManifest(store: WorkspaceStore, manifest: VideoIngestManifest): VideoIngestManifest;
|
|
60
|
+
interface FinalizeResult {
|
|
61
|
+
initial: Record<string, unknown>;
|
|
62
|
+
final: Record<string, unknown>;
|
|
63
|
+
idMap: unknown;
|
|
64
|
+
validation: ReturnType<typeof validateScriptV4>;
|
|
65
|
+
identityMap: V4IdentityMap;
|
|
66
|
+
}
|
|
67
|
+
export declare function finalizeVideoScript(docs: VideoEpisodeDoc[], ctx: RunContext, title: string, priorIdentity: V4IdentityMap, skips?: readonly VideoSkipRecord[]): FinalizeResult;
|
|
68
|
+
export declare function publishFinalizedVideoWorkspace(store: WorkspaceStore, episodes: ReadonlyArray<{
|
|
69
|
+
episode: number;
|
|
70
|
+
}>, ctx: RunContext, title: string, identityMap: V4IdentityMap, skips: readonly VideoSkipRecord[]): FinalizeResult;
|
|
35
71
|
export declare function runVideoIngest(opts: VideoIngestOptions): Promise<VideoIngestReport>;
|
|
72
|
+
export declare function deriveVideoTitle(sourcePath: string): string;
|
|
73
|
+
export {};
|
|
@@ -31,11 +31,14 @@ import { discoverEpisodes } from "../../infra/ingest/video-discovery.js";
|
|
|
31
31
|
import { snapshotVideoSource, videoSourceFingerprint, } from "../../infra/ingest/video-source-snapshot.js";
|
|
32
32
|
import { transcodeForUpload } from "../../infra/ingest/video-transcode.js";
|
|
33
33
|
import { WorkspaceStore } from "../../infra/ingest/workspace-store.js";
|
|
34
|
+
import { withIngestWorkspaceLock } from "../../infra/ingest/workspace-lock.js";
|
|
34
35
|
import { runVideoSerial } from "../../llm/tasks/ingest/video-serial.js";
|
|
35
36
|
import { MAX_INLINE_VIDEO_BYTES, } from "../../llm/types.js";
|
|
36
37
|
import { UsageLedger } from "./usage-report.js";
|
|
37
38
|
import { createEpisodeErrorSidecar, recoveryHint } from "./failure.js";
|
|
38
|
-
|
|
39
|
+
import { assertVideoSkipSources, markSkippedEpisodes, readAcceptedVideoDocs, readVideoSkipLedger, reconcileVideoSkips, } from "./video-skip-state.js";
|
|
40
|
+
export const VIDEO_PIPELINE_VERSION = "13"; // manual skip ledger + crash-safe skipped context checkpoints
|
|
41
|
+
const COMPATIBLE_VIDEO_PIPELINE_VERSIONS = new Set(["12", VIDEO_PIPELINE_VERSION]);
|
|
39
42
|
const pad = (n) => String(n).padStart(3, "0");
|
|
40
43
|
function fileSize(p) {
|
|
41
44
|
try {
|
|
@@ -75,20 +78,31 @@ function sourceMismatch(reason) {
|
|
|
75
78
|
data: { actual: [reason] },
|
|
76
79
|
});
|
|
77
80
|
}
|
|
78
|
-
function
|
|
81
|
+
export function readCurrentVideoManifest(store) {
|
|
79
82
|
if (!store.has("manifest.json"))
|
|
80
83
|
return null;
|
|
81
84
|
const header = store.readJson("manifest.json");
|
|
82
|
-
if (header.pipeline_version
|
|
85
|
+
if (!header.pipeline_version || !COMPATIBLE_VIDEO_PIPELINE_VERSIONS.has(header.pipeline_version)) {
|
|
83
86
|
throw new CliError("This workspace uses an incompatible video-ingest pipeline.", {
|
|
84
87
|
exitCode: EXIT_INPUT,
|
|
85
88
|
errorCode: "INGEST_PIPELINE_MISMATCH",
|
|
86
89
|
hint: "Choose a fresh --workspace-path and run ingest again.",
|
|
87
|
-
data: { actual: [`workspace pipeline ${header.pipeline_version ?? "(missing)"}; current ${
|
|
90
|
+
data: { actual: [`workspace pipeline ${header.pipeline_version ?? "(missing)"}; current ${VIDEO_PIPELINE_VERSION}`] },
|
|
88
91
|
});
|
|
89
92
|
}
|
|
90
93
|
return store.readJson("manifest.json");
|
|
91
94
|
}
|
|
95
|
+
export function migrateVideoManifest(store, manifest) {
|
|
96
|
+
if (manifest.pipeline_version === VIDEO_PIPELINE_VERSION)
|
|
97
|
+
return manifest;
|
|
98
|
+
const migrated = {
|
|
99
|
+
...manifest,
|
|
100
|
+
pipeline_version: VIDEO_PIPELINE_VERSION,
|
|
101
|
+
updated: new Date().toISOString(),
|
|
102
|
+
};
|
|
103
|
+
store.writeJson("manifest.json", migrated);
|
|
104
|
+
return migrated;
|
|
105
|
+
}
|
|
92
106
|
function checkSourceRoot(previous, sourceKind, sourcePath) {
|
|
93
107
|
if (!previous)
|
|
94
108
|
return;
|
|
@@ -118,6 +132,7 @@ function checkLifecycle(store, previous, episodes, force) {
|
|
|
118
132
|
"timing.jsonl",
|
|
119
133
|
"usage.json",
|
|
120
134
|
"v4_identity_map.json",
|
|
135
|
+
"skipped.json",
|
|
121
136
|
])
|
|
122
137
|
fs.rmSync(store.path(f), { force: true });
|
|
123
138
|
}
|
|
@@ -198,7 +213,7 @@ function videoIdentityKeys(assets, registry) {
|
|
|
198
213
|
}
|
|
199
214
|
// Deterministic tail shared with text ingest. Pure (no LLM); ms-fast, so it runs
|
|
200
215
|
// after every episode (streaming) and once at the end (gated on validation).
|
|
201
|
-
function
|
|
216
|
+
export function finalizeVideoScript(docs, ctx, title, priorIdentity, skips = []) {
|
|
202
217
|
const alias = buildAliasMap(ctx.registry);
|
|
203
218
|
const renamed = renameDocs(docs, alias);
|
|
204
219
|
const nameScript = docsToNameScript(renamed, title);
|
|
@@ -217,23 +232,41 @@ function finalizeScript(docs, ctx, title, priorIdentity) {
|
|
|
217
232
|
...identityKeys,
|
|
218
233
|
});
|
|
219
234
|
const scriptV4 = converted.script;
|
|
235
|
+
markSkippedEpisodes(scriptV4, skips);
|
|
220
236
|
const structuralValidation = validateScriptV4(scriptV4);
|
|
221
237
|
const validation = {
|
|
222
238
|
...structuralValidation,
|
|
223
|
-
warnings: [
|
|
239
|
+
warnings: [
|
|
240
|
+
...structuralValidation.warnings,
|
|
241
|
+
...validateProductionStandard(scriptV4),
|
|
242
|
+
...skips.map((record) => ({
|
|
243
|
+
code: "episode_skipped",
|
|
244
|
+
path: `$.episodes[${record.episode - 1}]`,
|
|
245
|
+
message: `Episode ${record.episode} was manually skipped: ${record.reason}`,
|
|
246
|
+
})),
|
|
247
|
+
],
|
|
224
248
|
};
|
|
225
249
|
return { initial: script, final: scriptV4, idMap, validation, identityMap: converted.identityMap };
|
|
226
250
|
}
|
|
227
|
-
function
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
251
|
+
export function publishFinalizedVideoWorkspace(store, episodes, ctx, title, identityMap, skips) {
|
|
252
|
+
const finalized = finalizeVideoScript(readAcceptedVideoDocs(store, episodes, ctx.lastEpisode, skips), ctx, title, identityMap, skips.filter((record) => record.episode <= ctx.lastEpisode));
|
|
253
|
+
const { initial, final, idMap, validation } = finalized;
|
|
254
|
+
store.writeJson("script.initial.json", initial);
|
|
255
|
+
store.writeJson("id_map.json", idMap);
|
|
256
|
+
store.writeJson("validation.json", validation);
|
|
257
|
+
store.writeJson("v4_identity_map.json", finalized.identityMap);
|
|
258
|
+
if (!validation.ok) {
|
|
259
|
+
throw new CliError("Final script.json failed validation.", {
|
|
260
|
+
exitCode: EXIT_INPUT,
|
|
261
|
+
errorCode: "INGEST_VALIDATION_FAILED",
|
|
262
|
+
hint: "Inspect validation.json.",
|
|
263
|
+
data: { actual: validation.errors.slice(0, 5).map((error) => `${error.path}: ${error.message}`) },
|
|
264
|
+
});
|
|
233
265
|
}
|
|
234
|
-
|
|
266
|
+
store.writeJson("script.json", final);
|
|
267
|
+
return finalized;
|
|
235
268
|
}
|
|
236
|
-
|
|
269
|
+
async function runVideoIngestUnlocked(opts) {
|
|
237
270
|
const resolved = resolveSource(opts.sourcePath);
|
|
238
271
|
if (resolved.kind === "text")
|
|
239
272
|
throw new CliError("runVideoIngest received a text source.", {
|
|
@@ -257,14 +290,14 @@ export async function runVideoIngest(opts) {
|
|
|
257
290
|
const sig = opts.signal;
|
|
258
291
|
const store = new WorkspaceStore(opts.workspacePath);
|
|
259
292
|
store.ensure();
|
|
260
|
-
const previousManifest =
|
|
293
|
+
const previousManifest = readCurrentVideoManifest(store);
|
|
261
294
|
const sourcePath = path.resolve(resolved.path);
|
|
262
295
|
checkSourceRoot(previousManifest, resolved.kind, sourcePath);
|
|
263
296
|
const sourceEpisodes = snapshotVideoSource(episodes);
|
|
264
297
|
checkLifecycle(store, previousManifest, sourceEpisodes, force);
|
|
265
298
|
const manifest = {
|
|
266
299
|
version: 2,
|
|
267
|
-
pipeline_version:
|
|
300
|
+
pipeline_version: VIDEO_PIPELINE_VERSION,
|
|
268
301
|
updated: new Date().toISOString(),
|
|
269
302
|
source: {
|
|
270
303
|
kind: resolved.kind,
|
|
@@ -279,8 +312,13 @@ export async function runVideoIngest(opts) {
|
|
|
279
312
|
let runStatus = "failed";
|
|
280
313
|
try {
|
|
281
314
|
let port = null;
|
|
282
|
-
const title =
|
|
315
|
+
const title = deriveVideoTitle(opts.sourcePath);
|
|
283
316
|
let ctx = !force && store.has("context.json") ? store.readJson("context.json") : emptyContext();
|
|
317
|
+
const skipLedger = readVideoSkipLedger(store);
|
|
318
|
+
assertVideoSkipSources(skipLedger.episodes, sourceEpisodes);
|
|
319
|
+
if (!force)
|
|
320
|
+
reconcileVideoSkips(store, ctx, skipLedger.episodes);
|
|
321
|
+
const skippedEpisodes = new Set(skipLedger.episodes.map((record) => record.episode));
|
|
284
322
|
let identityMap = !force && store.has("v4_identity_map.json")
|
|
285
323
|
? store.readJson("v4_identity_map.json")
|
|
286
324
|
: emptyV4IdentityMap();
|
|
@@ -289,6 +327,8 @@ export async function runVideoIngest(opts) {
|
|
|
289
327
|
// ===== Stage S: serial per-episode parse =====
|
|
290
328
|
for (const e of episodes) {
|
|
291
329
|
const rel = `ep/ep_${pad(e.episode)}.json`;
|
|
330
|
+
if (!force && skippedEpisodes.has(e.episode) && e.episode <= ctx.lastEpisode)
|
|
331
|
+
continue;
|
|
292
332
|
// Resume: skip only when the episode's content exists AND the running context
|
|
293
333
|
// already accounts for it (a crash between the two writes → rerun this ep).
|
|
294
334
|
if (!force && store.has(rel) && e.episode <= ctx.lastEpisode) {
|
|
@@ -393,7 +433,7 @@ export async function runVideoIngest(opts) {
|
|
|
393
433
|
// Streaming: rebuild script.json incrementally so the editor sees it grow.
|
|
394
434
|
// Best-effort — the gated finalize below is authoritative.
|
|
395
435
|
try {
|
|
396
|
-
const streaming =
|
|
436
|
+
const streaming = finalizeVideoScript(readAcceptedVideoDocs(store, episodes, ctx.lastEpisode, skipLedger.episodes), ctx, title, identityMap, skipLedger.episodes.filter((record) => record.episode <= ctx.lastEpisode));
|
|
397
437
|
if (streaming.validation.ok) {
|
|
398
438
|
identityMap = streaming.identityMap;
|
|
399
439
|
// Publish the identity checkpoint first. A crash may leave the map ahead
|
|
@@ -409,21 +449,8 @@ export async function runVideoIngest(opts) {
|
|
|
409
449
|
const remaining = episodes.length - completed;
|
|
410
450
|
const complete = remaining === 0;
|
|
411
451
|
const nextEpisode = complete ? null : episodes[completed]?.episode ?? null;
|
|
412
|
-
const finalized =
|
|
413
|
-
const {
|
|
414
|
-
store.writeJson("script.initial.json", initial);
|
|
415
|
-
store.writeJson("id_map.json", idMap);
|
|
416
|
-
store.writeJson("validation.json", validation);
|
|
417
|
-
store.writeJson("v4_identity_map.json", finalized.identityMap);
|
|
418
|
-
if (!validation.ok) {
|
|
419
|
-
throw new CliError("Final script.json failed validation.", {
|
|
420
|
-
exitCode: EXIT_INPUT,
|
|
421
|
-
errorCode: "INGEST_VALIDATION_FAILED",
|
|
422
|
-
hint: "Inspect validation.json.",
|
|
423
|
-
data: { actual: validation.errors.slice(0, 5).map((e) => `${e.path}: ${e.message}`) },
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
|
-
store.writeJson("script.json", final);
|
|
452
|
+
const finalized = publishFinalizedVideoWorkspace(store, episodes.slice(0, completed), ctx, title, identityMap, skipLedger.episodes);
|
|
453
|
+
const { final, validation } = finalized;
|
|
427
454
|
const g = final;
|
|
428
455
|
runStatus = "succeeded";
|
|
429
456
|
return {
|
|
@@ -431,6 +458,8 @@ export async function runVideoIngest(opts) {
|
|
|
431
458
|
episodes: episodes.length,
|
|
432
459
|
processed,
|
|
433
460
|
reused,
|
|
461
|
+
skipped: skipLedger.episodes.length,
|
|
462
|
+
skippedEpisodes: skipLedger.episodes.map((record) => record.episode),
|
|
434
463
|
completed,
|
|
435
464
|
remaining,
|
|
436
465
|
complete,
|
|
@@ -445,7 +474,10 @@ export async function runVideoIngest(opts) {
|
|
|
445
474
|
usage.finish(runStatus);
|
|
446
475
|
}
|
|
447
476
|
}
|
|
448
|
-
function
|
|
477
|
+
export async function runVideoIngest(opts) {
|
|
478
|
+
return withIngestWorkspaceLock(opts.workspacePath, () => runVideoIngestUnlocked(opts));
|
|
479
|
+
}
|
|
480
|
+
export function deriveVideoTitle(sourcePath) {
|
|
449
481
|
const base = path.basename(sourcePath, path.extname(sourcePath));
|
|
450
482
|
return base || "";
|
|
451
483
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-pipeline.js","sourceRoot":"","sources":["../../../src/usecases/ingest/video-pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video-pipeline.js","sourceRoot":"","sources":["../../../src/usecases/ingest/video-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { OperationalFailure } from "../../failures.js";
|
|
2
|
+
import { type RunContext } from "../../domain/ingest/video-context.js";
|
|
3
|
+
import type { VideoEpisodeDoc } from "../../domain/ingest/video-records.js";
|
|
4
|
+
import type { ScriptV4 } from "../../domain/script/v4/types.js";
|
|
5
|
+
import { WorkspaceStore } from "../../infra/ingest/workspace-store.js";
|
|
6
|
+
export interface VideoSkipRecord {
|
|
7
|
+
episode: number;
|
|
8
|
+
skipped_at: string;
|
|
9
|
+
reason: string;
|
|
10
|
+
source_sha256: string;
|
|
11
|
+
failure: OperationalFailure;
|
|
12
|
+
attempts: OperationalFailure[];
|
|
13
|
+
}
|
|
14
|
+
export interface VideoSkipLedger {
|
|
15
|
+
schema_version: 1;
|
|
16
|
+
episodes: VideoSkipRecord[];
|
|
17
|
+
}
|
|
18
|
+
export declare function readVideoSkipLedger(store: WorkspaceStore): VideoSkipLedger;
|
|
19
|
+
export declare function writeVideoSkipLedger(store: WorkspaceStore, ledger: VideoSkipLedger): void;
|
|
20
|
+
export declare function assertVideoSkipSources(skips: readonly VideoSkipRecord[], sourceEpisodes: ReadonlyArray<{
|
|
21
|
+
episode: number;
|
|
22
|
+
sha256: string;
|
|
23
|
+
}>): void;
|
|
24
|
+
export declare function skippedEpisodeDoc(episode: number): VideoEpisodeDoc;
|
|
25
|
+
export declare function readAcceptedVideoDocs(store: WorkspaceStore, episodes: ReadonlyArray<{
|
|
26
|
+
episode: number;
|
|
27
|
+
}>, acceptedThrough: number, skips: readonly VideoSkipRecord[]): VideoEpisodeDoc[];
|
|
28
|
+
export declare function reconcileVideoSkips(store: WorkspaceStore, ctx: RunContext, skips: readonly VideoSkipRecord[]): RunContext;
|
|
29
|
+
export declare function markSkippedEpisodes(script: ScriptV4, skips: readonly VideoSkipRecord[]): void;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { CliError, EXIT_INPUT } from "../../common.js";
|
|
2
|
+
import { advanceSkippedEpisode } from "../../domain/ingest/video-context.js";
|
|
3
|
+
import { parseOperationalFailure } from "./failure.js";
|
|
4
|
+
function invalidLedger(reason) {
|
|
5
|
+
return new CliError("The video skip ledger is invalid.", {
|
|
6
|
+
exitCode: EXIT_INPUT,
|
|
7
|
+
errorCode: "INGEST_SKIP_LEDGER_INVALID",
|
|
8
|
+
hint: "Repair or remove skipped.json, then retry.",
|
|
9
|
+
data: { actual: [reason] },
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function parseSkipRecord(value) {
|
|
13
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
14
|
+
return null;
|
|
15
|
+
const record = value;
|
|
16
|
+
if (!Number.isInteger(record["episode"]) || Number(record["episode"]) <= 0
|
|
17
|
+
|| typeof record["skipped_at"] !== "string"
|
|
18
|
+
|| typeof record["reason"] !== "string" || record["reason"].trim().length === 0
|
|
19
|
+
|| typeof record["source_sha256"] !== "string" || record["source_sha256"].length === 0
|
|
20
|
+
|| !Array.isArray(record["attempts"]))
|
|
21
|
+
return null;
|
|
22
|
+
const failure = parseOperationalFailure(record["failure"]);
|
|
23
|
+
if (!failure)
|
|
24
|
+
return null;
|
|
25
|
+
const attempts = [];
|
|
26
|
+
for (const value of record["attempts"]) {
|
|
27
|
+
const attempt = parseOperationalFailure(value);
|
|
28
|
+
if (!attempt)
|
|
29
|
+
return null;
|
|
30
|
+
attempts.push(attempt);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
episode: Number(record["episode"]),
|
|
34
|
+
skipped_at: record["skipped_at"],
|
|
35
|
+
reason: record["reason"],
|
|
36
|
+
source_sha256: record["source_sha256"],
|
|
37
|
+
failure,
|
|
38
|
+
attempts,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function readVideoSkipLedger(store) {
|
|
42
|
+
if (!store.has("skipped.json"))
|
|
43
|
+
return { schema_version: 1, episodes: [] };
|
|
44
|
+
const value = store.readJson("skipped.json");
|
|
45
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
46
|
+
throw invalidLedger("root must be an object");
|
|
47
|
+
const ledger = value;
|
|
48
|
+
if (ledger["schema_version"] !== 1 || !Array.isArray(ledger["episodes"])) {
|
|
49
|
+
throw invalidLedger("schema_version must be 1 and episodes must be an array");
|
|
50
|
+
}
|
|
51
|
+
const episodes = [];
|
|
52
|
+
const seen = new Set();
|
|
53
|
+
for (const value of ledger["episodes"]) {
|
|
54
|
+
const record = parseSkipRecord(value);
|
|
55
|
+
if (!record)
|
|
56
|
+
throw invalidLedger("one or more episode records are malformed");
|
|
57
|
+
if (seen.has(record.episode))
|
|
58
|
+
throw invalidLedger(`episode ${record.episode} appears more than once`);
|
|
59
|
+
seen.add(record.episode);
|
|
60
|
+
episodes.push(record);
|
|
61
|
+
}
|
|
62
|
+
episodes.sort((left, right) => left.episode - right.episode);
|
|
63
|
+
return { schema_version: 1, episodes };
|
|
64
|
+
}
|
|
65
|
+
export function writeVideoSkipLedger(store, ledger) {
|
|
66
|
+
store.writeJson("skipped.json", ledger);
|
|
67
|
+
}
|
|
68
|
+
export function assertVideoSkipSources(skips, sourceEpisodes) {
|
|
69
|
+
const sourceByEpisode = new Map(sourceEpisodes.map((episode) => [episode.episode, episode.sha256]));
|
|
70
|
+
for (const record of skips) {
|
|
71
|
+
const sourceSha256 = sourceByEpisode.get(record.episode);
|
|
72
|
+
if (sourceSha256 === record.source_sha256)
|
|
73
|
+
continue;
|
|
74
|
+
throw new CliError("The video skip ledger no longer matches the source.", {
|
|
75
|
+
exitCode: EXIT_INPUT,
|
|
76
|
+
errorCode: "INGEST_SKIP_SOURCE_MISMATCH",
|
|
77
|
+
hint: "Restore the source episode recorded by this workspace, or rebuild the same source with --force.",
|
|
78
|
+
data: {
|
|
79
|
+
actual: [
|
|
80
|
+
`episode=${record.episode}`,
|
|
81
|
+
`ledger_sha256=${record.source_sha256}`,
|
|
82
|
+
`source_sha256=${sourceSha256 ?? "<missing>"}`,
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function skippedEpisodeDoc(episode) {
|
|
89
|
+
return {
|
|
90
|
+
episode,
|
|
91
|
+
synopsis: "",
|
|
92
|
+
scenes: [],
|
|
93
|
+
actors: [],
|
|
94
|
+
locations: [],
|
|
95
|
+
props: [],
|
|
96
|
+
speakers: [],
|
|
97
|
+
actorStates: [],
|
|
98
|
+
locationStates: [],
|
|
99
|
+
propStates: [],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function readAcceptedVideoDocs(store, episodes, acceptedThrough, skips) {
|
|
103
|
+
const skipped = new Set(skips.map((record) => record.episode));
|
|
104
|
+
const docs = [];
|
|
105
|
+
for (const episode of episodes) {
|
|
106
|
+
if (episode.episode > acceptedThrough)
|
|
107
|
+
break;
|
|
108
|
+
const rel = `ep/ep_${String(episode.episode).padStart(3, "0")}.json`;
|
|
109
|
+
if (store.has(rel))
|
|
110
|
+
docs.push(store.readJson(rel));
|
|
111
|
+
else if (skipped.has(episode.episode))
|
|
112
|
+
docs.push(skippedEpisodeDoc(episode.episode));
|
|
113
|
+
}
|
|
114
|
+
return docs;
|
|
115
|
+
}
|
|
116
|
+
export function reconcileVideoSkips(store, ctx, skips) {
|
|
117
|
+
for (const record of skips) {
|
|
118
|
+
if (record.episode <= ctx.lastEpisode) {
|
|
119
|
+
store.clearError(`ep/ep_${String(record.episode).padStart(3, "0")}.error.json`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const byEpisode = new Map(skips.map((record) => [record.episode, record]));
|
|
123
|
+
for (;;) {
|
|
124
|
+
const next = ctx.lastEpisode + 1;
|
|
125
|
+
if (!byEpisode.has(next))
|
|
126
|
+
break;
|
|
127
|
+
advanceSkippedEpisode(ctx, next);
|
|
128
|
+
store.writeJson("context.json", ctx);
|
|
129
|
+
store.clearError(`ep/ep_${String(next).padStart(3, "0")}.error.json`);
|
|
130
|
+
}
|
|
131
|
+
return ctx;
|
|
132
|
+
}
|
|
133
|
+
export function markSkippedEpisodes(script, skips) {
|
|
134
|
+
for (const record of skips) {
|
|
135
|
+
const episode = script.episodes[record.episode - 1];
|
|
136
|
+
if (!episode)
|
|
137
|
+
continue;
|
|
138
|
+
episode.extend = {
|
|
139
|
+
scriptctl: {
|
|
140
|
+
ingest: {
|
|
141
|
+
outcome: "skipped",
|
|
142
|
+
source_episode: record.episode,
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=video-skip-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-skip-state.js","sourceRoot":"","sources":["../../../src/usecases/ingest/video-skip-state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ name: scriptctl
|
|
|
3
3
|
description: "剧本 script.json 的本地查询、文件化批量写作、原子精修、素材 ingest 与 revision publish CLI。处理 Script v3/v4、两个 script.json、剧本资产/state、Action、场景引用或 authoring 时使用。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "0.27.11"
|
|
6
|
-
scriptctl_version: "0.
|
|
6
|
+
scriptctl_version: "0.57.0"
|
|
7
7
|
author: "official"
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -53,7 +53,7 @@ Agent 直接运行命令并阅读结果属于正常使用,使用默认文本
|
|
|
53
53
|
|
|
54
54
|
- 普通命令默认读取 `<cwd>/workspace/script.json`;操作其他文件时始终显式传
|
|
55
55
|
`-p <file>`。
|
|
56
|
-
- `-w` 只属于 `ingest
|
|
56
|
+
- `-w` 只属于 `ingest` 命令族和 `view`。
|
|
57
57
|
- 同时处理原剧与目标剧时,每条命令都显式带对应 `-p`,只从原剧读,
|
|
58
58
|
只向目标剧写。
|
|
59
59
|
- `checkout` 不覆盖未管理文件或本地修改;`publish` 按工作副本 revision 严格写入。
|
|
@@ -53,7 +53,23 @@ scriptctl ingest -s uploads/正片/ -w workspaces/正片 --step
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
JSON 输出包含 `completed`、`remaining`、`complete` 和 `next_episode`。完成后再次调用是
|
|
56
|
-
`processed=0` 的幂等 no-op。集与集之间依赖累计 context
|
|
56
|
+
`processed=0` 的幂等 no-op。集与集之间依赖累计 context,因此只能解析或人工跳过当前
|
|
57
|
+
`next_episode`,不能越过它处理后面的集。
|
|
58
|
+
|
|
59
|
+
### 手动跳过失败视频集
|
|
60
|
+
|
|
61
|
+
某集已经产生 typed `ep/ep_NNN.error.json`,确认继续重试也无法解析时,可以把当前
|
|
62
|
+
`next_episode` 人工接受为空集:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
scriptctl ingest skip -w workspaces/正片 --episode 7 --reason "多模型均被合规拦截"
|
|
66
|
+
scriptctl ingest -s uploads/正片/ -w workspaces/正片
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
跳过记录写入 `skipped.json`,其中保留原因、源视频哈希和原始 typed failure;`script.json`
|
|
70
|
+
对应集的 `scenes` 为空,并在 `extend.scriptctl.ingest` 标记 `outcome=skipped`。后续集 context
|
|
71
|
+
会明确提示该集剧情未知。命令只接受当前失败集,重复执行为幂等 no-op;`--force` 重建会清空
|
|
72
|
+
跳过记录。
|
|
57
73
|
|
|
58
74
|
### 视频上传与 provider
|
|
59
75
|
|
|
@@ -77,7 +93,7 @@ scriptctl ingest -s uploads/正片/ -w workspaces/正片 \
|
|
|
77
93
|
- `--fps <n>`:视频采样帧率(>1 解锁亚秒级时间码)。默认 3。
|
|
78
94
|
- `--step`:视频每次只处理下一个未完成集。
|
|
79
95
|
- `--upload-mode <file-api|base64>`:视频媒体传输方式,默认 `file-api`。
|
|
80
|
-
- `--force`:当前视频 pipeline
|
|
96
|
+
- `--force`:当前视频 pipeline 的**同源**工作区可清掉产物和人工跳过记录重跑(**不能换源,也不能升级旧 pipeline workspace**)。
|
|
81
97
|
|
|
82
98
|
管线(了解即可,产物都在 `workspace/`):
|
|
83
99
|
- **文本**:正文起点定位 → 切块 → 生产化归一 → 合并组装 `body.json` → 串行资产/身份/state 治理 → V3 中间校验 → 稳定 V4 身份分配 → V4 校验与生产规范 warning → `script.json`。
|
|
@@ -112,7 +128,7 @@ scriptctl ingest -s uploads/正片/ -w workspaces/正片 \
|
|
|
112
128
|
|
|
113
129
|
```bash
|
|
114
130
|
scriptctl ingest status # 人读:kind / state / 各 pass 进度(transcribe 40/57 (2 failed) ...)
|
|
115
|
-
scriptctl ingest status -j # 机器输出含 failure_summary / errors[];视频另含 completed /
|
|
131
|
+
scriptctl ingest status -j # 机器输出含 failure_summary / errors[];视频另含 completed / parsed / skipped / skipped_episodes / complete / next_episode
|
|
116
132
|
scriptctl view # 生成 workspace/review.html(视频版可点击定位到画面)
|
|
117
133
|
scriptctl view --watch [--port N]# 实时监听面板:分阶段进度条 + 逐集 context/决策 + 产物树,自动刷新(跑中也能开)。🔴 仅本地用,**沙箱内不要用**(起阻塞服务+开浏览器,会挂住;沙箱看进度用 `ingest status`)
|
|
118
134
|
scriptctl summary -p workspace/script.json # 抽完当普通剧本读
|
|
@@ -127,6 +143,10 @@ scriptctl summary -p workspace/script.json # 抽完当普通剧本读
|
|
|
127
143
|
数量和 `by_type`。`state` 仍只表示管线生命周期,合规拦截表现为
|
|
128
144
|
`state=failed` + `failure_type=policy`。
|
|
129
145
|
|
|
146
|
+
人工跳过后,该集从活动 `errors[]` 移入 `skips[]`;全部集都已解析或跳过时仍可为
|
|
147
|
+
`state=ready` / `complete=true`,同时 `has_skips=true`。消费方据此区分“管线已完成”和
|
|
148
|
+
“内容是否完整”。
|
|
149
|
+
|
|
130
150
|
## 四、🔴 抖动与重跑(大规模转剧本的常态)
|
|
131
151
|
|
|
132
152
|
模型抖动 / 限流 / 单集超时 / 偶发解析失败在几十集体量下**是正常现象,不是 bug**。先看
|
|
@@ -141,10 +161,12 @@ scriptctl summary -p workspace/script.json # 抽完当普通剧本读
|
|
|
141
161
|
| `INGEST_SOURCE_MISMATCH` | 工作区是别的 source,或已接受的视频分集前缀发生变化 | 恢复原分集前缀;确实要换源时使用新的 `-w`,**别 `--force` 硬覆盖** |
|
|
142
162
|
| `INGEST_VIDEO_SEQUENCE` | 视频集号没有组成从 1 开始的连续序列 | 补齐缺集或修正文件名后重跑 |
|
|
143
163
|
| `INGEST_VIDEO_INLINE_TOO_LARGE` | 自动转码后的文件达到 Gemini inline base64 上限 | 改用 `--upload-mode file-api` |
|
|
164
|
+
| `INGEST_SKIP_*` | 手动跳过目标不是当前失败集,或 workspace / sidecar / ledger 不满足要求 | 读取 `ingest status -j`,只对 `next_episode` 且已有 typed error sidecar 的视频集执行 `ingest skip` |
|
|
144
165
|
| `INGEST_VALIDATION_FAILED` | 最终校验没过 | 看 `workspace/validation.json` 的具体报错,修复后再 `publish` |
|
|
145
166
|
| 持续 401/403/404 / 模型路由错 | 网关/密钥/模型环境问题(不是抖动,重跑也不好) | 如实告诉用户,别反复空跑、别编造成功。视频需 `GEMINI_API_KEY` |
|
|
146
167
|
|
|
147
|
-
🔴 **绝不**:清工作区、删 checkpoint
|
|
168
|
+
🔴 **绝不**:清工作区、删 checkpoint、手塞/手改中间文件来绕过失败。retryable 失败使用同源
|
|
169
|
+
重跑;确认无法解析的当前视频集使用 `ingest skip`,由命令原子维护 ledger、context 和空集产物。
|
|
148
170
|
|
|
149
171
|
## 五、入库 `publish`
|
|
150
172
|
|