videobook-engine 2.0.1 → 5.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 (171) hide show
  1. package/README.md +99 -68
  2. package/dist/artifacts.d.ts +4 -9
  3. package/dist/artifacts.d.ts.map +1 -1
  4. package/dist/artifacts.js +78 -138
  5. package/dist/artifacts.js.map +1 -1
  6. package/dist/books.d.ts +1 -1
  7. package/dist/books.d.ts.map +1 -1
  8. package/dist/books.js +18 -10
  9. package/dist/books.js.map +1 -1
  10. package/dist/cas.d.ts +27 -1
  11. package/dist/cas.d.ts.map +1 -1
  12. package/dist/cas.js +78 -6
  13. package/dist/cas.js.map +1 -1
  14. package/dist/catalog-metadata.d.ts +56 -0
  15. package/dist/catalog-metadata.d.ts.map +1 -0
  16. package/dist/catalog-metadata.js +42 -0
  17. package/dist/catalog-metadata.js.map +1 -0
  18. package/dist/communications.js +4 -2
  19. package/dist/communications.js.map +1 -1
  20. package/dist/context.d.ts +9 -6
  21. package/dist/context.d.ts.map +1 -1
  22. package/dist/context.js +42 -51
  23. package/dist/context.js.map +1 -1
  24. package/dist/domain.d.ts +39 -2
  25. package/dist/domain.d.ts.map +1 -1
  26. package/dist/domain.js +846 -64
  27. package/dist/domain.js.map +1 -1
  28. package/dist/edit-policy.d.ts +3 -0
  29. package/dist/edit-policy.d.ts.map +1 -0
  30. package/dist/edit-policy.js +6 -0
  31. package/dist/edit-policy.js.map +1 -0
  32. package/dist/edits.d.ts +10 -0
  33. package/dist/edits.d.ts.map +1 -0
  34. package/dist/edits.js +1392 -0
  35. package/dist/edits.js.map +1 -0
  36. package/dist/engine-types.d.ts +171 -86
  37. package/dist/engine-types.d.ts.map +1 -1
  38. package/dist/engine-types.js +32 -0
  39. package/dist/engine-types.js.map +1 -1
  40. package/dist/engine.d.ts +89 -26
  41. package/dist/engine.d.ts.map +1 -1
  42. package/dist/engine.js +27 -21
  43. package/dist/engine.js.map +1 -1
  44. package/dist/files.d.ts.map +1 -1
  45. package/dist/files.js +32 -28
  46. package/dist/files.js.map +1 -1
  47. package/dist/fork.d.ts +148 -0
  48. package/dist/fork.d.ts.map +1 -0
  49. package/dist/fork.js +602 -0
  50. package/dist/fork.js.map +1 -0
  51. package/dist/generations.d.ts +9 -0
  52. package/dist/generations.d.ts.map +1 -0
  53. package/dist/generations.js +175 -0
  54. package/dist/generations.js.map +1 -0
  55. package/dist/history.d.ts +2 -5
  56. package/dist/history.d.ts.map +1 -1
  57. package/dist/history.js +183 -640
  58. package/dist/history.js.map +1 -1
  59. package/dist/index.d.ts +21 -7
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +15 -5
  62. package/dist/index.js.map +1 -1
  63. package/dist/job-queue.d.ts +2 -0
  64. package/dist/job-queue.d.ts.map +1 -1
  65. package/dist/job-queue.js +29 -2
  66. package/dist/job-queue.js.map +1 -1
  67. package/dist/media.d.ts +3 -3
  68. package/dist/media.d.ts.map +1 -1
  69. package/dist/media.js +6 -5
  70. package/dist/media.js.map +1 -1
  71. package/dist/merge-policy.d.ts +83 -0
  72. package/dist/merge-policy.d.ts.map +1 -0
  73. package/dist/merge-policy.js +203 -0
  74. package/dist/merge-policy.js.map +1 -0
  75. package/dist/metadata.d.ts.map +1 -1
  76. package/dist/metadata.js +17 -23
  77. package/dist/metadata.js.map +1 -1
  78. package/dist/migration.d.ts +9 -0
  79. package/dist/migration.d.ts.map +1 -0
  80. package/dist/migration.js +564 -0
  81. package/dist/migration.js.map +1 -0
  82. package/dist/mvp-contract-fixtures.d.ts +244 -0
  83. package/dist/mvp-contract-fixtures.d.ts.map +1 -0
  84. package/dist/mvp-contract-fixtures.js +556 -0
  85. package/dist/mvp-contract-fixtures.js.map +1 -0
  86. package/dist/mvp-contracts.d.ts +761 -0
  87. package/dist/mvp-contracts.d.ts.map +1 -0
  88. package/dist/mvp-contracts.js +59 -0
  89. package/dist/mvp-contracts.js.map +1 -0
  90. package/dist/mvp-time.d.ts +54 -0
  91. package/dist/mvp-time.d.ts.map +1 -0
  92. package/dist/mvp-time.js +148 -0
  93. package/dist/mvp-time.js.map +1 -0
  94. package/dist/notebook/types.d.ts +85 -8
  95. package/dist/notebook/types.d.ts.map +1 -1
  96. package/dist/notebook-grid.d.ts +37 -0
  97. package/dist/notebook-grid.d.ts.map +1 -0
  98. package/dist/notebook-grid.js +160 -0
  99. package/dist/notebook-grid.js.map +1 -0
  100. package/dist/notebook-media-artifact.d.ts +23 -0
  101. package/dist/notebook-media-artifact.d.ts.map +1 -0
  102. package/dist/notebook-media-artifact.js +67 -0
  103. package/dist/notebook-media-artifact.js.map +1 -0
  104. package/dist/notebook-mentions.d.ts +20 -0
  105. package/dist/notebook-mentions.d.ts.map +1 -0
  106. package/dist/notebook-mentions.js +53 -0
  107. package/dist/notebook-mentions.js.map +1 -0
  108. package/dist/order-keys.d.ts +22 -0
  109. package/dist/order-keys.d.ts.map +1 -0
  110. package/dist/order-keys.js +262 -0
  111. package/dist/order-keys.js.map +1 -0
  112. package/dist/runtime-services.js +8 -11
  113. package/dist/runtime-services.js.map +1 -1
  114. package/dist/schema.d.ts +8 -5
  115. package/dist/schema.d.ts.map +1 -1
  116. package/dist/schema.js +624 -141
  117. package/dist/schema.js.map +1 -1
  118. package/dist/search-benchmark.d.ts +4 -0
  119. package/dist/search-benchmark.d.ts.map +1 -0
  120. package/dist/search-benchmark.js +144 -0
  121. package/dist/search-benchmark.js.map +1 -0
  122. package/dist/sequences.d.ts +20 -0
  123. package/dist/sequences.d.ts.map +1 -0
  124. package/dist/sequences.js +825 -0
  125. package/dist/sequences.js.map +1 -0
  126. package/dist/similarity.js +10 -10
  127. package/dist/similarity.js.map +1 -1
  128. package/dist/status.js +8 -10
  129. package/dist/status.js.map +1 -1
  130. package/dist/storage.d.ts +3 -1
  131. package/dist/storage.d.ts.map +1 -1
  132. package/dist/storage.js +388 -7
  133. package/dist/storage.js.map +1 -1
  134. package/dist/store.d.ts +64 -3
  135. package/dist/store.d.ts.map +1 -1
  136. package/dist/store.js +354 -68
  137. package/dist/store.js.map +1 -1
  138. package/dist/streams.d.ts +10 -0
  139. package/dist/streams.d.ts.map +1 -0
  140. package/dist/streams.js +183 -0
  141. package/dist/streams.js.map +1 -0
  142. package/dist/temporal-models.d.ts +48 -0
  143. package/dist/temporal-models.d.ts.map +1 -0
  144. package/dist/temporal-models.js +278 -0
  145. package/dist/temporal-models.js.map +1 -0
  146. package/dist/temporal-search.d.ts +29 -0
  147. package/dist/temporal-search.d.ts.map +1 -0
  148. package/dist/temporal-search.js +1551 -0
  149. package/dist/temporal-search.js.map +1 -0
  150. package/dist/transcripts.d.ts +16 -0
  151. package/dist/transcripts.d.ts.map +1 -0
  152. package/dist/transcripts.js +519 -0
  153. package/dist/transcripts.js.map +1 -0
  154. package/docs/engine-layout.md +345 -110
  155. package/docs/mvp-prd.md +918 -0
  156. package/fixtures/media/vancat.mp4 +0 -0
  157. package/fixtures/media/vancat_profile.jpg +0 -0
  158. package/fixtures/v5/contract-fixtures.json +1532 -0
  159. package/package.json +42 -5
  160. package/dist/history-types.d.ts +0 -74
  161. package/dist/history-types.d.ts.map +0 -1
  162. package/dist/history-types.js +0 -2
  163. package/dist/history-types.js.map +0 -1
  164. package/dist/resolver.d.ts +0 -15
  165. package/dist/resolver.d.ts.map +0 -1
  166. package/dist/resolver.js +0 -81
  167. package/dist/resolver.js.map +0 -1
  168. package/dist/timeline.d.ts +0 -9
  169. package/dist/timeline.d.ts.map +0 -1
  170. package/dist/timeline.js +0 -236
  171. package/dist/timeline.js.map +0 -1
