videobook-engine 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +214 -0
  2. package/dist/artifacts.d.ts +20 -0
  3. package/dist/artifacts.d.ts.map +1 -0
  4. package/dist/artifacts.js +312 -0
  5. package/dist/artifacts.js.map +1 -0
  6. package/dist/books.d.ts +7 -0
  7. package/dist/books.d.ts.map +1 -0
  8. package/dist/books.js +27 -0
  9. package/dist/books.js.map +1 -0
  10. package/dist/cas.d.ts +26 -0
  11. package/dist/cas.d.ts.map +1 -0
  12. package/dist/cas.js +139 -0
  13. package/dist/cas.js.map +1 -0
  14. package/dist/communications.d.ts +15 -0
  15. package/dist/communications.d.ts.map +1 -0
  16. package/dist/communications.js +139 -0
  17. package/dist/communications.js.map +1 -0
  18. package/dist/context.d.ts +42 -0
  19. package/dist/context.d.ts.map +1 -0
  20. package/dist/context.js +197 -0
  21. package/dist/context.js.map +1 -0
  22. package/dist/domain.d.ts +32 -0
  23. package/dist/domain.d.ts.map +1 -0
  24. package/dist/domain.js +399 -0
  25. package/dist/domain.js.map +1 -0
  26. package/dist/engine-types.d.ts +548 -0
  27. package/dist/engine-types.d.ts.map +1 -0
  28. package/dist/engine-types.js +10 -0
  29. package/dist/engine-types.js.map +1 -0
  30. package/dist/engine.d.ts +213 -0
  31. package/dist/engine.d.ts.map +1 -0
  32. package/dist/engine.js +130 -0
  33. package/dist/engine.js.map +1 -0
  34. package/dist/files.d.ts +28 -0
  35. package/dist/files.d.ts.map +1 -0
  36. package/dist/files.js +476 -0
  37. package/dist/files.js.map +1 -0
  38. package/dist/history-types.d.ts +74 -0
  39. package/dist/history-types.d.ts.map +1 -0
  40. package/dist/history-types.js +2 -0
  41. package/dist/history-types.js.map +1 -0
  42. package/dist/history.d.ts +20 -0
  43. package/dist/history.d.ts.map +1 -0
  44. package/dist/history.js +921 -0
  45. package/dist/history.js.map +1 -0
  46. package/dist/ids.d.ts +4 -0
  47. package/dist/ids.d.ts.map +1 -0
  48. package/dist/ids.js +14 -0
  49. package/dist/ids.js.map +1 -0
  50. package/dist/index.d.ts +16 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +12 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/job-queue.d.ts +51 -0
  55. package/dist/job-queue.d.ts.map +1 -0
  56. package/dist/job-queue.js +443 -0
  57. package/dist/job-queue.js.map +1 -0
  58. package/dist/media.d.ts +7 -0
  59. package/dist/media.d.ts.map +1 -0
  60. package/dist/media.js +60 -0
  61. package/dist/media.js.map +1 -0
  62. package/dist/metadata.d.ts +21 -0
  63. package/dist/metadata.d.ts.map +1 -0
  64. package/dist/metadata.js +222 -0
  65. package/dist/metadata.js.map +1 -0
  66. package/dist/notebook/types.d.ts +51 -0
  67. package/dist/notebook/types.d.ts.map +1 -0
  68. package/dist/notebook/types.js +2 -0
  69. package/dist/notebook/types.js.map +1 -0
  70. package/dist/resolver.d.ts +15 -0
  71. package/dist/resolver.d.ts.map +1 -0
  72. package/dist/resolver.js +81 -0
  73. package/dist/resolver.js.map +1 -0
  74. package/dist/runtime-services.d.ts +65 -0
  75. package/dist/runtime-services.d.ts.map +1 -0
  76. package/dist/runtime-services.js +584 -0
  77. package/dist/runtime-services.js.map +1 -0
  78. package/dist/schema.d.ts +7 -0
  79. package/dist/schema.d.ts.map +1 -0
  80. package/dist/schema.js +509 -0
  81. package/dist/schema.js.map +1 -0
  82. package/dist/similarity.d.ts +4 -0
  83. package/dist/similarity.d.ts.map +1 -0
  84. package/dist/similarity.js +1551 -0
  85. package/dist/similarity.js.map +1 -0
  86. package/dist/status.d.ts +9 -0
  87. package/dist/status.d.ts.map +1 -0
  88. package/dist/status.js +231 -0
  89. package/dist/status.js.map +1 -0
  90. package/dist/storage.d.ts +7 -0
  91. package/dist/storage.d.ts.map +1 -0
  92. package/dist/storage.js +129 -0
  93. package/dist/storage.js.map +1 -0
  94. package/dist/store.d.ts +55 -0
  95. package/dist/store.d.ts.map +1 -0
  96. package/dist/store.js +378 -0
  97. package/dist/store.js.map +1 -0
  98. package/dist/timeline.d.ts +9 -0
  99. package/dist/timeline.d.ts.map +1 -0
  100. package/dist/timeline.js +236 -0
  101. package/dist/timeline.js.map +1 -0
  102. package/docs/engine-layout.md +489 -0
  103. package/package.json +55 -0
