my-frontend-observer 0.2.0 → 0.3.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 (43) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +24 -10
  3. package/dist/application/observationPersistence.js +1 -0
  4. package/dist/application/observationPersistence.js.map +1 -1
  5. package/dist/browser/chromiumAdapter.js +58 -4
  6. package/dist/browser/chromiumAdapter.js.map +1 -1
  7. package/dist/browser/evidenceCapture.d.ts +29 -2
  8. package/dist/browser/evidenceCapture.js +43 -19
  9. package/dist/browser/evidenceCapture.js.map +1 -1
  10. package/dist/browser/scrollCapture.d.ts +32 -0
  11. package/dist/browser/scrollCapture.js +163 -0
  12. package/dist/browser/scrollCapture.js.map +1 -0
  13. package/dist/browser/types.d.ts +3 -1
  14. package/dist/cli.js +79 -1
  15. package/dist/cli.js.map +1 -1
  16. package/dist/domain/identity.d.ts +8 -3
  17. package/dist/domain/identity.js +9 -3
  18. package/dist/domain/identity.js.map +1 -1
  19. package/dist/domain/schema.d.ts +116 -2
  20. package/dist/domain/schema.js +186 -2
  21. package/dist/domain/schema.js.map +1 -1
  22. package/dist/domain/scrollEvidence.d.ts +51 -0
  23. package/dist/domain/scrollEvidence.js +134 -0
  24. package/dist/domain/scrollEvidence.js.map +1 -0
  25. package/dist/index.d.ts +3 -3
  26. package/dist/index.js +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/request/request.d.ts +29 -0
  29. package/dist/request/request.js +108 -0
  30. package/dist/request/request.js.map +1 -1
  31. package/docs/ARCHITECTURE.md +35 -2
  32. package/docs/CI_CD.md +33 -6
  33. package/docs/COMMANDS.md +110 -6
  34. package/docs/CONTRACTS.md +77 -4
  35. package/docs/CURRENT_STATE.md +55 -10
  36. package/docs/DEVELOPMENT.md +25 -8
  37. package/docs/PROJECT_OVERVIEW.md +10 -7
  38. package/docs/QUICKSTART.md +2 -1
  39. package/docs/RELEASE.md +10 -5
  40. package/docs/ROADMAP.md +5 -0
  41. package/docs/SECURITY.md +1 -1
  42. package/docs/WORKFLOWS.md +36 -18
  43. package/package.json +1 -1
@@ -3,8 +3,9 @@ import { fileURLToPath } from 'node:url';
3
3
  import path from 'node:path';
4
4
  import { isValidEvidenceField } from './evidence.js';
5
5
  import { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY } from './diagnostics.js';
6
+ import { SCROLL_DELTA_MAX_ABS } from '../request/request.js';
6
7
  export const ARTIFACT_KIND = 'my-frontend-observer/observation';
7
- export const SCHEMA_VERSION = '1.1.0';
8
+ export const SCHEMA_VERSION = '1.2.0';
8
9
  export const PRODUCER_NAME = 'my-frontend-observer';
9
10
  export const TARGET_LANDMARK_ROLES = ['banner', 'navigation', 'main', 'complementary', 'contentinfo', 'form', 'region', 'search'];
