videobook-engine 4.2.0 → 5.3.2
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/README.md +84 -39
- package/dist/artifacts.d.ts +5 -10
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +79 -142
- package/dist/artifacts.js.map +1 -1
- package/dist/books.d.ts +1 -1
- package/dist/books.d.ts.map +1 -1
- package/dist/books.js +16 -9
- package/dist/books.js.map +1 -1
- package/dist/cas.d.ts +2 -1
- package/dist/cas.d.ts.map +1 -1
- package/dist/cas.js +33 -4
- package/dist/cas.js.map +1 -1
- package/dist/catalog-gc-state.d.ts +4 -0
- package/dist/catalog-gc-state.d.ts.map +1 -0
- package/dist/catalog-gc-state.js +49 -0
- package/dist/catalog-gc-state.js.map +1 -0
- package/dist/catalog-metadata.d.ts +2 -2
- package/dist/catalog-metadata.js +3 -3
- package/dist/catalog-metadata.js.map +1 -1
- package/dist/context.d.ts +5 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +17 -49
- package/dist/context.js.map +1 -1
- package/dist/domain.d.ts +35 -2
- package/dist/domain.d.ts.map +1 -1
- package/dist/domain.js +131 -161
- package/dist/domain.js.map +1 -1
- package/dist/edits.js +2 -2
- package/dist/edits.js.map +1 -1
- package/dist/engine-types.d.ts +159 -39
- package/dist/engine-types.d.ts.map +1 -1
- package/dist/engine-types.js +2 -1
- package/dist/engine-types.js.map +1 -1
- package/dist/engine.d.ts +30 -20
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +46 -4
- package/dist/engine.js.map +1 -1
- package/dist/files.d.ts +10 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +49 -2
- package/dist/files.js.map +1 -1
- package/dist/fork.d.ts +14 -30
- package/dist/fork.d.ts.map +1 -1
- package/dist/fork.js +18 -27
- package/dist/fork.js.map +1 -1
- package/dist/generations.d.ts +9 -0
- package/dist/generations.d.ts.map +1 -0
- package/dist/generations.js +175 -0
- package/dist/generations.js.map +1 -0
- package/dist/history.d.ts +2 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +30 -57
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/inline-temporal-models.d.ts +43 -0
- package/dist/inline-temporal-models.d.ts.map +1 -0
- package/dist/inline-temporal-models.js +236 -0
- package/dist/inline-temporal-models.js.map +1 -0
- package/dist/isolated-models.d.ts +8 -0
- package/dist/isolated-models.d.ts.map +1 -0
- package/dist/isolated-models.js +25 -0
- package/dist/isolated-models.js.map +1 -0
- package/dist/job-queue.d.ts +1 -1
- package/dist/job-queue.d.ts.map +1 -1
- package/dist/job-queue.js +20 -6
- package/dist/job-queue.js.map +1 -1
- package/dist/media-image.d.ts +8 -0
- package/dist/media-image.d.ts.map +1 -0
- package/dist/media-image.js +41 -0
- package/dist/media-image.js.map +1 -0
- package/dist/media-process.d.ts +13 -0
- package/dist/media-process.d.ts.map +1 -0
- package/dist/media-process.js +89 -0
- package/dist/media-process.js.map +1 -0
- package/dist/media.d.ts +3 -3
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +5 -5
- package/dist/media.js.map +1 -1
- package/dist/merge-policy.d.ts +16 -36
- package/dist/merge-policy.d.ts.map +1 -1
- package/dist/merge-policy.js +13 -125
- package/dist/merge-policy.js.map +1 -1
- package/dist/metadata.d.ts +1 -0
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +13 -3
- package/dist/metadata.js.map +1 -1
- package/dist/migrate-grid-text.d.ts +17 -0
- package/dist/migrate-grid-text.d.ts.map +1 -0
- package/dist/migrate-grid-text.js +117 -0
- package/dist/migrate-grid-text.js.map +1 -0
- package/dist/migrate-grid-v22.d.ts +12 -0
- package/dist/migrate-grid-v22.d.ts.map +1 -0
- package/dist/migrate-grid-v22.js +166 -0
- package/dist/migrate-grid-v22.js.map +1 -0
- package/dist/migrate-grid-v23.d.ts +10 -0
- package/dist/migrate-grid-v23.d.ts.map +1 -0
- package/dist/migrate-grid-v23.js +31 -0
- package/dist/migrate-grid-v23.js.map +1 -0
- package/dist/migration-notebooks.d.ts +25 -0
- package/dist/migration-notebooks.d.ts.map +1 -0
- package/dist/migration-notebooks.js +131 -0
- package/dist/migration-notebooks.js.map +1 -0
- package/dist/migration-source.d.ts +6 -0
- package/dist/migration-source.d.ts.map +1 -0
- package/dist/migration-source.js +37 -0
- package/dist/migration-source.js.map +1 -0
- package/dist/migration-timeline.d.ts +36 -0
- package/dist/migration-timeline.d.ts.map +1 -0
- package/dist/migration-timeline.js +187 -0
- package/dist/migration-timeline.js.map +1 -0
- package/dist/migration-validation.d.ts +12 -0
- package/dist/migration-validation.d.ts.map +1 -0
- package/dist/migration-validation.js +68 -0
- package/dist/migration-validation.js.map +1 -0
- package/dist/migration.d.ts.map +1 -1
- package/dist/migration.js +220 -119
- package/dist/migration.js.map +1 -1
- package/dist/model-cache-paths.d.ts +2 -0
- package/dist/model-cache-paths.d.ts.map +1 -0
- package/dist/model-cache-paths.js +5 -0
- package/dist/model-cache-paths.js.map +1 -0
- package/dist/model-checksums.json +338 -0
- package/dist/model-file-resolver.d.ts +30 -0
- package/dist/model-file-resolver.d.ts.map +1 -0
- package/dist/model-file-resolver.js +304 -0
- package/dist/model-file-resolver.js.map +1 -0
- package/dist/model-identity.d.ts +13 -0
- package/dist/model-identity.d.ts.map +1 -0
- package/dist/model-identity.js +44 -0
- package/dist/model-identity.js.map +1 -0
- package/dist/model-worker-errors.d.ts +3 -0
- package/dist/model-worker-errors.d.ts.map +1 -0
- package/dist/model-worker-errors.js +12 -0
- package/dist/model-worker-errors.js.map +1 -0
- package/dist/model-worker-pool.d.ts +32 -0
- package/dist/model-worker-pool.d.ts.map +1 -0
- package/dist/model-worker-pool.js +269 -0
- package/dist/model-worker-pool.js.map +1 -0
- package/dist/model-worker-protocol.d.ts +42 -0
- package/dist/model-worker-protocol.d.ts.map +1 -0
- package/dist/model-worker-protocol.js +2 -0
- package/dist/model-worker-protocol.js.map +1 -0
- package/dist/model-worker.d.ts +2 -0
- package/dist/model-worker.d.ts.map +1 -0
- package/dist/model-worker.js +91 -0
- package/dist/model-worker.js.map +1 -0
- package/dist/mvp-contract-fixtures.js +1 -1
- package/dist/mvp-contract-fixtures.js.map +1 -1
- package/dist/mvp-contracts.d.ts +32 -8
- package/dist/mvp-contracts.d.ts.map +1 -1
- package/dist/mvp-contracts.js +1 -1
- package/dist/mvp-contracts.js.map +1 -1
- package/dist/notebook/types.d.ts +1 -29
- package/dist/notebook/types.d.ts.map +1 -1
- package/dist/notebook-grid.d.ts +46 -0
- package/dist/notebook-grid.d.ts.map +1 -0
- package/dist/notebook-grid.js +187 -0
- package/dist/notebook-grid.js.map +1 -0
- package/dist/notebook-media-artifact.d.ts +23 -0
- package/dist/notebook-media-artifact.d.ts.map +1 -0
- package/dist/notebook-media-artifact.js +67 -0
- package/dist/notebook-media-artifact.js.map +1 -0
- package/dist/notebook-mentions.d.ts +20 -0
- package/dist/notebook-mentions.d.ts.map +1 -0
- package/dist/notebook-mentions.js +54 -0
- package/dist/notebook-mentions.js.map +1 -0
- package/dist/runtime-services.js +4 -9
- package/dist/runtime-services.js.map +1 -1
- package/dist/schema.d.ts +4 -19
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +66 -92
- package/dist/schema.js.map +1 -1
- package/dist/search-provider-access.d.ts +11 -0
- package/dist/search-provider-access.d.ts.map +1 -0
- package/dist/search-provider-access.js +42 -0
- package/dist/search-provider-access.js.map +1 -0
- package/dist/similarity.d.ts +60 -1
- package/dist/similarity.d.ts.map +1 -1
- package/dist/similarity.js +174 -154
- package/dist/similarity.js.map +1 -1
- package/dist/status.js +8 -10
- package/dist/status.js.map +1 -1
- package/dist/store.d.ts +16 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +171 -17
- package/dist/store.js.map +1 -1
- package/dist/temporal-index-cache.d.ts +13 -0
- package/dist/temporal-index-cache.d.ts.map +1 -0
- package/dist/temporal-index-cache.js +59 -0
- package/dist/temporal-index-cache.js.map +1 -0
- package/dist/temporal-model-manifests.d.ts +17 -0
- package/dist/temporal-model-manifests.d.ts.map +1 -0
- package/dist/temporal-model-manifests.js +33 -0
- package/dist/temporal-model-manifests.js.map +1 -0
- package/dist/temporal-models.d.ts +20 -35
- package/dist/temporal-models.d.ts.map +1 -1
- package/dist/temporal-models.js +23 -257
- package/dist/temporal-models.js.map +1 -1
- package/dist/temporal-search.d.ts +6 -3
- package/dist/temporal-search.d.ts.map +1 -1
- package/dist/temporal-search.js +438 -122
- package/dist/temporal-search.js.map +1 -1
- package/dist/temporal-vector-index.d.ts +46 -0
- package/dist/temporal-vector-index.d.ts.map +1 -0
- package/dist/temporal-vector-index.js +220 -0
- package/dist/temporal-vector-index.js.map +1 -0
- package/dist/third-party/@huggingface-jinja.LICENSE +21 -0
- package/dist/third-party/@huggingface-tokenizers.LICENSE +201 -0
- package/dist/third-party/@huggingface-transformers.LICENSE +202 -0
- package/dist/third-party/onnxruntime-common.LICENSE +21 -0
- package/dist/third-party/versions.json +23 -0
- package/dist/transformers-runtime.d.ts +2 -0
- package/dist/transformers-runtime.d.ts.map +1 -0
- package/dist/transformers-runtime.js +33014 -0
- package/dist/transformers-runtime.js.LEGAL.txt +12 -0
- package/dist/transformers-runtime.js.map +7 -0
- package/docs/doltlite-staging.md +69 -0
- package/docs/edit-performance.md +83 -0
- package/docs/engine-layout.md +56 -50
- package/docs/media-limits.md +57 -0
- package/docs/model-download-policy.md +15 -0
- package/docs/model-integrity.md +72 -0
- package/docs/model-isolation.md +72 -0
- package/docs/model-revisions.md +54 -0
- package/docs/mvp-prd.md +2 -2
- package/docs/release-evidence.md +300 -0
- package/docs/search-provider-consent.md +67 -0
- package/docs/semantic-durability.md +55 -0
- package/docs/temporal-search-performance.md +260 -0
- package/docs/v4-migration.md +83 -0
- package/fixtures/v5/contract-fixtures.json +4 -4
- package/package.json +31 -13
- package/dist/artifact-names.d.ts +0 -6
- package/dist/artifact-names.d.ts.map +0 -1
- package/dist/artifact-names.js +0 -56
- package/dist/artifact-names.js.map +0 -1
- package/dist/resolver.d.ts +0 -15
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js +0 -81
- package/dist/resolver.js.map +0 -1
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { extname } from "node:path";
|
|
3
|
+
import { promisify } from "node:util";
|
|
4
|
+
import sharp from "sharp";
|
|
5
|
+
import { v7 as uuidv7 } from "uuid";
|
|
6
|
+
import { MVP_CONTRACT_VERSION } from "./mvp-contracts.js";
|
|
7
|
+
import { sequenceFramesToSourceTicks, sourceTicksToSequenceFrames } from "./mvp-time.js";
|
|
8
|
+
import { EngineFault } from "./store.js";
|
|
9
|
+
export function legacyTimelinePlan(database) {
|
|
10
|
+
const files = database.prepare("SELECT artifact_id, path, object_hash FROM artifact_files ORDER BY artifact_id, path").all();
|
|
11
|
+
const slots = database.prepare(`SELECT s.*, a.kind FROM timeline_slots s JOIN artifacts a ON a.artifact_id=s.artifact_id
|
|
12
|
+
ORDER BY s.ordinal, s.slot_id`).all();
|
|
13
|
+
const audio = database.prepare(`SELECT s.*, a.kind FROM timeline_audio s JOIN artifacts a ON a.artifact_id=s.artifact_id
|
|
14
|
+
ORDER BY s.ordinal, s.audio_id`).all();
|
|
15
|
+
const placements = [];
|
|
16
|
+
const issues = [];
|
|
17
|
+
const add = (legacyId, artifactId, kind, values) => {
|
|
18
|
+
const extensions = kind === "image" ? [".png", ".jpg", ".jpeg", ".webp", ".avif"]
|
|
19
|
+
: kind === "video" ? [".mp4", ".mov", ".webm", ".mkv", ".avi"]
|
|
20
|
+
: [".wav", ".mp3", ".m4a", ".ogg", ".flac", ".aac", ".weba", ".mp4", ".mov", ".webm"];
|
|
21
|
+
const candidates = files.filter((file) => file.artifact_id === artifactId && extensions.includes(extname(file.path).toLowerCase()));
|
|
22
|
+
candidates.sort((left, right) => sourcePriority(left.path, kind) - sourcePriority(right.path, kind) || left.path.localeCompare(right.path));
|
|
23
|
+
const file = candidates[0];
|
|
24
|
+
if (!file) {
|
|
25
|
+
issues.push({ code: "UNSUPPORTED_MEDIA", severity: "error", resource: `timeline:${legacyId}`, message: `No supported ${kind} source file`, details: { artifactId } });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if ([values.volume, values.fadeInMs, values.fadeOutMs].some((value) => value !== null && (!Number.isFinite(value) || value < 0))
|
|
29
|
+
|| (values.startFrame !== undefined && (!Number.isSafeInteger(values.startFrame) || values.startFrame < 0))
|
|
30
|
+
|| (values.durationFrames !== undefined && (!Number.isSafeInteger(values.durationFrames) || values.durationFrames <= 0))) {
|
|
31
|
+
issues.push({ code: "INVALID_REFERENCE", severity: "error", resource: `timeline:${legacyId}`, message: "Invalid legacy placement, volume or fade" });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
placements.push({ legacyId, artifactId, path: file.path, objectHash: file.object_hash, kind, ...values });
|
|
35
|
+
if (kind !== "image")
|
|
36
|
+
issues.push({ code: "PROBE_REQUIRED", severity: "warning", resource: `timeline:${legacyId}`,
|
|
37
|
+
message: `${kind} source will be probed during migration before publishing clips`, details: { artifactId, sourcePath: file.path } });
|
|
38
|
+
};
|
|
39
|
+
for (const slot of slots) {
|
|
40
|
+
if (!["image", "video", "final"].includes(slot.kind)) {
|
|
41
|
+
issues.push({ code: "UNSUPPORTED_MEDIA", severity: "error", resource: `timeline:${slot.slot_id}`, message: `Unsupported video-track artifact kind: ${slot.kind}` });
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
add(slot.slot_id, slot.artifact_id, slot.kind === "image" ? "image" : "video", {
|
|
45
|
+
volume: slot.volume, fadeInMs: slot.audio_fade_in, fadeOutMs: slot.audio_fade_out,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
for (const clip of audio)
|
|
49
|
+
add(clip.audio_id, clip.artifact_id, "audio", {
|
|
50
|
+
startFrame: clip.start_frame, durationFrames: clip.duration_frames,
|
|
51
|
+
volume: clip.volume, fadeInMs: clip.fade_in, fadeOutMs: clip.fade_out,
|
|
52
|
+
});
|
|
53
|
+
return { placements, issues };
|
|
54
|
+
}
|
|
55
|
+
export async function convertLegacyTimeline(engine, plan, objects, request) {
|
|
56
|
+
const sequence = engine.sequences.getPrimary();
|
|
57
|
+
const videoTrack = sequence.tracks.find((track) => track.kind === "video");
|
|
58
|
+
const audioTrack = sequence.tracks.find((track) => track.kind === "audio");
|
|
59
|
+
const streams = new Map();
|
|
60
|
+
const images = new Set();
|
|
61
|
+
const decisions = [];
|
|
62
|
+
let videoEndFrame = 0;
|
|
63
|
+
let audioEndFrame = 0;
|
|
64
|
+
let operations = [];
|
|
65
|
+
const flush = async () => {
|
|
66
|
+
if (!operations.length)
|
|
67
|
+
return;
|
|
68
|
+
const intent = { intentVersion: MVP_CONTRACT_VERSION, commandId: uuidv7(), sequenceId: sequence.sequenceId,
|
|
69
|
+
baseRevision: engine.head, actor: "schema-v4-migration", sourceSurface: "system",
|
|
70
|
+
confirmationPolicy: "always", operations };
|
|
71
|
+
const preview = engine.edits.preview(intent);
|
|
72
|
+
if (!preview.ok)
|
|
73
|
+
throw new EngineFault(preview.error);
|
|
74
|
+
if (!preview.value.valid)
|
|
75
|
+
throw new EngineFault({ code: "INVALID_INPUT", message: "Legacy timeline cannot be represented",
|
|
76
|
+
details: { conflicts: preview.value.conflicts } });
|
|
77
|
+
const committed = await engine.edits.commit(intent, preview.value.previewHash);
|
|
78
|
+
if (!committed.ok)
|
|
79
|
+
throw new EngineFault(committed.error);
|
|
80
|
+
operations = [];
|
|
81
|
+
};
|
|
82
|
+
for (const [index, item] of plan.placements.entries()) {
|
|
83
|
+
if (request.signal?.aborted)
|
|
84
|
+
throw new EngineFault({ code: "CANCELLED", message: "Schema-v4 migration cancelled" });
|
|
85
|
+
const filePath = await objects.ensureLocalPath(item.objectHash);
|
|
86
|
+
let source;
|
|
87
|
+
let durationFrames;
|
|
88
|
+
if (item.kind === "image") {
|
|
89
|
+
if (!images.has(item.objectHash)) {
|
|
90
|
+
const metadata = await sharp(filePath).metadata();
|
|
91
|
+
if (!metadata.width || !metadata.height)
|
|
92
|
+
throw new Error(`Invalid legacy image: ${item.path}`);
|
|
93
|
+
images.add(item.objectHash);
|
|
94
|
+
}
|
|
95
|
+
source = { kind: "still", artifactId: item.artifactId, sourcePath: item.path, objectHash: item.objectHash };
|
|
96
|
+
durationFrames = 90;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const key = `${item.artifactId}:${item.path}:${item.kind}`;
|
|
100
|
+
let stream = streams.get(key);
|
|
101
|
+
if (!stream) {
|
|
102
|
+
const profile = await probeStream(filePath, item.kind, request);
|
|
103
|
+
const registered = await engine.streams.register({ ...profile, artifactId: item.artifactId, sourcePath: item.path, objectHash: item.objectHash });
|
|
104
|
+
if (!registered.ok)
|
|
105
|
+
throw new EngineFault(registered.error);
|
|
106
|
+
stream = registered.value;
|
|
107
|
+
streams.set(key, stream);
|
|
108
|
+
}
|
|
109
|
+
durationFrames = item.durationFrames ?? Math.max(1, sourceTicksToSequenceFrames(stream.durationTicks, stream.timeBase, sequence.frameRate));
|
|
110
|
+
const durationTicks = item.kind === "audio"
|
|
111
|
+
? Math.max(1, Math.min(stream.durationTicks, sequenceFramesToSourceTicks(durationFrames, sequence.frameRate, stream.timeBase)))
|
|
112
|
+
: stream.durationTicks;
|
|
113
|
+
source = { kind: "timed", artifactId: item.artifactId, range: { streamId: stream.streamId, objectHash: item.objectHash,
|
|
114
|
+
startTick: 0, durationTicks, timeBase: stream.timeBase } };
|
|
115
|
+
}
|
|
116
|
+
const timelineStartFrame = item.startFrame ?? videoEndFrame;
|
|
117
|
+
const fadeInFrames = Math.round((item.fadeInMs ?? 0) * 30 / 1000);
|
|
118
|
+
const fadeOutFrames = Math.round((item.fadeOutMs ?? 0) * 30 / 1000);
|
|
119
|
+
if (fadeInFrames + fadeOutFrames > durationFrames) {
|
|
120
|
+
throw new EngineFault({ code: "INVALID_INPUT", message: `Legacy fades exceed the clip duration: ${item.legacyId}`,
|
|
121
|
+
details: { legacyId: item.legacyId, durationFrames, fadeInFrames, fadeOutFrames } });
|
|
122
|
+
}
|
|
123
|
+
const clipId = uuidv7();
|
|
124
|
+
const placement = {
|
|
125
|
+
trackId: item.kind === "audio" ? audioTrack.trackId : videoTrack.trackId, timelineStartFrame, durationFrames, source,
|
|
126
|
+
...(source.kind === "timed" ? { speed: { numerator: 1, denominator: 1 }, reverse: false, audioPolicy: "preserve-pitch" } : {}),
|
|
127
|
+
...(item.kind !== "audio" ? { transform: { fit: "fit", positionX: 0, positionY: 0, scaleX: 1, scaleY: 1,
|
|
128
|
+
anchorX: 0.5, anchorY: 0.5, rotationDegrees: 0, cropTop: 0, cropRight: 0, cropBottom: 0, cropLeft: 0, opacity: 1, blendMode: "normal" } } : {}),
|
|
129
|
+
audio: { gainDb: item.volume === null ? 0 : item.volume === 0 ? -120 : 20 * Math.log10(item.volume / 100),
|
|
130
|
+
muted: item.volume === 0, fadeInFrames, fadeOutFrames },
|
|
131
|
+
};
|
|
132
|
+
if (item.kind === "audio") {
|
|
133
|
+
operations.push({ kind: "insert-clip", clipId, placement: { ...placement, timelineStartFrame: audioEndFrame }, mode: "insert" });
|
|
134
|
+
operations.push({ kind: "move-clip", clipId, trackId: audioTrack.trackId, timelineStartFrame });
|
|
135
|
+
audioEndFrame = Math.max(audioEndFrame, timelineStartFrame + durationFrames);
|
|
136
|
+
}
|
|
137
|
+
else
|
|
138
|
+
operations.push({ kind: "insert-clip", clipId, placement, mode: "overwrite" });
|
|
139
|
+
decisions.push({ legacyId: item.legacyId, clipId, sourcePath: item.path, objectHash: item.objectHash, startFrame: timelineStartFrame, durationFrames });
|
|
140
|
+
if (item.kind !== "audio")
|
|
141
|
+
videoEndFrame += durationFrames;
|
|
142
|
+
if (operations.length >= 100)
|
|
143
|
+
await flush();
|
|
144
|
+
request.onProgress?.({ phase: "copy-timeline", completed: index + 1, total: plan.placements.length });
|
|
145
|
+
}
|
|
146
|
+
if (request.signal?.aborted)
|
|
147
|
+
throw new EngineFault({ code: "CANCELLED", message: "Schema-v4 migration cancelled" });
|
|
148
|
+
await flush();
|
|
149
|
+
return { clips: decisions, videoDurationFrames: videoEndFrame, streams: [...streams.values()], frameRate: sequence.frameRate,
|
|
150
|
+
audioPlacement: "legacy start/duration at 30fps; native playback speed; fades in milliseconds" };
|
|
151
|
+
}
|
|
152
|
+
function sourcePriority(path, kind) {
|
|
153
|
+
if (kind === "audio" && /^audio_original\./i.test(path))
|
|
154
|
+
return 0;
|
|
155
|
+
if (/^original\./i.test(path))
|
|
156
|
+
return 1;
|
|
157
|
+
return 2;
|
|
158
|
+
}
|
|
159
|
+
async function probeStream(filePath, kind, request) {
|
|
160
|
+
const { stdout } = await promisify(execFile)(request.ffprobePath ?? "ffprobe", ["-v", "error", "-show_streams", "-show_format", "-of", "json", filePath], { encoding: "utf8", signal: request.signal, timeout: 60_000, maxBuffer: 4 * 1024 * 1024 });
|
|
161
|
+
const data = JSON.parse(stdout);
|
|
162
|
+
const stream = data.streams?.find((value) => value.codec_type === kind);
|
|
163
|
+
if (!stream)
|
|
164
|
+
throw new EngineFault({ code: "INVALID_INPUT", message: `No ${kind} stream in legacy media` });
|
|
165
|
+
const timeBase = ratio(String(stream.time_base));
|
|
166
|
+
const durationTicks = Number(stream.duration_ts ?? Math.round(Number(stream.duration ?? data.format?.duration) * timeBase.denominator / timeBase.numerator));
|
|
167
|
+
if (!Number.isSafeInteger(durationTicks) || durationTicks <= 0)
|
|
168
|
+
throw new EngineFault({ code: "INVALID_INPUT", message: "Legacy media has no finite positive source duration" });
|
|
169
|
+
const common = { streamIndex: Number(stream.index), kind, timeBase, durationTicks, codec: String(stream.codec_name ?? "unknown") };
|
|
170
|
+
if (kind === "audio")
|
|
171
|
+
return { ...common, audio: { sampleRateHz: Number(stream.sample_rate), channels: Number(stream.channels),
|
|
172
|
+
channelLayout: String(stream.channel_layout ?? (Number(stream.channels) === 1 ? "mono" : Number(stream.channels) === 2 ? "stereo" : "unknown")) } };
|
|
173
|
+
const sideData = stream.side_data_list;
|
|
174
|
+
const tags = stream.tags;
|
|
175
|
+
const rotationDegrees = Number(sideData?.find((value) => value.rotation !== undefined)?.rotation ?? tags?.rotate ?? 0);
|
|
176
|
+
return { ...common, video: { width: Number(stream.width), height: Number(stream.height), rotationDegrees,
|
|
177
|
+
pixelAspect: !stream.sample_aspect_ratio || stream.sample_aspect_ratio === "N/A" || stream.sample_aspect_ratio === "0:1"
|
|
178
|
+
? { numerator: 1, denominator: 1 } : ratio(String(stream.sample_aspect_ratio).replace(":", "/")),
|
|
179
|
+
...(stream.avg_frame_rate && stream.avg_frame_rate !== "0/0" ? { averageFrameRate: ratio(String(stream.avg_frame_rate)) } : {}) } };
|
|
180
|
+
}
|
|
181
|
+
function ratio(value) {
|
|
182
|
+
const [numerator, denominator] = value.split("/").map(Number);
|
|
183
|
+
if (!Number.isSafeInteger(numerator) || !Number.isSafeInteger(denominator) || numerator <= 0 || denominator <= 0)
|
|
184
|
+
throw new Error(`Invalid legacy media ratio: ${value}`);
|
|
185
|
+
return { numerator: numerator, denominator: denominator };
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=migration-timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-timeline.js","sourceRoot":"","sources":["../src/migration-timeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DatabaseSync } from "@dolthub/doltlite";
|
|
2
|
+
import type { MigrationIssue } from "./mvp-contracts.js";
|
|
3
|
+
export declare function legacyReferenceIssues(database: DatabaseSync): MigrationIssue[];
|
|
4
|
+
export declare function legacyStateSummary(database: DatabaseSync): {
|
|
5
|
+
digest: string;
|
|
6
|
+
tables: Array<{
|
|
7
|
+
table: string;
|
|
8
|
+
rows: number;
|
|
9
|
+
digest: string;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=migration-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-validation.d.ts","sourceRoot":"","sources":["../src/migration-validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAgBzD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,EAAE,CAgC9E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG;IAC1D,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChF,CASA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
const REFERENCES = [
|
|
3
|
+
["artifact_files", "artifact_id", "artifacts", "artifact_id"],
|
|
4
|
+
["artifact_files", "object_hash", "objects", "object_hash"],
|
|
5
|
+
["artifact_metadata", "artifact_id", "artifacts", "artifact_id"],
|
|
6
|
+
["cells", "notebook_id", "notebooks", "notebook_id"],
|
|
7
|
+
["cells", "entity_id", "entities", "entity_id"],
|
|
8
|
+
["cells", "output_artifact_id", "artifacts", "artifact_id"],
|
|
9
|
+
["runs", "notebook_id", "notebooks", "notebook_id"],
|
|
10
|
+
["timeline", "book_id", "book", "book_id"],
|
|
11
|
+
["timeline_slots", "artifact_id", "artifacts", "artifact_id"],
|
|
12
|
+
["timeline_audio", "artifact_id", "artifacts", "artifact_id"],
|
|
13
|
+
["audio_waveforms", "artifact_id", "artifacts", "artifact_id"],
|
|
14
|
+
];
|
|
15
|
+
export function legacyReferenceIssues(database) {
|
|
16
|
+
const issues = [];
|
|
17
|
+
for (const [table, field, parent, parentField] of REFERENCES) {
|
|
18
|
+
const missing = database.prepare(`SELECT c.${field} AS id FROM ${table} c
|
|
19
|
+
LEFT JOIN ${parent} p ON p.${parentField}=c.${field}
|
|
20
|
+
WHERE c.${field} IS NOT NULL AND p.${parentField} IS NULL`).all();
|
|
21
|
+
for (const row of missing)
|
|
22
|
+
issues.push(invalid(`${table}:${row.id}`, `Missing ${parent} reference from ${table}.${field}`));
|
|
23
|
+
}
|
|
24
|
+
for (const field of ["source_cell_id", "target_cell_id"]) {
|
|
25
|
+
const missing = database.prepare(`SELECT e.edge_id FROM edges e LEFT JOIN cells c
|
|
26
|
+
ON c.notebook_id=e.notebook_id AND c.cell_id=e.${field}
|
|
27
|
+
WHERE c.cell_id IS NULL`).all();
|
|
28
|
+
for (const row of missing)
|
|
29
|
+
issues.push(invalid(`edge:${row.edge_id}`, `Missing notebook-local ${field}`));
|
|
30
|
+
}
|
|
31
|
+
const files = database.prepare("SELECT artifact_id, path, object_hash FROM artifact_files").all();
|
|
32
|
+
for (const file of files) {
|
|
33
|
+
if (!file.path || file.path.startsWith("/") || file.path.includes("\\") || file.path.includes("\0")
|
|
34
|
+
|| file.path.split("/").some((part) => part === "." || part === ".." || part === "")) {
|
|
35
|
+
issues.push(invalid(`artifact:${file.artifact_id}`, `Invalid source file path: ${file.path}`));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
for (const [table, field] of [["book_metadata", "value_json"], ["artifact_metadata", "value_json"], ["entities", "data_json"],
|
|
39
|
+
["runs", "cell_order_json"], ["runs", "outputs_json"], ["prompt_entries", "context_json"], ["messages", "body_json"], ["audio_waveforms", "peaks_json"]]) {
|
|
40
|
+
const rows = database.prepare(`SELECT ${field} AS value FROM ${table}`).all();
|
|
41
|
+
for (const row of rows) {
|
|
42
|
+
try {
|
|
43
|
+
JSON.parse(row.value);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
issues.push(invalid(`${table}:${field}`, "Malformed JSON in legacy semantic state"));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return issues;
|
|
51
|
+
}
|
|
52
|
+
export function legacyStateSummary(database) {
|
|
53
|
+
const names = database.prepare("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").all();
|
|
54
|
+
const tables = names.filter(({ name }) => !name.startsWith("runtime_") && !name.startsWith("sqlite_") && !name.startsWith("dolt_"))
|
|
55
|
+
.map(({ name }) => {
|
|
56
|
+
const rows = database.prepare(`SELECT * FROM "${name.replaceAll('"', '""')}"`).all();
|
|
57
|
+
const encoded = rows.map((row) => JSON.stringify(row, (_, value) => typeof value === "bigint" ? String(value) : value)).sort();
|
|
58
|
+
return { table: name, rows: rows.length, digest: digest(encoded) };
|
|
59
|
+
});
|
|
60
|
+
return { digest: digest(tables), tables };
|
|
61
|
+
}
|
|
62
|
+
function digest(value) {
|
|
63
|
+
return `sha256:${createHash("sha256").update(JSON.stringify(value)).digest("hex")}`;
|
|
64
|
+
}
|
|
65
|
+
function invalid(resource, message) {
|
|
66
|
+
return { code: "INVALID_REFERENCE", severity: "error", resource, message };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=migration-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-validation.js","sourceRoot":"","sources":["../src/migration-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/migration.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACP,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAwC5B,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAgExC;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,WAAW,CAAC,CAqBvD;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,EAAE,WAAW,CAAC,CAAC,CA8MrE"}
|