@dailephd/my-frontend-observer 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/CHANGELOG.md +397 -0
  2. package/LICENSE +21 -0
  3. package/README.md +255 -0
  4. package/dist/application/browserCaptureService.d.ts +11 -0
  5. package/dist/application/browserCaptureService.js +12 -0
  6. package/dist/application/browserCaptureService.js.map +1 -0
  7. package/dist/application/comparisonService.d.ts +56 -0
  8. package/dist/application/comparisonService.js +77 -0
  9. package/dist/application/comparisonService.js.map +1 -0
  10. package/dist/application/externalReferencePersistenceService.d.ts +75 -0
  11. package/dist/application/externalReferencePersistenceService.js +182 -0
  12. package/dist/application/externalReferencePersistenceService.js.map +1 -0
  13. package/dist/application/frontendContractEvaluationService.d.ts +49 -0
  14. package/dist/application/frontendContractEvaluationService.js +112 -0
  15. package/dist/application/frontendContractEvaluationService.js.map +1 -0
  16. package/dist/application/frontendContractPersistenceService.d.ts +56 -0
  17. package/dist/application/frontendContractPersistenceService.js +91 -0
  18. package/dist/application/frontendContractPersistenceService.js.map +1 -0
  19. package/dist/application/observationPersistence.d.ts +59 -0
  20. package/dist/application/observationPersistence.js +79 -0
  21. package/dist/application/observationPersistence.js.map +1 -0
  22. package/dist/application/projectCheckService.d.ts +3 -0
  23. package/dist/application/projectCheckService.js +169 -0
  24. package/dist/application/projectCheckService.js.map +1 -0
  25. package/dist/application/projectWorkflowService.d.ts +46 -0
  26. package/dist/application/projectWorkflowService.js +92 -0
  27. package/dist/application/projectWorkflowService.js.map +1 -0
  28. package/dist/application/referenceFidelityEvaluationService.d.ts +28 -0
  29. package/dist/application/referenceFidelityEvaluationService.js +45 -0
  30. package/dist/application/referenceFidelityEvaluationService.js.map +1 -0
  31. package/dist/artifacts/artifactReader.d.ts +19 -0
  32. package/dist/artifacts/artifactReader.js +36 -0
  33. package/dist/artifacts/artifactReader.js.map +1 -0
  34. package/dist/artifacts/artifactWriter.d.ts +25 -0
  35. package/dist/artifacts/artifactWriter.js +68 -0
  36. package/dist/artifacts/artifactWriter.js.map +1 -0
  37. package/dist/artifacts/comparisonArtifactReader.d.ts +18 -0
  38. package/dist/artifacts/comparisonArtifactReader.js +35 -0
  39. package/dist/artifacts/comparisonArtifactReader.js.map +1 -0
  40. package/dist/artifacts/comparisonArtifactWriter.d.ts +41 -0
  41. package/dist/artifacts/comparisonArtifactWriter.js +67 -0
  42. package/dist/artifacts/comparisonArtifactWriter.js.map +1 -0
  43. package/dist/artifacts/externalReferenceArtifactReader.d.ts +18 -0
  44. package/dist/artifacts/externalReferenceArtifactReader.js +35 -0
  45. package/dist/artifacts/externalReferenceArtifactReader.js.map +1 -0
  46. package/dist/artifacts/externalReferenceArtifactWriter.d.ts +44 -0
  47. package/dist/artifacts/externalReferenceArtifactWriter.js +77 -0
  48. package/dist/artifacts/externalReferenceArtifactWriter.js.map +1 -0
  49. package/dist/artifacts/frontendContractArtifactReader.d.ts +24 -0
  50. package/dist/artifacts/frontendContractArtifactReader.js +47 -0
  51. package/dist/artifacts/frontendContractArtifactReader.js.map +1 -0
  52. package/dist/artifacts/frontendContractArtifactWriter.d.ts +34 -0
  53. package/dist/artifacts/frontendContractArtifactWriter.js +70 -0
  54. package/dist/artifacts/frontendContractArtifactWriter.js.map +1 -0
  55. package/dist/artifacts/frontendContractEvaluationArtifactReader.d.ts +17 -0
  56. package/dist/artifacts/frontendContractEvaluationArtifactReader.js +34 -0
  57. package/dist/artifacts/frontendContractEvaluationArtifactReader.js.map +1 -0
  58. package/dist/artifacts/frontendContractEvaluationArtifactWriter.d.ts +32 -0
  59. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js +58 -0
  60. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js.map +1 -0
  61. package/dist/artifacts/types.d.ts +17 -0
  62. package/dist/artifacts/types.js +2 -0
  63. package/dist/artifacts/types.js.map +1 -0
  64. package/dist/browser/chromiumAdapter.d.ts +21 -0
  65. package/dist/browser/chromiumAdapter.js +204 -0
  66. package/dist/browser/chromiumAdapter.js.map +1 -0
  67. package/dist/browser/evidenceCapture.d.ts +62 -0
  68. package/dist/browser/evidenceCapture.js +500 -0
  69. package/dist/browser/evidenceCapture.js.map +1 -0
  70. package/dist/browser/scrollCapture.d.ts +32 -0
  71. package/dist/browser/scrollCapture.js +163 -0
  72. package/dist/browser/scrollCapture.js.map +1 -0
  73. package/dist/browser/types.d.ts +24 -0
  74. package/dist/browser/types.js +2 -0
  75. package/dist/browser/types.js.map +1 -0
  76. package/dist/cli.d.ts +8 -0
  77. package/dist/cli.js +2411 -0
  78. package/dist/cli.js.map +1 -0
  79. package/dist/domain/boundedAgentContext.d.ts +226 -0
  80. package/dist/domain/boundedAgentContext.js +355 -0
  81. package/dist/domain/boundedAgentContext.js.map +1 -0
  82. package/dist/domain/boundedAgentContextCorrelation.d.ts +74 -0
  83. package/dist/domain/boundedAgentContextCorrelation.js +441 -0
  84. package/dist/domain/boundedAgentContextCorrelation.js.map +1 -0
  85. package/dist/domain/boundedAgentContextIdentity.d.ts +26 -0
  86. package/dist/domain/boundedAgentContextIdentity.js +69 -0
  87. package/dist/domain/boundedAgentContextIdentity.js.map +1 -0
  88. package/dist/domain/boundedAgentContextProjection.d.ts +71 -0
  89. package/dist/domain/boundedAgentContextProjection.js +477 -0
  90. package/dist/domain/boundedAgentContextProjection.js.map +1 -0
  91. package/dist/domain/comparison.d.ts +220 -0
  92. package/dist/domain/comparison.js +350 -0
  93. package/dist/domain/comparison.js.map +1 -0
  94. package/dist/domain/comparisonEngine.d.ts +76 -0
  95. package/dist/domain/comparisonEngine.js +734 -0
  96. package/dist/domain/comparisonEngine.js.map +1 -0
  97. package/dist/domain/comparisonIdentity.d.ts +13 -0
  98. package/dist/domain/comparisonIdentity.js +46 -0
  99. package/dist/domain/comparisonIdentity.js.map +1 -0
  100. package/dist/domain/completion.d.ts +30 -0
  101. package/dist/domain/completion.js +22 -0
  102. package/dist/domain/completion.js.map +1 -0
  103. package/dist/domain/diagnostics.d.ts +17 -0
  104. package/dist/domain/diagnostics.js +77 -0
  105. package/dist/domain/diagnostics.js.map +1 -0
  106. package/dist/domain/evidence.d.ts +29 -0
  107. package/dist/domain/evidence.js +59 -0
  108. package/dist/domain/evidence.js.map +1 -0
  109. package/dist/domain/explicitState.d.ts +40 -0
  110. package/dist/domain/explicitState.js +54 -0
  111. package/dist/domain/explicitState.js.map +1 -0
  112. package/dist/domain/externalReference.d.ts +158 -0
  113. package/dist/domain/externalReference.js +167 -0
  114. package/dist/domain/externalReference.js.map +1 -0
  115. package/dist/domain/externalReferenceApplicability.d.ts +43 -0
  116. package/dist/domain/externalReferenceApplicability.js +52 -0
  117. package/dist/domain/externalReferenceApplicability.js.map +1 -0
  118. package/dist/domain/externalReferenceCompatibility.d.ts +40 -0
  119. package/dist/domain/externalReferenceCompatibility.js +48 -0
  120. package/dist/domain/externalReferenceCompatibility.js.map +1 -0
  121. package/dist/domain/externalReferenceFidelity.d.ts +171 -0
  122. package/dist/domain/externalReferenceFidelity.js +419 -0
  123. package/dist/domain/externalReferenceFidelity.js.map +1 -0
  124. package/dist/domain/externalReferenceIdentity.d.ts +38 -0
  125. package/dist/domain/externalReferenceIdentity.js +70 -0
  126. package/dist/domain/externalReferenceIdentity.js.map +1 -0
  127. package/dist/domain/externalReferenceImage.d.ts +35 -0
  128. package/dist/domain/externalReferenceImage.js +160 -0
  129. package/dist/domain/externalReferenceImage.js.map +1 -0
  130. package/dist/domain/externalReferenceRegionRelationships.d.ts +63 -0
  131. package/dist/domain/externalReferenceRegionRelationships.js +98 -0
  132. package/dist/domain/externalReferenceRegionRelationships.js.map +1 -0
  133. package/dist/domain/externalReferenceRegions.d.ts +65 -0
  134. package/dist/domain/externalReferenceRegions.js +105 -0
  135. package/dist/domain/externalReferenceRegions.js.map +1 -0
  136. package/dist/domain/externalReferenceRequirementIdentity.d.ts +12 -0
  137. package/dist/domain/externalReferenceRequirementIdentity.js +35 -0
  138. package/dist/domain/externalReferenceRequirementIdentity.js.map +1 -0
  139. package/dist/domain/externalReferenceRequirements.d.ts +215 -0
  140. package/dist/domain/externalReferenceRequirements.js +401 -0
  141. package/dist/domain/externalReferenceRequirements.js.map +1 -0
  142. package/dist/domain/externalReferenceRuntimeBinding.d.ts +146 -0
  143. package/dist/domain/externalReferenceRuntimeBinding.js +183 -0
  144. package/dist/domain/externalReferenceRuntimeBinding.js.map +1 -0
  145. package/dist/domain/frontendContractEvaluation.d.ts +57 -0
  146. package/dist/domain/frontendContractEvaluation.js +454 -0
  147. package/dist/domain/frontendContractEvaluation.js.map +1 -0
  148. package/dist/domain/frontendContractEvaluationArtifact.d.ts +65 -0
  149. package/dist/domain/frontendContractEvaluationArtifact.js +108 -0
  150. package/dist/domain/frontendContractEvaluationArtifact.js.map +1 -0
  151. package/dist/domain/frontendContractIdentity.d.ts +39 -0
  152. package/dist/domain/frontendContractIdentity.js +70 -0
  153. package/dist/domain/frontendContractIdentity.js.map +1 -0
  154. package/dist/domain/frontendContracts.d.ts +188 -0
  155. package/dist/domain/frontendContracts.js +260 -0
  156. package/dist/domain/frontendContracts.js.map +1 -0
  157. package/dist/domain/identity.d.ts +21 -0
  158. package/dist/domain/identity.js +47 -0
  159. package/dist/domain/identity.js.map +1 -0
  160. package/dist/domain/referenceCorrectionIdentity.d.ts +40 -0
  161. package/dist/domain/referenceCorrectionIdentity.js +77 -0
  162. package/dist/domain/referenceCorrectionIdentity.js.map +1 -0
  163. package/dist/domain/referenceCorrectionWorkflow.d.ts +160 -0
  164. package/dist/domain/referenceCorrectionWorkflow.js +165 -0
  165. package/dist/domain/referenceCorrectionWorkflow.js.map +1 -0
  166. package/dist/domain/referenceFidelityProjection.d.ts +65 -0
  167. package/dist/domain/referenceFidelityProjection.js +135 -0
  168. package/dist/domain/referenceFidelityProjection.js.map +1 -0
  169. package/dist/domain/relationships.d.ts +210 -0
  170. package/dist/domain/relationships.js +352 -0
  171. package/dist/domain/relationships.js.map +1 -0
  172. package/dist/domain/schema.d.ts +269 -0
  173. package/dist/domain/schema.js +442 -0
  174. package/dist/domain/schema.js.map +1 -0
  175. package/dist/domain/scrollEvidence.d.ts +51 -0
  176. package/dist/domain/scrollEvidence.js +134 -0
  177. package/dist/domain/scrollEvidence.js.map +1 -0
  178. package/dist/index.d.ts +114 -0
  179. package/dist/index.js +64 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/projectWorkflow/aliasCatalog.d.ts +21 -0
  182. package/dist/projectWorkflow/aliasCatalog.js +67 -0
  183. package/dist/projectWorkflow/aliasCatalog.js.map +1 -0
  184. package/dist/projectWorkflow/checkAcceptance.d.ts +25 -0
  185. package/dist/projectWorkflow/checkAcceptance.js +55 -0
  186. package/dist/projectWorkflow/checkAcceptance.js.map +1 -0
  187. package/dist/projectWorkflow/checkResult.d.ts +85 -0
  188. package/dist/projectWorkflow/checkResult.js +101 -0
  189. package/dist/projectWorkflow/checkResult.js.map +1 -0
  190. package/dist/projectWorkflow/projectConfig.d.ts +43 -0
  191. package/dist/projectWorkflow/projectConfig.js +84 -0
  192. package/dist/projectWorkflow/projectConfig.js.map +1 -0
  193. package/dist/projectWorkflow/projectDiscovery.d.ts +9 -0
  194. package/dist/projectWorkflow/projectDiscovery.js +20 -0
  195. package/dist/projectWorkflow/projectDiscovery.js.map +1 -0
  196. package/dist/projectWorkflow/projectPaths.d.ts +8 -0
  197. package/dist/projectWorkflow/projectPaths.js +23 -0
  198. package/dist/projectWorkflow/projectPaths.js.map +1 -0
  199. package/dist/request/paths.d.ts +14 -0
  200. package/dist/request/paths.js +33 -0
  201. package/dist/request/paths.js.map +1 -0
  202. package/dist/request/request.d.ts +111 -0
  203. package/dist/request/request.js +464 -0
  204. package/dist/request/request.js.map +1 -0
  205. package/dist/safety/policy.d.ts +14 -0
  206. package/dist/safety/policy.js +81 -0
  207. package/dist/safety/policy.js.map +1 -0
  208. package/dist/viewer/assets/index-CN_yb9Uf.css +1 -0
  209. package/dist/viewer/assets/index-D98S1_2d.js +9 -0
  210. package/dist/viewer/icons/icon-192.png +0 -0
  211. package/dist/viewer/icons/icon-512.png +0 -0
  212. package/dist/viewer/index.html +15 -0
  213. package/dist/viewer/manifest.webmanifest +1 -0
  214. package/dist/viewer/registerSW.js +1 -0
  215. package/dist/viewer/sw.js +1 -0
  216. package/dist/viewer/workbox-9c191d2f.js +1 -0
  217. package/dist/viewerServer/context.d.ts +48 -0
  218. package/dist/viewerServer/context.js +60 -0
  219. package/dist/viewerServer/context.js.map +1 -0
  220. package/dist/viewerServer/evidence/classify.d.ts +59 -0
  221. package/dist/viewerServer/evidence/classify.js +124 -0
  222. package/dist/viewerServer/evidence/classify.js.map +1 -0
  223. package/dist/viewerServer/evidence/comparisonView.d.ts +28 -0
  224. package/dist/viewerServer/evidence/comparisonView.js +43 -0
  225. package/dist/viewerServer/evidence/comparisonView.js.map +1 -0
  226. package/dist/viewerServer/evidence/contextSourceView.d.ts +25 -0
  227. package/dist/viewerServer/evidence/contextSourceView.js +20 -0
  228. package/dist/viewerServer/evidence/contextSourceView.js.map +1 -0
  229. package/dist/viewerServer/evidence/discovery.d.ts +31 -0
  230. package/dist/viewerServer/evidence/discovery.js +78 -0
  231. package/dist/viewerServer/evidence/discovery.js.map +1 -0
  232. package/dist/viewerServer/evidence/evaluationView.d.ts +32 -0
  233. package/dist/viewerServer/evidence/evaluationView.js +50 -0
  234. package/dist/viewerServer/evidence/evaluationView.js.map +1 -0
  235. package/dist/viewerServer/evidence/handles.d.ts +21 -0
  236. package/dist/viewerServer/evidence/handles.js +43 -0
  237. package/dist/viewerServer/evidence/handles.js.map +1 -0
  238. package/dist/viewerServer/evidence/index.d.ts +41 -0
  239. package/dist/viewerServer/evidence/index.js +82 -0
  240. package/dist/viewerServer/evidence/index.js.map +1 -0
  241. package/dist/viewerServer/evidence/limits.d.ts +27 -0
  242. package/dist/viewerServer/evidence/limits.js +28 -0
  243. package/dist/viewerServer/evidence/limits.js.map +1 -0
  244. package/dist/viewerServer/evidence/linkedEvidence.d.ts +43 -0
  245. package/dist/viewerServer/evidence/linkedEvidence.js +151 -0
  246. package/dist/viewerServer/evidence/linkedEvidence.js.map +1 -0
  247. package/dist/viewerServer/evidence/mediaResolver.d.ts +16 -0
  248. package/dist/viewerServer/evidence/mediaResolver.js +85 -0
  249. package/dist/viewerServer/evidence/mediaResolver.js.map +1 -0
  250. package/dist/viewerServer/evidence/observationView.d.ts +29 -0
  251. package/dist/viewerServer/evidence/observationView.js +46 -0
  252. package/dist/viewerServer/evidence/observationView.js.map +1 -0
  253. package/dist/viewerServer/evidence/pathSafety.d.ts +11 -0
  254. package/dist/viewerServer/evidence/pathSafety.js +31 -0
  255. package/dist/viewerServer/evidence/pathSafety.js.map +1 -0
  256. package/dist/viewerServer/evidence/projection.d.ts +55 -0
  257. package/dist/viewerServer/evidence/projection.js +152 -0
  258. package/dist/viewerServer/evidence/projection.js.map +1 -0
  259. package/dist/viewerServer/evidence/referenceView.d.ts +133 -0
  260. package/dist/viewerServer/evidence/referenceView.js +169 -0
  261. package/dist/viewerServer/evidence/referenceView.js.map +1 -0
  262. package/dist/viewerServer/httpServer.d.ts +27 -0
  263. package/dist/viewerServer/httpServer.js +381 -0
  264. package/dist/viewerServer/httpServer.js.map +1 -0
  265. package/dist/viewerServer/openBrowser.d.ts +7 -0
  266. package/dist/viewerServer/openBrowser.js +32 -0
  267. package/dist/viewerServer/openBrowser.js.map +1 -0
  268. package/dist/viewerServer/port.d.ts +16 -0
  269. package/dist/viewerServer/port.js +19 -0
  270. package/dist/viewerServer/port.js.map +1 -0
  271. package/dist/viewerServer/viewerService.d.ts +62 -0
  272. package/dist/viewerServer/viewerService.js +88 -0
  273. package/dist/viewerServer/viewerService.js.map +1 -0
  274. package/docs/ARCHITECTURE.md +1286 -0
  275. package/docs/CI_CD.md +250 -0
  276. package/docs/COMMANDS.md +972 -0
  277. package/docs/CONTRACTS.md +1856 -0
  278. package/docs/CURRENT_STATE.md +1049 -0
  279. package/docs/DEVELOPMENT.md +202 -0
  280. package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -0
  281. package/docs/PROJECT_DESCRIPTION.md +2221 -0
  282. package/docs/PROJECT_MILESTONES.md +2526 -0
  283. package/docs/PROJECT_OVERVIEW.md +150 -0
  284. package/docs/QUICKSTART.md +83 -0
  285. package/docs/RELEASE.md +27 -0
  286. package/docs/ROADMAP.md +641 -0
  287. package/docs/SECURITY.md +218 -0
  288. package/docs/WORKFLOWS.md +642 -0
  289. package/docs/plans/v0.8-implementation-plan.md +655 -0
  290. package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -0
  291. package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -0
  292. package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -0
  293. package/docs/reports/v0.7-pre-release-readiness.md +337 -0
  294. package/docs/reports/v0.7-reference-binding-prompt5.md +223 -0
  295. package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -0
  296. package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -0
  297. package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -0
  298. package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -0
  299. package/docs/reports/v0.7-reference-regions-prompt2.md +195 -0
  300. package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -0
  301. package/docs/reports/v0.7-release-prep.md +423 -0
  302. package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -0
  303. package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -0
  304. package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -0
  305. package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -0
  306. package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -0
  307. package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -0
  308. package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -0
  309. package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -0
  310. package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -0
  311. package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -0
  312. package/docs/reports/v0.8.1-check-orchestration-prompt2.md +69 -0
  313. package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -0
  314. package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -0
  315. package/docs/reports/v0.8.1-project-workflow-foundation-prompt1.md +66 -0
  316. package/package.json +58 -0
