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,117 @@
|
|
|
1
|
+
const REWRITE_TARGETS = [
|
|
2
|
+
{
|
|
3
|
+
table: "cells",
|
|
4
|
+
idColumn: "cell_id",
|
|
5
|
+
columns: ["prompt", "label", "inputs_json"],
|
|
6
|
+
scope: "notebook",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
table: "generations",
|
|
10
|
+
idColumn: "generation_id",
|
|
11
|
+
columns: ["prompt", "resolved_prompt"],
|
|
12
|
+
scope: "notebook",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
table: "notebook_generation_plans",
|
|
16
|
+
idColumn: "plan_id",
|
|
17
|
+
columns: ["plan_json"],
|
|
18
|
+
scope: "notebook",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
table: "notebook_run_plans",
|
|
22
|
+
idColumn: "plan_id",
|
|
23
|
+
columns: ["plan_json", "outputs_json"],
|
|
24
|
+
scope: "notebook",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
table: "entities",
|
|
28
|
+
idColumn: "entity_id",
|
|
29
|
+
columns: ["prompt", "description", "data_json"],
|
|
30
|
+
scope: "book",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
table: "prompt_entries",
|
|
34
|
+
idColumn: "prompt_id",
|
|
35
|
+
columns: ["prompt", "context_json"],
|
|
36
|
+
scope: "book",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
table: "messages",
|
|
40
|
+
idColumn: "message_id",
|
|
41
|
+
columns: ["body_json"],
|
|
42
|
+
scope: "book",
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
function tableExists(db, name) {
|
|
46
|
+
const row = db
|
|
47
|
+
.prepare("SELECT 1 AS present FROM sqlite_master WHERE type='table' AND name=?")
|
|
48
|
+
.get(name);
|
|
49
|
+
return row?.present === 1;
|
|
50
|
+
}
|
|
51
|
+
function tableColumns(db, name) {
|
|
52
|
+
const rows = db.prepare(`PRAGMA table_info(${name})`).all();
|
|
53
|
+
return new Set(rows.map((row) => row.name));
|
|
54
|
+
}
|
|
55
|
+
function tableHasColumns(db, name, columns) {
|
|
56
|
+
if (!tableExists(db, name))
|
|
57
|
+
return false;
|
|
58
|
+
const present = tableColumns(db, name);
|
|
59
|
+
return columns.every((column) => present.has(column));
|
|
60
|
+
}
|
|
61
|
+
function keyColumns(target) {
|
|
62
|
+
return target.scope === "notebook"
|
|
63
|
+
? ["notebook_id", target.idColumn]
|
|
64
|
+
: [target.idColumn];
|
|
65
|
+
}
|
|
66
|
+
function rewrittenValues(row, columns, rewrite) {
|
|
67
|
+
const values = [];
|
|
68
|
+
let changed = false;
|
|
69
|
+
for (const column of columns) {
|
|
70
|
+
const current = row[column];
|
|
71
|
+
if (typeof current !== "string") {
|
|
72
|
+
values.push(current ?? null);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const next = rewrite(current);
|
|
76
|
+
values.push(next);
|
|
77
|
+
if (next !== current)
|
|
78
|
+
changed = true;
|
|
79
|
+
}
|
|
80
|
+
return { values, changed };
|
|
81
|
+
}
|
|
82
|
+
function rewriteTarget(db, target, resolve) {
|
|
83
|
+
const keys = keyColumns(target);
|
|
84
|
+
if (!tableHasColumns(db, target.table, [...keys, ...target.columns])) {
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
const rows = db
|
|
88
|
+
.prepare(`SELECT ${[...keys, ...target.columns].join(", ")} FROM ${target.table}`)
|
|
89
|
+
.all();
|
|
90
|
+
const assignments = target.columns.map((column) => `${column}=?`).join(", ");
|
|
91
|
+
const where = keys.map((column) => `${column}=?`).join(" AND ");
|
|
92
|
+
const update = db.prepare(`UPDATE ${target.table} SET ${assignments} WHERE ${where}`);
|
|
93
|
+
let rewritten = 0;
|
|
94
|
+
for (const row of rows) {
|
|
95
|
+
const rewrite = resolve(target.scope === "notebook" ? String(row.notebook_id) : null);
|
|
96
|
+
const next = rewrittenValues(row, target.columns, rewrite);
|
|
97
|
+
if (!next.changed)
|
|
98
|
+
continue;
|
|
99
|
+
update.run(...next.values, ...keys.map((column) => row[column]));
|
|
100
|
+
rewritten += 1;
|
|
101
|
+
}
|
|
102
|
+
return rewritten;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Rewrite every stored grid mention in a catalog: notebook-scoped text (cells,
|
|
106
|
+
* generations, plans) through the rewriter for its notebook, book-wide text
|
|
107
|
+
* (entities, prompt entries, messages) through the `null` rewriter. Tables or
|
|
108
|
+
* columns that a catalog lacks are skipped. Returns the number of rows changed.
|
|
109
|
+
*/
|
|
110
|
+
export function rewriteCatalogMentions(db, resolve) {
|
|
111
|
+
let rewritten = 0;
|
|
112
|
+
for (const target of REWRITE_TARGETS) {
|
|
113
|
+
rewritten += rewriteTarget(db, target, resolve);
|
|
114
|
+
}
|
|
115
|
+
return rewritten;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=migrate-grid-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-grid-text.js","sourceRoot":"","sources":["../src/migrate-grid-text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DatabaseSync } from "@dolthub/doltlite";
|
|
2
|
+
import type { NotebookGridSlot } from "./notebook/types.js";
|
|
3
|
+
interface V22GridMigrationResult {
|
|
4
|
+
relocated: number;
|
|
5
|
+
rewritten: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function parseV22GridAddress(value: string): NotebookGridSlot | undefined;
|
|
8
|
+
export declare function relocateV22Slots(slots: readonly NotebookGridSlot[]): Map<string, NotebookGridSlot>;
|
|
9
|
+
export declare function rewriteV22Mentions(text: string, slotMap: ReadonlyMap<string, NotebookGridSlot>): string;
|
|
10
|
+
export declare function applyV22NotebookGridMigration(db: DatabaseSync): V22GridMigrationResult;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=migrate-grid-v22.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-grid-v22.d.ts","sourceRoot":"","sources":["../src/migrate-grid-v22.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAuB5D,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GACZ,gBAAgB,GAAG,SAAS,CAO9B;AAuBD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA4B/B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC7C,MAAM,CAgBR;AA6CD,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,YAAY,GACf,sBAAsB,CA0DxB"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { SCHEMA_VERSION } from "./catalog-metadata.js";
|
|
2
|
+
import { NOTEBOOK_GRID_COLUMN_COUNT, NOTEBOOK_GRID_ROW_COUNT, notebookGridAddress, } from "./notebook-grid.js";
|
|
3
|
+
import { rewriteCatalogMentions } from "./migrate-grid-text.js";
|
|
4
|
+
import { CELLS_TABLE_DEFINITION } from "./schema.js";
|
|
5
|
+
const V22_ADDRESS_SOURCE = "[a-z](?:1[0-3]|[1-9])";
|
|
6
|
+
const V22_MENTION_PATTERN = new RegExp(`@(${V22_ADDRESS_SOURCE})(?![\\w-])`, "giu");
|
|
7
|
+
const V22_ADDRESS_PATTERN = new RegExp(`^${V22_ADDRESS_SOURCE}$`, "iu");
|
|
8
|
+
function slotKey(slot) {
|
|
9
|
+
return `${slot.row}:${slot.column}`;
|
|
10
|
+
}
|
|
11
|
+
export function parseV22GridAddress(value) {
|
|
12
|
+
const address = value.trim().replace(/^@/u, "").toLowerCase();
|
|
13
|
+
if (!V22_ADDRESS_PATTERN.test(address))
|
|
14
|
+
return undefined;
|
|
15
|
+
return {
|
|
16
|
+
row: address.charCodeAt(0) - 97,
|
|
17
|
+
column: Number(address.slice(1)) - 1,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function firstFreeSlot(occupied, startRow = 0) {
|
|
21
|
+
for (let row = startRow; row < NOTEBOOK_GRID_ROW_COUNT; row += 1) {
|
|
22
|
+
for (let column = 0; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
23
|
+
if (!occupied.has(slotKey({ row, column }))) {
|
|
24
|
+
return { row, column };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (let row = 0; row < startRow; row += 1) {
|
|
29
|
+
for (let column = 0; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
30
|
+
if (!occupied.has(slotKey({ row, column }))) {
|
|
31
|
+
return { row, column };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
throw new Error("Cannot migrate: the 8x64 notebook grid is full");
|
|
36
|
+
}
|
|
37
|
+
export function relocateV22Slots(slots) {
|
|
38
|
+
const relocated = new Map();
|
|
39
|
+
const kept = [];
|
|
40
|
+
const overflow = [];
|
|
41
|
+
for (const slot of slots) {
|
|
42
|
+
if (slot.column >= 0
|
|
43
|
+
&& slot.column < NOTEBOOK_GRID_COLUMN_COUNT
|
|
44
|
+
&& slot.row >= 0
|
|
45
|
+
&& slot.row < NOTEBOOK_GRID_ROW_COUNT) {
|
|
46
|
+
kept.push(slot);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
overflow.push(slot);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
overflow.sort((left, right) => left.row - right.row
|
|
53
|
+
|| left.column - right.column);
|
|
54
|
+
const occupied = new Set(kept.map(slotKey));
|
|
55
|
+
for (const slot of kept)
|
|
56
|
+
relocated.set(slotKey(slot), slot);
|
|
57
|
+
for (const slot of overflow) {
|
|
58
|
+
const next = firstFreeSlot(occupied, Math.max(0, slot.row));
|
|
59
|
+
occupied.add(slotKey(next));
|
|
60
|
+
relocated.set(slotKey(slot), next);
|
|
61
|
+
}
|
|
62
|
+
return relocated;
|
|
63
|
+
}
|
|
64
|
+
export function rewriteV22Mentions(text, slotMap) {
|
|
65
|
+
return text.replace(V22_MENTION_PATTERN, (raw, address) => {
|
|
66
|
+
const parsed = parseV22GridAddress(address);
|
|
67
|
+
if (!parsed)
|
|
68
|
+
return raw;
|
|
69
|
+
const mapped = slotMap.get(slotKey(parsed));
|
|
70
|
+
if (mapped)
|
|
71
|
+
return `@${notebookGridAddress(mapped)}`;
|
|
72
|
+
if (parsed.column >= 0
|
|
73
|
+
&& parsed.column < NOTEBOOK_GRID_COLUMN_COUNT
|
|
74
|
+
&& parsed.row >= 0
|
|
75
|
+
&& parsed.row < NOTEBOOK_GRID_ROW_COUNT) {
|
|
76
|
+
return `@${notebookGridAddress(parsed)}`;
|
|
77
|
+
}
|
|
78
|
+
return raw;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function mergeNotebookMaps(maps) {
|
|
82
|
+
const merged = new Map();
|
|
83
|
+
const conflict = new Set();
|
|
84
|
+
for (const map of maps.values()) {
|
|
85
|
+
for (const [key, slot] of map) {
|
|
86
|
+
if (conflict.has(key))
|
|
87
|
+
continue;
|
|
88
|
+
const existing = merged.get(key);
|
|
89
|
+
if (!existing) {
|
|
90
|
+
merged.set(key, slot);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (existing.row !== slot.row || existing.column !== slot.column) {
|
|
94
|
+
merged.delete(key);
|
|
95
|
+
conflict.add(key);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return merged;
|
|
100
|
+
}
|
|
101
|
+
function rebuildCellsTable(db) {
|
|
102
|
+
db.exec("PRAGMA foreign_keys=OFF");
|
|
103
|
+
db.exec("DROP TABLE IF EXISTS cells_next");
|
|
104
|
+
db.exec(`CREATE TABLE cells_next (${CELLS_TABLE_DEFINITION})`);
|
|
105
|
+
db.exec("INSERT INTO cells_next SELECT * FROM cells");
|
|
106
|
+
db.exec("DROP TABLE cells");
|
|
107
|
+
db.exec("ALTER TABLE cells_next RENAME TO cells");
|
|
108
|
+
db.exec("CREATE INDEX IF NOT EXISTS cells_output_entity ON cells(output_entity_id)");
|
|
109
|
+
db.exec(`CREATE INDEX IF NOT EXISTS cells_grid
|
|
110
|
+
ON cells(notebook_id, grid_row, grid_column, cell_id)`);
|
|
111
|
+
db.exec(`CREATE INDEX IF NOT EXISTS cells_output_artifact
|
|
112
|
+
ON cells(output_artifact_id)`);
|
|
113
|
+
db.exec("PRAGMA foreign_keys=ON");
|
|
114
|
+
}
|
|
115
|
+
export function applyV22NotebookGridMigration(db) {
|
|
116
|
+
const cells = db
|
|
117
|
+
.prepare("SELECT notebook_id, cell_id, grid_row, grid_column FROM cells")
|
|
118
|
+
.all();
|
|
119
|
+
const byNotebook = new Map();
|
|
120
|
+
for (const cell of cells) {
|
|
121
|
+
const rows = byNotebook.get(cell.notebook_id) ?? [];
|
|
122
|
+
rows.push(cell);
|
|
123
|
+
byNotebook.set(cell.notebook_id, rows);
|
|
124
|
+
}
|
|
125
|
+
const maps = new Map();
|
|
126
|
+
const nextByCell = new Map();
|
|
127
|
+
let relocated = 0;
|
|
128
|
+
for (const [notebookId, rows] of byNotebook) {
|
|
129
|
+
const map = relocateV22Slots(rows.map((row) => ({ row: row.grid_row, column: row.grid_column })));
|
|
130
|
+
maps.set(notebookId, map);
|
|
131
|
+
for (const row of rows) {
|
|
132
|
+
const next = map.get(slotKey({
|
|
133
|
+
row: row.grid_row,
|
|
134
|
+
column: row.grid_column,
|
|
135
|
+
}));
|
|
136
|
+
if (!next)
|
|
137
|
+
continue;
|
|
138
|
+
nextByCell.set(`${row.notebook_id}:${row.cell_id}`, next);
|
|
139
|
+
if (next.row !== row.grid_row || next.column !== row.grid_column) {
|
|
140
|
+
relocated += 1;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const updateSlot = db.prepare(`UPDATE cells SET grid_row=?, grid_column=?
|
|
145
|
+
WHERE notebook_id=? AND cell_id=?`);
|
|
146
|
+
for (const cell of cells) {
|
|
147
|
+
const next = nextByCell.get(`${cell.notebook_id}:${cell.cell_id}`);
|
|
148
|
+
if (!next)
|
|
149
|
+
continue;
|
|
150
|
+
if (next.row === cell.grid_row && next.column === cell.grid_column)
|
|
151
|
+
continue;
|
|
152
|
+
updateSlot.run(next.row, next.column, cell.notebook_id, cell.cell_id);
|
|
153
|
+
}
|
|
154
|
+
const bookMap = mergeNotebookMaps(maps);
|
|
155
|
+
const rewritten = rewriteCatalogMentions(db, (notebookId) => {
|
|
156
|
+
const map = notebookId === null
|
|
157
|
+
? bookMap
|
|
158
|
+
: (maps.get(notebookId) ?? bookMap);
|
|
159
|
+
return (text) => rewriteV22Mentions(text, map);
|
|
160
|
+
});
|
|
161
|
+
rebuildCellsTable(db);
|
|
162
|
+
db.prepare("UPDATE engine_schema SET version=? WHERE singleton=1")
|
|
163
|
+
.run(SCHEMA_VERSION);
|
|
164
|
+
return { relocated, rewritten };
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=migrate-grid-v22.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-grid-v22.js","sourceRoot":"","sources":["../src/migrate-grid-v22.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DatabaseSync } from "@dolthub/doltlite";
|
|
2
|
+
import type { NotebookGridSlot } from "./notebook/types.js";
|
|
3
|
+
interface V23GridMigrationResult {
|
|
4
|
+
rewritten: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function parseV23GridAddress(value: string): NotebookGridSlot | undefined;
|
|
7
|
+
export declare function rewriteV23Mentions(text: string): string;
|
|
8
|
+
export declare function applyV23NotebookGridMigration(db: DatabaseSync): V23GridMigrationResult;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=migrate-grid-v23.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-grid-v23.d.ts","sourceRoot":"","sources":["../src/migrate-grid-v23.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAc5D,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GACZ,gBAAgB,GAAG,SAAS,CAO9B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,YAAY,GACf,sBAAsB,CAKxB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SCHEMA_VERSION } from "./catalog-metadata.js";
|
|
2
|
+
import { rewriteCatalogMentions } from "./migrate-grid-text.js";
|
|
3
|
+
import { notebookGridAddress } from "./notebook-grid.js";
|
|
4
|
+
// Schema 23 labelled columns a-h and rows 1-64 (@a1-@h64). Schema 24 keeps
|
|
5
|
+
// the same 8x64 slots but letters the rows and numbers the columns, so every
|
|
6
|
+
// stored mention is re-encoded in place; no cell moves.
|
|
7
|
+
const V23_ADDRESS_SOURCE = "[a-h](?:6[0-4]|[1-5][0-9]|[1-9])";
|
|
8
|
+
const V23_MENTION_PATTERN = new RegExp(`@(${V23_ADDRESS_SOURCE})(?![\\w-])`, "giu");
|
|
9
|
+
const V23_ADDRESS_PATTERN = new RegExp(`^${V23_ADDRESS_SOURCE}$`, "iu");
|
|
10
|
+
export function parseV23GridAddress(value) {
|
|
11
|
+
const address = value.trim().replace(/^@/u, "").toLowerCase();
|
|
12
|
+
if (!V23_ADDRESS_PATTERN.test(address))
|
|
13
|
+
return undefined;
|
|
14
|
+
return {
|
|
15
|
+
column: address.charCodeAt(0) - 97,
|
|
16
|
+
row: Number(address.slice(1)) - 1,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function rewriteV23Mentions(text) {
|
|
20
|
+
return text.replace(V23_MENTION_PATTERN, (raw, address) => {
|
|
21
|
+
const slot = parseV23GridAddress(address);
|
|
22
|
+
return slot ? `@${notebookGridAddress(slot)}` : raw;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export function applyV23NotebookGridMigration(db) {
|
|
26
|
+
const rewritten = rewriteCatalogMentions(db, () => rewriteV23Mentions);
|
|
27
|
+
db.prepare("UPDATE engine_schema SET version=? WHERE singleton=1")
|
|
28
|
+
.run(SCHEMA_VERSION);
|
|
29
|
+
return { rewritten };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=migrate-grid-v23.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-grid-v23.js","sourceRoot":"","sources":["../src/migrate-grid-v23.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,2EAA2E;AAC3E,6EAA6E;AAC7E,wDAAwD;AACxD,MAAM,kBAAkB,GAAG,kCAAkC,CAAC;AAC9D,MAAM,mBAAmB,GAAG,IAAI,MAAM,CACpC,KAAK,kBAAkB,aAAa,EACpC,KAAK,CACN,CAAC;AACF,MAAM,mBAAmB,GAAG,IAAI,MAAM,CAAC,IAAI,kBAAkB,GAAG,EAAE,IAAI,CAAC,CAAC;AAMxE,MAAM,UAAU,mBAAmB,CACjC,KAAa;IAEb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;QAClC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAW,EAAE,OAAe,EAAE,EAAE;QACxE,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,EAAgB;IAEhB,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC;IACvE,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC;SAC/D,GAAG,CAAC,cAAc,CAAC,CAAC;IACvB,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DatabaseSync } from "@dolthub/doltlite";
|
|
2
|
+
import type { MigrationIssue } from "./mvp-contracts.js";
|
|
3
|
+
import type { NotebookDocument } from "./notebook/types.js";
|
|
4
|
+
export declare function legacyNotebookPlan(database: DatabaseSync): {
|
|
5
|
+
documents: NotebookDocument[];
|
|
6
|
+
issues: MigrationIssue[];
|
|
7
|
+
decisions: Array<{
|
|
8
|
+
notebookId: string;
|
|
9
|
+
properties: Record<string, unknown>;
|
|
10
|
+
cells: Array<{
|
|
11
|
+
cellId: string;
|
|
12
|
+
legacyType: string;
|
|
13
|
+
type: string;
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
row: number;
|
|
17
|
+
column: number;
|
|
18
|
+
legacyModel: string | null;
|
|
19
|
+
model?: string;
|
|
20
|
+
tool?: string;
|
|
21
|
+
modelSource: "explicit" | "legacy-default" | "none";
|
|
22
|
+
}>;
|
|
23
|
+
}>;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=migration-notebooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-notebooks.d.ts","sourceRoot":"","sources":["../src/migration-notebooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAsC1E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG;IAC1D,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YACvF,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YACpG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,UAAU,GAAG,gBAAgB,GAAG,MAAM,CAAC;SAChH,CAAC,CAAA;KAAE,CAAC,CAAC;CACP,CAsDA"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { NOTEBOOK_GRID_CAPACITY, NOTEBOOK_GRID_COLUMN_COUNT } from "./notebook-grid.js";
|
|
2
|
+
import { NOTEBOOK_CELL_TYPES } from "./schema.js";
|
|
3
|
+
const LEGACY_GENERATION_DEFAULTS = {
|
|
4
|
+
image: "generate_kie_gpt_image_2_text_to_image",
|
|
5
|
+
video: "generate_kie_wan_2_7_text_to_video",
|
|
6
|
+
};
|
|
7
|
+
export function legacyNotebookPlan(database) {
|
|
8
|
+
const notebooks = database.prepare("SELECT * FROM notebooks ORDER BY notebook_id").all();
|
|
9
|
+
const cells = database.prepare(`SELECT c.*, a.kind AS artifact_kind FROM cells c
|
|
10
|
+
LEFT JOIN artifacts a ON a.artifact_id=c.output_artifact_id
|
|
11
|
+
ORDER BY c.notebook_id, c.position_y, c.position_x, c.cell_id`).all();
|
|
12
|
+
const edges = database.prepare("SELECT * FROM edges ORDER BY notebook_id, edge_id").all();
|
|
13
|
+
const documents = [];
|
|
14
|
+
const issues = [];
|
|
15
|
+
const decisions = [];
|
|
16
|
+
for (const notebook of notebooks) {
|
|
17
|
+
try {
|
|
18
|
+
const properties = objectJson(notebook.properties_json, "Notebook properties");
|
|
19
|
+
const rows = cells.filter((cell) => cell.notebook_id === notebook.notebook_id);
|
|
20
|
+
if (rows.length > NOTEBOOK_GRID_CAPACITY)
|
|
21
|
+
throw new Error(`Notebook has ${rows.length} cells; the current grid supports ${NOTEBOOK_GRID_CAPACITY}`);
|
|
22
|
+
const converted = rows.map((row, ordinal) => {
|
|
23
|
+
if (!Number.isFinite(row.position_x) || !Number.isFinite(row.position_y))
|
|
24
|
+
throw new Error(`Invalid canvas position for ${row.cell_id}`);
|
|
25
|
+
return {
|
|
26
|
+
id: row.cell_id, type: currentCellType(row), label: row.title,
|
|
27
|
+
slot: { row: Math.floor(ordinal / NOTEBOOK_GRID_COLUMN_COUNT), column: ordinal % NOTEBOOK_GRID_COLUMN_COUNT },
|
|
28
|
+
...(row.entity_id === null ? {} : { outputEntityId: row.entity_id }),
|
|
29
|
+
...(row.prompt === null ? {} : { prompt: row.prompt }),
|
|
30
|
+
...currentModelFields(row),
|
|
31
|
+
inputs: objectJson(row.inputs_json, `Inputs for ${row.cell_id}`),
|
|
32
|
+
...(row.output_artifact_id === null ? {} : { outputArtifactId: row.output_artifact_id }),
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
const notebookEdges = edges.filter((edge) => edge.notebook_id === notebook.notebook_id);
|
|
36
|
+
const occupiedInputs = new Set();
|
|
37
|
+
for (const edge of notebookEdges) {
|
|
38
|
+
const key = `${edge.target_cell_id}:${edge.target_input}`;
|
|
39
|
+
if (occupiedInputs.has(key))
|
|
40
|
+
throw new Error(`Multiple edges target the same input: ${key}`);
|
|
41
|
+
occupiedInputs.add(key);
|
|
42
|
+
}
|
|
43
|
+
const document = {
|
|
44
|
+
...compatibleProperties(properties),
|
|
45
|
+
id: notebook.notebook_id, name: notebook.name,
|
|
46
|
+
createdAt: new Date(notebook.created_at).toISOString(), cells: converted,
|
|
47
|
+
edges: notebookEdges.map((edge) => ({ id: edge.edge_id, source: edge.source_cell_id,
|
|
48
|
+
target: edge.target_cell_id, targetInput: edge.target_input })),
|
|
49
|
+
};
|
|
50
|
+
documents.push(document);
|
|
51
|
+
decisions.push({ notebookId: notebook.notebook_id, properties, cells: rows.map((row, ordinal) => ({
|
|
52
|
+
cellId: row.cell_id, legacyType: row.type, type: converted[ordinal].type,
|
|
53
|
+
x: row.position_x, y: row.position_y, ...converted[ordinal].slot,
|
|
54
|
+
legacyModel: row.model, ...currentModelFields(row),
|
|
55
|
+
modelSource: LEGACY_GENERATION_DEFAULTS[row.type] && !row.model
|
|
56
|
+
? "legacy-default" : row.model === null ? "none" : "explicit",
|
|
57
|
+
})) });
|
|
58
|
+
}
|
|
59
|
+
catch (cause) {
|
|
60
|
+
issues.push({ code: "INVALID_REFERENCE", severity: "error", resource: `notebook:${notebook.notebook_id}`,
|
|
61
|
+
message: cause instanceof Error ? cause.message : String(cause) });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { documents, decisions, issues };
|
|
65
|
+
}
|
|
66
|
+
function currentCellType(cell) {
|
|
67
|
+
if (cell.type === "image")
|
|
68
|
+
return "generate_image";
|
|
69
|
+
if (cell.type === "video")
|
|
70
|
+
return "generate_video";
|
|
71
|
+
if (NOTEBOOK_CELL_TYPES.includes(cell.type))
|
|
72
|
+
return cell.type;
|
|
73
|
+
if (cell.type === "scene")
|
|
74
|
+
return "prompt";
|
|
75
|
+
if (cell.type === "asset") {
|
|
76
|
+
if (cell.artifact_kind === "image" || cell.artifact_kind === "video" || cell.artifact_kind === "audio")
|
|
77
|
+
return cell.artifact_kind;
|
|
78
|
+
if (cell.artifact_kind === "final")
|
|
79
|
+
return "video";
|
|
80
|
+
if (cell.artifact_kind === "character")
|
|
81
|
+
return "character";
|
|
82
|
+
if (cell.artifact_kind === "script" || cell.artifact_kind === "prompt" || cell.artifact_kind === "scene")
|
|
83
|
+
return "prompt";
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Cannot represent legacy cell ${cell.cell_id} of type ${cell.type} without a supported source`);
|
|
86
|
+
}
|
|
87
|
+
function currentModelFields(cell) {
|
|
88
|
+
const fallback = LEGACY_GENERATION_DEFAULTS[cell.type];
|
|
89
|
+
if (fallback) {
|
|
90
|
+
const tool = cell.model || fallback;
|
|
91
|
+
return { model: tool, tool };
|
|
92
|
+
}
|
|
93
|
+
return cell.model === null ? {} : { model: cell.model };
|
|
94
|
+
}
|
|
95
|
+
function objectJson(json, label) {
|
|
96
|
+
const value = JSON.parse(json);
|
|
97
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
98
|
+
throw new Error(`${label} must be an object`);
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
function compatibleProperties(properties) {
|
|
102
|
+
const result = {};
|
|
103
|
+
for (const key of ["description", "lifecycleState", "analysisRevision"]) {
|
|
104
|
+
if (properties[key] === undefined)
|
|
105
|
+
continue;
|
|
106
|
+
if (typeof properties[key] !== "string")
|
|
107
|
+
throw new Error(`Notebook ${key} must be a string`);
|
|
108
|
+
result[key] = properties[key];
|
|
109
|
+
}
|
|
110
|
+
if (properties.workflowVersion !== undefined) {
|
|
111
|
+
if (!Number.isSafeInteger(properties.workflowVersion))
|
|
112
|
+
throw new Error("Notebook workflowVersion must be an integer");
|
|
113
|
+
result.workflowVersion = properties.workflowVersion;
|
|
114
|
+
}
|
|
115
|
+
for (const key of ["fixture", "execution"]) {
|
|
116
|
+
if (properties[key] === undefined)
|
|
117
|
+
continue;
|
|
118
|
+
if (!properties[key] || typeof properties[key] !== "object" || Array.isArray(properties[key]))
|
|
119
|
+
throw new Error(`Notebook ${key} must be an object`);
|
|
120
|
+
result[key] = properties[key];
|
|
121
|
+
}
|
|
122
|
+
for (const key of ["generationPlans", "notebookRunPlans"]) {
|
|
123
|
+
if (properties[key] === undefined)
|
|
124
|
+
continue;
|
|
125
|
+
if (!Array.isArray(properties[key]))
|
|
126
|
+
throw new Error(`Notebook ${key} must be an array`);
|
|
127
|
+
result[key] = properties[key];
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=migration-notebooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-notebooks.js","sourceRoot":"","sources":["../src/migration-notebooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-source.d.ts","sourceRoot":"","sources":["../src/migration-source.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAwBhG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { constants, copyFileSync, mkdtempSync, rmSync, statSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { DatabaseSync } from "@dolthub/doltlite";
|
|
5
|
+
import { EngineFault } from "./store.js";
|
|
6
|
+
export function openV4SourceSnapshot(root) {
|
|
7
|
+
const source = join(root, "data", "videobook.db");
|
|
8
|
+
const directory = mkdtempSync(join(tmpdir(), "videobook-v4-inspect-"));
|
|
9
|
+
try {
|
|
10
|
+
const before = statSync(source, { bigint: true });
|
|
11
|
+
const target = join(directory, "videobook.db");
|
|
12
|
+
// Keep native connections and deferred statement cleanup off the legacy file.
|
|
13
|
+
copyFileSync(source, target, constants.COPYFILE_FICLONE);
|
|
14
|
+
const after = statSync(source, { bigint: true });
|
|
15
|
+
if (before.dev !== after.dev || before.ino !== after.ino || before.size !== after.size || before.mtimeNs !== after.mtimeNs) {
|
|
16
|
+
throw new EngineFault({ code: "STALE_REVISION", message: "Schema-v4 catalog changed while its inspection snapshot was copied" });
|
|
17
|
+
}
|
|
18
|
+
const database = new DatabaseSync(target, { readOnly: true });
|
|
19
|
+
let closed = false;
|
|
20
|
+
return { database, close: () => {
|
|
21
|
+
if (closed)
|
|
22
|
+
return;
|
|
23
|
+
closed = true;
|
|
24
|
+
try {
|
|
25
|
+
database.close();
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
rmSync(directory, { recursive: true, force: true, maxRetries: 3 });
|
|
29
|
+
}
|
|
30
|
+
} };
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
rmSync(directory, { recursive: true, force: true, maxRetries: 3 });
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=migration-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-source.js","sourceRoot":"","sources":["../src/migration-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC/C,8EAA8E;QAC9E,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3H,MAAM,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,oEAAoE,EAAE,CAAC,CAAC;QACnI,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC7B,IAAI,MAAM;oBAAE,OAAO;gBACnB,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,CAAC;oBAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;wBACjB,CAAC;oBAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;YACjF,CAAC,EAAE,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { DatabaseSync } from "@dolthub/doltlite";
|
|
2
|
+
import type { ObjectStore } from "./cas.js";
|
|
3
|
+
import type { Engine } from "./engine.js";
|
|
4
|
+
import type { ArtifactStream, MigrationIssue, V4MigrationRequest } from "./mvp-contracts.js";
|
|
5
|
+
interface LegacyPlacement {
|
|
6
|
+
legacyId: string;
|
|
7
|
+
artifactId: string;
|
|
8
|
+
path: string;
|
|
9
|
+
objectHash: string;
|
|
10
|
+
kind: "image" | "video" | "audio";
|
|
11
|
+
startFrame?: number;
|
|
12
|
+
durationFrames?: number;
|
|
13
|
+
volume: number | null;
|
|
14
|
+
fadeInMs: number | null;
|
|
15
|
+
fadeOutMs: number | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function legacyTimelinePlan(database: DatabaseSync): {
|
|
18
|
+
placements: LegacyPlacement[];
|
|
19
|
+
issues: MigrationIssue[];
|
|
20
|
+
};
|
|
21
|
+
export declare function convertLegacyTimeline(engine: Engine, plan: ReturnType<typeof legacyTimelinePlan>, objects: ObjectStore, request: V4MigrationRequest): Promise<{
|
|
22
|
+
clips: {
|
|
23
|
+
legacyId: string;
|
|
24
|
+
clipId: string;
|
|
25
|
+
sourcePath: string;
|
|
26
|
+
objectHash: string;
|
|
27
|
+
startFrame: number;
|
|
28
|
+
durationFrames: number;
|
|
29
|
+
}[];
|
|
30
|
+
videoDurationFrames: number;
|
|
31
|
+
streams: ArtifactStream[];
|
|
32
|
+
frameRate: import("./mvp-time.js").Rational;
|
|
33
|
+
audioPlacement: string;
|
|
34
|
+
}>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=migration-timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-timeline.d.ts","sourceRoot":"","sources":["../src/migration-timeline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAgC,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK3H,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAYD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG;IAAE,UAAU,EAAE,eAAe,EAAE,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CA2CtH;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB;;kBAMrH,MAAM;gBAAU,MAAM;oBAAc,MAAM;oBAAc,MAAM;oBAAc,MAAM;wBAAkB,MAAM;;;;;;GA6E9I"}
|