10
11
  function readPackageVersion() {
@@ -126,6 +127,179 @@ function isValidTargetContainment(value) {
126
127
  return false;
127
128
  return true;
128
129
  }
130
+ function isValidTargetGeometryValue(value) {
131
+ if (!isPlainObject(value))
132
+ return false;
133
+ return ['x', 'y', 'width', 'height', 'right', 'bottom'].every((key) => typeof value[key] === 'number');
134
+ }
135
+ /** Structural validator for the requestConfig-side scrollScenario shape (defense in depth alongside src/request/request.ts#normalizeRequest's own validation). */
136
+ function isValidRequestScrollAction(value) {
137
+ if (!isPlainObject(value))
138
+ return false;
139
+ const kind = value.kind;
140
+ const deltaOk = (d) => typeof d === 'number' && Number.isInteger(d) && Math.abs(d) <= SCROLL_DELTA_MAX_ABS;
141
+ if (kind === 'window-scroll-by') {
142
+ if (!deltaOk(value.deltaX) || !deltaOk(value.deltaY))
143
+ return false;
144
+ if (value.deltaX === 0 && value.deltaY === 0)
145
+ return false;
146
+ return Object.keys(value).length === 3;
147
+ }
148
+ if (kind === 'target-scroll-by') {
149
+ if (typeof value.target !== 'string' || value.target.length === 0)
150
+ return false;
151
+ if (!deltaOk(value.deltaX) || !deltaOk(value.deltaY))
152
+ return false;
153
+ if (value.deltaX === 0 && value.deltaY === 0)
154
+ return false;
155
+ return Object.keys(value).length === 4;
156
+ }
157
+ return false;
158
+ }
159
+ function isValidRequestScrollScenario(value) {
160
+ if (!isPlainObject(value))
161
+ return false;
162
+ if (Object.keys(value).length !== 1)
163
+ return false;
164
+ return isValidRequestScrollAction(value.action);
165
+ }
166
+ function isValidScrollableMetrics(value) {
167
+ if (!isPlainObject(value))
168
+ return false;
169
+ return ['scrollTop', 'scrollLeft', 'scrollWidth', 'scrollHeight', 'clientWidth', 'clientHeight'].every((key) => typeof value[key] === 'number');
170
+ }
171
+ function isValidOverflowEvidence(value) {
172
+ if (!isPlainObject(value))
173
+ return false;
174
+ return (typeof value.horizontalOverflow === 'boolean' &&
175
+ typeof value.verticalOverflow === 'boolean' &&
176
+ typeof value.overflowX === 'string' &&
177
+ typeof value.overflowY === 'string');
178
+ }
179
+ function isValidWindowScrollSnapshot(value) {
180
+ return isPlainObject(value) && typeof value.scrollX === 'number' && typeof value.scrollY === 'number';
181
+ }
182
+ function isValidDocumentScrollSnapshot(value) {
183
+ if (!isPlainObject(value))
184
+ return false;
185
+ if (!isValidScrollableMetrics(value.root))
186
+ return false;
187
+ if (!isValidOverflowEvidence(value.rootOverflow))
188
+ return false;
189
+ if ('documentElement' in value && value.documentElement !== undefined && !isValidScrollableMetrics(value.documentElement))
190
+ return false;
191
+ if ('body' in value && value.body !== undefined && !isValidScrollableMetrics(value.body))
192
+ return false;
193
+ return true;
194
+ }
195
+ const VERTICAL_VIEWPORT_RELATIONS = ['above', 'intersecting', 'below'];
196
+ function isValidViewportRelationEvidence(value) {
197
+ if (!isPlainObject(value))
198
+ return false;
199
+ if (!VERTICAL_VIEWPORT_RELATIONS.includes(value.vertical))
200
+ return false;
201
+ return typeof value.intersectsViewport === 'boolean' && typeof value.fullyWithinViewport === 'boolean';
202
+ }
203
+ /** Validates an EvidenceField's `.value` only when the field is available/partial - not applicable/unavailable fields carry no value to check. */
204
+ function isValidEvidenceFieldValue(field, validate) {
205
+ if (!isPlainObject(field))
206
+ return false;
207
+ if (field.state === 'available' || field.state === 'partial') {
208
+ return validate(field.value);
209
+ }
210
+ return true;
211
+ }
212
+ function isValidTargetScrollRuntimeState(value) {
213
+ if (!isPlainObject(value))
214
+ return false;
215
+ if (!isValidEvidenceField(value.metrics) || !isValidEvidenceFieldValue(value.metrics, isValidScrollableMetrics))
216
+ return false;
217
+ if (!isValidEvidenceField(value.overflow) || !isValidEvidenceFieldValue(value.overflow, isValidOverflowEvidence))
218
+ return false;
219
+ if (!isValidEvidenceField(value.boundingRect) || !isValidEvidenceFieldValue(value.boundingRect, isValidTargetGeometryValue))
220
+ return false;
221
+ if (!isValidEvidenceField(value.viewportRelation) || !isValidEvidenceFieldValue(value.viewportRelation, isValidViewportRelationEvidence))
222
+ return false;
223
+ return true;
224
+ }
225
+ function isValidScrollRuntimeSnapshot(value) {
226
+ if (!isPlainObject(value))
227
+ return false;
228
+ if (!isValidWindowScrollSnapshot(value.window))
229
+ return false;
230
+ if (!isValidDocumentScrollSnapshot(value.document))
231
+ return false;
232
+ if (!isPlainObject(value.targets))
233
+ return false;
234
+ return Object.values(value.targets).every((target) => isValidTargetScrollRuntimeState(target));
235
+ }
236
+ function isValidScrollValueChange(value, validateInner) {
237
+ if (!isPlainObject(value))
238
+ return false;
239
+ if (typeof value.changed !== 'boolean')
240
+ return false;
241
+ return validateInner(value.before) && validateInner(value.after);
242
+ }
243
+ function isValidTargetScrollTransition(value) {
244
+ if (!isPlainObject(value))
245
+ return false;
246
+ if (!isValidScrollValueChange(value.scrollTop, (v) => typeof v === 'number'))
247
+ return false;
248
+ if (!isValidScrollValueChange(value.scrollLeft, (v) => typeof v === 'number'))
249
+ return false;
250
+ if (!isValidScrollValueChange(value.boundingRectPosition, (v) => isPlainObject(v) && typeof v.x === 'number' && typeof v.y === 'number'))
251
+ return false;
252
+ if (!isValidScrollValueChange(value.viewportRelation, (v) => VERTICAL_VIEWPORT_RELATIONS.includes(v)))
253
+ return false;
254
+ if (typeof value.enteredViewport !== 'boolean' || typeof value.leftViewport !== 'boolean')
255
+ return false;
256
+ if (value.enteredViewport && value.leftViewport)
257
+ return false;
258
+ return true;
259
+ }
260
+ function isValidScrollScenarioTransition(value) {
261
+ if (!isPlainObject(value))
262
+ return false;
263
+ if (!isValidScrollValueChange(value.windowScrollX, (v) => typeof v === 'number'))
264
+ return false;
265
+ if (!isValidScrollValueChange(value.windowScrollY, (v) => typeof v === 'number'))
266
+ return false;
267
+ if (!isPlainObject(value.targets))
268
+ return false;
269
+ return Object.values(value.targets).every((target) => isValidTargetScrollTransition(target));
270
+ }
271
+ const SCROLL_OWNER_KINDS = ['document', 'target', 'none', 'indeterminate'];
272
+ function isValidScrollOwnerInterpretation(value) {
273
+ if (!isPlainObject(value))
274
+ return false;
275
+ const kind = value.kind;
276
+ if (!SCROLL_OWNER_KINDS.includes(kind))
277
+ return false;
278
+ if (kind === 'target')
279
+ return typeof value.target === 'string' && value.target.length > 0 && Object.keys(value).length === 2;
280
+ return Object.keys(value).length === 1;
281
+ }
282
+ /** Structural validator for ScrollScenarioEvidence, including the scroll-owner derived-provenance requirement (source must be 'derived', enforced alongside isValidEvidenceField's existing derivedFrom-iff-derived-source invariant). */
283
+ function isValidScrollScenarioEvidence(value) {
284
+ if (!isPlainObject(value))
285
+ return false;
286
+ if (!isValidScrollRuntimeSnapshot(value.initial))
287
+ return false;
288
+ if (!isValidScrollRuntimeSnapshot(value.final))
289
+ return false;
290
+ if (!isValidScrollScenarioTransition(value.transition))
291
+ return false;
292
+ if (!isValidEvidenceField(value.scrollOwner))
293
+ return false;
294
+ const scrollOwnerField = value.scrollOwner;
295
+ if (scrollOwnerField.state === 'available' || scrollOwnerField.state === 'partial') {
296
+ if (scrollOwnerField.source !== 'derived')
297
+ return false;
298
+ if (!isValidScrollOwnerInterpretation(scrollOwnerField.value))
299
+ return false;
300
+ }
301
+ return true;
302
+ }
129
303
  function isValidDiagnostic(value) {
130
304
  if (!isPlainObject(value))
131
305
  return false;
@@ -155,7 +329,7 @@ function isValidCompletionState(value) {
155
329
  }
156
330
  return false;
157
331
  }
158
- /** Structural validator for the frozen schema-1.0.0 ObservationArtifact contract. Treats `value` as arbitrary/unknown input. */
332
+ /** Structural validator for the frozen schema-1.2.0 ObservationArtifact contract. Treats `value` as arbitrary/unknown input. */
159
333
  export function isValidObservationArtifact(value) {
160
334
  if (!isPlainObject(value))
161
335
  return { valid: false, reason: 'artifact must be an object' };
@@ -224,6 +398,16 @@ export function isValidObservationArtifact(value) {
224
398
  }
225
399
  }
226
400
  }
