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.
- package/README.md +99 -68
- package/dist/artifacts.d.ts +4 -9
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +78 -138
- 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 +18 -10
- package/dist/books.js.map +1 -1
- package/dist/cas.d.ts +27 -1
- package/dist/cas.d.ts.map +1 -1
- package/dist/cas.js +78 -6
- package/dist/cas.js.map +1 -1
- package/dist/catalog-metadata.d.ts +56 -0
- package/dist/catalog-metadata.d.ts.map +1 -0
- package/dist/catalog-metadata.js +42 -0
- package/dist/catalog-metadata.js.map +1 -0
- package/dist/communications.js +4 -2
- package/dist/communications.js.map +1 -1
- package/dist/context.d.ts +9 -6
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +42 -51
- package/dist/context.js.map +1 -1
- package/dist/domain.d.ts +39 -2
- package/dist/domain.d.ts.map +1 -1
- package/dist/domain.js +846 -64
- package/dist/domain.js.map +1 -1
- package/dist/edit-policy.d.ts +3 -0
- package/dist/edit-policy.d.ts.map +1 -0
- package/dist/edit-policy.js +6 -0
- package/dist/edit-policy.js.map +1 -0
- package/dist/edits.d.ts +10 -0
- package/dist/edits.d.ts.map +1 -0
- package/dist/edits.js +1392 -0
- package/dist/edits.js.map +1 -0
- package/dist/engine-types.d.ts +171 -86
- package/dist/engine-types.d.ts.map +1 -1
- package/dist/engine-types.js +32 -0
- package/dist/engine-types.js.map +1 -1
- package/dist/engine.d.ts +89 -26
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +27 -21
- package/dist/engine.js.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +32 -28
- package/dist/files.js.map +1 -1
- package/dist/fork.d.ts +148 -0
- package/dist/fork.d.ts.map +1 -0
- package/dist/fork.js +602 -0
- package/dist/fork.js.map +1 -0
- 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 -5
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +183 -640
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +21 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/job-queue.d.ts +2 -0
- package/dist/job-queue.d.ts.map +1 -1
- package/dist/job-queue.js +29 -2
- package/dist/job-queue.js.map +1 -1
- package/dist/media.d.ts +3 -3
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +6 -5
- package/dist/media.js.map +1 -1
- package/dist/merge-policy.d.ts +83 -0
- package/dist/merge-policy.d.ts.map +1 -0
- package/dist/merge-policy.js +203 -0
- package/dist/merge-policy.js.map +1 -0
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +17 -23
- package/dist/metadata.js.map +1 -1
- package/dist/migration.d.ts +9 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +564 -0
- package/dist/migration.js.map +1 -0
- package/dist/mvp-contract-fixtures.d.ts +244 -0
- package/dist/mvp-contract-fixtures.d.ts.map +1 -0
- package/dist/mvp-contract-fixtures.js +556 -0
- package/dist/mvp-contract-fixtures.js.map +1 -0
- package/dist/mvp-contracts.d.ts +761 -0
- package/dist/mvp-contracts.d.ts.map +1 -0
- package/dist/mvp-contracts.js +59 -0
- package/dist/mvp-contracts.js.map +1 -0
- package/dist/mvp-time.d.ts +54 -0
- package/dist/mvp-time.d.ts.map +1 -0
- package/dist/mvp-time.js +148 -0
- package/dist/mvp-time.js.map +1 -0
- package/dist/notebook/types.d.ts +85 -8
- package/dist/notebook/types.d.ts.map +1 -1
- package/dist/notebook-grid.d.ts +37 -0
- package/dist/notebook-grid.d.ts.map +1 -0
- package/dist/notebook-grid.js +160 -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 +53 -0
- package/dist/notebook-mentions.js.map +1 -0
- package/dist/order-keys.d.ts +22 -0
- package/dist/order-keys.d.ts.map +1 -0
- package/dist/order-keys.js +262 -0
- package/dist/order-keys.js.map +1 -0
- package/dist/runtime-services.js +8 -11
- package/dist/runtime-services.js.map +1 -1
- package/dist/schema.d.ts +8 -5
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +624 -141
- package/dist/schema.js.map +1 -1
- package/dist/search-benchmark.d.ts +4 -0
- package/dist/search-benchmark.d.ts.map +1 -0
- package/dist/search-benchmark.js +144 -0
- package/dist/search-benchmark.js.map +1 -0
- package/dist/sequences.d.ts +20 -0
- package/dist/sequences.d.ts.map +1 -0
- package/dist/sequences.js +825 -0
- package/dist/sequences.js.map +1 -0
- package/dist/similarity.js +10 -10
- package/dist/similarity.js.map +1 -1
- package/dist/status.js +8 -10
- package/dist/status.js.map +1 -1
- package/dist/storage.d.ts +3 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +388 -7
- package/dist/storage.js.map +1 -1
- package/dist/store.d.ts +64 -3
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +354 -68
- package/dist/store.js.map +1 -1
- package/dist/streams.d.ts +10 -0
- package/dist/streams.d.ts.map +1 -0
- package/dist/streams.js +183 -0
- package/dist/streams.js.map +1 -0
- package/dist/temporal-models.d.ts +48 -0
- package/dist/temporal-models.d.ts.map +1 -0
- package/dist/temporal-models.js +278 -0
- package/dist/temporal-models.js.map +1 -0
- package/dist/temporal-search.d.ts +29 -0
- package/dist/temporal-search.d.ts.map +1 -0
- package/dist/temporal-search.js +1551 -0
- package/dist/temporal-search.js.map +1 -0
- package/dist/transcripts.d.ts +16 -0
- package/dist/transcripts.d.ts.map +1 -0
- package/dist/transcripts.js +519 -0
- package/dist/transcripts.js.map +1 -0
- package/docs/engine-layout.md +345 -110
- package/docs/mvp-prd.md +918 -0
- package/fixtures/media/vancat.mp4 +0 -0
- package/fixtures/media/vancat_profile.jpg +0 -0
- package/fixtures/v5/contract-fixtures.json +1532 -0
- package/package.json +42 -5
- package/dist/history-types.d.ts +0 -74
- package/dist/history-types.d.ts.map +0 -1
- package/dist/history-types.js +0 -2
- package/dist/history-types.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
- package/dist/timeline.d.ts +0 -9
- package/dist/timeline.d.ts.map +0 -1
- package/dist/timeline.js +0 -236
- package/dist/timeline.js.map +0 -1
package/dist/books.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"books.d.ts","sourceRoot":"","sources":["../src/books.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,
|
|
1
|
+
{"version":3,"file":"books.d.ts","sourceRoot":"","sources":["../src/books.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AAGvD,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa;eAEvC,IAAI;mBACE,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;EAG7D"}
|
package/dist/books.js
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
import { ok } from "./engine-types.js";
|
|
2
|
-
import {
|
|
2
|
+
import { resultOf } from "./context.js";
|
|
3
|
+
import { EngineFault } from "./store.js";
|
|
3
4
|
export function createBookApi(context) {
|
|
4
5
|
return {
|
|
5
6
|
get: () => context.book(),
|
|
6
|
-
rename: (
|
|
7
|
+
rename: (name) => renameBook(context, name),
|
|
7
8
|
};
|
|
8
9
|
}
|
|
9
|
-
async function renameBook(context,
|
|
10
|
+
async function renameBook(context, requestedName) {
|
|
10
11
|
return resultOf(async () => {
|
|
11
12
|
const current = context.bookRow();
|
|
12
|
-
const
|
|
13
|
-
if (
|
|
13
|
+
const name = requestedName.trim();
|
|
14
|
+
if (!name) {
|
|
15
|
+
throw new EngineFault({
|
|
16
|
+
code: "INVALID_INPUT",
|
|
17
|
+
message: "Book name must be non-empty",
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (current.name === name)
|
|
14
21
|
return context.book(current);
|
|
15
22
|
const mutation = await context.store.semantic({
|
|
16
23
|
operation: "rename_book",
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
tables: ["book"],
|
|
25
|
+
details: { oldName: current.name, newName: name },
|
|
26
|
+
writeSet: ["book"],
|
|
27
|
+
}, () => {
|
|
20
28
|
context.store.db
|
|
21
|
-
.prepare("UPDATE book SET
|
|
22
|
-
.run(
|
|
29
|
+
.prepare("UPDATE book SET name=? WHERE book_id=?")
|
|
30
|
+
.run(name, current.book_id);
|
|
23
31
|
});
|
|
24
32
|
return ok(context.book(), mutation.revision);
|
|
25
33
|
});
|
package/dist/books.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"books.js","sourceRoot":"","sources":["../src/books.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"books.js","sourceRoot":"","sources":["../src/books.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,OAAO;QACL,GAAG,EAAE,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE;QAC/B,MAAM,EAAE,CAAC,IAAY,EAAsC,EAAE,CAC3D,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAAsB,EACtB,aAAqB;IAErB,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,6BAA6B;aACvC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC3C;YACE,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;YACjD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB,EACD,GAAG,EAAE;YACH,OAAO,CAAC,KAAK,CAAC,EAAE;iBACb,OAAO,CAAC,wCAAwC,CAAC;iBACjD,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CACF,CAAC;QACF,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/cas.d.ts
CHANGED
|
@@ -4,11 +4,21 @@ export interface StoredObject {
|
|
|
4
4
|
size: number;
|
|
5
5
|
path: string;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Local content-addressed store with an optional remote ContentStore.
|
|
9
|
+
*
|
|
10
|
+
* Objects are content-immutable (a hash always names the same bytes) but no
|
|
11
|
+
* longer undeletable: `deleteLocal` and `unpublish` support the forgettable
|
|
12
|
+
* data policy. Deleting an object that versioned rows still reference turns
|
|
13
|
+
* those rows into tombstones — the `objects` table keeps hash + size and
|
|
14
|
+
* reads surface OBJECT_UNAVAILABLE through `ensureLocal`.
|
|
15
|
+
*/
|
|
7
16
|
export declare class ObjectStore {
|
|
8
17
|
private readonly remote?;
|
|
18
|
+
private readonly isForgotten?;
|
|
9
19
|
readonly root: string;
|
|
10
20
|
readonly prefix: string;
|
|
11
|
-
constructor(root: string, remote?: ContentStore | undefined, prefix?: string);
|
|
21
|
+
constructor(root: string, remote?: ContentStore | undefined, prefix?: string, isForgotten?: ((hash: string) => boolean) | undefined);
|
|
12
22
|
put(data: Buffer | string): Promise<StoredObject>;
|
|
13
23
|
import(sourcePath: string): Promise<StoredObject>;
|
|
14
24
|
read(hash: string): Promise<Buffer>;
|
|
@@ -20,6 +30,22 @@ export declare class ObjectStore {
|
|
|
20
30
|
materialize(hash: string, destinationPath: string): Promise<void>;
|
|
21
31
|
publish(hash: string, expectedSize: number): Promise<void>;
|
|
22
32
|
pathFor(hash: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Removes the local copy of an object. Returns whether a local file was
|
|
35
|
+
* actually removed; deleting an object that is not stored locally is not
|
|
36
|
+
* an error.
|
|
37
|
+
*/
|
|
38
|
+
deleteLocal(hash: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Unpublishes an object from the remote content store. Returns whether a
|
|
41
|
+
* remote object was deleted. Without a configured remote this is a no-op.
|
|
42
|
+
*/
|
|
43
|
+
unpublish(hash: string): Promise<boolean>;
|
|
44
|
+
/**
|
|
45
|
+
* Lists every object hash stored locally, including stray files that have
|
|
46
|
+
* no `objects` row (for example leftovers from an interrupted import).
|
|
47
|
+
*/
|
|
48
|
+
listLocal(): Promise<string[]>;
|
|
23
49
|
keyFor(hash: string): string;
|
|
24
50
|
private ensureLocal;
|
|
25
51
|
}
|
package/dist/cas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cas.d.ts","sourceRoot":"","sources":["../src/cas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cas.d.ts","sourceRoot":"","sources":["../src/cas.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAMpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAP/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGtB,IAAI,EAAE,MAAM,EACK,MAAM,CAAC,EAAE,YAAY,YAAA,EACtC,MAAM,SAAoC,EACzB,WAAW,CAAC,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,aAAA;IAMpD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBjD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBjD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzC;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAK7B;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWjD;;;OAGG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;YAKd,WAAW;CAwB1B"}
|
package/dist/cas.js
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { createReadStream } from "node:fs";
|
|
3
|
-
import { constants, copyFile, mkdir, readFile, rename, rm, stat, writeFile, } from "node:fs/promises";
|
|
3
|
+
import { constants, copyFile, mkdir, readdir, readFile, rename, rm, stat, writeFile, } from "node:fs/promises";
|
|
4
4
|
import * as path from "node:path";
|
|
5
5
|
import { v7 as uuidv7 } from "uuid";
|
|
6
|
+
/**
|
|
7
|
+
* Local content-addressed store with an optional remote ContentStore.
|
|
8
|
+
*
|
|
9
|
+
* Objects are content-immutable (a hash always names the same bytes) but no
|
|
10
|
+
* longer undeletable: `deleteLocal` and `unpublish` support the forgettable
|
|
11
|
+
* data policy. Deleting an object that versioned rows still reference turns
|
|
12
|
+
* those rows into tombstones — the `objects` table keeps hash + size and
|
|
13
|
+
* reads surface OBJECT_UNAVAILABLE through `ensureLocal`.
|
|
14
|
+
*/
|
|
6
15
|
export class ObjectStore {
|
|
7
16
|
remote;
|
|
17
|
+
isForgotten;
|
|
8
18
|
root;
|
|
9
19
|
prefix;
|
|
10
|
-
constructor(root, remote, prefix = "superlzy-media/videobook/sha256") {
|
|
20
|
+
constructor(root, remote, prefix = "superlzy-media/videobook/sha256", isForgotten) {
|
|
11
21
|
this.remote = remote;
|
|
22
|
+
this.isForgotten = isForgotten;
|
|
12
23
|
this.root = root;
|
|
13
24
|
this.prefix = prefix.replace(/^\/+|\/+$/g, "");
|
|
14
25
|
}
|
|
@@ -75,16 +86,14 @@ export class ObjectStore {
|
|
|
75
86
|
if (!current.exists) {
|
|
76
87
|
await this.remote.uploadFile(key, this.pathFor(hash));
|
|
77
88
|
}
|
|
78
|
-
else if (current.size !== undefined &&
|
|
79
|
-
current.size !== expectedSize) {
|
|
89
|
+
else if (current.size !== undefined && current.size !== expectedSize) {
|
|
80
90
|
throw new Error(`Remote object size mismatch: ${hash}`);
|
|
81
91
|
}
|
|
82
92
|
const verified = await this.remote.head(key);
|
|
83
93
|
if (!verified.exists) {
|
|
84
94
|
throw new Error(`Remote object verification failed: ${hash}`);
|
|
85
95
|
}
|
|
86
|
-
if (verified.size !== undefined &&
|
|
87
|
-
verified.size !== expectedSize) {
|
|
96
|
+
if (verified.size !== undefined && verified.size !== expectedSize) {
|
|
88
97
|
throw new Error(`Remote object size mismatch: ${hash}`);
|
|
89
98
|
}
|
|
90
99
|
}
|
|
@@ -92,11 +101,74 @@ export class ObjectStore {
|
|
|
92
101
|
validateHash(hash);
|
|
93
102
|
return path.join(this.root, hash.slice(0, 2), hash);
|
|
94
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Removes the local copy of an object. Returns whether a local file was
|
|
106
|
+
* actually removed; deleting an object that is not stored locally is not
|
|
107
|
+
* an error.
|
|
108
|
+
*/
|
|
109
|
+
async deleteLocal(hash) {
|
|
110
|
+
const destination = this.pathFor(hash);
|
|
111
|
+
try {
|
|
112
|
+
await rm(destination);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (error.code === "ENOENT")
|
|
117
|
+
return false;
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Unpublishes an object from the remote content store. Returns whether a
|
|
123
|
+
* remote object was deleted. Without a configured remote this is a no-op.
|
|
124
|
+
*/
|
|
125
|
+
async unpublish(hash) {
|
|
126
|
+
if (!this.remote)
|
|
127
|
+
return false;
|
|
128
|
+
const key = this.keyFor(hash);
|
|
129
|
+
const current = await this.remote.head(key);
|
|
130
|
+
if (!current.exists)
|
|
131
|
+
return false;
|
|
132
|
+
await this.remote.delete(key);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Lists every object hash stored locally, including stray files that have
|
|
137
|
+
* no `objects` row (for example leftovers from an interrupted import).
|
|
138
|
+
*/
|
|
139
|
+
async listLocal() {
|
|
140
|
+
const hashes = [];
|
|
141
|
+
let fanout;
|
|
142
|
+
try {
|
|
143
|
+
fanout = await readdir(this.root);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
if (error.code === "ENOENT")
|
|
147
|
+
return [];
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
for (const directory of fanout.sort()) {
|
|
151
|
+
if (!/^[a-f0-9]{2}$/.test(directory))
|
|
152
|
+
continue;
|
|
153
|
+
const entries = await readdir(path.join(this.root, directory));
|
|
154
|
+
for (const entry of entries.sort()) {
|
|
155
|
+
if (/^[a-f0-9]{64}$/.test(entry))
|
|
156
|
+
hashes.push(entry);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return hashes;
|
|
160
|
+
}
|
|
95
161
|
keyFor(hash) {
|
|
96
162
|
validateHash(hash);
|
|
97
163
|
return `${this.prefix}/${hash.slice(0, 2)}/${hash}`;
|
|
98
164
|
}
|
|
99
165
|
async ensureLocal(hash) {
|
|
166
|
+
// A forgotten object must stay forgotten: refuse the read before even
|
|
167
|
+
// looking at local bytes, so neither a lingering local file nor a
|
|
168
|
+
// configured remote can resurrect deleted content.
|
|
169
|
+
if (this.isForgotten?.(hash)) {
|
|
170
|
+
throw new Error(`Object unavailable: ${hash}`);
|
|
171
|
+
}
|
|
100
172
|
const destination = this.pathFor(hash);
|
|
101
173
|
try {
|
|
102
174
|
await stat(destination);
|
package/dist/cas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cas.js","sourceRoot":"","sources":["../src/cas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,EAAE,EACF,IAAI,EACJ,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAUpC,MAAM,OAAO,WAAW;IAMH;
|
|
1
|
+
{"version":3,"file":"cas.js","sourceRoot":"","sources":["../src/cas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { NotebookCell } from "./notebook/types.js";
|
|
2
|
+
export declare const SCHEMA_VERSION = 22;
|
|
3
|
+
export declare const CELLS_TABLE_SCHEMA: readonly [{
|
|
4
|
+
readonly column: "notebook_id";
|
|
5
|
+
readonly type: "TEXT";
|
|
6
|
+
}, {
|
|
7
|
+
readonly column: "cell_id";
|
|
8
|
+
readonly type: "TEXT";
|
|
9
|
+
}, {
|
|
10
|
+
readonly column: "type";
|
|
11
|
+
readonly type: "TEXT";
|
|
12
|
+
}, {
|
|
13
|
+
readonly column: "label";
|
|
14
|
+
readonly type: "TEXT";
|
|
15
|
+
}, {
|
|
16
|
+
readonly column: "grid_row";
|
|
17
|
+
readonly type: "INTEGER";
|
|
18
|
+
}, {
|
|
19
|
+
readonly column: "grid_column";
|
|
20
|
+
readonly type: "INTEGER";
|
|
21
|
+
}, {
|
|
22
|
+
readonly column: "output_entity_id";
|
|
23
|
+
readonly type: "TEXT";
|
|
24
|
+
}, {
|
|
25
|
+
readonly column: "prompt";
|
|
26
|
+
readonly type: "TEXT";
|
|
27
|
+
}, {
|
|
28
|
+
readonly column: "provider";
|
|
29
|
+
readonly type: "TEXT";
|
|
30
|
+
}, {
|
|
31
|
+
readonly column: "model";
|
|
32
|
+
readonly type: "TEXT";
|
|
33
|
+
}, {
|
|
34
|
+
readonly column: "operation";
|
|
35
|
+
readonly type: "TEXT";
|
|
36
|
+
}, {
|
|
37
|
+
readonly column: "tool";
|
|
38
|
+
readonly type: "TEXT";
|
|
39
|
+
}, {
|
|
40
|
+
readonly column: "inputs_json";
|
|
41
|
+
readonly type: "TEXT";
|
|
42
|
+
}, {
|
|
43
|
+
readonly column: "output_artifact_id";
|
|
44
|
+
readonly type: "TEXT";
|
|
45
|
+
}];
|
|
46
|
+
export type CellTableColumn = (typeof CELLS_TABLE_SCHEMA)[number]["column"];
|
|
47
|
+
export type CellTableColumnType = (typeof CELLS_TABLE_SCHEMA)[number]["type"];
|
|
48
|
+
export declare const CELLS_TABLE_COLUMNS: readonly CellTableColumn[];
|
|
49
|
+
export type CellTableValue = number | string | null;
|
|
50
|
+
export interface CellTableRow {
|
|
51
|
+
column: CellTableColumn;
|
|
52
|
+
type: CellTableColumnType;
|
|
53
|
+
value: CellTableValue;
|
|
54
|
+
}
|
|
55
|
+
export declare function notebookCellTableRows(notebookId: string, cell: NotebookCell): CellTableRow[];
|
|
56
|
+
//# sourceMappingURL=catalog-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-metadata.d.ts","sourceRoot":"","sources":["../src/catalog-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAerB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9C,eAAO,MAAM,mBAAmB,EAAE,SAAS,eAAe,EACV,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,GACjB,YAAY,EAAE,CAsBhB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export const SCHEMA_VERSION = 22;
|
|
2
|
+
export const CELLS_TABLE_SCHEMA = [
|
|
3
|
+
{ column: "notebook_id", type: "TEXT" },
|
|
4
|
+
{ column: "cell_id", type: "TEXT" },
|
|
5
|
+
{ column: "type", type: "TEXT" },
|
|
6
|
+
{ column: "label", type: "TEXT" },
|
|
7
|
+
{ column: "grid_row", type: "INTEGER" },
|
|
8
|
+
{ column: "grid_column", type: "INTEGER" },
|
|
9
|
+
{ column: "output_entity_id", type: "TEXT" },
|
|
10
|
+
{ column: "prompt", type: "TEXT" },
|
|
11
|
+
{ column: "provider", type: "TEXT" },
|
|
12
|
+
{ column: "model", type: "TEXT" },
|
|
13
|
+
{ column: "operation", type: "TEXT" },
|
|
14
|
+
{ column: "tool", type: "TEXT" },
|
|
15
|
+
{ column: "inputs_json", type: "TEXT" },
|
|
16
|
+
{ column: "output_artifact_id", type: "TEXT" },
|
|
17
|
+
];
|
|
18
|
+
export const CELLS_TABLE_COLUMNS = CELLS_TABLE_SCHEMA.map(({ column }) => column);
|
|
19
|
+
export function notebookCellTableRows(notebookId, cell) {
|
|
20
|
+
const values = {
|
|
21
|
+
notebook_id: notebookId,
|
|
22
|
+
cell_id: cell.id,
|
|
23
|
+
type: cell.type,
|
|
24
|
+
label: cell.label ?? null,
|
|
25
|
+
grid_row: cell.slot.row,
|
|
26
|
+
grid_column: cell.slot.column,
|
|
27
|
+
output_entity_id: cell.outputEntityId ?? null,
|
|
28
|
+
prompt: cell.prompt ?? null,
|
|
29
|
+
provider: cell.provider ?? null,
|
|
30
|
+
model: cell.model ?? null,
|
|
31
|
+
operation: cell.operation ?? null,
|
|
32
|
+
tool: cell.tool ?? null,
|
|
33
|
+
inputs_json: JSON.stringify(cell.inputs ?? {}),
|
|
34
|
+
output_artifact_id: cell.outputArtifactId ?? null,
|
|
35
|
+
};
|
|
36
|
+
return CELLS_TABLE_SCHEMA.map(({ column, type }) => ({
|
|
37
|
+
column,
|
|
38
|
+
type,
|
|
39
|
+
value: values[column],
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=catalog-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-metadata.js","sourceRoot":"","sources":["../src/catalog-metadata.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;IACvC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;IACnC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAChC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IACjC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;IACvC,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1C,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;IACpC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IACjC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;IACrC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAChC,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;IACvC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;CACtC,CAAC;AAKX,MAAM,CAAC,MAAM,mBAAmB,GAC9B,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AASjD,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,IAAkB;IAElB,MAAM,MAAM,GAA4C;QACtD,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,IAAI,CAAC,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;QACvB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QAC7B,gBAAgB,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACjC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACvB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAC9C,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;KAClD,CAAC;IACF,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM;QACN,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;KACtB,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/dist/communications.js
CHANGED
|
@@ -25,9 +25,10 @@ async function recordPrompt(context, input) {
|
|
|
25
25
|
const promptId = newUuidV7();
|
|
26
26
|
const mutation = await context.store.semantic({
|
|
27
27
|
operation: "record_prompt",
|
|
28
|
+
tables: ["prompt_entries"],
|
|
28
29
|
details: { surface },
|
|
29
30
|
writeSet: [`prompt:${promptId}`],
|
|
30
|
-
},
|
|
31
|
+
}, (_operationId, now) => {
|
|
31
32
|
context.store.db
|
|
32
33
|
.prepare(`INSERT INTO prompt_entries(
|
|
33
34
|
prompt_id, surface, prompt, context_json, created_at
|
|
@@ -73,9 +74,10 @@ async function appendMessage(context, input) {
|
|
|
73
74
|
const messageId = newUuidV7();
|
|
74
75
|
const mutation = await context.store.semantic({
|
|
75
76
|
operation: "append_message",
|
|
77
|
+
tables: ["messages"],
|
|
76
78
|
details: { messageId, role },
|
|
77
79
|
writeSet: [`message:${messageId}`],
|
|
78
|
-
},
|
|
80
|
+
}, (_operationId, now) => {
|
|
79
81
|
context.store.db
|
|
80
82
|
.prepare(`INSERT INTO messages(message_id, role, body_json, created_at)
|
|
81
83
|
VALUES (?, ?, ?, ?)`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communications.js","sourceRoot":"","sources":["../src/communications.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAiB,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiBrC,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,OAAO;QACL,MAAM,EAAE,CACN,KAAuB,EAC2B,EAAE,CACpD,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;QAC9B,IAAI,EAAE,CACJ,UAAiC,EAAE,EACQ,EAAE,CAC7C,YAAY,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,EAAE,CACL,UAAkD,EAAE,EACvB,EAAE,CAC/B,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAsB;IACtD,OAAO;QACL,MAAM,EAAE,CACN,KAA4B,EACc,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;QAC5E,IAAI,EAAE,CACJ,UAA6C,EAAE,EACZ,EAAE,CACrC,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAI,OAAO,EAAE,OAAO,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAsB,EACtB,KAAuB;IAEvB,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC3C;YACE,SAAS,EAAE,eAAe;YAC1B,OAAO,EAAE,EAAE,OAAO,EAAE;YACpB,QAAQ,EAAE,CAAC,UAAU,QAAQ,EAAE,CAAC;SACjC,EACD,CAAC,
|
|
1
|
+
{"version":3,"file":"communications.js","sourceRoot":"","sources":["../src/communications.ts"],"names":[],"mappings":"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"}
|
package/dist/context.d.ts
CHANGED
|
@@ -3,12 +3,12 @@ import { ObjectStore } from "./cas.js";
|
|
|
3
3
|
import { DoltStore } from "./store.js";
|
|
4
4
|
interface BookRow {
|
|
5
5
|
book_id: string;
|
|
6
|
-
|
|
6
|
+
name: string;
|
|
7
7
|
created_at: number;
|
|
8
8
|
}
|
|
9
9
|
export interface ArtifactRow {
|
|
10
10
|
artifact_id: string;
|
|
11
|
-
|
|
11
|
+
label: string | null;
|
|
12
12
|
kind: ArtifactKind;
|
|
13
13
|
created_at: number;
|
|
14
14
|
}
|
|
@@ -17,7 +17,6 @@ export interface FileRow {
|
|
|
17
17
|
path: string;
|
|
18
18
|
object_hash: string;
|
|
19
19
|
size_bytes: number;
|
|
20
|
-
mtime_ms: number;
|
|
21
20
|
created_at: number;
|
|
22
21
|
}
|
|
23
22
|
export declare class EngineContext {
|
|
@@ -25,17 +24,21 @@ export declare class EngineContext {
|
|
|
25
24
|
readonly objects: ObjectStore;
|
|
26
25
|
readonly config: EngineConfig;
|
|
27
26
|
constructor(config: EngineConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Whether the object row carries a forget tombstone. Forgotten bytes must
|
|
29
|
+
* never be resurrected — not even from a configured remote store — so
|
|
30
|
+
* ObjectStore consults this before any read or lazy download.
|
|
31
|
+
*/
|
|
32
|
+
isForgottenObject(hash: string): boolean;
|
|
28
33
|
bookRow(): BookRow;
|
|
29
34
|
book(row?: BookRow): Book;
|
|
30
|
-
artifactRow(
|
|
35
|
+
artifactRow(artifactId: string): ArtifactRow;
|
|
31
36
|
artifactRowById(artifactId: string): ArtifactRow;
|
|
32
37
|
artifact(row: ArtifactRow): Artifact;
|
|
33
38
|
artifactPath(artifactId: string): string;
|
|
34
39
|
ensureArtifactWorkspace(artifactId: string): string;
|
|
35
40
|
close(): void;
|
|
36
41
|
}
|
|
37
|
-
export declare function normalizeBookSlug(input: string): string;
|
|
38
|
-
export declare function isValidBookSlug(input: string): boolean;
|
|
39
42
|
export declare function resultOf<T>(work: () => Promise<Result<T, EngineError> | T>): Promise<Result<T, EngineError>>;
|
|
40
43
|
export declare function syncResultOf<T>(work: () => T): Result<T, EngineError>;
|
|
41
44
|
export {};
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEpD,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEpD,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;gBAElB,MAAM,EAAE,YAAY;IAyDhC;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASxC,OAAO,IAAI,OAAO;IAalB,IAAI,CAAC,GAAG,UAAiB,GAAG,IAAI;IAQhC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAI5C,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAiBhD,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ;IAUpC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIxC,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAMnD,KAAK,IAAI,IAAI;CAGd;AAmDD,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAC9C,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAUjC;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAMrE"}
|
package/dist/context.js
CHANGED
|
@@ -32,31 +32,44 @@ export class EngineContext {
|
|
|
32
32
|
const databasePath = path.join(storage.dataDir, "videobook.db");
|
|
33
33
|
const initialBook = !existsSync(databasePath)
|
|
34
34
|
? (() => {
|
|
35
|
-
|
|
35
|
+
const name = config.initialBookName?.trim();
|
|
36
|
+
if (!name) {
|
|
36
37
|
throw new EngineFault({
|
|
37
38
|
code: "INVALID_INPUT",
|
|
38
|
-
message: "
|
|
39
|
+
message: "initialBookName is required when creating a new engine root",
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
|
-
return {
|
|
42
|
-
bookId: uuidv7(),
|
|
43
|
-
slug: normalizeBookSlug(config.initialBookSlug),
|
|
44
|
-
};
|
|
42
|
+
return { bookId: uuidv7(), name };
|
|
45
43
|
})()
|
|
46
44
|
: undefined;
|
|
45
|
+
if (config.identity)
|
|
46
|
+
assertValidIdentity(config.identity);
|
|
47
47
|
this.store = new DoltStore({
|
|
48
48
|
dataDir: this.config.dataDir,
|
|
49
49
|
workspaceDir: this.config.workspaceDir,
|
|
50
50
|
initialBook,
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
semanticCommitBoundary: config.semanticCommitBoundary,
|
|
52
|
+
...(config.identity
|
|
53
|
+
? { author: `${config.identity.name} <${config.identity.email}>` }
|
|
53
54
|
: {}),
|
|
55
|
+
...(config.catalogBackup ? { catalogBackup: config.catalogBackup } : {}),
|
|
54
56
|
});
|
|
55
|
-
this.objects = new ObjectStore(this.store.objectsDir, config.remoteObjects, config.objectPrefix);
|
|
57
|
+
this.objects = new ObjectStore(this.store.objectsDir, config.remoteObjects, config.objectPrefix, (hash) => this.isForgottenObject(hash));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Whether the object row carries a forget tombstone. Forgotten bytes must
|
|
61
|
+
* never be resurrected — not even from a configured remote store — so
|
|
62
|
+
* ObjectStore consults this before any read or lazy download.
|
|
63
|
+
*/
|
|
64
|
+
isForgottenObject(hash) {
|
|
65
|
+
const row = this.store.db
|
|
66
|
+
.prepare("SELECT 1 AS present FROM objects WHERE object_hash=? AND forgotten_at IS NOT NULL")
|
|
67
|
+
.get(hash);
|
|
68
|
+
return row !== undefined;
|
|
56
69
|
}
|
|
57
70
|
bookRow() {
|
|
58
71
|
const row = this.store.db
|
|
59
|
-
.prepare("SELECT book_id,
|
|
72
|
+
.prepare("SELECT book_id, name, created_at FROM book")
|
|
60
73
|
.get();
|
|
61
74
|
if (!row) {
|
|
62
75
|
throw new EngineFault({
|
|
@@ -69,29 +82,16 @@ export class EngineContext {
|
|
|
69
82
|
book(row = this.bookRow()) {
|
|
70
83
|
return {
|
|
71
84
|
bookId: row.book_id,
|
|
72
|
-
|
|
85
|
+
name: row.name,
|
|
73
86
|
createdAt: row.created_at,
|
|
74
87
|
};
|
|
75
88
|
}
|
|
76
|
-
artifactRow(
|
|
77
|
-
|
|
78
|
-
.prepare(`SELECT artifact_id, slug, kind, created_at
|
|
79
|
-
FROM artifacts
|
|
80
|
-
WHERE artifact_id = ? OR slug = ?
|
|
81
|
-
ORDER BY CASE WHEN artifact_id = ? THEN 0 ELSE 1 END
|
|
82
|
-
LIMIT 1`)
|
|
83
|
-
.get(reference, reference, reference);
|
|
84
|
-
if (!row) {
|
|
85
|
-
throw new EngineFault({
|
|
86
|
-
code: "NOT_FOUND",
|
|
87
|
-
message: `Artifact not found: ${reference}`,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return row;
|
|
89
|
+
artifactRow(artifactId) {
|
|
90
|
+
return this.artifactRowById(artifactId);
|
|
91
91
|
}
|
|
92
92
|
artifactRowById(artifactId) {
|
|
93
93
|
const row = this.store.db
|
|
94
|
-
.prepare(`SELECT artifact_id,
|
|
94
|
+
.prepare(`SELECT artifact_id, label, kind, created_at
|
|
95
95
|
FROM artifacts
|
|
96
96
|
WHERE artifact_id = ?`)
|
|
97
97
|
.get(artifactId);
|
|
@@ -106,7 +106,7 @@ export class EngineContext {
|
|
|
106
106
|
artifact(row) {
|
|
107
107
|
return {
|
|
108
108
|
artifactId: row.artifact_id,
|
|
109
|
-
|
|
109
|
+
...(row.label === null ? {} : { label: row.label }),
|
|
110
110
|
kind: row.kind,
|
|
111
111
|
createdAt: row.created_at,
|
|
112
112
|
path: this.artifactPath(row.artifact_id),
|
|
@@ -124,33 +124,26 @@ export class EngineContext {
|
|
|
124
124
|
this.store.close();
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
return slug;
|
|
137
|
-
}
|
|
138
|
-
export function isValidBookSlug(input) {
|
|
139
|
-
try {
|
|
140
|
-
return normalizeBookSlug(input) === input;
|
|
127
|
+
function assertValidIdentity(identity) {
|
|
128
|
+
const name = identity.name.trim();
|
|
129
|
+
const email = identity.email.trim();
|
|
130
|
+
if (!name || /[<>\u0000-\u001f\u007f]/u.test(name)) {
|
|
131
|
+
throw new EngineFault({
|
|
132
|
+
code: "INVALID_INPUT",
|
|
133
|
+
message: "identity.name must be non-empty and free of angle brackets and control characters",
|
|
134
|
+
});
|
|
141
135
|
}
|
|
142
|
-
|
|
143
|
-
|
|
136
|
+
if (!/^[^\s<>@]+@[^\s<>@]+$/.test(email)) {
|
|
137
|
+
throw new EngineFault({
|
|
138
|
+
code: "INVALID_INPUT",
|
|
139
|
+
message: "identity.email must be a plausible address (name@host)",
|
|
140
|
+
});
|
|
144
141
|
}
|
|
145
142
|
}
|
|
146
143
|
function toError(error) {
|
|
147
144
|
if (error instanceof EngineFault)
|
|
148
145
|
return error.error;
|
|
149
146
|
const message = error instanceof Error ? error.message : String(error);
|
|
150
|
-
if (message.includes("artifacts_active_slug") ||
|
|
151
|
-
/UNIQUE constraint failed: artifacts\.slug/i.test(message)) {
|
|
152
|
-
return { code: "SLUG_CONFLICT", message };
|
|
153
|
-
}
|
|
154
147
|
if (/UNIQUE constraint failed/i.test(message)) {
|
|
155
148
|
return { code: "ALREADY_EXISTS", message };
|
|
156
149
|
}
|
|
@@ -175,9 +168,7 @@ function toError(error) {
|
|
|
175
168
|
export async function resultOf(work) {
|
|
176
169
|
try {
|
|
177
170
|
const value = await work();
|
|
178
|
-
if (typeof value === "object" &&
|
|
179
|
-
value !== null &&
|
|
180
|
-
"ok" in value) {
|
|
171
|
+
if (typeof value === "object" && value !== null && "ok" in value) {
|
|
181
172
|
return value;
|
|
182
173
|
}
|
|
183
174
|
return { ok: true, value: value };
|