package/dist/domain.js ADDED
@@ -0,0 +1,399 @@
1
+ import { ok } from "./engine-types.js";
2
+ import { resultOf, syncResultOf, } from "./context.js";
3
+ import { assertUuidV7, newUuidV7 } from "./ids.js";
4
+ import { canonicalJson, parseJson } from "./store.js";
5
+ import { EngineFault } from "./store.js";
6
+ export function createEntitiesApi(context) {
7
+ return {
8
+ create: (type, name, input = {}) => createEntity(context, type, name, input),
9
+ list: (type) => listEntities(context, type),
10
+ read: (entityId) => syncResultOf(() => requiredEntity(context, entityId)),
11
+ write: (entity) => writeEntity(context, entity),
12
+ delete: (entityId) => deleteEntity(context, entityId),
13
+ };
14
+ }
15
+ export function createNotebooksApi(context) {
16
+ return {
17
+ create: (name) => createNotebook(context, name),
18
+ createCell: (input) => ({
19
+ ...input,
20
+ id: callerOrNewId(input.id, "Cell ID"),
21
+ }),
22
+ createEdge: (input) => ({
23
+ ...input,
24
+ id: callerOrNewId(input.id, "Edge ID"),
25
+ }),
26
+ list: () => listNotebooks(context),
27
+ read: (notebookId) => syncResultOf(() => requiredNotebook(context, notebookId)),
28
+ write: (notebook) => writeNotebook(context, notebook),
29
+ delete: (notebookId) => deleteNotebook(context, notebookId),
30
+ recordRun: (run) => recordNotebookRun(context, run),
31
+ };
32
+ }
33
+ async function createEntity(context, type, name, input) {
34
+ return resultOf(async () => {
35
+ validateEntityType(type);
36
+ const normalizedName = requiredText(name, "Entity name");
37
+ const entityId = newUuidV7();
38
+ const mutation = await context.store.semantic({
39
+ operation: "create_entity",
40
+ details: { entityId, type, name: normalizedName },
41
+ writeSet: [`entity:${entityId}`],
42
+ }, ["entities"], (_operationId, now) => {
43
+ context.store.db
44
+ .prepare(`INSERT INTO entities(
45
+ entity_id, type, name, description, prompt, data_json, created_at
46
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`)
47
+ .run(entityId, type, normalizedName, input.description ?? null, input.prompt ?? null, canonicalJson(input.data ?? {}), now);
48
+ });
49
+ return ok(requiredEntity(context, entityId), mutation.revision);
50
+ });
51
+ }
52
+ function listEntities(context, type) {
53
+ if (type)
54
+ validateEntityType(type);
55
+ const rows = type
56
+ ? context.store.db
57
+ .prepare(`${ENTITY_SELECT}
58
+ WHERE type=? ORDER BY created_at, entity_id`)
59
+ .all(type)
60
+ : context.store.db
61
+ .prepare(`${ENTITY_SELECT} ORDER BY created_at, entity_id`)
62
+ .all();
63
+ return rows.map(rowToEntity);
64
+ }
65
+ async function writeEntity(context, entity) {
66
+ return resultOf(async () => {
67
+ assertUuidV7(entity.id, "Entity ID");
68
+ requiredEntity(context, entity.id);
69
+ validateEntityType(entity.type);
70
+ const name = requiredText(entity.name, "Entity name");
71
+ const mutation = await context.store.semantic({
72
+ operation: "write_entity",
73
+ details: { entityId: entity.id, type: entity.type },
74
+ writeSet: [`entity:${entity.id}`],
75
+ }, ["entities"], () => {
76
+ context.store.db
77
+ .prepare(`UPDATE entities
78
+ SET type=?, name=?, description=?, prompt=?, data_json=?
79
+ WHERE entity_id=?`)
80
+ .run(entity.type, name, entity.description ?? null, entity.prompt ?? null, canonicalJson(entity.data), entity.id);
81
+ });
82
+ return ok(revisionFor(context, mutation.revision), mutation.revision);
83
+ });
84
+ }
85
+ async function deleteEntity(context, entityId) {
86
+ return resultOf(async () => {
87
+ assertUuidV7(entityId, "Entity ID");
88
+ requiredEntity(context, entityId);
89
+ const cells = context.store.db
90
+ .prepare(`SELECT notebook_id, cell_id FROM cells
91
+ WHERE entity_id=? ORDER BY notebook_id, cell_id`)
92
+ .all(entityId);
93
+ if (cells.length > 0) {
94
+ throw new EngineFault({
95
+ code: "IN_USE",
96
+ message: `Entity is still referenced: ${entityId}`,
97
+ details: {
98
+ references: cells.map((cell) => ({
99
+ kind: "cell.entity",
100
+ id: `${cell.notebook_id}/${cell.cell_id}`,
101
+ })),
102
+ },
103
+ });
104
+ }
105
+ const mutation = await context.store.semantic({
106
+ operation: "delete_entity",
107
+ details: { entityId },
108
+ writeSet: [`entity:${entityId}`],
109
+ }, ["entities"], () => {
110
+ context.store.db
111
+ .prepare("DELETE FROM entities WHERE entity_id=?")
112
+ .run(entityId);
113
+ });
114
+ return ok({ entityId }, mutation.revision);
115
+ });
116
+ }
117
+ async function createNotebook(context, name) {
118
+ return resultOf(async () => {
119
+ const normalizedName = requiredText(name, "Notebook name");
120
+ const notebookId = newUuidV7();
121
+ const mutation = await context.store.semantic({
122
+ operation: "create_notebook",
123
+ details: { notebookId, name: normalizedName },
124
+ writeSet: [`notebook:${notebookId}`],
125
+ }, ["notebooks"], (_operationId, now) => {
126
+ context.store.db
127
+ .prepare(`INSERT INTO notebooks(
128
+ notebook_id, name, properties_json, created_at
129
+ ) VALUES (?, ?, '{}', ?)`)
130
+ .run(notebookId, normalizedName, now);
131
+ });
132
+ return ok(requiredNotebook(context, notebookId), mutation.revision);
133
+ });
134
+ }
135
+ function listNotebooks(context) {
136
+ const rows = context.store.db
137
+ .prepare(`${NOTEBOOK_SELECT} ORDER BY created_at, notebook_id`)
138
+ .all();
139
+ return rows.map((row) => notebookFromRows(context, row));
140
+ }
141
+ async function writeNotebook(context, notebook) {
142
+ return resultOf(async () => {
143
+ assertUuidV7(notebook.id, "Notebook ID");
144
+ requiredNotebook(context, notebook.id);
145
+ validateNotebook(context, notebook);
146
+ const mutation = await context.store.semantic({
147
+ operation: "write_notebook",
148
+ details: { notebookId: notebook.id },
149
+ writeSet: [
150
+ `notebook:${notebook.id}`,
151
+ ...notebook.cells.map((cell) => `cell:${notebook.id}:${cell.id}`),
152
+ ...notebook.edges.map((edge) => `edge:${notebook.id}:${edge.id}`),
153
+ ],
154
+ }, ["notebooks", "cells", "edges"], () => {
155
+ context.store.db
156
+ .prepare(`UPDATE notebooks SET name=?, properties_json=?
157
+ WHERE notebook_id=?`)
158
+ .run(requiredText(notebook.name, "Notebook name"), canonicalJson(notebook.properties ?? {}), notebook.id);
159
+ synchronizeNotebookChildren(context, notebook);
160
+ });
161
+ return ok(revisionFor(context, mutation.revision), mutation.revision);
162
+ });
163
+ }
164
+ async function deleteNotebook(context, notebookId) {
165
+ return resultOf(async () => {
166
+ assertUuidV7(notebookId, "Notebook ID");
167
+ requiredNotebook(context, notebookId);
168
+ const mutation = await context.store.semantic({
169
+ operation: "delete_notebook",
170
+ details: { notebookId },
171
+ writeSet: [`notebook:${notebookId}`],
172
+ }, ["notebooks", "cells", "edges", "runs"], () => {
173
+ context.store.db
174
+ .prepare("DELETE FROM notebooks WHERE notebook_id=?")
175
+ .run(notebookId);
176
+ });
177
+ return ok({ notebookId }, mutation.revision);
178
+ });
179
+ }
180
+ async function recordNotebookRun(context, run) {
181
+ return resultOf(async () => {
182
+ assertUuidV7(run.id, "Notebook run ID");
183
+ assertUuidV7(run.notebookId, "Notebook ID");
184
+ requiredNotebook(context, run.notebookId);
185
+ validateRunStatus(run.status);
186
+ const startedAt = requiredDate(run.startedAt, "Notebook run startedAt");
187
+ const completedAt = requiredDate(run.completedAt, "Notebook run completedAt");
188
+ if (completedAt < startedAt) {
189
+ throw new Error("Notebook run completedAt must not precede startedAt");
190
+ }
191
+ const mutation = await context.store.semantic({
192
+ operation: "record_notebook_run",
193
+ details: { notebookId: run.notebookId, runId: run.id },
194
+ writeSet: [`run:${run.id}`],
195
+ }, ["runs"], () => {
196
+ context.store.db
197
+ .prepare(`INSERT INTO runs(
198
+ run_id, notebook_id, status, started_at,
199
+ completed_at, cell_order_json, outputs_json, error
200
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
201
+ .run(run.id, run.notebookId, run.status, startedAt, completedAt, canonicalJson(run.cellOrder), canonicalJson(run.outputs), run.error ?? null);
202
+ });
203
+ return ok(revisionFor(context, mutation.revision), mutation.revision);
204
+ });
205
+ }
206
+ function requiredEntity(context, entityId) {
207
+ const row = context.store.db
208
+ .prepare(`${ENTITY_SELECT} WHERE entity_id=?`)
209
+ .get(entityId);
210
+ if (!row)
211
+ throw new Error(`Entity not found: ${entityId}`);
212
+ return rowToEntity(row);
213
+ }
214
+ function rowToEntity(row) {
215
+ return {
216
+ id: row.entity_id,
217
+ type: row.type,
218
+ name: row.name,
219
+ ...(row.description ? { description: row.description } : {}),
220
+ ...(row.prompt ? { prompt: row.prompt } : {}),
221
+ data: parseJson(row.data_json, {}),
222
+ createdAt: new Date(row.created_at).toISOString(),
223
+ };
224
+ }
225
+ function requiredNotebook(context, notebookId) {
226
+ const row = context.store.db
227
+ .prepare(`${NOTEBOOK_SELECT} WHERE notebook_id=?`)
228
+ .get(notebookId);
229
+ if (!row)
230
+ throw new Error(`Notebook not found: ${notebookId}`);
231
+ return notebookFromRows(context, row);
232
+ }
233
+ function notebookFromRows(context, row) {
234
+ const cells = context.store.db
235
+ .prepare(`SELECT cell_id, type, title, position_x, position_y, entity_id,
236
+ prompt, model, inputs_json, output_artifact_id
237
+ FROM cells WHERE notebook_id=? ORDER BY cell_id`)
238
+ .all(row.notebook_id);
239
+ const edges = context.store.db
240
+ .prepare(`SELECT edge_id, source_cell_id, target_cell_id, target_input
241
+ FROM edges WHERE notebook_id=? ORDER BY edge_id`)
242
+ .all(row.notebook_id);
243
+ return {
244
+ id: row.notebook_id,
245
+ name: row.name,
246
+ properties: parseJson(row.properties_json, {}),
247
+ cells: cells.map(rowToCell),
248
+ edges: edges.map(rowToEdge),
249
+ createdAt: new Date(row.created_at).toISOString(),
250
+ };
251
+ }
252
+ function validateNotebook(context, notebook) {
253
+ const cellIds = new Set();
254
+ for (const cell of notebook.cells) {
255
+ assertUuidV7(cell.id, "Cell ID");
256
+ if (cellIds.has(cell.id))
257
+ throw new Error(`Duplicate cell ID: ${cell.id}`);
258
+ cellIds.add(cell.id);
259
+ if (!["prompt", "character", "scene", "asset", "image", "video"].includes(cell.type)) {
260
+ throw new Error(`Invalid cell type: ${cell.type}`);
261
+ }
262
+ if (!Number.isFinite(cell.position.x) || !Number.isFinite(cell.position.y)) {
263
+ throw new Error(`Cell position must be finite: ${cell.id}`);
264
+ }
265
+ if (cell.entityId) {
266
+ assertUuidV7(cell.entityId, "Cell entity ID");
267
+ requiredEntity(context, cell.entityId);
268
+ }
269
+ if (cell.outputArtifactId) {
270
+ assertUuidV7(cell.outputArtifactId, "Cell output artifact ID");
271
+ context.artifactRowById(cell.outputArtifactId);
272
+ }
273
+ }
274
+ const edgeIds = new Set();
275
+ for (const edge of notebook.edges) {
276
+ assertUuidV7(edge.id, "Edge ID");
277
+ if (edgeIds.has(edge.id))
278
+ throw new Error(`Duplicate edge ID: ${edge.id}`);
279
+ edgeIds.add(edge.id);
280
+ if (!cellIds.has(edge.source) || !cellIds.has(edge.target)) {
281
+ throw new Error(`Edge ${edge.id} must reference cells in the notebook`);
282
+ }
283
+ requiredText(edge.targetInput, "Edge targetInput");
284
+ }
285
+ }
286
+ function synchronizeNotebookChildren(context, notebook) {
287
+ deleteMissing(context, "edges", "edge_id", notebook.id, notebook.edges.map((edge) => edge.id));
288
+ deleteMissing(context, "cells", "cell_id", notebook.id, notebook.cells.map((cell) => cell.id));
289
+ const upsertCell = context.store.db.prepare(`INSERT INTO cells(
290
+ notebook_id, cell_id, type, title, position_x, position_y,
291
+ entity_id, prompt, model, inputs_json, output_artifact_id
292
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
293
+ ON CONFLICT(notebook_id, cell_id) DO UPDATE SET
294
+ type=excluded.type,
295
+ title=excluded.title,
296
+ position_x=excluded.position_x,
297
+ position_y=excluded.position_y,
298
+ entity_id=excluded.entity_id,
299
+ prompt=excluded.prompt,
300
+ model=excluded.model,
301
+ inputs_json=excluded.inputs_json,
302
+ output_artifact_id=excluded.output_artifact_id`);
303
+ for (const cell of notebook.cells) {
304
+ upsertCell.run(notebook.id, cell.id, cell.type, requiredText(cell.title, "Cell title"), cell.position.x, cell.position.y, cell.entityId ?? null, cell.prompt ?? null, cell.model ?? null, canonicalJson(cell.inputs ?? {}), cell.outputArtifactId ?? null);
305
+ }
306
+ const upsertEdge = context.store.db.prepare(`INSERT INTO edges(
307
+ notebook_id, edge_id, source_cell_id, target_cell_id, target_input
308
+ ) VALUES (?, ?, ?, ?, ?)
309
+ ON CONFLICT(notebook_id, edge_id) DO UPDATE SET
310
+ source_cell_id=excluded.source_cell_id,
311
+ target_cell_id=excluded.target_cell_id,
312
+ target_input=excluded.target_input`);
313
+ for (const edge of notebook.edges) {
314
+ upsertEdge.run(notebook.id, edge.id, edge.source, edge.target, edge.targetInput);
315
+ }
316
+ }
317
+ function deleteMissing(context, table, idColumn, notebookId, ids) {
318
+ if (ids.length === 0) {
319
+ context.store.db
320
+ .prepare(`DELETE FROM ${table} WHERE notebook_id=?`)
321
+ .run(notebookId);
322
+ return;
323
+ }
324
+ const placeholders = ids.map(() => "?").join(", ");
325
+ context.store.db
326
+ .prepare(`DELETE FROM ${table}
327
+ WHERE notebook_id=? AND ${idColumn} NOT IN (${placeholders})`)
328
+ .run(notebookId, ...ids);
329
+ }
330
+ function rowToCell(row) {
331
+ return {
332
+ id: row.cell_id,
333
+ type: row.type,
334
+ title: row.title,
335
+ position: { x: row.position_x, y: row.position_y },
336
+ ...(row.entity_id ? { entityId: row.entity_id } : {}),
337
+ ...(row.prompt ? { prompt: row.prompt } : {}),
338
+ ...(row.model ? { model: row.model } : {}),
339
+ inputs: parseJson(row.inputs_json, {}),
340
+ ...(row.output_artifact_id
341
+ ? { outputArtifactId: row.output_artifact_id }
342
+ : {}),
343
+ };
344
+ }
345
+ function rowToEdge(row) {
346
+ return {
347
+ id: row.edge_id,
348
+ source: row.source_cell_id,
349
+ target: row.target_cell_id,
350
+ targetInput: row.target_input,
351
+ };
352
+ }
353
+ function revisionFor(context, hash) {
354
+ const commit = context.store.db
355
+ .doltLog()
356
+ .find((item) => item.commit_hash === hash);
357
+ return {
358
+ hash,
359
+ message: commit?.message ?? "",
360
+ date: commit?.date ?? new Date().toISOString(),
361
+ author: commit?.committer ?? "videobook",
362
+ };
363
+ }
364
+ function requiredText(value, label) {
365
+ const normalized = value.trim();
366
+ if (!normalized)
367
+ throw new Error(`${label} is required`);
368
+ return normalized;
369
+ }
370
+ function requiredDate(value, label) {
371
+ const parsed = Date.parse(value);
372
+ if (!Number.isFinite(parsed))
373
+ throw new Error(`${label} must be a valid date`);
374
+ return parsed;
375
+ }
376
+ function validateEntityType(type) {
377
+ if (!["prompt", "character", "scene"].includes(type)) {
378
+ throw new Error(`Invalid entity type: ${type}`);
379
+ }
380
+ }
381
+ function validateRunStatus(status) {
382
+ if (!["completed", "failed", "aborted"].includes(status)) {
383
+ throw new Error(`Invalid notebook run status: ${status}`);
384
+ }
385
+ }
386
+ function callerOrNewId(id, label) {
387
+ const resolved = id ?? newUuidV7();
388
+ assertUuidV7(resolved, label);
389
+ return resolved;
390
+ }
391
+ const ENTITY_SELECT = `
392
+ SELECT entity_id, type, name, description, prompt, data_json, created_at
393
+ FROM entities
394
+ `;
395
+ const NOTEBOOK_SELECT = `
396
+ SELECT notebook_id, name, properties_json, created_at
397
+ FROM notebooks
398
+ `;
399
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"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"}