401
+ if (isPlainObject(value.requestConfig) && 'scrollScenario' in value.requestConfig && value.requestConfig.scrollScenario !== undefined) {
402
+ if (!isValidRequestScrollScenario(value.requestConfig.scrollScenario)) {
403
+ return { valid: false, reason: 'requestConfig.scrollScenario is invalid' };
404
+ }
405
+ }
406
+ if ('scrollScenarioEvidence' in value && value.scrollScenarioEvidence !== undefined) {
407
+ if (!isValidScrollScenarioEvidence(value.scrollScenarioEvidence)) {
408
+ return { valid: false, reason: 'scrollScenarioEvidence is invalid' };
409
+ }
410
+ }
227
411
  if (!isValidEvidenceField(value.screenshot))
228
412
  return { valid: false, reason: 'screenshot evidence field is invalid' };
229
413
  if (!isValidCompletionState(value.completion))
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { EvidenceField } from './evidence.js';
2
+ import type { Viewport } from '../request/request.js';
3
+ import type { ScrollableMetrics, OverflowEvidence, ViewportRelationEvidence, TargetGeometry, ScrollRuntimeSnapshot, TargetScrollRuntimeState, TargetScrollTransition, ScrollScenarioTransition, ScrollOwnerInterpretation } from './schema.js';
4
+ /**
5
+ * Derived only from a bounding rectangle (viewport-relative, as produced by
6
+ * `getBoundingClientRect()`) plus viewport width/height - never from source
7
+ * styles or locator kind (Batch 1 frozen contract). `above`/`below` require
8
+ * the rectangle to be *entirely* outside the viewport on that axis; any
9
+ * vertical overlap with `[0, viewport.height)` is `intersecting`.
10
+ */
11
+ export declare function deriveViewportRelation(rect: TargetGeometry, viewport: Viewport): ViewportRelationEvidence;
12
+ /**
13
+ * Distinguishes a computed `overflow-x`/`overflow-y` CSS declaration from
14
+ * actual dimensional overflow. `overflow-x: auto`/`overflow-y: scroll` alone
15
+ * never implies actual overflow - only `scrollWidth > clientWidth` /
16
+ * `scrollHeight > clientHeight` do.
17
+ */
18
+ export declare function deriveOverflowEvidence(metrics: ScrollableMetrics, overflowX: string, overflowY: string): OverflowEvidence;
19
+ /**
20
+ * Bounded before/after change evidence for one configured target across the
21
+ * one scroll action - not a generic recursive diff. Returns `undefined`
22
+ * (rather than fabricating zeroed/default values) when either snapshot's
23
+ * metrics/boundingRect/viewportRelation evidence for this target is not
24
+ * itself usable (e.g. the target never resolved), consistent with
25
+ * `enteredViewport`/`leftViewport` only being evaluated when both
26
+ * viewport-relation states are valid.
27
+ */
28
+ export declare function deriveTargetScrollTransition(initial: TargetScrollRuntimeState, final: TargetScrollRuntimeState): TargetScrollTransition | undefined;
29
+ /** Derives the bounded scenario transition evidence purely from the two already-captured runtime snapshots - no re-measurement, no generic JSON diffing. A target absent from either snapshot's `targets` map, or whose per-target transition cannot be derived (see `deriveTargetScrollTransition`), is simply omitted from `targets` here. */
30
+ export declare function deriveScrollScenarioTransition(initial: ScrollRuntimeSnapshot, final: ScrollRuntimeSnapshot): ScrollScenarioTransition;
31
+ /**
32
+ * Conservative scroll-owner derivation, shared by both `window-scroll-by`
33
+ * and `target-scroll-by` scenarios: relies solely on observed scroll
34
+ * *position* changes (`scrollTop`/`scrollLeft`/`window.scrollX`/
35
+ * `window.scrollY`), never on a target's bounding-rectangle movement (which
36
+ * moves for every configured target whenever the document scrolls,
37
+ * regardless of who "owns" scrolling - using it here would falsely
38
+ * attribute document scrolling to every visible target) and never on
39
+ * computed overflow, `position: fixed`/`sticky`, target name, locator kind,
40
+ * or DOM hierarchy.
41
+ *
42
+ * Rules (frozen Batch 1 vocabulary):
43
+ * - no window movement, no target movement -> `none`;
44
+ * - window movement, no competing target movement -> `document`;
45
+ * - no window movement, exactly one target's own scroll position moved
46
+ * (on either or both axes - two axes of the *same* target is still one
47
+ * owner) -> `target:<name>`;
48
+ * - anything else (window plus a target, or more than one target) ->
49
+ * `indeterminate` - multiple plausible owners, never forced to pick one.
50
+ */
51
+ export declare function deriveScrollOwner(transition: ScrollScenarioTransition): EvidenceField<ScrollOwnerInterpretation>;
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Derived only from a bounding rectangle (viewport-relative, as produced by
3
+ * `getBoundingClientRect()`) plus viewport width/height - never from source
4
+ * styles or locator kind (Batch 1 frozen contract). `above`/`below` require
5
+ * the rectangle to be *entirely* outside the viewport on that axis; any
6
+ * vertical overlap with `[0, viewport.height)` is `intersecting`.
7
+ */
8
+ export function deriveViewportRelation(rect, viewport) {
9
+ const vertical = rect.bottom <= 0 ? 'above' : rect.y >= viewport.height ? 'below' : 'intersecting';
10
+ const intersectsViewport = rect.right > 0 && rect.x < viewport.width && rect.bottom > 0 && rect.y < viewport.height;
11
+ const fullyWithinViewport = rect.x >= 0 && rect.y >= 0 && rect.right <= viewport.width && rect.bottom <= viewport.height;
12
+ return { vertical, intersectsViewport, fullyWithinViewport };
13
+ }
14
+ /**
15
+ * Distinguishes a computed `overflow-x`/`overflow-y` CSS declaration from
16
+ * actual dimensional overflow. `overflow-x: auto`/`overflow-y: scroll` alone
17
+ * never implies actual overflow - only `scrollWidth > clientWidth` /
18
+ * `scrollHeight > clientHeight` do.
19
+ */
20
+ export function deriveOverflowEvidence(metrics, overflowX, overflowY) {
21
+ return {
22
+ horizontalOverflow: metrics.scrollWidth > metrics.clientWidth,
23
+ verticalOverflow: metrics.scrollHeight > metrics.clientHeight,
24
+ overflowX,
25
+ overflowY,
26
+ };
27
+ }
28
+ function numberChange(before, after) {
29
+ return { before, after, changed: before !== after };
30
+ }
31
+ function extractAvailable(field) {
32
+ return field.state === 'available' || field.state === 'partial' ? field.value : undefined;
33
+ }
34
+ /**
35
+ * Bounded before/after change evidence for one configured target across the
36
+ * one scroll action - not a generic recursive diff. Returns `undefined`
37
+ * (rather than fabricating zeroed/default values) when either snapshot's
38
+ * metrics/boundingRect/viewportRelation evidence for this target is not
39
+ * itself usable (e.g. the target never resolved), consistent with
40
+ * `enteredViewport`/`leftViewport` only being evaluated when both
41
+ * viewport-relation states are valid.
42
+ */
43
+ export function deriveTargetScrollTransition(initial, final) {
44
+ const initialMetrics = extractAvailable(initial.metrics);
45
+ const finalMetrics = extractAvailable(final.metrics);
46
+ const initialRect = extractAvailable(initial.boundingRect);
47
+ const finalRect = extractAvailable(final.boundingRect);
48
+ const initialRelation = extractAvailable(initial.viewportRelation);
49
+ const finalRelation = extractAvailable(final.viewportRelation);
50
+ if (!initialMetrics || !finalMetrics || !initialRect || !finalRect || !initialRelation || !finalRelation) {
51
+ return undefined;
52
+ }
53
+ const enteredViewport = !initialRelation.intersectsViewport && finalRelation.intersectsViewport;
54
+ const leftViewport = initialRelation.intersectsViewport && !finalRelation.intersectsViewport;
55
+ return {
56
+ scrollTop: numberChange(initialMetrics.scrollTop, finalMetrics.scrollTop),
57
+ scrollLeft: numberChange(initialMetrics.scrollLeft, finalMetrics.scrollLeft),
58
+ boundingRectPosition: {
59
+ before: { x: initialRect.x, y: initialRect.y },
60
+ after: { x: finalRect.x, y: finalRect.y },
61
+ changed: initialRect.x !== finalRect.x || initialRect.y !== finalRect.y,
62
+ },
63
+ viewportRelation: { before: initialRelation.vertical, after: finalRelation.vertical, changed: initialRelation.vertical !== finalRelation.vertical },
64
+ enteredViewport,
65
+ leftViewport,
66
+ };
67
+ }
68
+ /** Derives the bounded scenario transition evidence purely from the two already-captured runtime snapshots - no re-measurement, no generic JSON diffing. A target absent from either snapshot's `targets` map, or whose per-target transition cannot be derived (see `deriveTargetScrollTransition`), is simply omitted from `targets` here. */
69
+ export function deriveScrollScenarioTransition(initial, final) {
70
+ const targets = {};
71
+ for (const [name, initialState] of Object.entries(initial.targets)) {
72
+ const finalState = final.targets[name];
73
+ if (!finalState)
74
+ continue;
75
+ const transition = deriveTargetScrollTransition(initialState, finalState);
76
+ if (transition)
77
+ targets[name] = transition;
78
+ }
79
+ return {
80
+ windowScrollX: numberChange(initial.window.scrollX, final.window.scrollX),
81
+ windowScrollY: numberChange(initial.window.scrollY, final.window.scrollY),
82
+ targets,
83
+ };
84
+ }
85
+ /**
86
+ * Conservative scroll-owner derivation, shared by both `window-scroll-by`
87
+ * and `target-scroll-by` scenarios: relies solely on observed scroll
88
+ * *position* changes (`scrollTop`/`scrollLeft`/`window.scrollX`/
89
+ * `window.scrollY`), never on a target's bounding-rectangle movement (which
90
+ * moves for every configured target whenever the document scrolls,
91
+ * regardless of who "owns" scrolling - using it here would falsely
92
+ * attribute document scrolling to every visible target) and never on
93
+ * computed overflow, `position: fixed`/`sticky`, target name, locator kind,
94
+ * or DOM hierarchy.
95
+ *
96
+ * Rules (frozen Batch 1 vocabulary):
97
+ * - no window movement, no target movement -> `none`;
98
+ * - window movement, no competing target movement -> `document`;
99
+ * - no window movement, exactly one target's own scroll position moved
100
+ * (on either or both axes - two axes of the *same* target is still one
101
+ * owner) -> `target:<name>`;
102
+ * - anything else (window plus a target, or more than one target) ->
103
+ * `indeterminate` - multiple plausible owners, never forced to pick one.
104
+ */
105
+ export function deriveScrollOwner(transition) {
106
+ const windowMoved = transition.windowScrollX.changed || transition.windowScrollY.changed;
107
+ const changedTargetNames = Object.entries(transition.targets)
108
+ .filter(([, t]) => t.scrollTop.changed || t.scrollLeft.changed)
109
+ .map(([name]) => name);
110
+ let value;
111
+ let derivedFrom;
112
+ if (!windowMoved && changedTargetNames.length === 0) {
113
+ value = { kind: 'none' };
114
+ derivedFrom = ['window.scrollX', 'window.scrollY', ...Object.keys(transition.targets).flatMap((name) => [`${name}.scrollTop`, `${name}.scrollLeft`])];
115
+ }
116
+ else if (windowMoved && changedTargetNames.length === 0) {
117
+ value = { kind: 'document' };
118
+ derivedFrom = ['window.scrollX', 'window.scrollY'];
119
+ }
120
+ else if (!windowMoved && changedTargetNames.length === 1) {
121
+ const target = changedTargetNames[0];
122
+ value = { kind: 'target', target };
123
+ derivedFrom = [`${target}.scrollTop`, `${target}.scrollLeft`];
124
+ }
125
+ else {
126
+ value = { kind: 'indeterminate' };
127
+ derivedFrom = [
128
+ ...(windowMoved ? ['window.scrollX', 'window.scrollY'] : []),
129
+ ...changedTargetNames.flatMap((name) => [`${name}.scrollTop`, `${name}.scrollLeft`]),
130
+ ];
131
+ }
132
+ return { state: 'available', source: 'derived', value, derivedFrom };
133
+ }
134
+ //# sourceMappingURL=scrollEvidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollEvidence.js","sourceRoot":"","sources":["../../src/domain/scrollEvidence.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,11 +4,11 @@ export type { DiagnosticCode, DiagnosticSeverity, Diagnostic } from './domain/di
4
4
  export { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY, orderDiagnostics } from './domain/diagnostics.js';
