@farmslot/recipe-runner 0.23.0

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 (212) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/LICENSE +21 -0
  3. package/README.md +274 -0
  4. package/bin/farmslot-visual-review.mjs +152 -0
  5. package/dist/adapters/app-lifecycle.d.ts +41 -0
  6. package/dist/adapters/app-lifecycle.d.ts.map +1 -0
  7. package/dist/adapters/app-lifecycle.js +224 -0
  8. package/dist/adapters/app-lifecycle.js.map +1 -0
  9. package/dist/adapters/core.d.ts +5 -0
  10. package/dist/adapters/core.d.ts.map +1 -0
  11. package/dist/adapters/core.js +433 -0
  12. package/dist/adapters/core.js.map +1 -0
  13. package/dist/adapters/gesture.d.ts +12 -0
  14. package/dist/adapters/gesture.d.ts.map +1 -0
  15. package/dist/adapters/gesture.js +76 -0
  16. package/dist/adapters/gesture.js.map +1 -0
  17. package/dist/adapters/ui.d.ts +33 -0
  18. package/dist/adapters/ui.d.ts.map +1 -0
  19. package/dist/adapters/ui.js +130 -0
  20. package/dist/adapters/ui.js.map +1 -0
  21. package/dist/cli/error-output.d.ts +6 -0
  22. package/dist/cli/error-output.d.ts.map +1 -0
  23. package/dist/cli/error-output.js +19 -0
  24. package/dist/cli/error-output.js.map +1 -0
  25. package/dist/cli/index.d.ts +12 -0
  26. package/dist/cli/index.d.ts.map +1 -0
  27. package/dist/cli/index.js +29 -0
  28. package/dist/cli/index.js.map +1 -0
  29. package/dist/cli/run-command.d.ts +8 -0
  30. package/dist/cli/run-command.d.ts.map +1 -0
  31. package/dist/cli/run-command.js +253 -0
  32. package/dist/cli/run-command.js.map +1 -0
  33. package/dist/cli/support.d.ts +31 -0
  34. package/dist/cli/support.d.ts.map +1 -0
  35. package/dist/cli/support.js +297 -0
  36. package/dist/cli/support.js.map +1 -0
  37. package/dist/cli/validate-command.d.ts +4 -0
  38. package/dist/cli/validate-command.d.ts.map +1 -0
  39. package/dist/cli/validate-command.js +52 -0
  40. package/dist/cli/validate-command.js.map +1 -0
  41. package/dist/core/compose.d.ts +23 -0
  42. package/dist/core/compose.d.ts.map +1 -0
  43. package/dist/core/compose.js +104 -0
  44. package/dist/core/compose.js.map +1 -0
  45. package/dist/core/execution.d.ts +44 -0
  46. package/dist/core/execution.d.ts.map +1 -0
  47. package/dist/core/execution.js +304 -0
  48. package/dist/core/execution.js.map +1 -0
  49. package/dist/core/failure.d.ts +23 -0
  50. package/dist/core/failure.d.ts.map +1 -0
  51. package/dist/core/failure.js +43 -0
  52. package/dist/core/failure.js.map +1 -0
  53. package/dist/core/graph.d.ts +12 -0
  54. package/dist/core/graph.d.ts.map +1 -0
  55. package/dist/core/graph.js +65 -0
  56. package/dist/core/graph.js.map +1 -0
  57. package/dist/core/hud.d.ts +11 -0
  58. package/dist/core/hud.d.ts.map +1 -0
  59. package/dist/core/hud.js +120 -0
  60. package/dist/core/hud.js.map +1 -0
  61. package/dist/core/invocation.d.ts +13 -0
  62. package/dist/core/invocation.d.ts.map +1 -0
  63. package/dist/core/invocation.js +68 -0
  64. package/dist/core/invocation.js.map +1 -0
  65. package/dist/core/json.d.ts +9 -0
  66. package/dist/core/json.d.ts.map +1 -0
  67. package/dist/core/json.js +74 -0
  68. package/dist/core/json.js.map +1 -0
  69. package/dist/core/library-manifest.d.ts +53 -0
  70. package/dist/core/library-manifest.d.ts.map +1 -0
  71. package/dist/core/library-manifest.js +263 -0
  72. package/dist/core/library-manifest.js.map +1 -0
  73. package/dist/core/library.d.ts +80 -0
  74. package/dist/core/library.d.ts.map +1 -0
  75. package/dist/core/library.js +321 -0
  76. package/dist/core/library.js.map +1 -0
  77. package/dist/core/parameters.d.ts +5 -0
  78. package/dist/core/parameters.d.ts.map +1 -0
  79. package/dist/core/parameters.js +57 -0
  80. package/dist/core/parameters.js.map +1 -0
  81. package/dist/core/passive-observations.d.ts +25 -0
  82. package/dist/core/passive-observations.d.ts.map +1 -0
  83. package/dist/core/passive-observations.js +62 -0
  84. package/dist/core/passive-observations.js.map +1 -0
  85. package/dist/core/path.d.ts +7 -0
  86. package/dist/core/path.d.ts.map +1 -0
  87. package/dist/core/path.js +147 -0
  88. package/dist/core/path.js.map +1 -0
  89. package/dist/core/recording-cleanup.d.ts +10 -0
  90. package/dist/core/recording-cleanup.d.ts.map +1 -0
  91. package/dist/core/recording-cleanup.js +32 -0
  92. package/dist/core/recording-cleanup.js.map +1 -0
  93. package/dist/core/resolution-error.d.ts +7 -0
  94. package/dist/core/resolution-error.d.ts.map +1 -0
  95. package/dist/core/resolution-error.js +9 -0
  96. package/dist/core/resolution-error.js.map +1 -0
  97. package/dist/core/runner.d.ts +4 -0
  98. package/dist/core/runner.d.ts.map +1 -0
  99. package/dist/core/runner.js +738 -0
  100. package/dist/core/runner.js.map +1 -0
  101. package/dist/core/scroll-to.d.ts +111 -0
  102. package/dist/core/scroll-to.d.ts.map +1 -0
  103. package/dist/core/scroll-to.js +353 -0
  104. package/dist/core/scroll-to.js.map +1 -0
  105. package/dist/core/suite.d.ts +25 -0
  106. package/dist/core/suite.d.ts.map +1 -0
  107. package/dist/core/suite.js +76 -0
  108. package/dist/core/suite.js.map +1 -0
  109. package/dist/core/trace.d.ts +5 -0
  110. package/dist/core/trace.d.ts.map +1 -0
  111. package/dist/core/trace.js +25 -0
  112. package/dist/core/trace.js.map +1 -0
  113. package/dist/core/trust-error.d.ts +9 -0
  114. package/dist/core/trust-error.d.ts.map +1 -0
  115. package/dist/core/trust-error.js +18 -0
  116. package/dist/core/trust-error.js.map +1 -0
  117. package/dist/core/trust-input.d.ts +20 -0
  118. package/dist/core/trust-input.d.ts.map +1 -0
  119. package/dist/core/trust-input.js +68 -0
  120. package/dist/core/trust-input.js.map +1 -0
  121. package/dist/core/trust.d.ts +28 -0
  122. package/dist/core/trust.d.ts.map +1 -0
  123. package/dist/core/trust.js +284 -0
  124. package/dist/core/trust.js.map +1 -0
  125. package/dist/core/types.d.ts +319 -0
  126. package/dist/core/types.d.ts.map +1 -0
  127. package/dist/core/types.js +2 -0
  128. package/dist/core/types.js.map +1 -0
  129. package/dist/core/validation.d.ts +4 -0
  130. package/dist/core/validation.d.ts.map +1 -0
  131. package/dist/core/validation.js +18 -0
  132. package/dist/core/validation.js.map +1 -0
  133. package/dist/index.d.ts +32 -0
  134. package/dist/index.d.ts.map +1 -0
  135. package/dist/index.js +25 -0
  136. package/dist/index.js.map +1 -0
  137. package/dist/node/writers.d.ts +27 -0
  138. package/dist/node/writers.d.ts.map +1 -0
  139. package/dist/node/writers.js +99 -0
  140. package/dist/node/writers.js.map +1 -0
  141. package/dist/recording/android-mirror.d.ts +10 -0
  142. package/dist/recording/android-mirror.d.ts.map +1 -0
  143. package/dist/recording/android-mirror.js +180 -0
  144. package/dist/recording/android-mirror.js.map +1 -0
  145. package/dist/recording/capture-helper-timing.d.ts +4 -0
  146. package/dist/recording/capture-helper-timing.d.ts.map +1 -0
  147. package/dist/recording/capture-helper-timing.js +47 -0
  148. package/dist/recording/capture-helper-timing.js.map +1 -0
  149. package/dist/recording/capture-helper.d.ts +10 -0
  150. package/dist/recording/capture-helper.d.ts.map +1 -0
  151. package/dist/recording/capture-helper.js +335 -0
  152. package/dist/recording/capture-helper.js.map +1 -0
  153. package/dist/recording/cdp-video-recorder.d.ts +9 -0
  154. package/dist/recording/cdp-video-recorder.d.ts.map +1 -0
  155. package/dist/recording/cdp-video-recorder.js +319 -0
  156. package/dist/recording/cdp-video-recorder.js.map +1 -0
  157. package/dist/recording/frame-sampler.d.ts +19 -0
  158. package/dist/recording/frame-sampler.d.ts.map +1 -0
  159. package/dist/recording/frame-sampler.js +29 -0
  160. package/dist/recording/frame-sampler.js.map +1 -0
  161. package/dist/recording/timeline.d.ts +15 -0
  162. package/dist/recording/timeline.d.ts.map +1 -0
  163. package/dist/recording/timeline.js +88 -0
  164. package/dist/recording/timeline.js.map +1 -0
  165. package/dist/runtime/browser-extension.d.ts +17 -0
  166. package/dist/runtime/browser-extension.d.ts.map +1 -0
  167. package/dist/runtime/browser-extension.js +42 -0
  168. package/dist/runtime/browser-extension.js.map +1 -0
  169. package/dist/runtime/cdp.d.ts +138 -0
  170. package/dist/runtime/cdp.d.ts.map +1 -0
  171. package/dist/runtime/cdp.js +1429 -0
  172. package/dist/runtime/cdp.js.map +1 -0
  173. package/dist/runtime/decision-types.d.ts +23 -0
  174. package/dist/runtime/decision-types.d.ts.map +1 -0
  175. package/dist/runtime/decision-types.js +2 -0
  176. package/dist/runtime/decision-types.js.map +1 -0
  177. package/dist/runtime/deps-readiness.d.ts +21 -0
  178. package/dist/runtime/deps-readiness.d.ts.map +1 -0
  179. package/dist/runtime/deps-readiness.js +141 -0
  180. package/dist/runtime/deps-readiness.js.map +1 -0
  181. package/dist/runtime/log-analysis.d.ts +48 -0
  182. package/dist/runtime/log-analysis.d.ts.map +1 -0
  183. package/dist/runtime/log-analysis.js +128 -0
  184. package/dist/runtime/log-analysis.js.map +1 -0
  185. package/dist/runtime/metro-probe.d.ts +5 -0
  186. package/dist/runtime/metro-probe.d.ts.map +1 -0
  187. package/dist/runtime/metro-probe.js +24 -0
  188. package/dist/runtime/metro-probe.js.map +1 -0
  189. package/dist/runtime/operation.d.ts +32 -0
  190. package/dist/runtime/operation.d.ts.map +1 -0
  191. package/dist/runtime/operation.js +184 -0
  192. package/dist/runtime/operation.js.map +1 -0
  193. package/dist/runtime/orchestrate-up.d.ts +22 -0
  194. package/dist/runtime/orchestrate-up.d.ts.map +1 -0
  195. package/dist/runtime/orchestrate-up.js +35 -0
  196. package/dist/runtime/orchestrate-up.js.map +1 -0
  197. package/dist/runtime/react-native-bridge.d.ts +17 -0
  198. package/dist/runtime/react-native-bridge.d.ts.map +1 -0
  199. package/dist/runtime/react-native-bridge.js +57 -0
  200. package/dist/runtime/react-native-bridge.js.map +1 -0
  201. package/dist/version.d.ts +2 -0
  202. package/dist/version.d.ts.map +1 -0
  203. package/dist/version.js +8 -0
  204. package/dist/version.js.map +1 -0
  205. package/package.json +163 -0
  206. package/test/fixtures/scroll-to-visible/README.md +39 -0
  207. package/visual-review/feedback-draft.mjs +82 -0
  208. package/visual-review/index.d.mts +41 -0
  209. package/visual-review/index.mjs +4 -0
  210. package/visual-review/recipe-board.mjs +142 -0
  211. package/visual-review/review-board.mjs +981 -0
  212. package/visual-review/server.mjs +69 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { RecipeExecutionError } from './failure.js';
