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.
Files changed (104) hide show
  1. package/README.md +15 -30
  2. package/dist/artifacts.d.ts +4 -9
  3. package/dist/artifacts.d.ts.map +1 -1
  4. package/dist/artifacts.js +39 -133
  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 +16 -9
  9. package/dist/books.js.map +1 -1
  10. package/dist/catalog-metadata.d.ts +2 -2
  11. package/dist/catalog-metadata.js +3 -3
  12. package/dist/catalog-metadata.js.map +1 -1
  13. package/dist/context.d.ts +3 -5
  14. package/dist/context.d.ts.map +1 -1
  15. package/dist/context.js +10 -48
  16. package/dist/context.js.map +1 -1
  17. package/dist/domain.d.ts +35 -2
  18. package/dist/domain.d.ts.map +1 -1
  19. package/dist/domain.js +131 -161
  20. package/dist/domain.js.map +1 -1
  21. package/dist/engine-types.d.ts +62 -27
  22. package/dist/engine-types.d.ts.map +1 -1
  23. package/dist/engine-types.js +0 -1
  24. package/dist/engine-types.js.map +1 -1
  25. package/dist/engine.d.ts +20 -18
  26. package/dist/engine.d.ts.map +1 -1
  27. package/dist/engine.js +3 -3
  28. package/dist/engine.js.map +1 -1
  29. package/dist/files.js +1 -1
  30. package/dist/files.js.map +1 -1
  31. package/dist/fork.d.ts +3 -2
  32. package/dist/fork.d.ts.map +1 -1
  33. package/dist/fork.js +13 -20
  34. package/dist/fork.js.map +1 -1
  35. package/dist/generations.d.ts +9 -0
  36. package/dist/generations.d.ts.map +1 -0
  37. package/dist/generations.js +175 -0
  38. package/dist/generations.js.map +1 -0
  39. package/dist/history.d.ts +2 -1
  40. package/dist/history.d.ts.map +1 -1
  41. package/dist/history.js +21 -49
  42. package/dist/history.js.map +1 -1
  43. package/dist/index.d.ts +8 -6
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +5 -5
  46. package/dist/index.js.map +1 -1
  47. package/dist/media.d.ts +3 -3
  48. package/dist/media.d.ts.map +1 -1
  49. package/dist/media.js +5 -5
  50. package/dist/media.js.map +1 -1
  51. package/dist/merge-policy.d.ts +10 -26
  52. package/dist/merge-policy.d.ts.map +1 -1
  53. package/dist/merge-policy.js +8 -115
  54. package/dist/merge-policy.js.map +1 -1
  55. package/dist/metadata.js +2 -3
  56. package/dist/metadata.js.map +1 -1
  57. package/dist/migration.d.ts.map +1 -1
  58. package/dist/migration.js +32 -2
  59. package/dist/migration.js.map +1 -1
  60. package/dist/mvp-contract-fixtures.js +1 -1
  61. package/dist/mvp-contract-fixtures.js.map +1 -1
  62. package/dist/mvp-contracts.d.ts +3 -3
  63. package/dist/mvp-contracts.d.ts.map +1 -1
  64. package/dist/mvp-contracts.js +1 -1
  65. package/dist/notebook/types.d.ts +1 -29
  66. package/dist/notebook/types.d.ts.map +1 -1
  67. package/dist/notebook-grid.d.ts +37 -0
  68. package/dist/notebook-grid.d.ts.map +1 -0
  69. package/dist/notebook-grid.js +160 -0
  70. package/dist/notebook-grid.js.map +1 -0
  71. package/dist/notebook-media-artifact.d.ts +23 -0
  72. package/dist/notebook-media-artifact.d.ts.map +1 -0
  73. package/dist/notebook-media-artifact.js +67 -0
  74. package/dist/notebook-media-artifact.js.map +1 -0
  75. package/dist/notebook-mentions.d.ts +20 -0
  76. package/dist/notebook-mentions.d.ts.map +1 -0
  77. package/dist/notebook-mentions.js +53 -0
  78. package/dist/notebook-mentions.js.map +1 -0
  79. package/dist/runtime-services.js +4 -9
  80. package/dist/runtime-services.js.map +1 -1
  81. package/dist/schema.d.ts +3 -19
  82. package/dist/schema.d.ts.map +1 -1
  83. package/dist/schema.js +63 -92
  84. package/dist/schema.js.map +1 -1
  85. package/dist/similarity.js +9 -9
  86. package/dist/similarity.js.map +1 -1
  87. package/dist/status.js +8 -10
  88. package/dist/status.js.map +1 -1
  89. package/dist/store.d.ts +1 -1
  90. package/dist/store.js +3 -3
  91. package/dist/temporal-search.js +50 -6
  92. package/dist/temporal-search.js.map +1 -1
  93. package/docs/engine-layout.md +14 -19
  94. package/docs/mvp-prd.md +2 -2
  95. package/fixtures/v5/contract-fixtures.json +4 -4
  96. package/package.json +13 -1
  97. package/dist/artifact-names.d.ts +0 -6
  98. package/dist/artifact-names.d.ts.map +0 -1
  99. package/dist/artifact-names.js +0 -56
  100. package/dist/artifact-names.js.map +0 -1
  101. package/dist/resolver.d.ts +0 -15
  102. package/dist/resolver.d.ts.map +0 -1
  103. package/dist/resolver.js +0 -81
  104. package/dist/resolver.js.map +0 -1
