@nodetool-ai/execution 0.8.1 → 0.8.3

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 (172) hide show
  1. package/README.md +23 -127
  2. package/dist/.nodetool-build-stamp +1 -1
  3. package/dist/app-debug/app-spec.d.ts.map +1 -1
  4. package/dist/app-debug/app-spec.js +3 -0
  5. package/dist/app-debug/app-spec.js.map +1 -1
  6. package/dist/app-debug/application-target.d.ts +1 -1
  7. package/dist/app-debug/application-target.d.ts.map +1 -1
  8. package/dist/app-debug/application-target.js +5 -3
  9. package/dist/app-debug/application-target.js.map +1 -1
  10. package/dist/app-debug/index.d.ts +4 -2
  11. package/dist/app-debug/index.d.ts.map +1 -1
  12. package/dist/app-debug/index.js +3 -2
  13. package/dist/app-debug/index.js.map +1 -1
  14. package/dist/app-debug/run-recording.d.ts +20 -0
  15. package/dist/app-debug/run-recording.d.ts.map +1 -0
  16. package/dist/app-debug/run-recording.js +105 -0
  17. package/dist/app-debug/run-recording.js.map +1 -0
  18. package/dist/app-debug/runtime.d.ts +2 -0
  19. package/dist/app-debug/runtime.d.ts.map +1 -1
  20. package/dist/app-debug/runtime.js +19 -4
  21. package/dist/app-debug/runtime.js.map +1 -1
  22. package/dist/app-debug/simulate.d.ts +10 -1
  23. package/dist/app-debug/simulate.d.ts.map +1 -1
  24. package/dist/app-debug/simulate.js +67 -27
  25. package/dist/app-debug/simulate.js.map +1 -1
  26. package/dist/app-debug/summarize.d.ts +1 -0
  27. package/dist/app-debug/summarize.d.ts.map +1 -1
  28. package/dist/app-debug/summarize.js +1 -0
  29. package/dist/app-debug/summarize.js.map +1 -1
  30. package/dist/app-debug/types.d.ts +6 -4
  31. package/dist/app-debug/types.d.ts.map +1 -1
  32. package/dist/app-run-generation.d.ts +8 -0
  33. package/dist/app-run-generation.d.ts.map +1 -0
  34. package/dist/app-run-generation.js +61 -0
  35. package/dist/app-run-generation.js.map +1 -0
  36. package/dist/browser-app-run.d.ts +10 -0
  37. package/dist/browser-app-run.d.ts.map +1 -0
  38. package/dist/browser-app-run.js +108 -0
  39. package/dist/browser-app-run.js.map +1 -0
  40. package/dist/browser-run-spans.d.ts +4 -0
  41. package/dist/browser-run-spans.d.ts.map +1 -0
  42. package/dist/browser-run-spans.js +115 -0
  43. package/dist/browser-run-spans.js.map +1 -0
  44. package/dist/browser-trace-policy.d.ts +12 -0
  45. package/dist/browser-trace-policy.d.ts.map +1 -0
  46. package/dist/browser-trace-policy.js +40 -0
  47. package/dist/browser-trace-policy.js.map +1 -0
  48. package/dist/cost-ledger.d.ts +3 -0
  49. package/dist/cost-ledger.d.ts.map +1 -1
  50. package/dist/cost-ledger.js +23 -2
  51. package/dist/cost-ledger.js.map +1 -1
  52. package/dist/debug/types.d.ts +1 -0
  53. package/dist/debug/types.d.ts.map +1 -1
  54. package/dist/debug/verdict.d.ts +26 -1
  55. package/dist/debug/verdict.d.ts.map +1 -1
  56. package/dist/debug/verdict.js +36 -0
  57. package/dist/debug/verdict.js.map +1 -1
  58. package/dist/generation-lifecycle.d.ts +5 -4
  59. package/dist/generation-lifecycle.d.ts.map +1 -1
  60. package/dist/generation-lifecycle.js +71 -10
  61. package/dist/generation-lifecycle.js.map +1 -1
  62. package/dist/generation-recovery-worker.d.ts.map +1 -1
  63. package/dist/generation-recovery-worker.js +2 -0
  64. package/dist/generation-recovery-worker.js.map +1 -1
  65. package/dist/generation-tracker.d.ts +2 -15
  66. package/dist/generation-tracker.d.ts.map +1 -1
  67. package/dist/generation-tracker.js +92 -6
  68. package/dist/generation-tracker.js.map +1 -1
  69. package/dist/index.d.ts +9 -2
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +6 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/js-script-debug/index.d.ts +1 -0
  74. package/dist/js-script-debug/index.d.ts.map +1 -1
  75. package/dist/js-script-debug/index.js +1 -0
  76. package/dist/js-script-debug/index.js.map +1 -1
  77. package/dist/js-script-debug/report.d.ts.map +1 -1
  78. package/dist/js-script-debug/report.js +9 -24
  79. package/dist/js-script-debug/report.js.map +1 -1
  80. package/dist/js-script-debug/type-check.d.ts +16 -0
  81. package/dist/js-script-debug/type-check.d.ts.map +1 -0
  82. package/dist/js-script-debug/type-check.js +150 -0
  83. package/dist/js-script-debug/type-check.js.map +1 -0
  84. package/dist/js-script-debug/validate.d.ts +8 -0
  85. package/dist/js-script-debug/validate.d.ts.map +1 -1
  86. package/dist/js-script-debug/validate.js +4 -0
  87. package/dist/js-script-debug/validate.js.map +1 -1
  88. package/dist/message-stream.d.ts +1 -32
  89. package/dist/message-stream.d.ts.map +1 -1
  90. package/dist/message-stream.js +1 -57
  91. package/dist/message-stream.js.map +1 -1
  92. package/dist/partial-run.d.ts +65 -0
  93. package/dist/partial-run.d.ts.map +1 -0
  94. package/dist/partial-run.js +300 -0
  95. package/dist/partial-run.js.map +1 -0
  96. package/dist/preflight.d.ts +43 -2
  97. package/dist/preflight.d.ts.map +1 -1
  98. package/dist/preflight.js +78 -4
  99. package/dist/preflight.js.map +1 -1
  100. package/dist/run-trace-store.d.ts +9 -0
  101. package/dist/run-trace-store.d.ts.map +1 -0
  102. package/dist/run-trace-store.js +57 -0
  103. package/dist/run-trace-store.js.map +1 -0
  104. package/dist/runs.d.ts +16 -0
  105. package/dist/runs.d.ts.map +1 -0
  106. package/dist/runs.js +431 -0
  107. package/dist/runs.js.map +1 -0
  108. package/dist/service/app-debug-service.d.ts +4 -2
  109. package/dist/service/app-debug-service.d.ts.map +1 -1
  110. package/dist/service/app-debug-service.js +73 -31
  111. package/dist/service/app-debug-service.js.map +1 -1
  112. package/dist/service/app-operation.d.ts +39 -0
  113. package/dist/service/app-operation.d.ts.map +1 -0
  114. package/dist/service/app-operation.js +271 -0
  115. package/dist/service/app-operation.js.map +1 -0
  116. package/dist/service/app-run-server.d.ts +3 -1
  117. package/dist/service/app-run-server.d.ts.map +1 -1
  118. package/dist/service/app-run-server.js +22 -14
  119. package/dist/service/app-run-server.js.map +1 -1
  120. package/dist/service/index.d.ts +5 -1
  121. package/dist/service/index.d.ts.map +1 -1
  122. package/dist/service/index.js +2 -0
  123. package/dist/service/index.js.map +1 -1
  124. package/dist/service/run-trace-lifecycle.d.ts +34 -0
  125. package/dist/service/run-trace-lifecycle.d.ts.map +1 -0
  126. package/dist/service/run-trace-lifecycle.js +135 -0
  127. package/dist/service/run-trace-lifecycle.js.map +1 -0
  128. package/dist/service/workflow-run.d.ts +47 -16
  129. package/dist/service/workflow-run.d.ts.map +1 -1
  130. package/dist/service/workflow-run.js +210 -78
  131. package/dist/service/workflow-run.js.map +1 -1
  132. package/dist/session.d.ts +1 -1
  133. package/dist/session.d.ts.map +1 -1
  134. package/dist/session.js +109 -100
  135. package/dist/session.js.map +1 -1
  136. package/dist/sketch-debug/markdown.d.ts.map +1 -1
  137. package/dist/sketch-debug/markdown.js +1 -0
  138. package/dist/sketch-debug/markdown.js.map +1 -1
  139. package/dist/sketch-debug/report.d.ts.map +1 -1
  140. package/dist/sketch-debug/report.js +19 -28
  141. package/dist/sketch-debug/report.js.map +1 -1
  142. package/dist/sketch-debug/types.d.ts +2 -0
  143. package/dist/sketch-debug/types.d.ts.map +1 -1
  144. package/dist/timeline-debug/frame-geometry.d.ts +120 -0
  145. package/dist/timeline-debug/frame-geometry.d.ts.map +1 -0
  146. package/dist/timeline-debug/frame-geometry.js +238 -0
  147. package/dist/timeline-debug/frame-geometry.js.map +1 -0
  148. package/dist/timeline-debug/index.d.ts +1 -0
  149. package/dist/timeline-debug/index.d.ts.map +1 -1
  150. package/dist/timeline-debug/index.js +1 -0
  151. package/dist/timeline-debug/index.js.map +1 -1
  152. package/dist/timeline-debug/legibility.d.ts +8 -4
  153. package/dist/timeline-debug/legibility.d.ts.map +1 -1
  154. package/dist/timeline-debug/legibility.js +47 -18
  155. package/dist/timeline-debug/legibility.js.map +1 -1
  156. package/dist/timeline-debug/report.d.ts.map +1 -1
  157. package/dist/timeline-debug/report.js +16 -25
  158. package/dist/timeline-debug/report.js.map +1 -1
  159. package/dist/timeline-debug/score.d.ts +110 -0
  160. package/dist/timeline-debug/score.d.ts.map +1 -0
  161. package/dist/timeline-debug/score.js +231 -0
  162. package/dist/timeline-debug/score.js.map +1 -0
  163. package/dist/timeline-debug/showcase.d.ts +12 -0
  164. package/dist/timeline-debug/showcase.d.ts.map +1 -1
  165. package/dist/timeline-debug/showcase.js +669 -13
  166. package/dist/timeline-debug/showcase.js.map +1 -1
  167. package/dist/timeline-debug/validate.d.ts.map +1 -1
  168. package/dist/timeline-debug/validate.js +121 -2
  169. package/dist/timeline-debug/validate.js.map +1 -1
  170. package/dist/types.d.ts +18 -10
  171. package/dist/types.d.ts.map +1 -1
  172. package/package.json +13 -13