5
5
  export type { CompletionState, RequestPhase } from './domain/completion.js';
6
6
  export { deriveCompletion } from './domain/completion.js';
7
- export type { ObservationArtifact, ArtifactReference, TargetEvidenceRecord, TargetGeometry, TargetComputedStyle, TargetLayoutMetrics, TargetVisibility, TargetSemantics, TargetLocatorKind, TargetSelectionStatus, TargetSelectionConfidence, TargetLocatorAttemptStatus, TargetLocatorAttempt, TargetResolution, TargetSemanticState, TargetLandmarkRole, TargetContainment, SchemaValidationResult, } from './domain/schema.js';
7
+ export type { ObservationArtifact, ArtifactReference, TargetEvidenceRecord, TargetGeometry, TargetComputedStyle, TargetLayoutMetrics, TargetVisibility, TargetSemantics, TargetLocatorKind, TargetSelectionStatus, TargetSelectionConfidence, TargetLocatorAttemptStatus, TargetLocatorAttempt, TargetResolution, TargetSemanticState, TargetLandmarkRole, TargetContainment, SchemaValidationResult, ScrollableMetrics, OverflowEvidence, WindowScrollSnapshot, DocumentScrollSnapshot, VerticalViewportRelation, ViewportRelationEvidence, TargetScrollRuntimeState, ScrollRuntimeSnapshot, ScrollValueChange, TargetScrollTransition, ScrollScenarioTransition, ScrollOwnerInterpretation, ScrollScenarioEvidence, } from './domain/schema.js';
8
8
  export { ARTIFACT_KIND, SCHEMA_VERSION, PRODUCER_NAME, TARGET_LANDMARK_ROLES, getProducerInfo, isValidObservationArtifact, } from './domain/schema.js';