package/README.md CHANGED
@@ -4,6 +4,9 @@
4
4
  videobook per engine root. It keeps book state, artifacts, files, metadata,
5
5
  notebook graphs, revisions, and action history in a single catalog.
6
6
 
7
+ The temporal search, sequence, and edit-engine requirements for the Videobook
8
+ MVP are in [docs/mvp-prd.md](docs/mvp-prd.md).
9
+
7
10
  There is no project layer. A fresh engine root creates exactly one Book;
8
11
  reopening that root always returns the same book.
9
12
 
@@ -18,7 +21,7 @@ const engine = createEngine({
18
21
  });
19
22
 
20
23
  const book = engine.book.get();
21
- // { bookId: "…", slug: "my-story", createdAt: … }
24
+ // { bookId: "…", name: "My Story", createdAt: … }
22
25
 
23
26
  const script = await engine.artifacts.create({
24
27
  kind: "script",
@@ -40,6 +43,31 @@ engine.close();
40
43
  later opens it is optional and never changes the stored book. Rename the book
41
44
  explicitly with `await engine.book.rename("new-name")`.
42
45
 
46
+ ## MVP contracts
47
+
48
+ Contract version 1, introduced with schema v5 and carried by the current
49
+ schema v19 catalog, defines the media-time, stream, transcript, sequence,
50
+ temporal-search, edit-intent, job, and copy-forward migration boundary:
51
+
52
+ ```ts
53
+ import {
54
+ MVP_CONTRACT_VERSION,
55
+ MVP_CONTRACT_FIXTURES,
56
+ type EditIntent,
57
+ type SearchPage,
58
+ type Sequence,
59
+ type SourceRange,
60
+ } from "videobook-engine";
61
+ ```
62
+
63
+ The typed fixtures cover every P0 edit operation and the main cross-repository
64
+ projections. The equivalent checked-in JSON fixture is exported as
65
+ `videobook-engine/fixtures/v5`. Contract objects use rational, half-open media
66
+ ranges and immutable object-hash-qualified stream references. The legacy
67
+ schema-v4 timeline compiles into the sequences model at import; the schema-v4
68
+ similarity API remains a compatibility surface until it compiles into
69
+ temporal-search semantics.
70
+
43
71
  ## Storage model
44
72
 
45
73
  Each engine root owns exactly one book:
@@ -56,65 +84,65 @@ rootDir/
56
84
  Semantic tables are committed as Dolt revisions. Runtime tables (jobs, leases,
57
85
  views, caches, settings, and logs) share the same database, match the
58
86
  versioned `runtime_%` ignore policy, and are never staged. Semantic surrogate
59
- identities are UUIDv7 values. Artifact slugs are human-facing names and can be
87
+ identities are UUIDv7 values. Artifact labels are free-text display names and can be
60
88
  reused after hard deletion; immutable CAS objects remain available to history.
61
89
 
62
- The current catalog format is schema version 4. It intentionally rejects v3
63
- and older catalogs rather than migrating them; create a fresh engine root.
64
-
65
- The 25 versioned semantic tables are `engine_schema`, `book`, `artifacts`,
66
- `objects`, `artifact_files`, `book_metadata`, `artifact_metadata`,
67
- `entities`, `notebooks`, `cells`, `edges`, `runs`, `timeline`,
68
- `timeline_slots`, `timeline_audio`, `audio_waveforms`, `prompt_entries`,
69
- `messages`, `operations`, `actions`, `action_events`, `action_parents`,
70
- `action_artifacts`, `action_write_set`, and `job_runs`. Dolt's versioned
71
- `dolt_ignore` configuration table carries the local-table policy.
72
-
73
- The 14 local-only tables are `runtime_meta`, `runtime_jobs`,
90
+ The current catalog format is schema version 20. Valid schema version 19
91
+ catalogs upgrade in place. Catalogs with cells outside the fixed 26-by-13
92
+ notebook grid are rejected, and older catalogs require an explicit migration
93
+ or a fresh engine root.
94
+
95
+ The 34 versioned semantic tables are `engine_schema`, `book`, `artifacts`,
96
+ `objects`, `artifact_files`, `artifact_streams`, `book_metadata`,
97
+ `artifact_metadata`, `entities`, `notebooks`, `notebook_fields`, `cells`,
98
+ `notebook_cell_executions`, `notebook_generation_plans`,
99
+ `notebook_run_plans`, `notebook_transcript_edits`,
100
+ `notebook_transcript_attachments`, `edges`, `runs`, `cell_references`,
101
+ `pinned_search_results`, `transcripts`, `transcript_segments`,
102
+ `transcript_words`, `sequences`, `sequence_tracks`, `sequence_clips`,
103
+ `clip_links`, `clip_transforms`, `transitions`, `caption_cues`,
104
+ `audio_waveforms`, `prompt_entries`, and `messages`. Dolt's versioned
105
+ `dolt_ignore` configuration table carries the local-table policy. Provenance
106
+ is the commit log itself: every semantic commit carries its operation,
107
+ parameters, and write set in a structured commit message, authored by the
108
+ configured engine identity.
109
+
110
+ The 23 local-only tables are `runtime_meta`, `runtime_jobs`, `job_runs`,
74
111
  `runtime_resource_leases`, `runtime_object_publications`,
75
112
  `runtime_workspace_entries`, `runtime_artifact_views`,
76
113
  `runtime_pending_tasks`, `runtime_generation_errors`, `runtime_settings`,
77
- `runtime_logs`, `runtime_commit_outbox`, `runtime_similarity_embeddings`,
114
+ `runtime_logs`, `runtime_commit_outbox`, `runtime_index_manifests`,
115
+ `runtime_index_generations`, `runtime_index_coverage`,
116
+ `runtime_media_segments`, `runtime_segment_text`,
117
+ `runtime_segment_embeddings`, `runtime_segment_fingerprints`,
118
+ `runtime_index_batches`, `runtime_similarity_embeddings`,
78
119
  `runtime_text_similarity_documents`, and `runtime_text_similarity_chunks`.
79
120
 
80
121
  See [the complete engine layout](docs/engine-layout.md) for every schema
81
122
  column, relationship, index, runtime/CAS structure, current editing contract,
82
123
  and the additional normalized structures a full non-linear editor will need.
83
124
 
84
- ## Artifacts and slugs
125
+ ## Artifacts, labels, and identity
85
126
 
86
- Artifact slugs are canonical and kind-prefixed. Supplying a `name` derives a
87
- slug; supplying a `slug` validates it. Repeated name-based creation adds a
88
- numeric suffix when needed.
89
-
90
- | Kind | Prefix | Example |
91
- | --- | --- | --- |
92
- | `video` | `vid-` | `vid-opening-shot` |
93
- | `image` | `img-` | `img-cat-portrait` |
94
- | `audio` | `aud-` | `aud-ambient-bed` |
95
- | `script` | `script-` | `script-opening-draft` |
96
- | `character` | `char-` | `char-protagonist` |
97
- | `prompt` | `prompt-` | `prompt-sunrise` |
98
- | `scene` | `scene-` | `scene-rooftop` |
99
- | `final` | `final` | `final` |
100
-
101
- There is no `notebook` artifact kind or `book-` artifact prefix. Notebook
102
- graphs remain available separately through `engine.notebooks`.
127
+ Artifacts are identified by `artifact_id` (UUIDv7) the only reference
128
+ handle. An optional free-text `label` exists purely for display: it is
129
+ non-unique, never parsed, and never used to look anything up. Media content
130
+ is addressed by `object_hash` in the CAS.
103
131
 
104
132
  ## API surface
105
133
 
106
- - `engine.book` — `get()` and `rename(slug)` for the singleton book
107
- - `engine.artifacts` — create, list, get, rename, delete, and resolve slugs
134
+ - `engine.book` — `get()` and `rename(name)` for the singleton book
135
+ - `engine.artifacts` — create, list, get, rename (relabel), and delete
108
136
  - `engine.files` and `engine.workspaces` — immutable object-backed files and
109
137
  disposable materialization
110
138
  - `engine.metadata` — book metadata, artifact metadata, and audio waveforms
111
- - `engine.timeline` typed timeline reads, revision reads, replacement, and
112
- reset
139
+ - `engine.sequences` and `engine.edits` the sequence/track/clip timeline
140
+ model and its transactional edit operations
113
141
  - `engine.entities` and `engine.notebooks` — normalized characters, prompts,
114
142
  scenes, and notebook graph documents
115
143
  - `engine.prompts` and `engine.messages` — semantic prompt and message history
116
- - `engine.history` — revisions, generic action graph entries, and forward
117
- restores
144
+ - `engine.history` — revision listings, per-artifact history, and forward
145
+ restores derived from the Dolt commit log
118
146
  - `engine.jobs`, `engine.status`, `engine.settings`, and `engine.logs` —
119
147
  runtime coordination
120
148
  - `engine.storage` — object publication and catalog backup
@@ -123,8 +151,25 @@ graphs remain available separately through `engine.notebooks`.
123
151
  All APIs operate in the engine's one book. No method accepts or returns a
124
152
  project ID.
125
153
 
126
- Deleting an artifact or entity that is referenced by a live cell or timeline
127
- row returns `IN_USE` with `details.references`. Deleting a notebook cascades
154
+ ### Full API benchmark
155
+
156
+ The deterministic benchmark exercises every top-level `Engine` API group,
157
+ reports latency distributions per operation, and identifies the smallest set
158
+ of operations responsible for at least 80% of measured time:
159
+
160
+ ```bash
161
+ npm run benchmark:api
162
+ npm run benchmark:api -- --json --output /tmp/videobook-api-benchmark.json
163
+ npm run benchmark:api:smoke
164
+ ```
165
+
166
+ The default workload creates 40 artifacts, indexes 2,000 temporal moments, and
167
+ repeats the read paths 100 times. Use `--artifacts`, `--moments`, and `--reads`
168
+ to select a different workload; use `--retain-fixture` to keep the generated
169
+ engine root for inspection.
170
+
171
+ Deleting an artifact or entity that is referenced by a live cell or clip
172
+ returns `IN_USE` with `details.references`. Deleting a notebook cascades
128
173
  its owned cells, edges, and terminal runs. There are no tombstone rows.
129
174
 
130
175
  ## Revisions and restores
@@ -135,44 +180,30 @@ unambiguous prefix) to inspect or restore state:
135
180
  ```ts
136
181
  const revisions = engine.history.revisions();
137
182
 
138
- await engine.history.restoreArtifact(
139
- artifactId,
140
- revisions[0]!.hash,
141
- "script-restored-draft", // optional replacement slug
142
- );
183
+ await engine.history.restoreArtifact(artifactId, revisions[0]!.hash);
143
184
 
144
185
  await engine.history.restore(revisions[0]!.hash);
145
186
  ```
146
187
 
147
188
  `restoreArtifact` keeps the artifact UUID stable and restores its files,
148
- metadata, and waveform as a new forward revision. `restore` replays the whole
149
- book snapshot forward: book metadata, artifacts and files, entities,
150
- notebooks, timeline, prompts, and messages. Runtime work is invalidated and
151
- active jobs are aborted during a restore.
189
+ metadata, and waveform as a new forward revision. `restore` mechanically
190
+ reloads every semantic table from its `dolt_at_*` projection at the target
191
+ revision book metadata, artifacts and files, entities, notebooks, sequences,
192
+ prompts, messages, and the rest so the restored state is exactly the state
193
+ that revision recorded. Runtime work is invalidated and active jobs are
194
+ aborted during a restore.
152
195
 
153
196
  ## Future forks
154
197
 
155
- Schema v4 prepares stable row identities and normalized merge boundaries for
156
- DoltHub-native forks. A fork is a separate catalog copy in another namespace,
198
+ Schema v18 adds independently mergeable notebook workflow rows while retaining
199
+ the stable identities and normalized boundaries introduced in v17. A fork is a
200
+ separate catalog copy in another namespace,
157
201
  keeps the same `bookId`, and can open a pull request against the upstream
158
202
  `main` branch. User, origin, fork, and pull-request APIs are intentionally not
159
203
  part of this release; an open engine still accepts only its local `main`
160
- branch.
161
-
162
- Generic action records are available for higher-level workflows:
163
-
164
- ```ts
165
- const action = await engine.history.recordAction({
166
- operation: "generate_image",
167
- scope: "artifact",
168
- targetArtifactId: imageId,
169
- inputArtifactIds: [promptId],
170
- outputArtifactIds: [imageId],
171
- writeSet: [`artifact:${imageId}`],
172
- });
173
-
174
- const page = engine.history.actions({ limit: 50 });
175
- ```
204
+ branch. Because provenance lives in authored Dolt commits rather than
205
+ engine-owned meta-history tables, merging a fork never requires merging a
206
+ parallel audit graph.
176
207
 
177
208
  ## Similarity
178
209
 
@@ -1,20 +1,15 @@
1
1
  import type { Artifact, ArtifactKind, CreateArtifactInput, EngineError, RenameArtifactInput, Result } from "./engine-types.js";
2
2
  import { EngineContext } from "./context.js";
3
3
  export declare function createArtifactsApi(context: EngineContext): {
4
- create: (input: CreateArtifactInput | string, name?: string) => Promise<Result<Artifact, EngineError>>;
4
+ create: (input: CreateArtifactInput | string, label?: string) => Promise<Result<Artifact, EngineError>>;
5
5
  list: (options?: {
6
6
  sort?: "newest" | "oldest";
7
7
  }) => Artifact[];
8
- get: (artifact: string) => Result<Artifact, EngineError>;
9
- resolveSlug: (slug: string) => Result<Artifact, EngineError>;
10
- isSlugAvailable: (slug: string) => boolean;
11
- rename: (input: RenameArtifactInput | string, name?: string) => Promise<Result<Artifact, EngineError>>;
12
- delete: (artifact: string) => Promise<Result<{
8
+ get: (artifactId: string) => Result<Artifact, EngineError>;
9
+ rename: (input: RenameArtifactInput | string, label?: string) => Promise<Result<Artifact, EngineError>>;
10
+ delete: (artifactId: string) => Promise<Result<{
13
11
  artifactId: string;
14
- slug: string;
15
12
  }, EngineError>>;
16
13
  };
17
14
  export declare function normalizeKind(input: string): ArtifactKind;
18
- /** Normalizes a name or slug with the canonical prefix for its artifact kind. */
19
- export declare function artifactSlug(kind: ArtifactKind, input: string): string;
20
15
  //# sourceMappingURL=artifacts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EAId,MAAM,cAAc,CAAC;AActB,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa;oBAG5C,mBAAmB,GAAG,MAAM,SAC5B,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;qBAExB;QAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,KAAG,QAAQ,EAAE;oBAE5C,MAAM,KAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;wBAElC,MAAM,KAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;4BAYlC,MAAM,KAAG,OAAO;oBAS/B,mBAAmB,GAAG,MAAM,SAC5B,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;uBAG7B,MAAM,KACf,OAAO,CACR,MAAM,CACJ;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EACpC,WAAW,CACZ,CACF;EAEJ;AAgPD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CA4BzD;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAuBtE"}
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EAId,MAAM,cAAc,CAAC;AActB,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa;oBAG5C,mBAAmB,GAAG,MAAM,UAC3B,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;qBAExB;QAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,KAAG,QAAQ,EAAE;sBAE1C,MAAM,KAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;oBAG/C,mBAAmB,GAAG,MAAM,UAC3B,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;yBAG3B,MAAM,KACjB,OAAO,CAAC,MAAM,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,WAAW,CAAC,CAAC;EAG1D;AAoOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CA4BzD"}
package/dist/artifacts.js CHANGED
@@ -6,60 +6,44 @@ import { EngineFault } from "./store.js";
6
6
  import { newUuidV7 } from "./ids.js";
7
7
  export function createArtifactsApi(context) {
8
8
  return {
9
- create: (input, name) => createArtifact(context, input, name),
9
+ create: (input, label) => createArtifact(context, input, label),
10
10
  list: (options) => listArtifacts(context, options),
11
- get: (artifact) => syncResultOf(() => context.artifact(context.artifactRow(artifact))),
12
- resolveSlug: (slug) => syncResultOf(() => {
13
- const row = context.store.db
14
- .prepare(`SELECT artifact_id, slug, kind, created_at
15
- FROM artifacts
16
- WHERE slug=?`)
17
- .get(slug);
18
- if (!row)
19
- throw new Error(`Active artifact slug not found: ${slug}`);
20
- return context.artifact(row);
21
- }),
22
- isSlugAvailable: (slug) => !context.store.db
23
- .prepare(`SELECT 1 AS present
24
- FROM artifacts
25
- WHERE slug=?`)
26
- .get(slug),
27
- rename: (input, name) => renameArtifact(context, input, name),
28
- delete: (artifact) => deleteArtifact(context, artifact),
11
+ get: (artifactId) => syncResultOf(() => context.artifact(context.artifactRowById(artifactId))),
12
+ rename: (input, label) => renameArtifact(context, input, label),
13
+ delete: (artifactId) => deleteArtifact(context, artifactId),
29
14
  };
30
15
  }
31
- async function createArtifact(context, input, positionalName) {
16
+ function normalizeLabel(input) {
17
+ const label = input?.trim();
18
+ return label ? label : null;
19
+ }
20
+ async function createArtifact(context, input, positionalLabel) {
32
21
  return resultOf(async () => {
33
22
  const parsed = typeof input === "string"
34
23
  ? {
35
24
  kind: normalizeKind(input),
36
- name: positionalName ?? "",
37
- explicitSlug: undefined,
25
+ label: normalizeLabel(positionalLabel),
38
26
  }
39
27
  : {
40
28
  kind: normalizeKind(input.kind),
41
- name: input.name ?? input.slug ?? "",
42
- explicitSlug: input.slug,
29
+ label: normalizeLabel(input.label),
43
30
  };
44
- const base = artifactSlug(parsed.kind, parsed.explicitSlug ?? parsed.name);
45
- const slug = parsed.explicitSlug === undefined
46
- ? nextActiveSlug(context, base)
47
- : base;
48
31
  const artifactId = newUuidV7();
49
32
  const mutation = await context.store.semantic({
50
33
  operation: "create_artifact",
34
+ tables: ["artifacts"],
51
35
  artifactId,
52
- details: { slug, kind: parsed.kind },
53
- writeSet: [
54
- `artifact:${artifactId}`,
55
- `artifact-slug:${slug}`,
56
- ],
57
- }, ["artifacts"], (_operationId, now) => {
36
+ details: {
37
+ ...(parsed.label === null ? {} : { label: parsed.label }),
38
+ kind: parsed.kind,
39
+ },
40
+ writeSet: [`artifact:${artifactId}`],
41
+ }, (_operationId, now) => {
58
42
  context.store.db
59
43
  .prepare(`INSERT INTO artifacts(
60
- artifact_id, slug, kind, created_at
44
+ artifact_id, label, kind, created_at
61
45
  ) VALUES (?, ?, ?, ?)`)
62
- .run(artifactId, slug, parsed.kind, now);
46
+ .run(artifactId, parsed.label, parsed.kind, now);
63
47
  context.store.db
64
48
  .prepare(`INSERT INTO runtime_artifact_views(
65
49
  artifact_id, status, meta_json, deadline_at, updated_at
@@ -72,54 +56,54 @@ async function createArtifact(context, input, positionalName) {
72
56
  .run(artifactId, context.artifactPath(artifactId), now);
73
57
  });
74
58
  context.ensureArtifactWorkspace(artifactId);
75
- return ok(context.artifact(context.artifactRow(artifactId)), mutation.revision);
59
+ return ok(context.artifact(context.artifactRowById(artifactId)), mutation.revision);
76
60
  });
77
61
  }
78
62
  function listArtifacts(context, options = {}) {
79
63
  const direction = options.sort === "oldest" ? "ASC" : "DESC";
80
64
  const rows = context.store.db
81
- .prepare(`SELECT artifact_id, slug, kind, created_at
65
+ .prepare(`SELECT artifact_id, label, kind, created_at
82
66
  FROM artifacts
83
67
  ORDER BY created_at ${direction}, artifact_id ${direction}`)
84
68
  .all();
85
69
  return rows.map((row) => context.artifact(row));
86
70
  }
87
- async function renameArtifact(context, input, positionalName) {
71
+ async function renameArtifact(context, input, positionalLabel) {
88
72
  return resultOf(async () => {
89
73
  const parsed = typeof input === "string"
90
- ? { artifact: input, name: positionalName ?? "", slug: undefined }
74
+ ? { artifact: input, label: positionalLabel ?? "" }
91
75
  : input;
92
- const current = context.artifactRow(parsed.artifact);
93
- const slug = artifactSlug(current.kind, parsed.slug ?? parsed.name ?? "");
94
- if (slug === current.slug)
76
+ const current = context.artifactRowById(parsed.artifact);
77
+ const label = normalizeLabel(parsed.label);
78
+ if (label === current.label)
95
79
  return context.artifact(current);
96
80
  const mutation = await context.store.semantic({
97
81
  operation: "rename_artifact",
82
+ tables: ["artifacts"],
98
83
  artifactId: current.artifact_id,
99
- details: { oldSlug: current.slug, newSlug: slug },
100
- writeSet: [
101
- `artifact:${current.artifact_id}`,
102
- `artifact-slug:${current.slug}`,
103
- `artifact-slug:${slug}`,
104
- ],
105
- }, ["artifacts"], () => {
84
+ details: {
85
+ ...(current.label === null ? {} : { oldLabel: current.label }),
86
+ ...(label === null ? {} : { newLabel: label }),
87
+ },
88
+ writeSet: [`artifact:${current.artifact_id}`],
89
+ }, () => {
106
90
  context.store.db
107
91
  .prepare(`UPDATE artifacts
108
- SET slug=?
92
+ SET label=?
109
93
  WHERE artifact_id=?`)
110
- .run(slug, current.artifact_id);
94
+ .run(label, current.artifact_id);
111
95
  });
112
- return ok(context.artifact(context.artifactRow(current.artifact_id)), mutation.revision);
96
+ return ok(context.artifact(context.artifactRowById(current.artifact_id)), mutation.revision);
113
97
  });
114
98
  }
115
- async function deleteArtifact(context, artifactReference) {
99
+ async function deleteArtifact(context, artifactId) {
116
100
  return resultOf(async () => {
117
- const artifact = context.artifactRow(artifactReference);
101
+ const artifact = context.artifactRowById(artifactId);
118
102
  const references = artifactReferences(context, artifact.artifact_id);
119
103
  if (references.length > 0) {
120
104
  throw new EngineFault({
121
105
  code: "IN_USE",
122
- message: `Artifact is still referenced: ${artifact.slug}`,
106
+ message: `Artifact is still referenced: ${artifact.artifact_id}`,
123
107
  details: { references },
124
108
  });
125
109
  }
@@ -131,22 +115,19 @@ async function deleteArtifact(context, artifactReference) {
131
115
  .all(artifact.artifact_id);
132
116
  const mutation = await context.store.semantic({
133
117
  operation: "delete_artifact",
118
+ tables: [
119
+ "artifacts",
120
+ "artifact_files",
121
+ "artifact_metadata",
122
+ "audio_waveforms",
123
+ ],
134
124
  artifactId: artifact.artifact_id,
135
125
  details: {
136
- slug: artifact.slug,
126
+ ...(artifact.label === null ? {} : { label: artifact.label }),
137
127
  cancelledJobs: jobs.map((job) => job.id),
138
128
  },
139
- writeSet: [
140
- `artifact:${artifact.artifact_id}`,
141
- `artifact-slug:${artifact.slug}`,
142
- ],
143
- }, [
144
- "artifacts",
145
- "artifact_files",
146
- "artifact_metadata",
147
- "audio_waveforms",
148
- "job_runs",
149
- ], (_operationId, now) => {
129
+ writeSet: [`artifact:${artifact.artifact_id}`],
130
+ }, (_operationId, now) => {
150
131
  context.store.db
151
132
  .prepare("DELETE FROM artifacts WHERE artifact_id=?")
152
133
  .run(artifact.artifact_id);
@@ -194,10 +175,7 @@ async function deleteArtifact(context, artifactReference) {
194
175
  recursive: true,
195
176
  force: true,
196
177
  });
197
- return ok({
198
- artifactId: artifact.artifact_id,
199
- slug: artifact.slug,
200
- }, mutation.revision);
178
+ return ok({ artifactId: artifact.artifact_id }, mutation.revision);
201
179
  });
202
180
  }
203
181
  export function normalizeKind(input) {
@@ -229,47 +207,11 @@ export function normalizeKind(input) {
229
207
  throw new Error(`Invalid artifact kind: ${input}`);
230
208
  }
231
209
  }
232
- /** Normalizes a name or slug with the canonical prefix for its artifact kind. */
233
- export function artifactSlug(kind, input) {
234
- if (kind === "final")
235
- return "final";
236
- const prefix = prefixForKind(kind);
237
- let normalized = input
238
- .trim()
239
- .toLowerCase()
240
- .replace(/^@/, "")
241
- .replace(/[^a-z0-9_-]+/g, "-")
242
- .replace(/-+/g, "-")
243
- .replace(/^[-_]+|[-_]+$/g, "");
244
- if (!normalized)
245
- throw new Error("Artifact name or slug is required");
246
- const knownPrefix = /^(vid|img|aud|script|char|prompt|scene|prm|scn)-/;
247
- if (knownPrefix.test(normalized)) {
248
- if (!normalized.startsWith(`${prefix}-`)) {
249
- throw new Error(`Artifact slug ${normalized} does not match kind ${kind}`);
250
- }
251
- return normalized;
252
- }
253
- normalized = `${prefix}-${normalized}`;
254
- if (!/^[a-z0-9]+(?:[a-z0-9_-]*[a-z0-9])?$/.test(normalized)) {
255
- throw new Error(`Invalid artifact slug: ${normalized}`);
256
- }
257
- return normalized;
258
- }
259
- function nextActiveSlug(context, base) {
260
- let suffix = 1;
261
- let candidate = base;
262
- while (context.store.db
263
- .prepare(`SELECT 1 AS present
264
- FROM artifacts
265
- WHERE slug=?`)
266
- .get(candidate)) {
267
- suffix += 1;
268
- candidate = `${base}-${suffix}`;
269
- }
270
- return candidate;
271
- }
272
210
  function artifactReferences(context, artifactId) {
211
+ // Covers every RESTRICT foreign key targeting artifacts so a refused
212
+ // delete surfaces as IN_USE rather than a raw FK error mapped to
213
+ // IO_ERROR. CASCADE-owned rows (artifact_files, artifact_metadata,
214
+ // audio_waveforms) are deleted with the artifact and are not listed.
273
215
  const references = [];
274
216
  const cells = context.store.db
275
217
  .prepare(`SELECT notebook_id, cell_id FROM cells
@@ -279,34 +221,32 @@ function artifactReferences(context, artifactId) {
279
221
  kind: "cell.outputArtifact",
280
222
  id: `${cell.notebook_id}/${cell.cell_id}`,
281
223
  })));
282
- const slots = context.store.db
283
- .prepare("SELECT slot_id FROM timeline_slots WHERE artifact_id=? ORDER BY slot_id")
224
+ const streams = context.store.db
225
+ .prepare(`SELECT stream_id FROM artifact_streams
226
+ WHERE artifact_id=? ORDER BY stream_id`)
227
+ .all(artifactId);
228
+ references.push(...streams.map((stream) => ({ kind: "stream", id: stream.stream_id })));
229
+ const transcripts = context.store.db
230
+ .prepare(`SELECT transcript_id FROM transcripts
231
+ WHERE artifact_id=? ORDER BY transcript_id`)
232
+ .all(artifactId);
233
+ references.push(...transcripts.map((row) => ({
234
+ kind: "transcript",
235
+ id: row.transcript_id,
236
+ })));
237
+ const clips = context.store.db
238
+ .prepare(`SELECT clip_id FROM sequence_clips
239
+ WHERE artifact_id=? ORDER BY clip_id`)
284
240
  .all(artifactId);
285
- references.push(...slots.map((slot) => ({ kind: "timeline.slot", id: slot.slot_id })));
286
- const audio = context.store.db
287
- .prepare("SELECT audio_id FROM timeline_audio WHERE artifact_id=? ORDER BY audio_id")
241
+ references.push(...clips.map((clip) => ({ kind: "sequenceClip", id: clip.clip_id })));
242
+ const pinned = context.store.db
243
+ .prepare(`SELECT notebook_id, cell_id, result_id FROM pinned_search_results
244
+ WHERE artifact_id=? ORDER BY notebook_id, cell_id, result_id`)
288
245
  .all(artifactId);
289
- references.push(...audio.map((item) => ({ kind: "timeline.audio", id: item.audio_id })));
246
+ references.push(...pinned.map((row) => ({
247
+ kind: "pinnedSearchResult",
248
+ id: `${row.notebook_id}/${row.cell_id}/${row.result_id}`,
249
+ })));
290
250
  return references;
291
251
  }
292
- function prefixForKind(kind) {
293
- switch (kind) {
294
- case "video":
295
- return "vid";
296
- case "image":
297
- return "img";
298
- case "audio":
299
- return "aud";
300
- case "script":
301
- return "script";
302
- case "character":
303
- return "char";
304
- case "prompt":
305
- return "prompt";
306
- case "scene":
307
- return "scene";
308
- case "final":
309
- return "final";
310
- }
311
- }
312
252
  //# sourceMappingURL=artifacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}
package/dist/books.d.ts CHANGED
@@ -2,6 +2,6 @@ import type { Book, EngineError, Result } from "./engine-types.js";
2
2
  import { EngineContext } from "./context.js";
3
3
  export declare function createBookApi(context: EngineContext): {
4
4
  get: () => Book;
5
- rename: (slug: string) => Promise<Result<Book, EngineError>>;
5
+ rename: (name: string) => Promise<Result<Book, EngineError>>;
6
6
  };
7
7
  //# sourceMappingURL=books.d.ts.map