videobook-engine 4.2.0 → 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 +15 -30
- package/dist/artifacts.d.ts +4 -9
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +39 -133
- package/dist/artifacts.js.map +1 -1
- package/dist/books.d.ts +1 -1
- package/dist/books.d.ts.map +1 -1
- package/dist/books.js +16 -9
- package/dist/books.js.map +1 -1
- package/dist/catalog-metadata.d.ts +2 -2
- package/dist/catalog-metadata.js +3 -3
- package/dist/catalog-metadata.js.map +1 -1
- package/dist/context.d.ts +3 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +10 -48
- package/dist/context.js.map +1 -1
- package/dist/domain.d.ts +35 -2
- package/dist/domain.d.ts.map +1 -1
- package/dist/domain.js +131 -161
- package/dist/domain.js.map +1 -1
- package/dist/engine-types.d.ts +62 -27
- package/dist/engine-types.d.ts.map +1 -1
- package/dist/engine-types.js +0 -1
- package/dist/engine-types.js.map +1 -1
- package/dist/engine.d.ts +20 -18
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +3 -3
- package/dist/engine.js.map +1 -1
- package/dist/files.js +1 -1
- package/dist/files.js.map +1 -1
- package/dist/fork.d.ts +3 -2
- package/dist/fork.d.ts.map +1 -1
- package/dist/fork.js +13 -20
- package/dist/fork.js.map +1 -1
- package/dist/generations.d.ts +9 -0
- package/dist/generations.d.ts.map +1 -0
- package/dist/generations.js +175 -0
- package/dist/generations.js.map +1 -0
- package/dist/history.d.ts +2 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +21 -49
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/media.d.ts +3 -3
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +5 -5
- package/dist/media.js.map +1 -1
- package/dist/merge-policy.d.ts +10 -26
- package/dist/merge-policy.d.ts.map +1 -1
- package/dist/merge-policy.js +8 -115
- package/dist/merge-policy.js.map +1 -1
- package/dist/metadata.js +2 -3
- package/dist/metadata.js.map +1 -1
- package/dist/migration.d.ts.map +1 -1
- package/dist/migration.js +32 -2
- package/dist/migration.js.map +1 -1
- package/dist/mvp-contract-fixtures.js +1 -1
- package/dist/mvp-contract-fixtures.js.map +1 -1
- package/dist/mvp-contracts.d.ts +3 -3
- package/dist/mvp-contracts.d.ts.map +1 -1
- package/dist/mvp-contracts.js +1 -1
- package/dist/notebook/types.d.ts +1 -29
- package/dist/notebook/types.d.ts.map +1 -1
- package/dist/notebook-grid.d.ts +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/runtime-services.js +4 -9
- package/dist/runtime-services.js.map +1 -1
- package/dist/schema.d.ts +3 -19
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +63 -92
- package/dist/schema.js.map +1 -1
- package/dist/similarity.js +9 -9
- package/dist/similarity.js.map +1 -1
- package/dist/status.js +8 -10
- package/dist/status.js.map +1 -1
- package/dist/store.d.ts +1 -1
- package/dist/store.js +3 -3
- package/dist/temporal-search.js +50 -6
- package/dist/temporal-search.js.map +1 -1
- package/docs/engine-layout.md +14 -19
- package/docs/mvp-prd.md +2 -2
- package/fixtures/v5/contract-fixtures.json +4 -4
- package/package.json +13 -1
- package/dist/artifact-names.d.ts +0 -6
- package/dist/artifact-names.d.ts.map +0 -1
- package/dist/artifact-names.js +0 -56
- package/dist/artifact-names.js.map +0 -1
- package/dist/resolver.d.ts +0 -15
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js +0 -81
- package/dist/resolver.js.map +0 -1
package/dist/notebook/types.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface NotebookGridSlot {
|
|
|
29
29
|
export interface NotebookCell {
|
|
30
30
|
id: string;
|
|
31
31
|
type: NotebookCellType;
|
|
32
|
-
|
|
32
|
+
label?: string;
|
|
33
33
|
slot: NotebookGridSlot;
|
|
34
34
|
outputEntityId?: string;
|
|
35
35
|
prompt?: string;
|
|
@@ -86,30 +86,6 @@ export interface NotebookRunPlan {
|
|
|
86
86
|
outputs?: Record<string, string>;
|
|
87
87
|
error?: string;
|
|
88
88
|
}
|
|
89
|
-
export interface NotebookAudioSpine {
|
|
90
|
-
artifactId: string;
|
|
91
|
-
streamId: string;
|
|
92
|
-
objectHash: string;
|
|
93
|
-
sourcePath: string;
|
|
94
|
-
sequenceId: string;
|
|
95
|
-
sequenceRevision: string;
|
|
96
|
-
trackId: string;
|
|
97
|
-
clipId: string;
|
|
98
|
-
}
|
|
99
|
-
export interface NotebookCurrentSelection extends Record<string, unknown> {
|
|
100
|
-
transcriptId?: string;
|
|
101
|
-
transcriptRevision?: string;
|
|
102
|
-
startWordId?: string;
|
|
103
|
-
endWordId?: string;
|
|
104
|
-
}
|
|
105
|
-
export interface NotebookTranscriptEdit extends Record<string, unknown> {
|
|
106
|
-
actionId: string;
|
|
107
|
-
kind: string;
|
|
108
|
-
restored?: boolean;
|
|
109
|
-
}
|
|
110
|
-
export interface NotebookTranscriptAttachment extends Record<string, unknown> {
|
|
111
|
-
id: string;
|
|
112
|
-
}
|
|
113
89
|
export interface NotebookFixtureState extends Record<string, unknown> {
|
|
114
90
|
version?: number;
|
|
115
91
|
owner?: string;
|
|
@@ -121,14 +97,10 @@ export interface NotebookDocument {
|
|
|
121
97
|
lifecycleState?: string;
|
|
122
98
|
workflowVersion?: number;
|
|
123
99
|
analysisRevision?: string;
|
|
124
|
-
audioSpine?: NotebookAudioSpine;
|
|
125
|
-
currentSelection?: NotebookCurrentSelection;
|
|
126
100
|
fixture?: NotebookFixtureState;
|
|
127
101
|
execution?: Record<string, NotebookCellExecution>;
|
|
128
102
|
generationPlans?: NotebookGenerationPlan[];
|
|
129
103
|
notebookRunPlans?: NotebookRunPlan[];
|
|
130
|
-
transcriptEdits?: NotebookTranscriptEdit[];
|
|
131
|
-
transcriptAttachments?: NotebookTranscriptAttachment[];
|
|
132
104
|
cells: NotebookCell[];
|
|
133
105
|
edges: NotebookEdge[];
|
|
134
106
|
createdAt: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notebook/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAC7B,UAAU,GACV,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notebook/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { NotebookGridSlot } from "./notebook/types.js";
|
|
2
|
+
export declare const NOTEBOOK_GRID_ROW_COUNT = 26;
|
|
3
|
+
export declare const NOTEBOOK_GRID_COLUMN_COUNT = 13;
|
|
4
|
+
export declare const NOTEBOOK_GRID_CAPACITY: number;
|
|
5
|
+
export declare const NOTEBOOK_GRID_FULL_ERROR = "Notebook grid is full";
|
|
6
|
+
export declare function isNotebookGridSlot(slot: NotebookGridSlot): boolean;
|
|
7
|
+
export declare function assertNotebookGridSlot(slot: NotebookGridSlot, label?: string): void;
|
|
8
|
+
export declare function notebookGridAddress(slot: NotebookGridSlot): string;
|
|
9
|
+
export declare function notebookGridTag(slot: NotebookGridSlot): string;
|
|
10
|
+
export declare function parseNotebookGridAddress(value: string): NotebookGridSlot | undefined;
|
|
11
|
+
export declare function firstEmptyNotebookGridSlot(occupied: Iterable<NotebookGridSlot>): NotebookGridSlot;
|
|
12
|
+
export declare function firstEmptyNotebookGridSlots(occupied: Iterable<NotebookGridSlot>, count: number): NotebookGridSlot[];
|
|
13
|
+
/**
|
|
14
|
+
* Free slot minimizing Manhattan distance from @a1.
|
|
15
|
+
* Ties break by lower row, then lower column (address order among equals).
|
|
16
|
+
*/
|
|
17
|
+
export declare function nearestOriginNotebookGridSlot(occupied: Iterable<NotebookGridSlot>): NotebookGridSlot;
|
|
18
|
+
/**
|
|
19
|
+
* Next free slot scanning down the letter axis from `anchor` (inclusive).
|
|
20
|
+
* Same column first; when exhausted, spill rightward column-by-column from
|
|
21
|
+
* the anchor row; then origin-proximity fallback.
|
|
22
|
+
*/
|
|
23
|
+
export declare function nextVerticalSlotFrom(anchor: NotebookGridSlot, occupied: Iterable<NotebookGridSlot>): NotebookGridSlot;
|
|
24
|
+
/**
|
|
25
|
+
* Next free slot scanning right along the number axis from `anchor` (inclusive).
|
|
26
|
+
* Same row first; when exhausted, spill downward row-by-row from the anchor
|
|
27
|
+
* column; then origin-proximity fallback.
|
|
28
|
+
*/
|
|
29
|
+
export declare function nextHorizontalSlotFrom(anchor: NotebookGridSlot, occupied: Iterable<NotebookGridSlot>): NotebookGridSlot;
|
|
30
|
+
/**
|
|
31
|
+
* Wave placement for generation tiles: scan `waveRow` left-to-right from
|
|
32
|
+
* `startColumn` for a slot whose below-neighbor is also free (room for the
|
|
33
|
+
* tile's output cell directly beneath), advancing row by row while both stay
|
|
34
|
+
* within the board; origin-proximity fallback when no pair fits.
|
|
35
|
+
*/
|
|
36
|
+
export declare function nextWaveTileSlot(waveRow: number, startColumn: number, occupied: Iterable<NotebookGridSlot>): NotebookGridSlot;
|
|
37
|
+
//# sourceMappingURL=notebook-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook-grid.d.ts","sourceRoot":"","sources":["../src/notebook-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,sBAAsB,QACmB,CAAC;AACvD,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAOT;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,EACtB,KAAK,SAAuB,GAC3B,IAAI,CAIN;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAGlE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAE9D;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,GACZ,gBAAgB,GAAG,SAAS,CAQ9B;AAaD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACnC,gBAAgB,CAElB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACpC,KAAK,EAAE,MAAM,GACZ,gBAAgB,EAAE,CAgBpB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACnC,gBAAgB,CA0BlB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACnC,gBAAgB,CAoBlB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACnC,gBAAgB,CAwBlB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACnC,gBAAgB,CAsBlB"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { NOTEBOOK_GRID_ADDRESS_PATTERN } from "./notebook-mentions.js";
|
|
2
|
+
export const NOTEBOOK_GRID_ROW_COUNT = 26;
|
|
3
|
+
export const NOTEBOOK_GRID_COLUMN_COUNT = 13;
|
|
4
|
+
export const NOTEBOOK_GRID_CAPACITY = NOTEBOOK_GRID_ROW_COUNT * NOTEBOOK_GRID_COLUMN_COUNT;
|
|
5
|
+
export const NOTEBOOK_GRID_FULL_ERROR = "Notebook grid is full";
|
|
6
|
+
export function isNotebookGridSlot(slot) {
|
|
7
|
+
return Number.isInteger(slot.row)
|
|
8
|
+
&& slot.row >= 0
|
|
9
|
+
&& slot.row < NOTEBOOK_GRID_ROW_COUNT
|
|
10
|
+
&& Number.isInteger(slot.column)
|
|
11
|
+
&& slot.column >= 0
|
|
12
|
+
&& slot.column < NOTEBOOK_GRID_COLUMN_COUNT;
|
|
13
|
+
}
|
|
14
|
+
export function assertNotebookGridSlot(slot, label = "Notebook grid slot") {
|
|
15
|
+
if (!isNotebookGridSlot(slot)) {
|
|
16
|
+
throw new Error(`${label} must be within @a1-@z13`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function notebookGridAddress(slot) {
|
|
20
|
+
assertNotebookGridSlot(slot);
|
|
21
|
+
return `${String.fromCharCode(97 + slot.row)}${slot.column + 1}`;
|
|
22
|
+
}
|
|
23
|
+
export function notebookGridTag(slot) {
|
|
24
|
+
return `@${notebookGridAddress(slot)}`;
|
|
25
|
+
}
|
|
26
|
+
export function parseNotebookGridAddress(value) {
|
|
27
|
+
const match = NOTEBOOK_GRID_ADDRESS_PATTERN.exec(value.trim());
|
|
28
|
+
if (!match)
|
|
29
|
+
return undefined;
|
|
30
|
+
const address = match[1];
|
|
31
|
+
return {
|
|
32
|
+
row: address[0].toLowerCase().charCodeAt(0) - 97,
|
|
33
|
+
column: Number(address.slice(1)) - 1,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function occupiedNotebookGridKeys(occupied) {
|
|
37
|
+
const occupiedKeys = new Set();
|
|
38
|
+
for (const slot of occupied) {
|
|
39
|
+
assertNotebookGridSlot(slot);
|
|
40
|
+
occupiedKeys.add(`${slot.row}:${slot.column}`);
|
|
41
|
+
}
|
|
42
|
+
return occupiedKeys;
|
|
43
|
+
}
|
|
44
|
+
export function firstEmptyNotebookGridSlot(occupied) {
|
|
45
|
+
return firstEmptyNotebookGridSlots(occupied, 1)[0];
|
|
46
|
+
}
|
|
47
|
+
export function firstEmptyNotebookGridSlots(occupied, count) {
|
|
48
|
+
if (!Number.isInteger(count) || count < 0) {
|
|
49
|
+
throw new Error("Notebook grid slot count must be a nonnegative integer");
|
|
50
|
+
}
|
|
51
|
+
if (count === 0)
|
|
52
|
+
return [];
|
|
53
|
+
const occupiedKeys = occupiedNotebookGridKeys(occupied);
|
|
54
|
+
const result = [];
|
|
55
|
+
for (let row = 0; row < NOTEBOOK_GRID_ROW_COUNT; row += 1) {
|
|
56
|
+
for (let column = 0; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
57
|
+
if (occupiedKeys.has(`${row}:${column}`))
|
|
58
|
+
continue;
|
|
59
|
+
result.push({ row, column });
|
|
60
|
+
if (result.length === count)
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (result.length === count)
|
|
65
|
+
return result;
|
|
66
|
+
throw new Error(NOTEBOOK_GRID_FULL_ERROR);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Free slot minimizing Manhattan distance from @a1.
|
|
70
|
+
* Ties break by lower row, then lower column (address order among equals).
|
|
71
|
+
*/
|
|
72
|
+
export function nearestOriginNotebookGridSlot(occupied) {
|
|
73
|
+
const occupiedKeys = occupiedNotebookGridKeys(occupied);
|
|
74
|
+
let best = null;
|
|
75
|
+
let bestDistance = Number.POSITIVE_INFINITY;
|
|
76
|
+
for (let row = 0; row < NOTEBOOK_GRID_ROW_COUNT; row += 1) {
|
|
77
|
+
for (let column = 0; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
78
|
+
if (occupiedKeys.has(`${row}:${column}`))
|
|
79
|
+
continue;
|
|
80
|
+
const distance = row + column;
|
|
81
|
+
if (best === null
|
|
82
|
+
|| distance < bestDistance
|
|
83
|
+
|| (distance === bestDistance
|
|
84
|
+
&& (row < best.row
|
|
85
|
+
|| (row === best.row && column < best.column)))) {
|
|
86
|
+
best = { row, column };
|
|
87
|
+
bestDistance = distance;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (!best)
|
|
92
|
+
throw new Error(NOTEBOOK_GRID_FULL_ERROR);
|
|
93
|
+
return best;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Next free slot scanning down the letter axis from `anchor` (inclusive).
|
|
97
|
+
* Same column first; when exhausted, spill rightward column-by-column from
|
|
98
|
+
* the anchor row; then origin-proximity fallback.
|
|
99
|
+
*/
|
|
100
|
+
export function nextVerticalSlotFrom(anchor, occupied) {
|
|
101
|
+
assertNotebookGridSlot(anchor);
|
|
102
|
+
const occupiedKeys = occupiedNotebookGridKeys(occupied);
|
|
103
|
+
for (let row = anchor.row; row < NOTEBOOK_GRID_ROW_COUNT; row += 1) {
|
|
104
|
+
if (!occupiedKeys.has(`${row}:${anchor.column}`)) {
|
|
105
|
+
return { row, column: anchor.column };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
for (let column = anchor.column + 1; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
109
|
+
for (let row = anchor.row; row < NOTEBOOK_GRID_ROW_COUNT; row += 1) {
|
|
110
|
+
if (!occupiedKeys.has(`${row}:${column}`)) {
|
|
111
|
+
return { row, column };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return nearestOriginNotebookGridSlot(occupied);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Next free slot scanning right along the number axis from `anchor` (inclusive).
|
|
119
|
+
* Same row first; when exhausted, spill downward row-by-row from the anchor
|
|
120
|
+
* column; then origin-proximity fallback.
|
|
121
|
+
*/
|
|
122
|
+
export function nextHorizontalSlotFrom(anchor, occupied) {
|
|
123
|
+
assertNotebookGridSlot(anchor);
|
|
124
|
+
const occupiedKeys = occupiedNotebookGridKeys(occupied);
|
|
125
|
+
for (let column = anchor.column; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
126
|
+
if (!occupiedKeys.has(`${anchor.row}:${column}`)) {
|
|
127
|
+
return { row: anchor.row, column };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
for (let row = anchor.row + 1; row < NOTEBOOK_GRID_ROW_COUNT; row += 1) {
|
|
131
|
+
for (let column = anchor.column; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
132
|
+
if (!occupiedKeys.has(`${row}:${column}`)) {
|
|
133
|
+
return { row, column };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return nearestOriginNotebookGridSlot(occupied);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Wave placement for generation tiles: scan `waveRow` left-to-right from
|
|
141
|
+
* `startColumn` for a slot whose below-neighbor is also free (room for the
|
|
142
|
+
* tile's output cell directly beneath), advancing row by row while both stay
|
|
143
|
+
* within the board; origin-proximity fallback when no pair fits.
|
|
144
|
+
*/
|
|
145
|
+
export function nextWaveTileSlot(waveRow, startColumn, occupied) {
|
|
146
|
+
const occupiedKeys = occupiedNotebookGridKeys(occupied);
|
|
147
|
+
const firstRow = Math.min(Math.max(0, Math.trunc(waveRow)), NOTEBOOK_GRID_ROW_COUNT - 1);
|
|
148
|
+
const firstColumn = Math.min(Math.max(0, Math.trunc(startColumn)), NOTEBOOK_GRID_COLUMN_COUNT - 1);
|
|
149
|
+
for (let row = firstRow; row + 1 < NOTEBOOK_GRID_ROW_COUNT; row += 1) {
|
|
150
|
+
for (let column = firstColumn; column < NOTEBOOK_GRID_COLUMN_COUNT; column += 1) {
|
|
151
|
+
if (occupiedKeys.has(`${row}:${column}`))
|
|
152
|
+
continue;
|
|
153
|
+
if (occupiedKeys.has(`${row + 1}:${column}`))
|
|
154
|
+
continue;
|
|
155
|
+
return { row, column };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return nearestOriginNotebookGridSlot(occupied);
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=notebook-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook-grid.js","sourceRoot":"","sources":["../src/notebook-grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { NotebookCell, NotebookDocument, NotebookEdge } from "./notebook/types.js";
|
|
2
|
+
type NotebookGraph = Pick<NotebookDocument, "cells" | "edges">;
|
|
3
|
+
export declare function findGenerateVideoOutputCell(document: NotebookGraph, generateVideoCellId: string): {
|
|
4
|
+
outputCell: NotebookCell;
|
|
5
|
+
outputEdge: NotebookEdge;
|
|
6
|
+
} | null;
|
|
7
|
+
export declare function findGenerateImageOutputCell(document: NotebookGraph, generateImageCellId: string): {
|
|
8
|
+
outputCell: NotebookCell;
|
|
9
|
+
outputEdge: NotebookEdge;
|
|
10
|
+
} | null;
|
|
11
|
+
export declare function findGenerateAudioOutputCell(document: NotebookGraph, generateAudioCellId: string): {
|
|
12
|
+
outputCell: NotebookCell;
|
|
13
|
+
outputEdge: NotebookEdge;
|
|
14
|
+
} | null;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve media artifact for a notebook cell.
|
|
17
|
+
* generate_video / generate_image / generate_audio prefer a dedicated output
|
|
18
|
+
* cell, then fall back to legacy inline outputArtifactId / outputEntityId.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveNotebookCellArtifactId(document: NotebookGraph, cell: NotebookCell): string | undefined;
|
|
21
|
+
export declare function resolveGeneratedVideoArtifact(document: NotebookGraph, cell: NotebookCell): string | undefined;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=notebook-media-artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook-media-artifact.d.ts","sourceRoot":"","sources":["../src/notebook-media-artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,KAAK,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;AAwC/D,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,mBAAmB,EAAE,MAAM,GAC1B;IAAE,UAAU,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAO/D;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,mBAAmB,EAAE,MAAM,GAC1B;IAAE,UAAU,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAO/D;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,mBAAmB,EAAE,MAAM,GAC1B;IAAE,UAAU,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAO/D;AAyBD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,YAAY,GACjB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,YAAY,GACjB,MAAM,GAAG,SAAS,CAEpB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
function findGenerationOutputCell(document, producerCellId, outputType, mediaRole) {
|
|
2
|
+
for (const edge of document.edges) {
|
|
3
|
+
if (edge.source !== producerCellId || edge.targetInput !== "media") {
|
|
4
|
+
continue;
|
|
5
|
+
}
|
|
6
|
+
const outputCell = document.cells.find((cell) => cell.id === edge.target);
|
|
7
|
+
if (outputCell?.type === outputType
|
|
8
|
+
&& outputCell.inputs?.mediaRole === mediaRole) {
|
|
9
|
+
return { outputCell, outputEdge: edge };
|
|
10
|
+
}
|
|
11
|
+
if (outputCell?.type === outputType
|
|
12
|
+
&& outputCell.inputs?.producerCellId === producerCellId) {
|
|
13
|
+
return { outputCell, outputEdge: edge };
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
for (const edge of document.edges) {
|
|
17
|
+
if (edge.source !== producerCellId || edge.targetInput !== "media") {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const outputCell = document.cells.find((cell) => cell.id === edge.target);
|
|
21
|
+
if (outputCell?.type === outputType) {
|
|
22
|
+
return { outputCell, outputEdge: edge };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
export function findGenerateVideoOutputCell(document, generateVideoCellId) {
|
|
28
|
+
return findGenerationOutputCell(document, generateVideoCellId, "video", "generate-video-output");
|
|
29
|
+
}
|
|
30
|
+
export function findGenerateImageOutputCell(document, generateImageCellId) {
|
|
31
|
+
return findGenerationOutputCell(document, generateImageCellId, "image", "generate-image-output");
|
|
32
|
+
}
|
|
33
|
+
export function findGenerateAudioOutputCell(document, generateAudioCellId) {
|
|
34
|
+
return findGenerationOutputCell(document, generateAudioCellId, "audio", "generate-audio-output");
|
|
35
|
+
}
|
|
36
|
+
function inlineCellArtifactId(cell) {
|
|
37
|
+
if (typeof cell.outputArtifactId === "string")
|
|
38
|
+
return cell.outputArtifactId;
|
|
39
|
+
if (typeof cell.outputEntityId === "string")
|
|
40
|
+
return cell.outputEntityId;
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
function outputCellArtifactId(document, cell) {
|
|
44
|
+
const output = cell.type === "generate_video"
|
|
45
|
+
? findGenerateVideoOutputCell(document, cell.id)
|
|
46
|
+
: cell.type === "generate_image"
|
|
47
|
+
? findGenerateImageOutputCell(document, cell.id)
|
|
48
|
+
: cell.type === "generate_audio"
|
|
49
|
+
? findGenerateAudioOutputCell(document, cell.id)
|
|
50
|
+
: null;
|
|
51
|
+
if (typeof output?.outputCell.outputArtifactId === "string") {
|
|
52
|
+
return output.outputCell.outputArtifactId;
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve media artifact for a notebook cell.
|
|
58
|
+
* generate_video / generate_image / generate_audio prefer a dedicated output
|
|
59
|
+
* cell, then fall back to legacy inline outputArtifactId / outputEntityId.
|
|
60
|
+
*/
|
|
61
|
+
export function resolveNotebookCellArtifactId(document, cell) {
|
|
62
|
+
return outputCellArtifactId(document, cell) ?? inlineCellArtifactId(cell);
|
|
63
|
+
}
|
|
64
|
+
export function resolveGeneratedVideoArtifact(document, cell) {
|
|
65
|
+
return resolveNotebookCellArtifactId(document, cell);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=notebook-media-artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook-media-artifact.js","sourceRoot":"","sources":["../src/notebook-media-artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const NOTEBOOK_GRID_ADDRESS_SOURCE = "[a-z](?:1[0-3]|[1-9])";
|
|
2
|
+
export declare const NOTEBOOK_GRID_ADDRESS_PATTERN: RegExp;
|
|
3
|
+
export declare const NOTEBOOK_MENTION_PATTERN: RegExp;
|
|
4
|
+
export interface NotebookMention {
|
|
5
|
+
raw: string;
|
|
6
|
+
reference: string;
|
|
7
|
+
index: number;
|
|
8
|
+
end: number;
|
|
9
|
+
}
|
|
10
|
+
export interface NotebookMentionReplacement {
|
|
11
|
+
reference: string;
|
|
12
|
+
replacement: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function normalizeNotebookReference(value: string): string;
|
|
15
|
+
export declare function isNotebookGridAddress(value: string): boolean;
|
|
16
|
+
export declare function scanNotebookMentions(input: string): NotebookMention[];
|
|
17
|
+
export declare function notebookMentionPrefixAtEnd(input: string): string | undefined;
|
|
18
|
+
export declare function replaceNotebookMentions(input: string, replacements: readonly NotebookMentionReplacement[]): string;
|
|
19
|
+
export declare function stripNotebookMentions(input: string, references: readonly string[]): string;
|
|
20
|
+
//# sourceMappingURL=notebook-mentions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook-mentions.d.ts","sourceRoot":"","sources":["../src/notebook-mentions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;AAEpE,eAAO,MAAM,6BAA6B,QAGzC,CAAC;AACF,eAAO,MAAM,wBAAwB,QAGpC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,CAUrE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5E;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,SAAS,0BAA0B,EAAE,GAClD,MAAM,CAgBR;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,MAAM,CAaR"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const NOTEBOOK_GRID_ADDRESS_SOURCE = "[a-z](?:1[0-3]|[1-9])";
|
|
2
|
+
export const NOTEBOOK_GRID_ADDRESS_PATTERN = new RegExp(`^@?(${NOTEBOOK_GRID_ADDRESS_SOURCE})$`, "iu");
|
|
3
|
+
export const NOTEBOOK_MENTION_PATTERN = new RegExp(`@(${NOTEBOOK_GRID_ADDRESS_SOURCE})(?![\\w-])`, "giu");
|
|
4
|
+
export function normalizeNotebookReference(value) {
|
|
5
|
+
return value.trim().replace(/^@/u, "").toLowerCase();
|
|
6
|
+
}
|
|
7
|
+
export function isNotebookGridAddress(value) {
|
|
8
|
+
return NOTEBOOK_GRID_ADDRESS_PATTERN.test(normalizeNotebookReference(value));
|
|
9
|
+
}
|
|
10
|
+
export function scanNotebookMentions(input) {
|
|
11
|
+
return [...input.matchAll(NOTEBOOK_MENTION_PATTERN)].map((match) => {
|
|
12
|
+
const raw = match[0];
|
|
13
|
+
return {
|
|
14
|
+
raw,
|
|
15
|
+
reference: normalizeNotebookReference(match[1] ?? raw),
|
|
16
|
+
index: match.index,
|
|
17
|
+
end: match.index + raw.length,
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function notebookMentionPrefixAtEnd(input) {
|
|
22
|
+
const match = input.match(/@([a-z0-9]*)$/iu);
|
|
23
|
+
return match ? normalizeNotebookReference(match[1] ?? "") : undefined;
|
|
24
|
+
}
|
|
25
|
+
function escapePattern(value) {
|
|
26
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
27
|
+
}
|
|
28
|
+
export function replaceNotebookMentions(input, replacements) {
|
|
29
|
+
let output = input;
|
|
30
|
+
const ordered = [...replacements]
|
|
31
|
+
.map(({ reference, replacement }) => ({
|
|
32
|
+
reference: normalizeNotebookReference(reference),
|
|
33
|
+
replacement,
|
|
34
|
+
}))
|
|
35
|
+
.filter(({ reference }) => reference.length > 0)
|
|
36
|
+
.sort((left, right) => right.reference.length - left.reference.length);
|
|
37
|
+
for (const { reference, replacement } of ordered) {
|
|
38
|
+
output = output.replace(new RegExp(`@${escapePattern(reference)}(?![\\w-])`, "giu"), replacement);
|
|
39
|
+
}
|
|
40
|
+
return output;
|
|
41
|
+
}
|
|
42
|
+
export function stripNotebookMentions(input, references) {
|
|
43
|
+
let output = input;
|
|
44
|
+
const ordered = references
|
|
45
|
+
.map(normalizeNotebookReference)
|
|
46
|
+
.filter((reference) => reference.length > 0)
|
|
47
|
+
.sort((left, right) => right.length - left.length);
|
|
48
|
+
for (const reference of ordered) {
|
|
49
|
+
output = output.replace(new RegExp(` ?@${escapePattern(reference)}(?![\\w-])`, "giu"), "");
|
|
50
|
+
}
|
|
51
|
+
return output;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=notebook-mentions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook-mentions.js","sourceRoot":"","sources":["../src/notebook-mentions.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime-services.js
CHANGED
|
@@ -225,14 +225,14 @@ function createFailuresApi(context) {
|
|
|
225
225
|
const row = context.store.db
|
|
226
226
|
.prepare(`${FAILURE_SELECT} WHERE artifact_id=?`)
|
|
227
227
|
.get(artifactId);
|
|
228
|
-
return row ? failureFromRow(
|
|
228
|
+
return row ? failureFromRow(row) : null;
|
|
229
229
|
}),
|
|
230
230
|
clear: (artifact) => clearFailure(context, artifact),
|
|
231
231
|
findAll: () => syncResultOf(() => {
|
|
232
232
|
const rows = context.store.db
|
|
233
233
|
.prepare(`${FAILURE_SELECT} ORDER BY failed_at DESC`)
|
|
234
234
|
.all();
|
|
235
|
-
return rows.map((row) => failureFromRow(
|
|
235
|
+
return rows.map((row) => failureFromRow(row));
|
|
236
236
|
}),
|
|
237
237
|
};
|
|
238
238
|
}
|
|
@@ -376,7 +376,6 @@ async function writeFailure(context, artifactReference, info) {
|
|
|
376
376
|
});
|
|
377
377
|
return ok({
|
|
378
378
|
artifactId: artifact.artifact_id,
|
|
379
|
-
artifactSlug: artifact.slug,
|
|
380
379
|
message: info.message,
|
|
381
380
|
...(info.failCode ? { failCode: info.failCode } : {}),
|
|
382
381
|
...(info.prompt !== undefined ? { prompt: info.prompt } : {}),
|
|
@@ -473,7 +472,7 @@ function viewFromRow(context, row) {
|
|
|
473
472
|
const artifact = context.artifactRowById(row.artifact_id);
|
|
474
473
|
return {
|
|
475
474
|
artifactId: row.artifact_id,
|
|
476
|
-
|
|
475
|
+
...(artifact.label !== null ? { label: artifact.label } : {}),
|
|
477
476
|
status: row.status,
|
|
478
477
|
meta: parseJson(row.meta_json, {}),
|
|
479
478
|
ownerId: row.owner_id,
|
|
@@ -485,10 +484,8 @@ function viewFromRow(context, row) {
|
|
|
485
484
|
};
|
|
486
485
|
}
|
|
487
486
|
function pendingFromRow(context, row) {
|
|
488
|
-
const artifact = context.artifactRowById(row.artifact_id);
|
|
489
487
|
return {
|
|
490
488
|
artifactId: row.artifact_id,
|
|
491
|
-
artifactSlug: artifact.slug,
|
|
492
489
|
taskId: row.task_id,
|
|
493
490
|
taskType: row.task_type,
|
|
494
491
|
workspacePath: context.artifactPath(row.artifact_id),
|
|
@@ -498,11 +495,9 @@ function pendingFromRow(context, row) {
|
|
|
498
495
|
ownerId: row.owner_id,
|
|
499
496
|
};
|
|
500
497
|
}
|
|
501
|
-
function failureFromRow(
|
|
502
|
-
const artifact = context.artifactRowById(row.artifact_id);
|
|
498
|
+
function failureFromRow(row) {
|
|
503
499
|
return {
|
|
504
500
|
artifactId: row.artifact_id,
|
|
505
|
-
artifactSlug: artifact.slug,
|
|
506
501
|
message: row.message,
|
|
507
502
|
...(row.fail_code ? { failCode: row.fail_code } : {}),
|
|
508
503
|
...(row.prompt !== null ? { prompt: row.prompt } : {}),
|