9
9
  export { buildRequestIdentity, buildObservationIdentity } from './domain/identity.js';
10
- export type { NamedTarget, RawNamedTarget, TargetLocator, Viewport, ReadinessCondition, ReadinessConfig, NormalizedObservationRequest, RawObservationRequest, NormalizeRequestResult, } from './request/request.js';
11
- export { normalizeRequest } from './request/request.js';
10
+ export type { NamedTarget, RawNamedTarget, TargetLocator, Viewport, ReadinessCondition, ReadinessConfig, NormalizedObservationRequest, RawObservationRequest, NormalizeRequestResult, ScrollAction, ScrollScenario, } from './request/request.js';
11
+ export { normalizeRequest, SCROLL_DELTA_MAX_ABS } from './request/request.js';
12
12
  export type { NormalizeOutputLocationResult } from './request/paths.js';
13
13
  export { normalizeOutputLocation } from './request/paths.js';
14
14
  export type { SafetyDecision } from './safety/policy.js';
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ export { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY, orderDiagnostics } from './domai
3
3
  export { deriveCompletion } from './domain/completion.js';
4
4
  export { ARTIFACT_KIND, SCHEMA_VERSION, PRODUCER_NAME, TARGET_LANDMARK_ROLES, getProducerInfo, isValidObservationArtifact, } from './domain/schema.js';