@@ -0,0 +1,442 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { fileURLToPath } from 'node:url';
3
+ import path from 'node:path';
4
+ import { isValidEvidenceField } from './evidence.js';
5
+ import { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY } from './diagnostics.js';
6
+ import { SCROLL_DELTA_MAX_ABS } from '../request/request.js';
7
+ import { isValidExplicitStateDimensions } from './explicitState.js';
8
+ export const ARTIFACT_KIND = 'my-frontend-observer/observation';
9
+ export const SCHEMA_VERSION = '1.2.0';
10
+ export const PRODUCER_NAME = 'my-frontend-observer';
11
+ export const TARGET_LANDMARK_ROLES = ['banner', 'navigation', 'main', 'complementary', 'contentinfo', 'form', 'region', 'search'];
12
+ function readPackageVersion() {
13
+ const here = path.dirname(fileURLToPath(import.meta.url));
14
+ const packageJsonPath = path.join(here, '..', '..', 'package.json');
15
+ const raw = readFileSync(packageJsonPath, 'utf8');
16
+ const parsed = JSON.parse(raw);
17
+ if (typeof parsed.version !== 'string' || parsed.version.length === 0) {
18
+ throw new Error('package.json is missing a string "version" field');
19
+ }
20
+ return parsed.version;
21
+ }
22
+ /**
23
+ * producer.version is read independently from package.json; it is never
24
+ * equal to schemaVersion by construction - the two are different fields with
25
+ * unrelated value spaces.
26
+ */
27
+ export function getProducerInfo() {
28
+ return { name: PRODUCER_NAME, version: readPackageVersion() };
29
+ }
30
+ function isPlainObject(value) {
31
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
32
+ }
33
+ const TARGET_LOCATOR_KINDS = ['role', 'id', 'data-attribute', 'semantic-element', 'css', 'text'];
34
+ const TARGET_SELECTION_STATUSES = ['matched', 'not-found', 'ambiguous', 'unavailable'];
35
+ const TARGET_SELECTION_CONFIDENCES = ['exact', 'none'];
36
+ const TARGET_LOCATOR_ATTEMPT_STATUSES = ['not-found', 'ambiguous', 'matched', 'unavailable', 'unsupported'];
37
+ function isValidTargetLocatorAttempt(value) {
38
+ if (!isPlainObject(value))
39
+ return false;
40
+ if (typeof value.locatorIndex !== 'number' || !Number.isInteger(value.locatorIndex) || value.locatorIndex < 0)
41
+ return false;
42
+ if (typeof value.locatorKind !== 'string' || !TARGET_LOCATOR_KINDS.includes(value.locatorKind))
43
+ return false;
44
+ if (typeof value.status !== 'string' || !TARGET_LOCATOR_ATTEMPT_STATUSES.includes(value.status))
45
+ return false;
46
+ if ('matchCount' in value && value.matchCount !== undefined && (typeof value.matchCount !== 'number' || !Number.isInteger(value.matchCount) || value.matchCount < 0)) {
47
+ return false;
48
+ }
49
+ return true;
50
+ }
51
+ /** Structural validator for the frozen schema-1.1.0 TargetResolution contract, including the selectedLocatorKind/selectedLocatorIndex-iff-matched and usedFallback-iff-nonzero-index invariants. */
52
+ function isValidTargetResolutionValue(value) {
53
+ if (!isPlainObject(value))
54
+ return false;
55
+ if (typeof value.selectionMethod !== 'string')
56
+ return false;
57
+ if (typeof value.selectionStatus !== 'string' || !TARGET_SELECTION_STATUSES.includes(value.selectionStatus))
58
+ return false;
59
+ if (typeof value.usedFallback !== 'boolean')
60
+ return false;
61
+ if (typeof value.confidence !== 'string' || !TARGET_SELECTION_CONFIDENCES.includes(value.confidence))
62
+ return false;
63
+ if (!Array.isArray(value.attempts) || !value.attempts.every((a) => isValidTargetLocatorAttempt(a)))
64
+ return false;
65
+ for (let i = 1; i < value.attempts.length; i += 1) {
66
+ if (value.attempts[i].locatorIndex <= value.attempts[i - 1].locatorIndex)
67
+ return false;
68
+ }
69
+ const isMatched = value.selectionStatus === 'matched';
70
+ const hasSelectedKind = 'selectedLocatorKind' in value && value.selectedLocatorKind !== undefined;
71
+ const hasSelectedIndex = 'selectedLocatorIndex' in value && value.selectedLocatorIndex !== undefined;
72
+ if (hasSelectedKind !== isMatched || hasSelectedIndex !== isMatched)
73
+ return false;
74
+ if (isMatched) {
75
+ if (typeof value.selectedLocatorKind !== 'string' || !TARGET_LOCATOR_KINDS.includes(value.selectedLocatorKind))
76
+ return false;
77
+ if (typeof value.selectedLocatorIndex !== 'number' || !Number.isInteger(value.selectedLocatorIndex) || value.selectedLocatorIndex < 0)
78
+ return false;
79
+ if (value.usedFallback !== value.selectedLocatorIndex > 0)
80
+ return false;
81
+ }
82
+ else if (value.usedFallback) {
83
+ return false;
84
+ }
85
+ return true;
86
+ }
87
+ const TARGET_CURRENT_VALUES = ['page', 'step', 'location', 'date', 'time'];
88
+ /** Structural validator for TargetSemanticState: every present key must use its exact supported value vocabulary; an absent key is valid (means "not applicable"). */
89
+ function isValidTargetSemanticState(value) {
90
+ if (!isPlainObject(value))
91
+ return false;
92
+ const keys = ['disabled', 'expanded', 'checked', 'selected', 'pressed', 'current'];
93
+ if (!Object.keys(value).every((k) => keys.includes(k)))
94
+ return false;
95
+ if ('disabled' in value && typeof value.disabled !== 'boolean')
96
+ return false;
97
+ if ('expanded' in value && typeof value.expanded !== 'boolean')
98
+ return false;
99
+ if ('checked' in value && typeof value.checked !== 'boolean' && value.checked !== 'mixed')
100
+ return false;
101
+ if ('selected' in value && typeof value.selected !== 'boolean')
102
+ return false;
103
+ if ('pressed' in value && typeof value.pressed !== 'boolean' && value.pressed !== 'mixed')
104
+ return false;
105
+ if ('current' in value && value.current !== true && !TARGET_CURRENT_VALUES.includes(value.current))
106
+ return false;
107
+ return true;
108
+ }
109
+ function isValidTargetLandmarkRole(value) {
110
+ return typeof value === 'string' && TARGET_LANDMARK_ROLES.includes(value);
111
+ }
112
+ /** Structural validator for TargetContainment: string arrays, no duplicates, and no target ID appearing in more than one of the three arrays. */
113
+ function isValidTargetContainment(value) {
114
+ if (!isPlainObject(value))
115
+ return false;
116
+ const isStringArray = (v) => Array.isArray(v) && v.every((entry) => typeof entry === 'string');
117
+ if (!isStringArray(value.containedByTargetIds) || !isStringArray(value.evaluatedTargetIds) || !isStringArray(value.unresolvedTargetIds))
118
+ return false;
119
+ const containedByTargetIds = value.containedByTargetIds;
120
+ const evaluatedTargetIds = value.evaluatedTargetIds;
121
+ const unresolvedTargetIds = value.unresolvedTargetIds;
122
+ const noDuplicates = (arr) => new Set(arr).size === arr.length;
123
+ if (!noDuplicates(containedByTargetIds) || !noDuplicates(evaluatedTargetIds) || !noDuplicates(unresolvedTargetIds))
124
+ return false;
125
+ if (!containedByTargetIds.every((id) => evaluatedTargetIds.includes(id)))
126
+ return false;
127
+ if (evaluatedTargetIds.some((id) => unresolvedTargetIds.includes(id)))
128
+ return false;
129
+ return true;
130
+ }
131
+ function isValidTargetGeometryValue(value) {
132
+ if (!isPlainObject(value))
133
+ return false;
134
+ return ['x', 'y', 'width', 'height', 'right', 'bottom'].every((key) => typeof value[key] === 'number');
135
+ }
136
+ /** Structural validator for the requestConfig-side scrollScenario shape (defense in depth alongside src/request/request.ts#normalizeRequest's own validation). */
137
+ function isValidRequestScrollAction(value) {
138
+ if (!isPlainObject(value))
139
+ return false;
140
+ const kind = value.kind;
141
+ const deltaOk = (d) => typeof d === 'number' && Number.isInteger(d) && Math.abs(d) <= SCROLL_DELTA_MAX_ABS;
142
+ if (kind === 'window-scroll-by') {
143
+ if (!deltaOk(value.deltaX) || !deltaOk(value.deltaY))
144
+ return false;
145
+ if (value.deltaX === 0 && value.deltaY === 0)
146
+ return false;
147
+ return Object.keys(value).length === 3;
148
+ }
149
+ if (kind === 'target-scroll-by') {
150
+ if (typeof value.target !== 'string' || value.target.length === 0)
151
+ return false;
152
+ if (!deltaOk(value.deltaX) || !deltaOk(value.deltaY))
153
+ return false;
154
+ if (value.deltaX === 0 && value.deltaY === 0)
155
+ return false;
156
+ return Object.keys(value).length === 4;
157
+ }
158
+ return false;
159
+ }
160
+ function isValidRequestScrollScenario(value) {
161
+ if (!isPlainObject(value))
162
+ return false;
163
+ if (Object.keys(value).length !== 1)
164
+ return false;
165
+ return isValidRequestScrollAction(value.action);
166
+ }
167
+ function isValidScrollableMetrics(value) {
168
+ if (!isPlainObject(value))
169
+ return false;
170
+ return ['scrollTop', 'scrollLeft', 'scrollWidth', 'scrollHeight', 'clientWidth', 'clientHeight'].every((key) => typeof value[key] === 'number');
171
+ }
172
+ function isValidOverflowEvidence(value) {
173
+ if (!isPlainObject(value))
174
+ return false;
175
+ return (typeof value.horizontalOverflow === 'boolean' &&
176
+ typeof value.verticalOverflow === 'boolean' &&
177
+ typeof value.overflowX === 'string' &&
178
+ typeof value.overflowY === 'string');
179
+ }
180
+ function isValidWindowScrollSnapshot(value) {
181
+ return isPlainObject(value) && typeof value.scrollX === 'number' && typeof value.scrollY === 'number';
182
+ }
183
+ function isValidDocumentScrollSnapshot(value) {
184
+ if (!isPlainObject(value))
185
+ return false;
186
+ if (!isValidScrollableMetrics(value.root))
187
+ return false;
188
+ if (!isValidOverflowEvidence(value.rootOverflow))
189
+ return false;
190
+ if ('documentElement' in value && value.documentElement !== undefined && !isValidScrollableMetrics(value.documentElement))
191
+ return false;
192
+ if ('body' in value && value.body !== undefined && !isValidScrollableMetrics(value.body))
193
+ return false;
194
+ return true;
195
+ }
196
+ const VERTICAL_VIEWPORT_RELATIONS = ['above', 'intersecting', 'below'];
197
+ function isValidViewportRelationEvidence(value) {
198
+ if (!isPlainObject(value))
199
+ return false;
200
+ if (!VERTICAL_VIEWPORT_RELATIONS.includes(value.vertical))
201
+ return false;
202
+ return typeof value.intersectsViewport === 'boolean' && typeof value.fullyWithinViewport === 'boolean';
203
+ }
204
+ /** Validates an EvidenceField's `.value` only when the field is available/partial - not applicable/unavailable fields carry no value to check. */
205
+ function isValidEvidenceFieldValue(field, validate) {
206
+ if (!isPlainObject(field))
207
+ return false;
208
+ if (field.state === 'available' || field.state === 'partial') {
209
+ return validate(field.value);
210
+ }
211
+ return true;
212
+ }
213
+ function isValidTargetScrollRuntimeState(value) {
214
+ if (!isPlainObject(value))
215
+ return false;
216
+ if (!isValidEvidenceField(value.metrics) || !isValidEvidenceFieldValue(value.metrics, isValidScrollableMetrics))
217
+ return false;
218
+ if (!isValidEvidenceField(value.overflow) || !isValidEvidenceFieldValue(value.overflow, isValidOverflowEvidence))
219
+ return false;
220
+ if (!isValidEvidenceField(value.boundingRect) || !isValidEvidenceFieldValue(value.boundingRect, isValidTargetGeometryValue))
221
+ return false;
222
+ if (!isValidEvidenceField(value.viewportRelation) || !isValidEvidenceFieldValue(value.viewportRelation, isValidViewportRelationEvidence))
223
+ return false;
224
+ return true;
225
+ }
226
+ function isValidScrollRuntimeSnapshot(value) {
227
+ if (!isPlainObject(value))
228
+ return false;
229
+ if (!isValidWindowScrollSnapshot(value.window))
230
+ return false;
231
+ if (!isValidDocumentScrollSnapshot(value.document))
232
+ return false;
233
+ if (!isPlainObject(value.targets))
234
+ return false;
235
+ return Object.values(value.targets).every((target) => isValidTargetScrollRuntimeState(target));
236
+ }
237
+ function isValidScrollValueChange(value, validateInner) {
238
+ if (!isPlainObject(value))
239
+ return false;
240
+ if (typeof value.changed !== 'boolean')
241
+ return false;
242
+ return validateInner(value.before) && validateInner(value.after);
243
+ }
244
+ function isValidTargetScrollTransition(value) {
245
+ if (!isPlainObject(value))
246
+ return false;
247
+ if (!isValidScrollValueChange(value.scrollTop, (v) => typeof v === 'number'))
248
+ return false;
249
+ if (!isValidScrollValueChange(value.scrollLeft, (v) => typeof v === 'number'))
250
+ return false;
251
+ if (!isValidScrollValueChange(value.boundingRectPosition, (v) => isPlainObject(v) && typeof v.x === 'number' && typeof v.y === 'number'))
252
+ return false;
253
+ if (!isValidScrollValueChange(value.viewportRelation, (v) => VERTICAL_VIEWPORT_RELATIONS.includes(v)))
254
+ return false;
255
+ if (typeof value.enteredViewport !== 'boolean' || typeof value.leftViewport !== 'boolean')
256
+ return false;
257
+ if (value.enteredViewport && value.leftViewport)
258
+ return false;
259
+ return true;
260
+ }
261
+ function isValidScrollScenarioTransition(value) {
262
+ if (!isPlainObject(value))
263
+ return false;
264
+ if (!isValidScrollValueChange(value.windowScrollX, (v) => typeof v === 'number'))
265
+ return false;
266
+ if (!isValidScrollValueChange(value.windowScrollY, (v) => typeof v === 'number'))
267
+ return false;
268
+ if (!isPlainObject(value.targets))
269
+ return false;
270
+ return Object.values(value.targets).every((target) => isValidTargetScrollTransition(target));
271
+ }
272
+ const SCROLL_OWNER_KINDS = ['document', 'target', 'none', 'indeterminate'];
273
+ function isValidScrollOwnerInterpretation(value) {
274
+ if (!isPlainObject(value))
275
+ return false;
276
+ const kind = value.kind;
277
+ if (!SCROLL_OWNER_KINDS.includes(kind))
278
+ return false;
279
+ if (kind === 'target')
280
+ return typeof value.target === 'string' && value.target.length > 0 && Object.keys(value).length === 2;
281
+ return Object.keys(value).length === 1;
282
+ }
283
+ /** 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). */
284
+ function isValidScrollScenarioEvidence(value) {
285
+ if (!isPlainObject(value))
286
+ return false;
287
+ if (!isValidScrollRuntimeSnapshot(value.initial))
288
+ return false;
289
+ if (!isValidScrollRuntimeSnapshot(value.final))
290
+ return false;
291
+ if (!isValidScrollScenarioTransition(value.transition))
292
+ return false;
293
+ if (!isValidEvidenceField(value.scrollOwner))
294
+ return false;
295
+ const scrollOwnerField = value.scrollOwner;
296
+ if (scrollOwnerField.state === 'available' || scrollOwnerField.state === 'partial') {
297
+ if (scrollOwnerField.source !== 'derived')
298
+ return false;
299
+ if (!isValidScrollOwnerInterpretation(scrollOwnerField.value))
300
+ return false;
301
+ }
302
+ return true;
303
+ }
304
+ function isValidDiagnostic(value) {
305
+ if (!isPlainObject(value))
306
+ return false;
307
+ const code = value.code;
308
+ if (typeof code !== 'string' || !DIAGNOSTIC_CODES.includes(code))
309
+ return false;
310
+ const expectedSeverity = DIAGNOSTIC_SEVERITY[code];
311
+ if (value.severity !== expectedSeverity)
312
+ return false;
313
+ if (typeof value.message !== 'string')
314
+ return false;
315
+ if ('targetName' in value && value.targetName !== undefined && typeof value.targetName !== 'string')
316
+ return false;
317
+ return true;
318
+ }
319
+ function isValidCompletionState(value) {
320
+ if (!isPlainObject(value))
321
+ return false;
322
+ const state = value.state;
323
+ if (state === 'complete') {
324
+ if (!('diagnostics' in value) || value.diagnostics === undefined)
325
+ return true;
326
+ return Array.isArray(value.diagnostics) && value.diagnostics.length === 0;
327
+ }
328
+ if (state === 'partial' || state === 'warning' || state === 'invalid-request' || state === 'fatal') {
329
+ return Array.isArray(value.diagnostics) && value.diagnostics.every((d) => isValidDiagnostic(d));
330
+ }
331
+ return false;
332
+ }
333
+ /** Structural validator for the frozen schema-1.2.0 ObservationArtifact contract. Treats `value` as arbitrary/unknown input. */
334
+ export function isValidObservationArtifact(value) {
335
+ if (!isPlainObject(value))
336
+ return { valid: false, reason: 'artifact must be an object' };
337
+ if (value.artifactKind !== ARTIFACT_KIND)
338
+ return { valid: false, reason: 'artifactKind mismatch' };
339
+ if (value.schemaVersion !== SCHEMA_VERSION)
340
+ return { valid: false, reason: 'schemaVersion mismatch' };
341
+ if (typeof value.observationId !== 'string' || value.observationId.length === 0) {
342
+ return { valid: false, reason: 'observationId must be a non-empty string' };
343
+ }
344
+ if (typeof value.requestId !== 'string' || value.requestId.length === 0) {
345
+ return { valid: false, reason: 'requestId must be a non-empty string' };
346
+ }
347
+ if (!isPlainObject(value.producer) ||
348
+ value.producer.name !== PRODUCER_NAME ||
349
+ typeof value.producer.version !== 'string' ||
350
+ value.producer.version.length === 0) {
351
+ return { valid: false, reason: 'producer must be { name: "my-frontend-observer", version: string }' };
352
+ }
353
+ if (!isValidEvidenceField(value.browser))
354
+ return { valid: false, reason: 'browser evidence field is invalid' };
355
+ if (!isPlainObject(value.pageEvidence) || !Object.values(value.pageEvidence).every((v) => isValidEvidenceField(v))) {
356
+ return { valid: false, reason: 'pageEvidence entries must be valid evidence fields' };
357
+ }
358
+ if (!isPlainObject(value.targetEvidence))
359
+ return { valid: false, reason: 'targetEvidence must be an object' };
360
+ for (const target of Object.values(value.targetEvidence)) {
361
+ if (!isPlainObject(target) ||
362
+ !isValidEvidenceField(target.resolution) ||
363
+ !isValidEvidenceField(target.tag) ||
364
+ !isValidEvidenceField(target.geometry) ||
365
+ !isValidEvidenceField(target.style) ||
366
+ !isValidEvidenceField(target.layout) ||
367
+ !isValidEvidenceField(target.visibility) ||
368
+ !isValidEvidenceField(target.semantics) ||
369
+ !isValidEvidenceField(target.semanticState) ||
370
+ !isValidEvidenceField(target.landmark) ||
371
+ !isValidEvidenceField(target.containment)) {
372
+ return {
373
+ valid: false,
374
+ reason: 'targetEvidence entries must have valid resolution/tag/geometry/style/layout/visibility/semantics/semanticState/landmark/containment evidence fields',
375
+ };
376
+ }
377
+ const resolutionField = target.resolution;
378
+ if (resolutionField.state === 'available' || resolutionField.state === 'partial') {
379
+ if (!isValidTargetResolutionValue(resolutionField.value)) {
380
+ return { valid: false, reason: 'targetEvidence resolution value must be a valid TargetResolution' };
381
+ }
382
+ }
383
+ const semanticStateField = target.semanticState;
384
+ if (semanticStateField.state === 'available' || semanticStateField.state === 'partial') {
385
+ if (!isValidTargetSemanticState(semanticStateField.value)) {
386
+ return { valid: false, reason: 'targetEvidence semanticState value must be a valid TargetSemanticState' };
387
+ }
388
+ }
389
+ const landmarkField = target.landmark;
390
+ if (landmarkField.state === 'available' || landmarkField.state === 'partial') {
391
+ if (!isValidTargetLandmarkRole(landmarkField.value)) {
392
+ return { valid: false, reason: 'targetEvidence landmark value must be a recognized landmark role' };
393
+ }
394
+ }
395
+ const containmentField = target.containment;
396
+ if (containmentField.state === 'available' || containmentField.state === 'partial') {
397
+ if (!isValidTargetContainment(containmentField.value)) {
398
+ return { valid: false, reason: 'targetEvidence containment value must be a valid TargetContainment' };
399
+ }
400
+ }
401
+ }
402
+ if (isPlainObject(value.requestConfig) && 'scrollScenario' in value.requestConfig && value.requestConfig.scrollScenario !== undefined) {
403
+ if (!isValidRequestScrollScenario(value.requestConfig.scrollScenario)) {
404
+ return { valid: false, reason: 'requestConfig.scrollScenario is invalid' };
405
+ }
406
+ }
407
+ if (isPlainObject(value.requestConfig) && 'explicitState' in value.requestConfig && value.requestConfig.explicitState !== undefined) {
408
+ if (!isValidExplicitStateDimensions(value.requestConfig.explicitState).valid) {
409
+ return { valid: false, reason: 'requestConfig.explicitState is invalid' };
410
+ }
411
+ }
412
+ if ('scrollScenarioEvidence' in value && value.scrollScenarioEvidence !== undefined) {
413
+ if (!isValidScrollScenarioEvidence(value.scrollScenarioEvidence)) {
414
+ return { valid: false, reason: 'scrollScenarioEvidence is invalid' };
415
+ }
416
+ }
417
+ if (!isValidEvidenceField(value.screenshot))
418
+ return { valid: false, reason: 'screenshot evidence field is invalid' };
419
+ if (!isValidCompletionState(value.completion))
420
+ return { valid: false, reason: 'completion state is invalid' };
421
+ if (!Array.isArray(value.diagnostics) || !value.diagnostics.every((d) => isValidDiagnostic(d))) {
422
+ return { valid: false, reason: 'diagnostics must be an array of valid Diagnostic values' };
423
+ }
424
+ if (isPlainObject(value.completion) && value.completion.state === 'complete' && value.diagnostics.length > 0) {
425
+ return { valid: false, reason: 'completion "complete" requires an empty diagnostics array' };
426
+ }
427
+ const limits = value.limits;
428
+ if (!isPlainObject(limits) ||
429
+ typeof limits.truncated !== 'boolean' ||
430
+ !Array.isArray(limits.omittedFields) ||
431
+ !limits.omittedFields.every((f) => typeof f === 'string') ||
432
+ !Array.isArray(limits.omittedTargets) ||
433
+ !limits.omittedTargets.every((f) => typeof f === 'string')) {
434
+ return { valid: false, reason: 'limits must be { truncated: boolean; omittedFields: string[]; omittedTargets: string[] }' };
435
+ }
436
+ if (!Array.isArray(value.artifactReferences) ||
437
+ !value.artifactReferences.every((r) => isPlainObject(r) && typeof r.path === 'string' && typeof r.kind === 'string')) {
438
+ return { valid: false, reason: 'artifactReferences must be an array of { path: string; kind: string }' };
439
+ }
440
+ return { valid: true };
441
+ }
442
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
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>;