@@ -29,7 +29,7 @@ export interface NotebookGridSlot {
29
29
  export interface NotebookCell {
30
30
  id: string;
31
31
  type: NotebookCellType;
32
- slug: string;
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":"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"}
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":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GACjC,uBAAuB,GAAG,0BAA0B,CAAC;AACvD,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAEhE,MAAM,UAAU,kBAAkB,CAChC,IAAsB;IAEtB,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;WAC5B,IAAI,CAAC,GAAG,IAAI,CAAC;WACb,IAAI,CAAC,GAAG,GAAG,uBAAuB;WAClC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;WAC7B,IAAI,CAAC,MAAM,IAAI,CAAC;WAChB,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAsB,EACtB,KAAK,GAAG,oBAAoB;IAE5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAa;IAEb,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IAC1B,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;QACjD,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAoC;IAEpC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAAoC;IAEpC,OAAO,2BAA2B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAAoC,EACpC,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAC1D,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,0BAA0B,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YACtE,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;gBAAE,SAAS;YACnD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;gBAAE,OAAO,MAAM,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IAC3C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAAoC;IAEpC,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,IAAI,GAA4B,IAAI,CAAC;IACzC,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAC1D,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,0BAA0B,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YACtE,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;gBAAE,SAAS;YACnD,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC;YAC9B,IACE,IAAI,KAAK,IAAI;mBACV,QAAQ,GAAG,YAAY;mBACvB,CACD,QAAQ,KAAK,YAAY;uBACtB,CACD,GAAG,GAAG,IAAI,CAAC,GAAG;2BACX,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAC9C,CACF,EACD,CAAC;gBACD,IAAI,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;gBACvB,YAAY,GAAG,QAAQ,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAwB,EACxB,QAAoC;IAEpC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACxD,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YACjD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IACD,KACE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAC9B,MAAM,GAAG,0BAA0B,EACnC,MAAM,IAAI,CAAC,EACX,CAAC;QACD,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAwB,EACxB,QAAoC;IAEpC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACxD,KACE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAC1B,MAAM,GAAG,0BAA0B,EACnC,MAAM,IAAI,CAAC,EACX,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC;YACjD,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IACD,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACvE,KACE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAC1B,MAAM,GAAG,0BAA0B,EACnC,MAAM,IAAI,CAAC,EACX,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,WAAmB,EACnB,QAAoC;IAEpC,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAChC,uBAAuB,GAAG,CAAC,CAC5B,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EACpC,0BAA0B,GAAG,CAAC,CAC/B,CAAC;IACF,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACrE,KACE,IAAI,MAAM,GAAG,WAAW,EACxB,MAAM,GAAG,0BAA0B,EACnC,MAAM,IAAI,CAAC,EACX,CAAC;YACD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;gBAAE,SAAS;YACnD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;gBAAE,SAAS;YACvD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC"}
@@ -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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"}
@@ -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(context, row) : null;
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(context, row));
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
- slug: artifact.slug,
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(context, row) {
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 } : {}),