5
5
  export { buildRequestIdentity, buildObservationIdentity } from './domain/identity.js';
6
- export { normalizeRequest } from './request/request.js';
6
+ export { normalizeRequest, SCROLL_DELTA_MAX_ABS } from './request/request.js';
7
7
  export { normalizeOutputLocation } from './request/paths.js';
8
8
  export { classifyUrl, classifyRedirect, classifySubresource, classifyPopup, classifyDownload } from './safety/policy.js';
9
9
  export { runBrowserCapture } from './application/browserCaptureService.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAsB1D,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAatF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGzH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAmC1D,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAetF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGzH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC"}
@@ -39,6 +39,25 @@ export interface ReadinessConfig {
39
39
  condition: ReadinessCondition;
40
40
  timeoutMs: number;
41
41
  }
42
+ /**
43
+ * v0.3 Batch 1 canonical scroll-action shape. Exactly the two bounded action
44
+ * kinds below are supported; `target` on `target-scroll-by` refers to the
45
+ * existing stable observer-owned target `name` (see `NamedTarget`), never a
46
+ * CSS selector, Playwright locator, or DOM id evaluated directly.
47
+ */
48
+ export type ScrollAction = {
49
+ kind: 'window-scroll-by';
50
+ deltaX: number;
51
+ deltaY: number;
52
+ } | {
53
+ kind: 'target-scroll-by';
54
+ target: string;
55
+ deltaX: number;
56
+ deltaY: number;
57
+ };
58
+ export interface ScrollScenario {
59
+ action: ScrollAction;
60
+ }
42
61
  export interface NormalizedObservationRequest {
43
62
  targetUrl: string;
44
63
  viewport: Viewport;
@@ -46,6 +65,7 @@ export interface NormalizedObservationRequest {
46
65
  outputLocation: string;
47
66
  timeoutMs: number;
48
67
  readiness: ReadinessConfig;
68
+ scrollScenario?: ScrollScenario;
49
69
  }
50
70
  export interface RawObservationRequest {
51
71
  targetUrl?: unknown;
@@ -54,6 +74,7 @@ export interface RawObservationRequest {
54
74
  outputLocation?: unknown;
55
75
  timeoutMs?: unknown;
56
76
  readiness?: unknown;
77
+ scrollScenario?: unknown;
57
78
  }
58
79
  export type NormalizeRequestResult = {
59
80
  ok: true;
@@ -62,6 +83,14 @@ export type NormalizeRequestResult = {
62
83
  ok: false;
63
84
  diagnostics: Diagnostic[];
64
85
  };
86
+ /**
87
+ * Conservative bound for a single controlled-observation scroll action. No
88
+ * existing repository precedent for a scroll-delta magnitude; chosen large
89
+ * enough to reach realistic overflow content (documents/containers well
90
+ * beyond one viewport) while staying far short of a pathological/runaway
91
+ * request - see docs/CONTRACTS.md and tests/unit/request.test.ts.
92
+ */
93
+ export declare const SCROLL_DELTA_MAX_ABS = 20000;
65
94
  /**
66
95
  * Total, never throws. Collects every applicable diagnostic before returning
67
96
  * (does not short-circuit on the first violation) so callers see every