@@ -0,0 +1,238 @@
1
+ import { buildTransformMatrix, containBaseScale, IDENTITY_TRANSFORM, layoutTextBlock, parseSvgPath } from "@nodetool-ai/timeline/scene";
2
+ /** A `path` shape's frame-pixel bounding box from its `d` data, or
3
+ * `undefined` when the data does not parse. Cubic/quad control points are
4
+ * included, which can only overestimate the box (Bezier curves stay inside
5
+ * their control points' convex hull) — the safe direction for a proxy that
6
+ * would otherwise call a small mark a full-frame background bed. */
7
+ function svgPathLocalBox(d, canvas) {
8
+ const parsed = parseSvgPath(d);
9
+ if (!parsed.ok) {
10
+ return undefined;
11
+ }
12
+ let minX = Number.POSITIVE_INFINITY;
13
+ let minY = Number.POSITIVE_INFINITY;
14
+ let maxX = Number.NEGATIVE_INFINITY;
15
+ let maxY = Number.NEGATIVE_INFINITY;
16
+ const consider = (x, y) => {
17
+ minX = Math.min(minX, x);
18
+ minY = Math.min(minY, y);
19
+ maxX = Math.max(maxX, x);
20
+ maxY = Math.max(maxY, y);
21
+ };
22
+ for (const segment of parsed.segments) {
23
+ if (segment.kind === "move" || segment.kind === "line") {
24
+ consider(segment.x, segment.y);
25
+ }
26
+ else if (segment.kind === "quad") {
27
+ consider(segment.x1, segment.y1);
28
+ consider(segment.x, segment.y);
29
+ }
30
+ else if (segment.kind === "cubic") {
31
+ consider(segment.x1, segment.y1);
32
+ consider(segment.x2, segment.y2);
33
+ consider(segment.x, segment.y);
34
+ }
35
+ }
36
+ if (!Number.isFinite(minX) || !Number.isFinite(minY)) {
37
+ return undefined;
38
+ }
39
+ return {
40
+ x: minX * canvas.width,
41
+ y: minY * canvas.height,
42
+ width: (maxX - minX) * canvas.width,
43
+ height: (maxY - minY) * canvas.height
44
+ };
45
+ }
46
+ /** Pre-transform box in frame pixels. `undefined` for a kind this proxy does
47
+ * not measure (audio, group, adjustment). A media clip's box is the whole
48
+ * frame — its contain-fit base scale is applied in `frameBoxFor`.
49
+ *
50
+ * `sizeOverride` is the box a flex container resized this leaf to
51
+ * (`resolveClipLayoutsWithDiagnostics`'s `sizes` map) — the same override
52
+ * `sceneModel.ts`'s `emitMedia` applies to the clip it hands the renderer, so
53
+ * a flex-resized plate or a rewrapped text block measures at the size it
54
+ * actually draws at, not its pre-layout authored one. */
55
+ export function localBox(clip, canvas, sizeOverride) {
56
+ if (clip.mediaType === "text" && clip.textStyle) {
57
+ const style = sizeOverride
58
+ ? { ...clip.textStyle, maxWidthFrac: Math.min(1, Math.max(0.05, sizeOverride.width / canvas.width)) }
59
+ : clip.textStyle;
60
+ const measure = (text) => text.length * style.fontSizePx * 0.6;
61
+ return layoutTextBlock(measure, style, canvas.width, canvas.height).box;
62
+ }
63
+ if (clip.mediaType === "shape" && clip.shapeStyle) {
64
+ const shape = clip.shapeStyle;
65
+ // A resized shape is pinned to the top-left, not `shapeBox`'s centered
66
+ // (0.25/0.25) default for an unset origin — the same convention
67
+ // `sceneModel.ts`'s own size override uses, because the box being
68
+ // measured is from the frame's top-left.
69
+ if (sizeOverride) {
70
+ return { x: 0, y: 0, width: sizeOverride.width, height: sizeOverride.height };
71
+ }
72
+ // A `path` shape has no `x`/`y`/`width`/`height` of its own — those
73
+ // fields default a `rect`/`ellipse`/`polygon` to the full frame, which is
74
+ // exactly wrong for a small hand-drawn mark and reads as a giant
75
+ // background bed that then collides with everything on screen.
76
+ if (shape.kind === "path" && shape.d) {
77
+ return svgPathLocalBox(shape.d, canvas) ?? { x: 0, y: 0, width: 0, height: 0 };
78
+ }
79
+ return {
80
+ x: (shape.x ?? 0) * canvas.width,
81
+ y: (shape.y ?? 0) * canvas.height,
82
+ width: (shape.width ?? 1) * canvas.width,
83
+ height: (shape.height ?? 1) * canvas.height
84
+ };
85
+ }
86
+ if (["image", "video", "overlay", "model3d"].includes(clip.mediaType)) {
87
+ return { x: 0, y: 0, width: canvas.width, height: canvas.height };
88
+ }
89
+ return undefined;
90
+ }
91
+ function mediaBase(clip, canvas) {
92
+ if (!["image", "video", "overlay", "model3d"].includes(clip.mediaType)) {
93
+ return { x: 1, y: 1 };
94
+ }
95
+ return containBaseScale(clip.width ?? canvas.width, clip.height ?? canvas.height, canvas.width, canvas.height);
96
+ }
97
+ export function projectPoint(x, y, matrix, canvas) {
98
+ const nx = (2 * x) / canvas.width - 1;
99
+ const ny = 1 - (2 * y) / canvas.height;
100
+ const w = matrix[3] * nx + matrix[7] * ny + matrix[15];
101
+ const px = (matrix[0] * nx + matrix[4] * ny + matrix[12]) / w;
102
+ const py = (matrix[1] * nx + matrix[5] * ny + matrix[13]) / w;
103
+ return { x: ((px + 1) * canvas.width) / 2, y: ((1 - py) * canvas.height) / 2 };
104
+ }
105
+ export function projectBox(box, matrix, canvas) {
106
+ const points = [
107
+ [box.x, box.y],
108
+ [box.x + box.width, box.y],
109
+ [box.x, box.y + box.height],
110
+ [box.x + box.width, box.y + box.height]
111
+ ].map(([x, y]) => projectPoint(x, y, matrix, canvas));
112
+ const left = Math.min(...points.map((p) => p.x));
113
+ const top = Math.min(...points.map((p) => p.y));
114
+ return {
115
+ x: left,
116
+ y: top,
117
+ width: Math.max(...points.map((p) => p.x)) - left,
118
+ height: Math.max(...points.map((p) => p.y)) - top
119
+ };
120
+ }
121
+ /** Root-first chain of the clip and every ancestor group it is parented to.
122
+ * Stops at the first non-group parent, same as the scene model. A chain that
123
+ * loops back on itself is refused (`parent_cycle` in `validate.ts`), so the
124
+ * clip is treated as unparented. */
125
+ export function ancestorChain(clip, byId) {
126
+ const chain = [clip];
127
+ const seen = new Set([clip.id]);
128
+ let parent = clip.parentId ? byId.get(clip.parentId) : undefined;
129
+ while (parent?.mediaType === "group") {
130
+ if (seen.has(parent.id)) {
131
+ return [clip];
132
+ }
133
+ seen.add(parent.id);
134
+ chain.push(parent);
135
+ parent = parent.parentId ? byId.get(parent.parentId) : undefined;
136
+ }
137
+ return chain.reverse();
138
+ }
139
+ /** Whether `clip` or an ancestor carries a 3D tilt (`rotationX`/`rotationY`)
140
+ * or `perspective`. An axis-aligned box is not a sound proxy for a layer
141
+ * under a projective transform: the true screen footprint is a distorted
142
+ * quadrilateral, and its AABB can be several times taller or narrower than
143
+ * the source box even for ordinary content — a tilted phone-mockup card is
144
+ * the shipped example that shows it. Checks relying on the frame box skip
145
+ * these clips rather than report a geometry the transform makes up. */
146
+ export function hasPerspectiveAncestor(clip, byId) {
147
+ return ancestorChain(clip, byId).some((ancestor) => {
148
+ const t = ancestor.transform;
149
+ return Boolean(t && (t.rotationX || t.rotationY || t.perspective));
150
+ });
151
+ }
152
+ /** `clip`'s transform, or the position/scale a `row`/`stack`/`relative`
153
+ * container resolved for it — the same override the renderer places a
154
+ * layout-managed child with. A clip's own `transform` is stale once it sits
155
+ * in a container: the container decides its box, and measuring the authored
156
+ * field instead reads two stack siblings as stacked at the same spot no
157
+ * matter how far the container's `gapPx` actually holds them apart. */
158
+ export function resolvedTransform(clip, resolved) {
159
+ return resolved.get(clip.id) ?? clip.transform ?? IDENTITY_TRANSFORM;
160
+ }
161
+ /** `transform` with any 3D tilt zeroed — same position/scale/z-rotation, no
162
+ * `rotationX`/`rotationY`/`perspective`. Used only for frame coverage (see
163
+ * `showcase.ts`'s `checkFrameUnderfilled`), where an untilted footprint is a
164
+ * closer approximation of "how much of the frame this covers" than a
165
+ * projective AABB, which can be inflated or skewed under a tilt in a way
166
+ * area alone should not be. */
167
+ export function untiltedTransform(transform) {
168
+ if (!transform.rotationX && !transform.rotationY && !transform.perspective) {
169
+ return transform;
170
+ }
171
+ return { ...transform, rotationX: undefined, rotationY: undefined, perspective: undefined };
172
+ }
173
+ /** `clip`'s (or an overridden local box's) axis-aligned box in frame pixels,
174
+ * composing every ancestor group's transform into one matrix before
175
+ * projecting — a rotated ancestor does not inflate the box the way
176
+ * re-projecting an AABB at each level would. Static: the authored transform,
177
+ * not an animated sample. `flattenPerspective` strips 3D tilt from every
178
+ * ancestor first (see `untiltedTransform`) — an approximation a caller opts
179
+ * into explicitly, never the default.
180
+ *
181
+ * `resolved` (`resolveClipLayoutsWithDiagnostics`'s `transforms` map) is
182
+ * PARENT-LOCAL (packages/timeline/AGENTS.md, "PARENT-LOCAL"): a flex-managed
183
+ * clip's resolved `position` is relative to its flex root's own untranslated
184
+ * frame, with every intermediate flex container's own translation already
185
+ * folded in — never the root's own placement, and never doubled. The
186
+ * renderer (`sceneModel.ts`'s `groupPatchedClips`) adds each ancestor's real
187
+ * translation back exactly once by zeroing a flex-managed *ancestor's* own
188
+ * `position` before composing it (keeping any rotation/scale the author put
189
+ * on it — flex only ever touches `position`), while the target clip itself
190
+ * keeps its full resolved position. This mirrors that: only an ancestor
191
+ * (never the clip whose box this is) gets its flex-resolved position
192
+ * stripped.
193
+ */
194
+ export function composedMatrix(clip, canvas, byId, resolved, flattenPerspective = false) {
195
+ let matrix;
196
+ for (const ancestor of ancestorChain(clip, byId)) {
197
+ const isTarget = ancestor === clip;
198
+ const base = isTarget ? mediaBase(clip, canvas) : { x: 1, y: 1 };
199
+ const flexEntry = resolved.get(ancestor.id);
200
+ const t = isTarget
201
+ ? (flexEntry ?? ancestor.transform ?? IDENTITY_TRANSFORM)
202
+ : flexEntry
203
+ ? { ...flexEntry, position: { x: 0, y: 0 } }
204
+ : (ancestor.transform ?? IDENTITY_TRANSFORM);
205
+ matrix = buildTransformMatrix(flattenPerspective ? untiltedTransform(t) : t, base, canvas.width, canvas.height, matrix);
206
+ }
207
+ return matrix;
208
+ }
209
+ export function frameBoxFor(clip, canvas, byId, resolved, overrideLocal, flattenPerspective = false, sizes) {
210
+ // A flex container can resize a leaf far past its authored `shapeStyle`/
211
+ // `textStyle` box (a plate stretched to `inset: 0` behind a title, a text
212
+ // block rewrapped to a narrower column) — `sizes` is the box that resized
213
+ // it to, the same map `sceneModel.ts`'s `emitMedia` reads to build the
214
+ // clip the renderer actually draws. The clip's resolved *position* already
215
+ // comes from `resolved` the ordinary way (`resolvedTransform`, below); only
216
+ // the pre-transform local box's own width/height need the override, so the
217
+ // position/rotation/scale composition every other clip goes through here
218
+ // stays the one path, flex-resized or not.
219
+ const own = overrideLocal ?? localBox(clip, canvas, sizes?.get(clip.id));
220
+ if (!own) {
221
+ return undefined;
222
+ }
223
+ return projectBox(own, composedMatrix(clip, canvas, byId, resolved, flattenPerspective), canvas);
224
+ }
225
+ /** A box covering this much of the frame is a bed, not content — see
226
+ * `showcase.ts`. Not used by `legibility.ts`, which wants the opposite: a
227
+ * full-frame shape is still a valid backdrop to read a colour off. */
228
+ export const BACKGROUND_COVERAGE = 0.9;
229
+ export function isBackgroundBed(box, canvas) {
230
+ return box.width * box.height >= BACKGROUND_COVERAGE * canvas.width * canvas.height;
231
+ }
232
+ export function containsBox(outer, inner, eps = 0.5) {
233
+ return (inner.x >= outer.x - eps &&
234
+ inner.y >= outer.y - eps &&
235
+ inner.x + inner.width <= outer.x + outer.width + eps &&
236
+ inner.y + inner.height <= outer.y + outer.height + eps);
237
+ }
238
+ //# sourceMappingURL=frame-geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-geometry.js","sourceRoot":"","sources":["../../src/timeline-debug/frame-geometry.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,5 @@ export type { TimelineDebugIssue, TimelineValidation, TimelineInteractionRecord,
8
8
  export { validateTimelineSequence, collectStrippedPaths } from "./validate.js";