2
+ /** Stable ui.scroll_to failure codes. Every one is classified as a `harness` failure. */
3
+ export declare const UI_SCROLL_TO_ERROR_CODES: readonly ["SCROLL_UNSUPPORTED", "SCROLL_SURFACE_MISSING", "SCROLL_TARGET_MISSING", "SCROLL_TARGET_NOT_MEASURABLE", "SCROLL_SESSION_CONFLICT", "SCROLL_SETTLEMENT_TIMEOUT", "SCROLL_TARGET_NOT_VISIBLE"];
4
+ export type UiScrollToErrorCode = (typeof UI_SCROLL_TO_ERROR_CODES)[number];
5
+ export interface UiRect {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ }
11
+ export interface UiScrollOffset {
12
+ x: number;
13
+ y: number;
14
+ }
15
+ /** One provider measurement, in the same coordinate space as the viewport. */
16
+ export interface UiScrollGeometry {
17
+ /** Surface bounds; null when the surface is not rendered. */
18
+ surface: UiRect | null;
19
+ /** Part of the surface content area a user can see; null when the surface is missing. */
20
+ viewport: UiRect | null;
21
+ /** Current scroll offset of the surface. */
22
+ offset: UiScrollOffset;
23
+ targetPresent: boolean;
24
+ /** Null when the target is absent or has no measurable box (for example flattened Text). */
25
+ targetBounds: UiRect | null;
26
+ visibilityAnchorPresent?: boolean;
27
+ visibilityAnchorBounds?: UiRect | null;
28
+ /** HUD and overlay regions drawn over the page. */
29
+ occlusions?: UiRect[];
30
+ }
31
+ export interface UiScrollToRequest {
32
+ surfaceTestId: string;
33
+ targetTestId: string;
34
+ visibilityAnchorTestId?: string;
35
+ align: 'start' | 'center' | 'end' | 'nearest';
36
+ viewportPolicy: 'hud_safe' | 'full';
37
+ verifyVisible: boolean;
38
+ settle: {
39
+ timeoutMs: number;
40
+ intervalMs: number;
41
+ stableSamples: number;
42
+ };
43
+ }
44
+ /** Provider handle that is valid only inside the transport's withScrollSession callback. */
45
+ export interface UiScrollSession {
46
+ backend: string;
47
+ sessionId: string;
48
+ measure(): Promise<UiScrollGeometry>;
49
+ /** Set the surface's absolute offset. Providers clamp to the scrollable range. */
50
+ scrollTo(offset: UiScrollOffset): Promise<void>;
51
+ }
52
+ export interface UiScrollSnapshot {
53
+ offset: UiScrollOffset;
54
+ targetPresent: boolean;
55
+ targetBounds: UiRect | null;
56
+ visibilityAnchorPresent?: boolean;
57
+ visibilityAnchorBounds?: UiRect | null;
58
+ }
59
+ export interface UiScrollSettlement {
60
+ status: 'settled' | 'skipped' | 'timeout';
61
+ samples: number;
62
+ elapsedMs: number;
63
+ }
64
+ /** ui.scroll_to node output and failure details recorded in trace.json. */
65
+ export interface UiScrollToObservation {
66
+ backend?: string;
67
+ sessionId?: string;
68
+ surfaceTestId: string;
69
+ targetTestId: string;
70
+ visibilityAnchorTestId?: string;
71
+ align: UiScrollToRequest['align'];
72
+ viewportPolicy: UiScrollToRequest['viewportPolicy'];
73
+ measuredBy?: 'target' | 'visibility_anchor';
74
+ viewport?: UiRect | null;
75
+ safeViewport?: UiRect | null;
76
+ occlusions?: UiRect[];
77
+ before?: UiScrollSnapshot;
78
+ after?: UiScrollSnapshot;
79
+ /** Offset requested from the provider; the current offset when the node was a no-op. */
80
+ offset?: UiScrollOffset;
81
+ scrolled: boolean;
82
+ alreadyVisible: boolean;
83
+ settlement?: UiScrollSettlement;
84
+ finalVisible?: boolean;
85
+ }
86
+ export declare class UiScrollToError extends RecipeExecutionError {
87
+ readonly code: UiScrollToErrorCode;
88
+ readonly reason: string;
89
+ constructor(code: UiScrollToErrorCode, reason: string, details?: unknown, options?: ErrorOptions);
90
+ }
91
+ export declare function parseUiScrollToRequest(node: Record<string, unknown>): UiScrollToRequest;
92
+ export declare function uiScrollToRequestSummary(request: UiScrollToRequest): UiScrollToObservation;
93
+ /**
94
+ * Canonical scroll-to-visible algorithm shared by every provider: measure, no-op when the proof
95
+ * element already rests in the safe viewport, otherwise move once, wait for geometry to settle,
96
+ * and verify the final bounds. It never retries a failed contract.
97
+ */
98
+ export declare function runUiScrollTo(request: UiScrollToRequest, session: UiScrollSession): Promise<UiScrollToObservation>;
99
+ /**
100
+ * Remove bar-shaped occlusion from the viewport. A bar spans at least half of one viewport axis,
101
+ * and the fuller axis decides when it spans both: wide bars (the recipe HUD) trim the top or
102
+ * bottom edge, tall ones (side panels) the left or right. Smaller cards are checked against the
103
+ * proof element; see cardOcclusions.
104
+ */
105
+ export declare function safeViewportFor(viewport: UiRect, occlusions: readonly UiRect[] | undefined, policy: UiScrollToRequest['viewportPolicy']): UiRect;
106
+ /**
107
+ * Fully inside (or covering the whole axis when larger than) the safe viewport, and not under a
108
+ * card-shaped occlusion.
109
+ */
110
+ export declare function isVisibleWithin(bounds: UiRect, area: UiRect, cards?: readonly UiRect[]): boolean;
111
+ //# sourceMappingURL=scroll-to.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-to.d.ts","sourceRoot":"","sources":["../../src/core/scroll-to.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,353 @@
1
+ import { RecipeExecutionError } from './failure.js';
2
+ import { isRecord } from './json.js';
3
+ /** Stable ui.scroll_to failure codes. Every one is classified as a `harness` failure. */
4
+ export const UI_SCROLL_TO_ERROR_CODES = [
5
+ 'SCROLL_UNSUPPORTED',
6
+ 'SCROLL_SURFACE_MISSING',
7
+ 'SCROLL_TARGET_MISSING',
8
+ 'SCROLL_TARGET_NOT_MEASURABLE',
9
+ 'SCROLL_SESSION_CONFLICT',
10
+ 'SCROLL_SETTLEMENT_TIMEOUT',
11
+ 'SCROLL_TARGET_NOT_VISIBLE',
12
+ ];
13
+ export class UiScrollToError extends RecipeExecutionError {
14
+ constructor(code, reason, details, options) {
15
+ super('harness', `${code}: ${reason}`, { ...options, code, details });
16
+ this.name = 'UiScrollToError';
17
+ this.code = code;
18
+ this.reason = reason;
19
+ }
20
+ }
21
+ const ALIGNMENTS = new Set(['start', 'center', 'end', 'nearest']);
22
+ const VIEWPORT_POLICIES = new Set(['hud_safe', 'full']);
23
+ const EDGE_TOLERANCE_PX = 1;
24
+ export function parseUiScrollToRequest(node) {
25
+ const surfaceTestId = requiredString(node.surface_test_id, 'surface_test_id');
26
+ const targetTestId = requiredString(node.target_test_id, 'target_test_id');
27
+ const anchor = node.visibility_anchor_test_id;
28
+ const align = node.align ?? 'nearest';
29
+ const viewportPolicy = node.viewport_policy ?? 'hud_safe';
30
+ if (typeof align !== 'string' || !ALIGNMENTS.has(align)) {
31
+ throw invalidParam('align must be start, center, end, or nearest');
32
+ }
33
+ if (typeof viewportPolicy !== 'string' || !VIEWPORT_POLICIES.has(viewportPolicy)) {
34
+ throw invalidParam('viewport_policy must be hud_safe or full');
35
+ }
36
+ if (node.verify_visible !== undefined && typeof node.verify_visible !== 'boolean') {
37
+ throw invalidParam('verify_visible must be a boolean');
38
+ }
39
+ const settle = node.settle === undefined ? {} : node.settle;
40
+ if (!isRecord(settle))
41
+ throw invalidParam('settle must be an object');
42
+ return {
43
+ surfaceTestId,
44
+ targetTestId,
45
+ ...(anchor === undefined
46
+ ? {}
47
+ : { visibilityAnchorTestId: requiredString(anchor, 'visibility_anchor_test_id') }),
48
+ align: align,
49
+ viewportPolicy: viewportPolicy,
50
+ verifyVisible: node.verify_visible !== false,
51
+ settle: {
52
+ timeoutMs: nonNegativeNumber(settle.timeout_ms, 'settle.timeout_ms', 2_000),
53
+ intervalMs: Math.max(1, nonNegativeNumber(settle.interval_ms, 'settle.interval_ms', 50)),
54
+ stableSamples: Math.max(1, Math.floor(nonNegativeNumber(settle.stable_samples, 'settle.stable_samples', 2))),
55
+ },
56
+ };
57
+ }
58
+ export function uiScrollToRequestSummary(request) {
59
+ return {
60
+ surfaceTestId: request.surfaceTestId,
61
+ targetTestId: request.targetTestId,
62
+ ...(request.visibilityAnchorTestId
63
+ ? { visibilityAnchorTestId: request.visibilityAnchorTestId }
64
+ : {}),
65
+ align: request.align,
66
+ viewportPolicy: request.viewportPolicy,
67
+ scrolled: false,
68
+ alreadyVisible: false,
69
+ };
70
+ }
71
+ /**
72
+ * Canonical scroll-to-visible algorithm shared by every provider: measure, no-op when the proof
73
+ * element already rests in the safe viewport, otherwise move once, wait for geometry to settle,
74
+ * and verify the final bounds. It never retries a failed contract.
75
+ */
76
+ export async function runUiScrollTo(request, session) {
77
+ const observation = {
78
+ backend: session.backend,
79
+ sessionId: session.sessionId,
80
+ ...uiScrollToRequestSummary(request),
81
+ };
82
+ const fail = (code, reason) => {
83
+ throw new UiScrollToError(code, reason, observation);
84
+ };
85
+ const initial = await session.measure();
86
+ observation.before = snapshot(initial);
87
+ observation.viewport = initial.viewport;
88
+ if (initial.occlusions?.length)
89
+ observation.occlusions = initial.occlusions;
90
+ const initialFrame = frame(request, initial, fail);
91
+ observation.measuredBy = initialFrame.measuredBy;
92
+ observation.safeViewport = initialFrame.safeViewport;
93
+ if (isVisibleWithin(initialFrame.proofBounds, initialFrame.safeViewport, cardOcclusions(initial, request.viewportPolicy))) {
94
+ return Object.assign(observation, {
95
+ after: observation.before,
96
+ offset: initial.offset,
97
+ alreadyVisible: true,
98
+ settlement: { status: 'skipped', samples: 0, elapsedMs: 0 },
99
+ finalVisible: true,
100
+ });
101
+ }
102
+ // Unclamped: providers clamp to their scrollable range (which may be negative in RTL).
103
+ const deltaX = nearestDelta(initialFrame.proofBounds, initialFrame.safeViewport, 'x');
104
+ const offset = {
105
+ x: initial.offset.x + deltaX,
106
+ y: initial.offset.y +
107
+ clearCards(
108
+ // Cards are checked where the horizontal move leaves the element.
109
+ { ...initialFrame.proofBounds, x: initialFrame.proofBounds.x - deltaX }, initialFrame.safeViewport, alignDelta(initialFrame.proofBounds, initialFrame.safeViewport, request.align), cardOcclusions(initial, request.viewportPolicy),
110
+ // A vertical scroll offset is never negative, so moves below -offset.y are unreachable.
111
+ -initial.offset.y),
112
+ };
113
+ observation.offset = offset;
114
+ try {
115
+ await session.scrollTo(offset);
116
+ }
117
+ catch (error) {
118
+ // A coded provider failure during the move keeps the geometry measured before it.
119
+ if (!(error instanceof UiScrollToError))
120
+ throw error;
121
+ throw new UiScrollToError(error.code, error.reason, { ...observation, ...(isRecord(error.details) ? error.details : {}) }, { cause: error });
122
+ }
123
+ observation.scrolled = true;
124
+ const settled = await settle(session, request.settle);
125
+ observation.settlement = settled.settlement;
126
+ observation.after = snapshot(settled.geometry);
127
+ observation.viewport = settled.geometry.viewport;
128
+ if (settled.settlement.status === 'timeout') {
129
+ fail('SCROLL_SETTLEMENT_TIMEOUT', `geometry for ${request.targetTestId} kept changing for ${settled.settlement.elapsedMs}ms.`);
130
+ }
131
+ const finalFrame = frame(request, settled.geometry, fail);
132
+ observation.safeViewport = finalFrame.safeViewport;
133
+ observation.finalVisible = isVisibleWithin(finalFrame.proofBounds, finalFrame.safeViewport, cardOcclusions(settled.geometry, request.viewportPolicy));
134
+ if (request.verifyVisible && !observation.finalVisible) {
135
+ fail('SCROLL_TARGET_NOT_VISIBLE', `${finalFrame.measuredBy === 'target' ? request.targetTestId : request.visibilityAnchorTestId} ended outside the ${request.viewportPolicy} viewport.`);
136
+ }
137
+ return observation;
138
+ }
139
+ /**
140
+ * Remove bar-shaped occlusion from the viewport. A bar spans at least half of one viewport axis,
141
+ * and the fuller axis decides when it spans both: wide bars (the recipe HUD) trim the top or
142
+ * bottom edge, tall ones (side panels) the left or right. Smaller cards are checked against the
143
+ * proof element; see cardOcclusions.
144
+ */
145
+ export function safeViewportFor(viewport, occlusions, policy) {
146
+ if (policy === 'full' || !occlusions?.length)
147
+ return viewport;
148
+ let left = viewport.x;
149
+ let right = viewport.x + viewport.width;
150
+ let top = viewport.y;
151
+ let bottom = viewport.y + viewport.height;
152
+ for (const occlusion of occlusions) {
153
+ const current = { x: left, y: top, width: right - left, height: bottom - top };
154
+ if (!intersects(occlusion, current))
155
+ continue;
156
+ const bar = barAxis(occlusion, viewport);
157
+ if (bar === 'horizontal') {
158
+ if (occlusion.y + occlusion.height / 2 >= viewport.y + viewport.height / 2) {
159
+ bottom = Math.min(bottom, occlusion.y);
160
+ }
161
+ else
162
+ top = Math.max(top, occlusion.y + occlusion.height);
163
+ }
164
+ else if (bar === 'vertical') {
165
+ if (occlusion.x + occlusion.width / 2 >= viewport.x + viewport.width / 2) {
166
+ right = Math.min(right, occlusion.x);
167
+ }
168
+ else
169
+ left = Math.max(left, occlusion.x + occlusion.width);
170
+ }
171
+ }
172
+ return {
173
+ x: left,
174
+ y: top,
175
+ width: Math.max(0, right - left),
176
+ height: Math.max(0, bottom - top),
177
+ };
178
+ }
179
+ /**
180
+ * Fully inside (or covering the whole axis when larger than) the safe viewport, and not under a
181
+ * card-shaped occlusion.
182
+ */
183
+ export function isVisibleWithin(bounds, area, cards = []) {
184
+ if (area.width <= 0 || area.height <= 0)
185
+ return false;
186
+ return (axisVisible(bounds.y, bounds.height, area.y, area.height) &&
187
+ axisVisible(bounds.x, bounds.width, area.x, area.width) &&
188
+ !cards.some((card) => intersects(card, bounds)));
189
+ }
190
+ /** A bar spans at least half of one viewport axis; when it spans both, the fuller axis wins. */
191
+ function barAxis(occlusion, viewport) {
192
+ const widthShare = occlusion.width / viewport.width;
193
+ const heightShare = occlusion.height / viewport.height;
194
+ if (widthShare < 0.5 && heightShare < 0.5)
195
+ return undefined;
196
+ return widthShare >= heightShare ? 'horizontal' : 'vertical';
197
+ }
198
+ function intersects(a, b) {
199
+ return a.x < b.x + b.width && a.x + a.width > b.x && a.y < b.y + b.height && a.y + a.height > b.y;
200
+ }
201
+ function cardOcclusions(geometry, policy) {
202
+ if (policy === 'full' || !geometry.viewport)
203
+ return [];
204
+ const viewport = geometry.viewport;
205
+ return (geometry.occlusions ?? []).filter((occlusion) => !barAxis(occlusion, viewport));
206
+ }
207
+ function axisVisible(start, size, areaStart, areaSize) {
208
+ const end = start + size;
209
+ const areaEnd = areaStart + areaSize;
210
+ if (size > areaSize) {
211
+ return start <= areaStart + EDGE_TOLERANCE_PX && end >= areaEnd - EDGE_TOLERANCE_PX;
212
+ }
213
+ return start >= areaStart - EDGE_TOLERANCE_PX && end <= areaEnd + EDGE_TOLERANCE_PX;
214
+ }
215
+ function frame(request, geometry, fail) {
216
+ if (!geometry.surface || !geometry.viewport) {
217
+ return fail('SCROLL_SURFACE_MISSING', `surface ${request.surfaceTestId} is not rendered.`);
218
+ }
219
+ if (geometry.viewport.width <= 0 || geometry.viewport.height <= 0) {
220
+ return fail('SCROLL_SURFACE_MISSING', `surface ${request.surfaceTestId} is rendered but lies entirely outside the window.`);
221
+ }
222
+ if (!geometry.targetPresent) {
223
+ return fail('SCROLL_TARGET_MISSING', `target ${request.targetTestId} is not rendered.`);
224
+ }
225
+ let proofBounds = geometry.targetBounds;
226
+ let measuredBy = 'target';
227
+ if (!proofBounds) {
228
+ if (!request.visibilityAnchorTestId) {
229
+ return fail('SCROLL_TARGET_NOT_MEASURABLE', `target ${request.targetTestId} has no measurable box; declare visibility_anchor_test_id.`);
230
+ }
231
+ if (!geometry.visibilityAnchorPresent || !geometry.visibilityAnchorBounds) {
232
+ return fail('SCROLL_TARGET_NOT_MEASURABLE', `target ${request.targetTestId} has no measurable box and anchor ${request.visibilityAnchorTestId} is ${geometry.visibilityAnchorPresent ? 'not measurable' : 'not rendered'}.`);
233
+ }
234
+ proofBounds = geometry.visibilityAnchorBounds;
235
+ measuredBy = 'visibility_anchor';
236
+ }
237
+ return {
238
+ proofBounds,
239
+ measuredBy,
240
+ safeViewport: safeViewportFor(geometry.viewport, geometry.occlusions, request.viewportPolicy),
241
+ };
242
+ }
243
+ function alignDelta(bounds, area, align) {
244
+ const start = bounds.y - area.y;
245
+ const end = bounds.y + bounds.height - (area.y + area.height);
246
+ if (bounds.height > area.height || align === 'start')
247
+ return start;
248
+ if (align === 'end')
249
+ return end;
250
+ if (align === 'center')
251
+ return bounds.y + bounds.height / 2 - (area.y + area.height / 2);
252
+ return nearestDelta(bounds, area, 'y');
253
+ }
254
+ /**
255
+ * Pick the vertical move closest to the aligned one that leaves the element inside the safe
256
+ * viewport and clear of every card. Candidates rest the element flush against a card or a
257
+ * viewport edge; with no clear position the aligned move stands and verification reports it.
258
+ */
259
+ function clearCards(bounds, area, deltaY, cards, minDelta) {
260
+ if (!cards.length)
261
+ return deltaY;
262
+ const bottom = bounds.y + bounds.height;
263
+ const candidates = [
264
+ deltaY,
265
+ bounds.y - area.y,
266
+ bottom - (area.y + area.height),
267
+ ...cards.flatMap((card) => [bottom - card.y, bounds.y - (card.y + card.height)]),
268
+ ];
269
+ const clear = candidates.filter((delta) => {
270
+ if (delta < minDelta)
271
+ return false;
272
+ const moved = { ...bounds, y: bounds.y - delta };
273
+ return (axisVisible(moved.y, moved.height, area.y, area.height) &&
274
+ !cards.some((card) => intersects(card, moved)));
275
+ });
276
+ if (!clear.length)
277
+ return deltaY;
278
+ return clear.reduce((best, delta) => Math.abs(delta - deltaY) < Math.abs(best - deltaY) ? delta : best);
279
+ }
280
+ function nearestDelta(bounds, area, axis) {
281
+ const size = axis === 'x' ? 'width' : 'height';
282
+ const start = bounds[axis] - area[axis];
283
+ const end = bounds[axis] + bounds[size] - (area[axis] + area[size]);
284
+ if (start < 0 || bounds[size] > area[size])
285
+ return start;
286
+ if (end > 0)
287
+ return end;
288
+ return 0;
289
+ }
290
+ async function settle(session, options) {
291
+ const startedAt = Date.now();
292
+ const budgetMs = Math.max(options.timeoutMs, (options.stableSamples - 1) * options.intervalMs);
293
+ let geometry = await session.measure();
294
+ let samples = 1;
295
+ let unchanged = 1;
296
+ while (unchanged < options.stableSamples) {
297
+ if (samples >= options.stableSamples && Date.now() - startedAt >= budgetMs) {
298
+ return {
299
+ geometry,
300
+ settlement: { status: 'timeout', samples, elapsedMs: Date.now() - startedAt },
301
+ };
302
+ }
303
+ await new Promise((resolve) => setTimeout(resolve, options.intervalMs));
304
+ const next = await session.measure();
305
+ samples += 1;
306
+ unchanged = geometryKey(next) === geometryKey(geometry) ? unchanged + 1 : 1;
307
+ geometry = next;
308
+ }
309
+ return {
310
+ geometry,
311
+ settlement: { status: 'settled', samples, elapsedMs: Date.now() - startedAt },
312
+ };
313
+ }
314
+ function geometryKey(geometry) {
315
+ const round = (rect) => rect ? [rect.x, rect.y, rect.width, rect.height].map((value) => Math.round(value)) : null;
316
+ return JSON.stringify([
317
+ Math.round(geometry.offset.x),
318
+ Math.round(geometry.offset.y),
319
+ round(geometry.viewport),
320
+ round(geometry.targetBounds),
321
+ round(geometry.visibilityAnchorBounds),
322
+ geometry.occlusions?.map(round),
323
+ ]);
324
+ }
325
+ function snapshot(geometry) {
326
+ return {
327
+ offset: geometry.offset,
328
+ targetPresent: geometry.targetPresent,
329
+ targetBounds: geometry.targetBounds,
330
+ ...(geometry.visibilityAnchorPresent === undefined
331
+ ? {}
332
+ : {
333
+ visibilityAnchorPresent: geometry.visibilityAnchorPresent,
334
+ visibilityAnchorBounds: geometry.visibilityAnchorBounds ?? null,
335
+ }),
336
+ };
337
+ }
338
+ function requiredString(value, field) {
339
+ if (typeof value === 'string' && value.trim())
340
+ return value;
341
+ throw invalidParam(`${field} must be a non-empty string`);
342
+ }
343
+ function nonNegativeNumber(value, field, fallback) {
344
+ if (value === undefined)
345
+ return fallback;
346
+ if (typeof value === 'number' && Number.isFinite(value) && value >= 0)
347
+ return value;
348
+ throw invalidParam(`${field} must be a non-negative number`);
349
+ }
350
+ function invalidParam(message) {
351
+ return new RecipeExecutionError('harness', `ui.scroll_to ${message}.`);
352
+ }
353
+ //# sourceMappingURL=scroll-to.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-to.js","sourceRoot":"","sources":["../../src/core/scroll-to.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type RecipeSuiteNonExecutionResolution, type RecipeSuiteResultDocument, type RecipeSuiteScopeDocument } from '@farmslot/protocol';
2
+ import type { RecipeRunResult } from './types.js';
3
+ export interface RecipeSuiteScopeSnapshot {
4
+ readonly scope: RecipeSuiteScopeDocument;
5
+ readonly digest: string;
6
+ }
7
+ export interface RecipeSuiteVerdictInput {
8
+ id: string;
9
+ kind: 'verdict';
10
+ result: RecipeRunResult;
11
+ }
12
+ export type RecipeSuiteResolutionInput = RecipeSuiteVerdictInput | RecipeSuiteNonExecutionResolution;
13
+ export interface FinalizeRecipeSuiteRequest {
14
+ scope: RecipeSuiteScopeSnapshot;
15
+ resolutions: readonly RecipeSuiteResolutionInput[];
16
+ outputDir: string;
17
+ }
18
+ export interface RecipeSuiteFinalizeResult {
19
+ scopePath: string;
20
+ resultPath: string;
21
+ result: RecipeSuiteResultDocument;
22
+ }
23
+ export declare function freezeRecipeSuiteScope(scope: unknown): RecipeSuiteScopeSnapshot;
24
+ export declare function finalizeRecipeSuite(request: FinalizeRecipeSuiteRequest): Promise<RecipeSuiteFinalizeResult>;
25
+ //# sourceMappingURL=suite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/core/suite.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAI9B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,MAAM,0BAA0B,GAClC,uBAAuB,GACvB,iCAAiC,CAAC;AAEtC,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,wBAAwB,CAAC;IAChC,WAAW,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAU/E;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,yBAAyB,CAAC,CAgEpC"}