9
9
  export { buildTimelineDebugReport } from "./report.js";
10
10
  export { renderTimelineReportMarkdown } from "./markdown.js";
11
+ export { scoreTimelineCraft, computeTimelineCraftMetrics, summarizeTimelineCraftReferenceBand, loadTimelineCraftReferenceEntries, TIMELINE_CRAFT_METRIC_KEYS, type TimelineCraftMetricKey, type TimelineCraftMetrics, type TimelineCraftMetricScore, type TimelineCraftReferenceEntry, type TimelineCraftReferenceBand, type TimelineCraftScoreResult, type ScoreTimelineCraftOptions } from "./score.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timeline-debug/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timeline-debug/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,mCAAmC,EACnC,iCAAiC,EACjC,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC/B,MAAM,YAAY,CAAC"}
@@ -7,4 +7,5 @@
7
7
  export { validateTimelineSequence, collectStrippedPaths } from "./validate.js";
8
8
  export { buildTimelineDebugReport } from "./report.js";
9
9
  export { renderTimelineReportMarkdown } from "./markdown.js";
10
+ export { scoreTimelineCraft, computeTimelineCraftMetrics, summarizeTimelineCraftReferenceBand, loadTimelineCraftReferenceEntries, TIMELINE_CRAFT_METRIC_KEYS } from "./score.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/timeline-debug/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/timeline-debug/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,mCAAmC,EACnC,iCAAiC,EACjC,0BAA0B,EAQ3B,MAAM,YAAY,CAAC"}
@@ -15,9 +15,13 @@
15
15
  import type { TimelineDocument } from "@nodetool-ai/protocol/api-schemas/timeline.js";
16
16
  import type { TimelineDebugIssue } from "./types.js";
17
17
  /**
18
- * Legibility findings for every text clip in the document. `frameHeight` is the
19
- * sequence's pixel height — a font size is authored in sequence pixels, so the
20
- * floor is a fraction of that and not of anything on the author's screen.
18
+ * Legibility findings for every text clip in the document. `canvas` is the
19
+ * sequence's pixel size — a font size is authored in sequence pixels, so the
20
+ * floor is a fraction of the height and not of anything on the author's
21
+ * screen, and the backdrop check below resolves every clip's box against it.
21
22
  */
22
- export declare function checkLegibility(doc: TimelineDocument, frameHeight: number): TimelineDebugIssue[];
23
+ export declare function checkLegibility(doc: TimelineDocument, canvas: {
24
+ width: number;
25
+ height: number;
26
+ }): TimelineDebugIssue[];
23
27
  //# sourceMappingURL=legibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"legibility.d.ts","sourceRoot":"","sources":["../../src/timeline-debug/legibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAoMrD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,GAClB,kBAAkB,EAAE,CAuDtB"}
1
+ {"version":3,"file":"legibility.d.ts","sourceRoot":"","sources":["../../src/timeline-debug/legibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,+CAA+C,CAAC;AAIvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4NrD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC,kBAAkB,EAAE,CA+DtB"}
@@ -1,3 +1,5 @@
1
+ import { resolveClipLayoutsWithDiagnostics } from "@nodetool-ai/timeline/scene";
2
+ import { containsBox, frameBoxFor } from "./frame-geometry.js";
1
3
  /**
2
4
  * Cap height a viewer can read on a phone. 2.5% of frame height is 27px at
3
5
  * 1080p — the floor broadcast lower-third practice lands on, and the one the
@@ -98,13 +100,31 @@ function textColor(clip) {
98
100
  * on screen, and provably covers it.
99
101
  *
100
102
  * "Provably" is doing the work. Track z is `1000 - index` (I9), so a higher
101
- * index draws underneath; the shape must cover the whole frame, because the
102
- * text's own block box needs a font measurement this check does not have; it
103
- * must be opaque and solid-filled; and its window must contain the text's. A
104
- * shape that only mostly qualifies is not reported — the check would then be
105
- * naming a plate the title may not actually sit on.
103
+ * index draws underneath; the shape must be opaque and solid-filled; its
104
+ * window must contain the text's; and its *resolved* frame-space box — the
105
+ * layout-managed position a `row`/`stack`/`relative` container placed it at,
106
+ * composed through every ancestor transform, the same geometry
107
+ * `showcase.ts`'s collision check reads — must contain the text's box. A
108
+ * literal full-frame rect always qualifies this way (its box contains
109
+ * anything), so this subsumes the old "must be exactly x=0,y=0,w=1,h=1"
110
+ * rule; it additionally recognizes the small pill or plate a flex container
111
+ * places directly behind a title (an `inset: 0` child of the text's own
112
+ * container), which the old rule missed and measured contrast against
113
+ * whatever unrelated full-frame shape happened to sit elsewhere in the
114
+ * scene instead. A shape that only mostly contains the text is not reported
115
+ * — the check would then be naming a plate the title does not actually sit
116
+ * fully on.
106
117
  */
107
- function backdropShapeColor(doc, text) {
118
+ // Wider than `containsBox`'s own 0.5px default: a text box is a *character-
119
+ // count* estimate (`text.length * fontSizePx * 0.6`, this package has no
120
+ // canvas dependency to measure real glyph widths), not a rendered one, and a
121
+ // tight pill sized to the real glyph width can end up a couple of px
122
+ // narrower than the estimate — see prism's "4 COLOURWAYS" plate, sized to
123
+ // 300px against an estimated 302.4px title. A few px of slack absorbs that
124
+ // estimation error without accepting a shape that is actually a different
125
+ // size from the text's.
126
+ const BACKDROP_CONTAINMENT_SLACK_PX = 4;
127
+ function backdropShapeColor(doc, text, canvas, byId, resolved, sizes) {
108
128
  const trackIndex = new Map(doc.tracks
109
129
  .filter((track) => track.type !== "audio" && track.visible)
110
130
  .map((track) => [track.id, track.index]));
@@ -112,6 +132,9 @@ function backdropShapeColor(doc, text) {
112
132
  if (textIndex === undefined)
113
133
  return undefined;
114
134
  const textEndMs = text.startMs + text.durationMs;
135
+ const textBox = frameBoxFor(text, canvas, byId, resolved, undefined, false, sizes);
136
+ if (!textBox)
137
+ return undefined;
115
138
  let bestIndex = Number.POSITIVE_INFINITY;
116
139
  let bestColor;
117
140
  for (const clip of doc.clips) {
@@ -130,12 +153,6 @@ function backdropShapeColor(doc, text) {
130
153
  const style = clip.shapeStyle;
131
154
  if (!style || style.kind !== "rect")
132
155
  continue;
133
- // `shapeBox` defaults: a rect with no geometry covers the middle half of
134
- // the frame, so an absent field is not "full frame".
135
- if ((style.x ?? 0.25) > 0 || (style.y ?? 0.25) > 0)
136
- continue;
137
- if ((style.width ?? 0.5) < 1 || (style.height ?? 0.5) < 1)
138
- continue;
139
156
  const authoredFill = style.fillStyle ?? style.fill;
140
157
  const fill = typeof authoredFill === "string"
141
158
  ? authoredFill
@@ -144,6 +161,9 @@ function backdropShapeColor(doc, text) {
144
161
  : undefined;
145
162
  if (fill === undefined)
146
163
  continue;
164
+ const shapeBox = frameBoxFor(clip, canvas, byId, resolved, undefined, false, sizes);
165
+ if (!shapeBox || !containsBox(shapeBox, textBox, BACKDROP_CONTAINMENT_SLACK_PX))
166
+ continue;
147
167
  bestIndex = index;
148
168
  bestColor = fill;
149
169
  }
@@ -177,12 +197,21 @@ function pictureUnder(doc, text) {
177
197
  });
178
198
  }
179
199
  /**
180
- * Legibility findings for every text clip in the document. `frameHeight` is the
181
- * sequence's pixel height — a font size is authored in sequence pixels, so the
182
- * floor is a fraction of that and not of anything on the author's screen.
200
+ * Legibility findings for every text clip in the document. `canvas` is the
201
+ * sequence's pixel size — a font size is authored in sequence pixels, so the
202
+ * floor is a fraction of the height and not of anything on the author's
203
+ * screen, and the backdrop check below resolves every clip's box against it.
183
204
  */
184
- export function checkLegibility(doc, frameHeight) {
205
+ export function checkLegibility(doc, canvas) {
185
206
  const issues = [];
207
+ const byId = new Map(doc.clips.map((clip) => [clip.id, clip]));
208
+ // No `measureText`: this package has no canvas dependency, so text boxes
209
+ // fall back to the same `text.length * fontSizePx * 0.6` estimate
210
+ // `frame-geometry.ts` and the render layout resolver itself use headless.
211
+ const layoutResolved = resolveClipLayoutsWithDiagnostics(doc.clips, canvas);
212
+ const resolved = layoutResolved.transforms;
213
+ const sizes = layoutResolved.sizes;
214
+ const frameHeight = canvas.height;
186
215
  for (const clip of doc.clips) {
187
216
  const style = clip.textStyle;
188
217
  if (clip.mediaType !== "text" || !style || clip.hidden === true)
@@ -206,7 +235,7 @@ export function checkLegibility(doc, frameHeight) {
206
235
  // the tool that answers it.
207
236
  const backed = style.background !== undefined ||
208
237
  style.stroke !== undefined ||
209
- backdropShapeColor(doc, clip) !== undefined;
238
+ backdropShapeColor(doc, clip, canvas, byId, resolved, sizes) !== undefined;
210
239
  if (!backed && pictureUnder(doc, clip)) {
211
240
  issues.push({
212
241
  severity: "warning",
@@ -220,7 +249,7 @@ export function checkLegibility(doc, frameHeight) {
220
249
  if (!foreground)
221
250
  continue;
222
251
  const plate = style.background?.color;
223
- const behind = plate ?? backdropShapeColor(doc, clip);
252
+ const behind = plate ?? backdropShapeColor(doc, clip, canvas, byId, resolved, sizes);
224
253
  const background = parseOpaqueColor(behind);
225
254
  if (!background)
226
255
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"legibility.js","sourceRoot":"","sources":["../../src/timeline-debug/legibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"legibility.js","sourceRoot":"","sources":["../../src/timeline-debug/legibility.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/timeline-debug/report.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EAG1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAyFvB,UAAU,wBAAwB;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,wBAAwB,GAC9B,mBAAmB,CAwCrB"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/timeline-debug/report.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EAG1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AA6DvB,UAAU,wBAAwB;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,wBAAwB,GAC9B,mBAAmB,CAwCrB"}
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Assembles a `TimelineDebugReport` from a document, an optional scripted edit
3
+ * session, and the document that session left behind.
4
+ *
5
+ * Pure: the host resolves the target (file, id) and writes the bundle; this
6
+ * decides what the run means.
7
+ */
8
+ import { buildDocumentVerdict } from "../debug/verdict.js";
1
9
  import { validateTimelineSequence } from "./validate.js";
2
10
  import { isNumber } from "../predicates.js";
3
11
  const DEFAULTS = { fps: 30, width: 1920, height: 1080 };
@@ -36,31 +44,14 @@ const describe = (issue) => {
36
44
  : `[${issue.code}] ${issue.message}`;
37
45
  };
38
46
  function buildTimelineVerdict(validation, interactions, finalValidation) {
39
- const failedSteps = interactions.filter((step) => !step.ok);
40
- const issues = [
41
- ...validation.errors.map(describe),
42
- ...failedSteps.map((step) => `Interaction \`${step.tool}\` failed${step.error ? `: ${step.error}` : ""}`),
43
- ...(finalValidation?.errors ?? []).map((issue) => `After edits — ${describe(issue)}`)
44
- ];
45
- const warnings = [
46
- ...validation.warnings.map(describe),
47
- ...(finalValidation?.warnings ?? []).map((issue) => `After edits — ${describe(issue)}`)
48
- ];
49
- const ok = issues.length === 0;
50
- const warningCount = warnings.length;
51
- const headline = ok
52
- ? `Timeline is sound — ${interactions.length} interaction(s) ran clean` +
53
- (warningCount > 0 ? `, ${warningCount} warning(s)` : "") +
54
- "."
55
- : `Timeline has ${issues.length} problem(s)` +
56
- (failedSteps.length > 0
57
- ? `, ${failedSteps.length} failed interaction(s)`
58
- : "") +
59
- (warningCount > 0 ? `, ${warningCount} warning(s)` : "") +
60
- ` — ${issues[0]}`;
61
- return warningCount > 0
62
- ? { ok, headline, issues, warnings }
63
- : { ok, headline, issues };
47
+ return buildDocumentVerdict({
48
+ subject: "Timeline",
49
+ soundLabel: "Timeline is sound",
50
+ describe,
51
+ validation,
52
+ finalValidation,
53
+ interactions
54
+ });
64
55
  }
65
56
  export function buildTimelineDebugReport(input) {
66
57
  const validation = validateTimelineSequence(input.document, input.meta);
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/timeline-debug/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/timeline-debug/report.ts"],"names":[],"mappings":"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"}