@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,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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"}
@@ -0,0 +1,114 @@
1
+ export type { EvidenceState, EvidenceSource, EvidenceField } from './domain/evidence.js';
2
+ export { isValidEvidenceField, evidenceValue } from './domain/evidence.js';
3
+ export type { DiagnosticCode, DiagnosticSeverity, Diagnostic } from './domain/diagnostics.js';
4
+ export { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY, orderDiagnostics } from './domain/diagnostics.js';
5
+ export type { CompletionState, RequestPhase } from './domain/completion.js';
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, ScrollableMetrics, OverflowEvidence, WindowScrollSnapshot, DocumentScrollSnapshot, VerticalViewportRelation, ViewportRelationEvidence, TargetScrollRuntimeState, ScrollRuntimeSnapshot, ScrollValueChange, TargetScrollTransition, ScrollScenarioTransition, ScrollOwnerInterpretation, ScrollScenarioEvidence, } from './domain/schema.js';
8
+ export { ARTIFACT_KIND, SCHEMA_VERSION, PRODUCER_NAME, TARGET_LANDMARK_ROLES, getProducerInfo, isValidObservationArtifact, } from './domain/schema.js';
9
+ export { buildRequestIdentity, buildObservationIdentity } from './domain/identity.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
+ export type { NormalizeOutputLocationResult } from './request/paths.js';
13
+ export { normalizeOutputLocation } from './request/paths.js';
14
+ export type { SafetyDecision } from './safety/policy.js';
15
+ export { classifyUrl, classifyRedirect, classifySubresource, classifyPopup, classifyDownload } from './safety/policy.js';
16
+ export type { BrowserCaptureResult, BrowserProvenance } from './browser/types.js';
17
+ export { runBrowserCapture } from './application/browserCaptureService.js';
18
+ export type { PersistedObservationResult } from './artifacts/types.js';
19
+ export { MANIFEST_FILENAME, SCREENSHOT_FILENAME } from './artifacts/artifactWriter.js';
20
+ export type { ApplicationObservationResult } from './application/observationPersistence.js';
21
+ export { buildObservationArtifact, persistBrowserCapture, observe } from './application/observationPersistence.js';
22
+ export type { HorizontalOrderRelationship, VerticalOrderRelationship, AreaOverlapRelationship, RelativeWidthRelationship, GeometricFitRelationship, VerticalSequenceRelationship, PageWidthRelationship, PairwiseRelationshipKind, PageLevelRelationshipKind, EvidenceReference, PairwiseLayoutRelationship, PageLevelLayoutRelationship, UnresolvedTargetReason, UnresolvedRelationshipTarget, LayoutRelationshipGraph, ClippingState, ClippingOverflowStyle, TargetClippingEvidence, DeriveLayoutRelationshipsOptions, DeriveLayoutRelationshipsResult, } from './domain/relationships.js';
23
+ export { HORIZONTAL_ORDER_RELATIONSHIPS, VERTICAL_ORDER_RELATIONSHIPS, AREA_OVERLAP_RELATIONSHIPS, RELATIVE_WIDTH_RELATIONSHIPS, GEOMETRIC_FIT_RELATIONSHIPS, VERTICAL_SEQUENCE_RELATIONSHIPS, PAGE_WIDTH_RELATIONSHIPS, PAIRWISE_RELATIONSHIP_KINDS, PAGE_LEVEL_RELATIONSHIP_KINDS, MAX_CONFIGURED_TARGETS_FOR_RELATIONSHIPS, MAX_PAIRWISE_RELATIONSHIP_PAIRS, PAIRWISE_RELATIONSHIP_FAMILY_COUNT, MAX_PAIRWISE_RELATIONSHIP_RECORDS, CLIPPING_STATES, CLIPPING_OVERFLOW_STYLES, isValidEvidenceReference, isValidPairwiseLayoutRelationship, isValidPageLevelLayoutRelationship, isValidUnresolvedRelationshipTarget, isValidLayoutRelationshipGraph, isValidTargetClippingEvidence, deriveTargetClipping, deriveLayoutRelationships, } from './domain/relationships.js';
24
+ export type { DependencyProperty, DependencyDirection, ExpectedDependencySource, DependencyTermDeclaration, ExpectedDependencyDeclaration, DependencyEvidenceOutcome, ExpectedDependencyEvidence, ComparisonConfig, ComparabilityState, ComparabilityReasonCode, ComparabilityReasonSeverity, ComparabilityReason, ComparabilityResult, TargetConfigurationChangeKind, TargetConfigurationChange, DifferenceKind, ComparisonDifferenceSubject, ComparisonDifference, RelationshipChangeRecord, ComparisonSourceObservationReference, ComparisonArtifact, ComparisonSchemaValidationResult, } from './domain/comparison.js';
25
+ export { COMPARISON_ARTIFACT_KIND, COMPARISON_SCHEMA_VERSION, GEOMETRY_TOLERANCE_DEFAULT_PX, GEOMETRY_TOLERANCE_MIN_PX, GEOMETRY_TOLERANCE_MAX_PX, isValidGeometryTolerancePx, DEPENDENCY_PROPERTIES, DEPENDENCY_DIRECTIONS, EXPECTED_DEPENDENCY_SOURCES, isValidExpectedDependencyDeclaration, DEPENDENCY_EVIDENCE_OUTCOMES, isValidExpectedDependencyEvidence, isValidComparisonConfig, COMPARABILITY_STATES, COMPARABILITY_REASON_CODES, COMPARABILITY_REASON_SEVERITY, isValidComparabilityResult, TARGET_CONFIGURATION_CHANGE_KINDS, isValidTargetConfigurationChange, DIFFERENCE_KINDS, isValidComparisonDifference, isValidComparisonSourceObservationReference, isValidComparisonArtifact, } from './domain/comparison.js';
26
+ export { buildComparisonRequestIdentity, buildComparisonIdentity } from './domain/comparisonIdentity.js';
27
+ export type { AuthoredChangeScopeCategory, ChangeScopeClassification, ExpectedDependentMode, ContractTolerance, ContractPrimitiveKind, ContractPrimitive, FrontendContractClauseBase, BaselineClause, PerChangeClause, FrontendContractObservationReference, PersistentBaselineContract, FrontendContractValidationResult, PerChangeContract, ClauseResultStatus, ClauseEvaluationResult, OverallVerdict, } from './domain/frontendContracts.js';
28
+ export { CONTRACT_ARTIFACT_KIND, CONTRACT_SCHEMA_VERSION, AUTHORED_CHANGE_SCOPE_CATEGORIES, isAuthoredChangeScopeCategory, CHANGE_SCOPE_CLASSIFICATIONS, EXPECTED_DEPENDENT_MODES, isValidExpectedDependentMode, CONTRACT_TOLERANCE_ABSOLUTE_PX_MIN, CONTRACT_TOLERANCE_ABSOLUTE_PX_MAX, CONTRACT_TOLERANCE_PERCENT_MIN, CONTRACT_TOLERANCE_PERCENT_MAX, isValidContractTolerance, CONTRACT_PRIMITIVE_KINDS, isValidContractPrimitive, isValidBaselineClause, isValidPerChangeClause, isValidFrontendContractObservationReference, isValidPersistentBaselineContract, isValidPerChangeContract, CLAUSE_RESULT_STATUSES, isValidClauseEvaluationResult, OVERALL_VERDICTS, } from './domain/frontendContracts.js';
29
+ export { buildFrontendContractRequestIdentity, buildFrontendContractInstanceIdentity, buildClauseIdentity } from './domain/frontendContractIdentity.js';
30
+ export type { FrontendContractEvaluationInput, UnexpectedChangeResult, FrontendContractEvaluationResult, EvaluateFrontendContractResult } from './domain/frontendContractEvaluation.js';
31
+ export { evaluateFrontendContract } from './domain/frontendContractEvaluation.js';
32
+ export { buildFrontendContractEvaluationRequestIdentity } from './domain/frontendContractIdentity.js';
33
+ export type { FrontendContractEvaluationSourceReference, FrontendContractEvaluationArtifact, FrontendContractEvaluationArtifactValidationResult, BuildFrontendContractEvaluationArtifactInput, } from './domain/frontendContractEvaluationArtifact.js';
34
+ export { EVALUATION_ARTIFACT_KIND, EVALUATION_SCHEMA_VERSION, isValidFrontendContractEvaluationArtifact, buildFrontendContractEvaluationArtifact, } from './domain/frontendContractEvaluationArtifact.js';
35
+ export type { PersistedFrontendContractResult, WriteFrontendContractArtifactOptions } from './artifacts/frontendContractArtifactWriter.js';
36
+ export { FRONTEND_CONTRACT_MANIFEST_FILENAME, writePersistentBaselineContract, writePerChangeContract } from './artifacts/frontendContractArtifactWriter.js';
37
+ export type { ReadPersistentBaselineContractResult, ReadPerChangeContractResult } from './artifacts/frontendContractArtifactReader.js';
38
+ export { readPersistentBaselineContract, readPerChangeContract } from './artifacts/frontendContractArtifactReader.js';
39
+ export type { ReadComparisonArtifactResult } from './artifacts/comparisonArtifactReader.js';
40
+ export { readComparisonArtifact } from './artifacts/comparisonArtifactReader.js';
41
+ export type { PersistedFrontendContractEvaluationResult, WriteFrontendContractEvaluationArtifactOptions } from './artifacts/frontendContractEvaluationArtifactWriter.js';
42
+ export { EVALUATION_MANIFEST_FILENAME, writeFrontendContractEvaluationArtifact } from './artifacts/frontendContractEvaluationArtifactWriter.js';
43
+ export type { ReadFrontendContractEvaluationArtifactResult } from './artifacts/frontendContractEvaluationArtifactReader.js';
44
+ export { readFrontendContractEvaluationArtifact } from './artifacts/frontendContractEvaluationArtifactReader.js';
45
+ export type { EvaluateAndPersistOptions, ApplicationFrontendContractEvaluationResult } from './application/frontendContractEvaluationService.js';
46
+ export { DEFAULT_EVALUATION_OUTPUT_LOCATION, evaluateAndPersist, evaluateAndPersistFromArtifactRoots } from './application/frontendContractEvaluationService.js';
47
+ export type { PersistFrontendContractOptions, ApplicationApproveBaselineResult, ApplicationPersistChangeContractResult } from './application/frontendContractPersistenceService.js';
48
+ export { approveAndPersistBaseline, persistPerChangeContract } from './application/frontendContractPersistenceService.js';
49
+ export type { CompareObservationsResult, TargetPresence } from './domain/comparisonEngine.js';
50
+ export { compareObservations, evaluateComparability, evaluateExpectedDependencies, compareTargetConfiguration, assessOptionalComparabilityDimension, targetPresence, } from './domain/comparisonEngine.js';
51
+ export type { ProjectionProfile, AdequacyState, AdequacyReasonCode, AdequacyReason, Adequacy, OmissionReason, OmissionRecord, TruncationRecord, BoundedAgentContextSourceReferences, BoundedRuntimeTargetProjection, CorrelationStatus, StaticCandidateKind, StaticEvidenceProducerIdentity, StaticCandidateReference, RuntimeStaticCorrelationRecord, BoundedAgentContextArtifact, BoundedAgentContextValidationResult, BoundedReferenceFidelityProjection, } from './domain/boundedAgentContext.js';
52
+ export { BOUNDED_AGENT_CONTEXT_ARTIFACT_KIND, BOUNDED_AGENT_CONTEXT_SCHEMA_VERSION, PROJECTION_PROFILES, MAX_RUNTIME_TARGETS, MAX_RELATIONSHIP_EVIDENCE_PER_TARGET, MAX_OMISSIONS, MAX_TRUNCATIONS, MAX_CORRELATION_RECORDS, MAX_STATIC_CANDIDATES_PER_TARGET, MAX_TEXT_SUMMARY_CHARS, MAX_EVIDENCE_REFS_PER_CORRELATION_FIELD, MAX_FIDELITY_MISMATCHES, MAX_FIDELITY_PROTECTED_CONTEXT, ADEQUACY_STATES, ADEQUACY_REASON_CODES, OMISSION_REASONS, CORRELATION_STATUSES, STATIC_CANDIDATE_KINDS, isValidBoundedAgentContextArtifact, isValidBoundedReferenceFidelityProjection, } from './domain/boundedAgentContext.js';
53
+ export { buildBoundedAgentContextRequestIdentity, buildBoundedAgentContextInstanceIdentity } from './domain/boundedAgentContextIdentity.js';
54
+ export type { ProjectBoundedAgentContextInput, ProjectBoundedAgentContextResult } from './domain/boundedAgentContextProjection.js';
55
+ export { projectBoundedAgentContext } from './domain/boundedAgentContextProjection.js';
56
+ export type { ProjectReferenceFidelityOptions, ProjectReferenceFidelityOutput } from './domain/referenceFidelityProjection.js';
57
+ export { projectReferenceFidelity } from './domain/referenceFidelityProjection.js';
58
+ export type { StaticCandidateEvidenceInput, CorrelationTargetInput, DeriveRuntimeStaticCorrelationsInput, DeriveRuntimeStaticCorrelationsOutput, DeriveRuntimeStaticCorrelationsResult, AttachRuntimeStaticCorrelationsResult, } from './domain/boundedAgentContextCorrelation.js';
59
+ export { deriveRuntimeStaticCorrelations, attachRuntimeStaticCorrelations } from './domain/boundedAgentContextCorrelation.js';
60
+ export type { PersistedComparisonResult, WriteComparisonArtifactOptions } from './artifacts/comparisonArtifactWriter.js';
61
+ export { COMPARISON_MANIFEST_FILENAME, writeComparisonArtifact } from './artifacts/comparisonArtifactWriter.js';
62
+ export type { ReadObservationArtifactResult } from './artifacts/artifactReader.js';
63
+ export { readObservationArtifact } from './artifacts/artifactReader.js';
64
+ export type { CompareAndPersistOptions, ApplicationComparisonResult } from './application/comparisonService.js';
65
+ export { DEFAULT_COMPARISON_OUTPUT_LOCATION, compareAndPersist, compareAndPersistFromArtifactRoots } from './application/comparisonService.js';
66
+ export type { ExternalReferenceImageFormat, ImageDimensions } from './domain/externalReferenceImage.js';
67
+ export { EXTERNAL_REFERENCE_SUPPORTED_IMAGE_FORMATS, isExternalReferenceImageFormat, EXTERNAL_REFERENCE_MAX_IMAGE_BYTES, EXTERNAL_REFERENCE_MIN_DIMENSION_PX, EXTERNAL_REFERENCE_MAX_DIMENSION_PX, detectExternalReferenceImageFormat, readExternalReferenceImageDimensions, isValidExternalReferenceImageDimensions, fileExtensionForFormat, } from './domain/externalReferenceImage.js';
68
+ export type { ExternalReferenceImageReference, ExternalReferenceSourceReference, ExternalReferenceLifecycleState, ExternalReferenceProvenance, ImportedExternalReferenceArtifact, ApprovedExternalReferenceArtifact, ExternalReferenceArtifact, ExternalReferenceValidationResult, } from './domain/externalReference.js';
69
+ export { EXTERNAL_REFERENCE_ARTIFACT_KIND, EXTERNAL_REFERENCE_SCHEMA_VERSION, isValidExternalReferenceImageReference, isValidExternalReferenceSourceReference, isValidExternalReferenceLifecycleState, isValidExternalReferenceProvenance, isValidExternalReferenceArtifact, isImportedExternalReferenceArtifact, isApprovedExternalReferenceArtifact, } from './domain/externalReference.js';
70
+ export { buildExternalReferenceRequestIdentity, buildExternalReferenceInstanceIdentity } from './domain/externalReferenceIdentity.js';
71
+ export type { PersistedExternalReferenceResult, WriteExternalReferenceArtifactOptions } from './artifacts/externalReferenceArtifactWriter.js';
72
+ export { EXTERNAL_REFERENCE_MANIFEST_FILENAME, writeExternalReferenceArtifact } from './artifacts/externalReferenceArtifactWriter.js';
73
+ export type { ReadExternalReferenceArtifactResult } from './artifacts/externalReferenceArtifactReader.js';
74
+ export { readExternalReferenceArtifact } from './artifacts/externalReferenceArtifactReader.js';
75
+ export type { ImportExternalReferenceOptions, ApproveExternalReferenceOptions, ApplicationImportExternalReferenceResult, ApplicationApproveExternalReferenceResult, } from './application/externalReferencePersistenceService.js';
76
+ export { importExternalReference, approveExternalReference } from './application/externalReferencePersistenceService.js';
77
+ export type { ReferenceRegionRectangle, ReferenceRegion, ReferenceRegionGeometry, ReferenceRegionValidationResult } from './domain/externalReferenceRegions.js';
78
+ export { REFERENCE_REGION_ID_PATTERN, MAX_REFERENCE_REGIONS, deriveReferenceRegionGeometry, isValidReferenceRegionRectangle, isValidReferenceRegion, isValidReferenceRegions, } from './domain/externalReferenceRegions.js';
79
+ export type { ReferenceRegionRelationship, ReferenceRegionRelationshipGraph, DeriveReferenceRegionRelationshipsOptions, DeriveReferenceRegionRelationshipsResult, } from './domain/externalReferenceRegionRelationships.js';
80
+ export { MAX_REFERENCE_REGION_PAIRS, REFERENCE_REGION_RELATIONSHIP_FAMILY_COUNT, MAX_REFERENCE_REGION_RELATIONSHIP_RECORDS, isValidReferenceRegionRelationship, isValidReferenceRegionRelationshipGraph, deriveReferenceRegionRelationships, } from './domain/externalReferenceRegionRelationships.js';
81
+ export { buildReferenceRequirementIdentity } from './domain/externalReferenceRequirementIdentity.js';
82
+ export type { ReferenceRequirementRegionProperty, ReferenceRequirementMeasurement, ReferenceRequirementTolerance, RegionPropertyRequirementSubject, RegionRelationshipRequirementSubject, RegionMeasurementRequirementSubject, ReferenceRequirementSubject, RawReferenceRequirement, ExternalReferenceRequirement, ReferenceRequirementValidationResult, ReferenceRequirementExpectation, ReferenceRequirementAdequacyState, ReferenceRequirementAdequacyReasonCode, ReferenceRequirementAdequacyReason, ReferenceRequirementAdequacy, } from './domain/externalReferenceRequirements.js';
83
+ export { MAX_REFERENCE_REQUIREMENTS, REFERENCE_REQUIREMENT_REGION_PROPERTIES, isReferenceRequirementRegionProperty, REFERENCE_REQUIREMENT_MEASUREMENTS, isReferenceRequirementMeasurement, deriveReferenceRequirementMeasurement, REFERENCE_REQUIREMENT_TOLERANCE_ABSOLUTE_PX_MIN, REFERENCE_REQUIREMENT_TOLERANCE_ABSOLUTE_PX_MAX, REFERENCE_REQUIREMENT_TOLERANCE_PERCENT_MIN, REFERENCE_REQUIREMENT_TOLERANCE_PERCENT_MAX, isValidReferenceRequirementTolerance, isValidReferenceRequirementSubjectShape, isValidRawReferenceRequirement, buildReferenceRequirement, isValidReferenceRequirementShape, isValidReferenceRequirements, deriveReferenceRequirementExpectation, REFERENCE_REQUIREMENT_ADEQUACY_STATES, REFERENCE_REQUIREMENT_ADEQUACY_REASON_CODES, deriveReferenceRequirementAdequacy, isValidReferenceRequirementAdequacy, } from './domain/externalReferenceRequirements.js';
84
+ export type { AuthenticatedState, ExplicitStateDimensions, ExplicitStateValidationResult } from './domain/explicitState.js';
85
+ export { STATE_LABEL_PATTERN, AUTHENTICATED_STATE_VALUES, isValidStateLabel, isValidAuthenticatedState, isValidExplicitStateDimensions, } from './domain/explicitState.js';
86
+ export type { ApplicableViewport, ExternalReferenceApplicability, ApplicabilityValidationResult } from './domain/externalReferenceApplicability.js';
87
+ export { APPLICABLE_VIEWPORT_MIN, APPLICABLE_VIEWPORT_MAX, isValidApplicableViewport, isValidExternalReferenceApplicability, } from './domain/externalReferenceApplicability.js';
88
+ export type { ReferenceCandidateCompatibilityResult } from './domain/externalReferenceCompatibility.js';
89
+ export { evaluateReferenceCandidateCompatibility } from './domain/externalReferenceCompatibility.js';
90
+ export type { ReferenceRuntimeBindingStatus, ReferenceRuntimeBindingReasonCode, ReferenceRuntimeBindingDeclaration, ReferenceRuntimeBindingValidationResult, ReferenceRuntimeBindingResult, ReferenceRuntimeBindingEvaluation, EvaluateReferenceRuntimeBindingsResult, } from './domain/externalReferenceRuntimeBinding.js';
91
+ export { RUNTIME_TARGET_NAME_PATTERN, MAX_REFERENCE_RUNTIME_BINDINGS, REFERENCE_RUNTIME_BINDING_STATUSES, REFERENCE_RUNTIME_BINDING_REASON_CODES, isValidReferenceRuntimeBindingDeclarations, evaluateReferenceRuntimeBindings, } from './domain/externalReferenceRuntimeBinding.js';
92
+ export type { ReferenceRequirementFidelityStatus, ReferenceRequirementFidelityReasonCode, ReferenceRequirementFidelityResult, ReferenceFidelityState, ReferenceFidelityBlockReason, ReferenceCandidateFidelityEvaluation, EvaluateReferenceCandidateFidelityResult, EvaluateReferenceCandidateFidelityOptions, } from './domain/externalReferenceFidelity.js';
93
+ export { REFERENCE_REQUIREMENT_FIDELITY_STATUSES, REFERENCE_REQUIREMENT_FIDELITY_REASON_CODES, REFERENCE_FIDELITY_STATES, REFERENCE_FIDELITY_BLOCK_REASONS, evaluateReferenceCandidateFidelity, isValidReferenceRequirementFidelityResult, } from './domain/externalReferenceFidelity.js';
94
+ export type { EvaluateReferenceFidelityOptions, ApplicationReferenceFidelityResult } from './application/referenceFidelityEvaluationService.js';
95
+ export { evaluateReferenceCandidateFidelityFromArtifactRoots } from './application/referenceFidelityEvaluationService.js';
96
+ export { buildReferenceCorrectionReviewIdentity, buildReferenceCorrectionAttemptIdentity } from './domain/referenceCorrectionIdentity.js';
97
+ export { DEFAULT_VIEWER_PORT, VIEWER_HOST, isValidViewerPort } from './viewerServer/port.js';
98
+ export type { StartViewerOptions, StartViewerResult, ViewerAliasMetadata } from './viewerServer/viewerService.js';
99
+ export { startViewer, defaultViewerAssetsRoot } from './viewerServer/viewerService.js';
100
+ export type { FrontendObserverProjectConfig, ProjectConfigReadResult } from './projectWorkflow/projectConfig.js';
101
+ export { PROJECT_CONFIG_FILENAME, PROJECT_CONFIG_SCHEMA_VERSION, OBSERVATION_ALIAS_PATTERN, validateObservationAlias, validateProjectConfig, readProjectConfig } from './projectWorkflow/projectConfig.js';
102
+ export type { DiscoverProjectResult } from './projectWorkflow/projectDiscovery.js';
103
+ export { discoverFrontendObserverProject } from './projectWorkflow/projectDiscovery.js';
104
+ export type { AliasCatalog, AliasCatalogReadResult, ObservationAliasRecord } from './projectWorkflow/aliasCatalog.js';
105
+ export { ALIAS_CATALOG_SCHEMA_VERSION, readAliasCatalog, serializeAliasCatalog, validateAliasCatalog, writeAliasCatalog } from './projectWorkflow/aliasCatalog.js';
106
+ export { projectConfigPath, projectStateRoot, aliasCatalogPath, projectEvidenceRoot, projectObservationsRoot, observationOutputLocation } from './projectWorkflow/projectPaths.js';
107
+ export type { CaptureNamedObservationInput, CaptureNamedObservationResult, InitializeProjectInput, ProjectWorkflowErrorCode } from './application/projectWorkflowService.js';
108
+ export { initializeFrontendObserverProject, captureNamedObservation, loadProjectViewerState } from './application/projectWorkflowService.js';
109
+ export type { CheckWorkflowStatus, CheckWorkflowResult } from './projectWorkflow/checkResult.js';
110
+ export { CHECK_RESULT_SCHEMA_VERSION, CHECK_WORKFLOW_STATUSES } from './projectWorkflow/checkResult.js';
111
+ export { checkProject } from './application/projectCheckService.js';
112
+ export { VIEWER_PROTOCOL_VERSION } from './viewerServer/httpServer.js';
113
+ export type { PrepareReferenceCorrectionInput, PrepareReferenceCorrectionStatus, ReferenceCorrectionHandoff, PrepareReferenceCorrectionResult, ReferenceCorrectionOverallState, ReviewReferenceCorrectionAttemptInput, ReferenceCorrectionAttemptResult, ReviewReferenceCorrectionAttemptResult, } from './domain/referenceCorrectionWorkflow.js';
114
+ export { REFERENCE_CORRECTION_OVERALL_STATES, prepareReferenceCorrection, reviewReferenceCorrectionAttempt } from './domain/referenceCorrectionWorkflow.js';
package/dist/index.js ADDED
@@ -0,0 +1,64 @@
1
+ export { isValidEvidenceField, evidenceValue } from './domain/evidence.js';
2
+ export { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY, orderDiagnostics } from './domain/diagnostics.js';
3
+ export { deriveCompletion } from './domain/completion.js';
4
+ export { ARTIFACT_KIND, SCHEMA_VERSION, PRODUCER_NAME, TARGET_LANDMARK_ROLES, getProducerInfo, isValidObservationArtifact, } from './domain/schema.js';
5
+ export { buildRequestIdentity, buildObservationIdentity } from './domain/identity.js';
6
+ export { normalizeRequest, SCROLL_DELTA_MAX_ABS } from './request/request.js';
7
+ export { normalizeOutputLocation } from './request/paths.js';
8
+ export { classifyUrl, classifyRedirect, classifySubresource, classifyPopup, classifyDownload } from './safety/policy.js';
9
+ export { runBrowserCapture } from './application/browserCaptureService.js';
10
+ export { MANIFEST_FILENAME, SCREENSHOT_FILENAME } from './artifacts/artifactWriter.js';
11
+ export { buildObservationArtifact, persistBrowserCapture, observe } from './application/observationPersistence.js';
12
+ export { HORIZONTAL_ORDER_RELATIONSHIPS, VERTICAL_ORDER_RELATIONSHIPS, AREA_OVERLAP_RELATIONSHIPS, RELATIVE_WIDTH_RELATIONSHIPS, GEOMETRIC_FIT_RELATIONSHIPS, VERTICAL_SEQUENCE_RELATIONSHIPS, PAGE_WIDTH_RELATIONSHIPS, PAIRWISE_RELATIONSHIP_KINDS, PAGE_LEVEL_RELATIONSHIP_KINDS, MAX_CONFIGURED_TARGETS_FOR_RELATIONSHIPS, MAX_PAIRWISE_RELATIONSHIP_PAIRS, PAIRWISE_RELATIONSHIP_FAMILY_COUNT, MAX_PAIRWISE_RELATIONSHIP_RECORDS, CLIPPING_STATES, CLIPPING_OVERFLOW_STYLES, isValidEvidenceReference, isValidPairwiseLayoutRelationship, isValidPageLevelLayoutRelationship, isValidUnresolvedRelationshipTarget, isValidLayoutRelationshipGraph, isValidTargetClippingEvidence, deriveTargetClipping, deriveLayoutRelationships, } from './domain/relationships.js';
13
+ export { COMPARISON_ARTIFACT_KIND, COMPARISON_SCHEMA_VERSION, GEOMETRY_TOLERANCE_DEFAULT_PX, GEOMETRY_TOLERANCE_MIN_PX, GEOMETRY_TOLERANCE_MAX_PX, isValidGeometryTolerancePx, DEPENDENCY_PROPERTIES, DEPENDENCY_DIRECTIONS, EXPECTED_DEPENDENCY_SOURCES, isValidExpectedDependencyDeclaration, DEPENDENCY_EVIDENCE_OUTCOMES, isValidExpectedDependencyEvidence, isValidComparisonConfig, COMPARABILITY_STATES, COMPARABILITY_REASON_CODES, COMPARABILITY_REASON_SEVERITY, isValidComparabilityResult, TARGET_CONFIGURATION_CHANGE_KINDS, isValidTargetConfigurationChange, DIFFERENCE_KINDS, isValidComparisonDifference, isValidComparisonSourceObservationReference, isValidComparisonArtifact, } from './domain/comparison.js';
14
+ export { buildComparisonRequestIdentity, buildComparisonIdentity } from './domain/comparisonIdentity.js';
15
+ export { CONTRACT_ARTIFACT_KIND, CONTRACT_SCHEMA_VERSION, AUTHORED_CHANGE_SCOPE_CATEGORIES, isAuthoredChangeScopeCategory, CHANGE_SCOPE_CLASSIFICATIONS, EXPECTED_DEPENDENT_MODES, isValidExpectedDependentMode, CONTRACT_TOLERANCE_ABSOLUTE_PX_MIN, CONTRACT_TOLERANCE_ABSOLUTE_PX_MAX, CONTRACT_TOLERANCE_PERCENT_MIN, CONTRACT_TOLERANCE_PERCENT_MAX, isValidContractTolerance, CONTRACT_PRIMITIVE_KINDS, isValidContractPrimitive, isValidBaselineClause, isValidPerChangeClause, isValidFrontendContractObservationReference, isValidPersistentBaselineContract, isValidPerChangeContract, CLAUSE_RESULT_STATUSES, isValidClauseEvaluationResult, OVERALL_VERDICTS, } from './domain/frontendContracts.js';
16
+ export { buildFrontendContractRequestIdentity, buildFrontendContractInstanceIdentity, buildClauseIdentity } from './domain/frontendContractIdentity.js';
17
+ export { evaluateFrontendContract } from './domain/frontendContractEvaluation.js';
18
+ export { buildFrontendContractEvaluationRequestIdentity } from './domain/frontendContractIdentity.js';
19
+ export { EVALUATION_ARTIFACT_KIND, EVALUATION_SCHEMA_VERSION, isValidFrontendContractEvaluationArtifact, buildFrontendContractEvaluationArtifact, } from './domain/frontendContractEvaluationArtifact.js';
20
+ export { FRONTEND_CONTRACT_MANIFEST_FILENAME, writePersistentBaselineContract, writePerChangeContract } from './artifacts/frontendContractArtifactWriter.js';
21
+ export { readPersistentBaselineContract, readPerChangeContract } from './artifacts/frontendContractArtifactReader.js';
22
+ export { readComparisonArtifact } from './artifacts/comparisonArtifactReader.js';
23
+ export { EVALUATION_MANIFEST_FILENAME, writeFrontendContractEvaluationArtifact } from './artifacts/frontendContractEvaluationArtifactWriter.js';
24
+ export { readFrontendContractEvaluationArtifact } from './artifacts/frontendContractEvaluationArtifactReader.js';
25
+ export { DEFAULT_EVALUATION_OUTPUT_LOCATION, evaluateAndPersist, evaluateAndPersistFromArtifactRoots } from './application/frontendContractEvaluationService.js';
26
+ export { approveAndPersistBaseline, persistPerChangeContract } from './application/frontendContractPersistenceService.js';
27
+ export { compareObservations, evaluateComparability, evaluateExpectedDependencies, compareTargetConfiguration, assessOptionalComparabilityDimension, targetPresence, } from './domain/comparisonEngine.js';
28
+ export { BOUNDED_AGENT_CONTEXT_ARTIFACT_KIND, BOUNDED_AGENT_CONTEXT_SCHEMA_VERSION, PROJECTION_PROFILES, MAX_RUNTIME_TARGETS, MAX_RELATIONSHIP_EVIDENCE_PER_TARGET, MAX_OMISSIONS, MAX_TRUNCATIONS, MAX_CORRELATION_RECORDS, MAX_STATIC_CANDIDATES_PER_TARGET, MAX_TEXT_SUMMARY_CHARS, MAX_EVIDENCE_REFS_PER_CORRELATION_FIELD, MAX_FIDELITY_MISMATCHES, MAX_FIDELITY_PROTECTED_CONTEXT, ADEQUACY_STATES, ADEQUACY_REASON_CODES, OMISSION_REASONS, CORRELATION_STATUSES, STATIC_CANDIDATE_KINDS, isValidBoundedAgentContextArtifact, isValidBoundedReferenceFidelityProjection, } from './domain/boundedAgentContext.js';
29
+ export { buildBoundedAgentContextRequestIdentity, buildBoundedAgentContextInstanceIdentity } from './domain/boundedAgentContextIdentity.js';
30
+ export { projectBoundedAgentContext } from './domain/boundedAgentContextProjection.js';
31
+ export { projectReferenceFidelity } from './domain/referenceFidelityProjection.js';
32
+ export { deriveRuntimeStaticCorrelations, attachRuntimeStaticCorrelations } from './domain/boundedAgentContextCorrelation.js';
33
+ export { COMPARISON_MANIFEST_FILENAME, writeComparisonArtifact } from './artifacts/comparisonArtifactWriter.js';
34
+ export { readObservationArtifact } from './artifacts/artifactReader.js';
35
+ export { DEFAULT_COMPARISON_OUTPUT_LOCATION, compareAndPersist, compareAndPersistFromArtifactRoots } from './application/comparisonService.js';
36
+ export { EXTERNAL_REFERENCE_SUPPORTED_IMAGE_FORMATS, isExternalReferenceImageFormat, EXTERNAL_REFERENCE_MAX_IMAGE_BYTES, EXTERNAL_REFERENCE_MIN_DIMENSION_PX, EXTERNAL_REFERENCE_MAX_DIMENSION_PX, detectExternalReferenceImageFormat, readExternalReferenceImageDimensions, isValidExternalReferenceImageDimensions, fileExtensionForFormat, } from './domain/externalReferenceImage.js';
37
+ export { EXTERNAL_REFERENCE_ARTIFACT_KIND, EXTERNAL_REFERENCE_SCHEMA_VERSION, isValidExternalReferenceImageReference, isValidExternalReferenceSourceReference, isValidExternalReferenceLifecycleState, isValidExternalReferenceProvenance, isValidExternalReferenceArtifact, isImportedExternalReferenceArtifact, isApprovedExternalReferenceArtifact, } from './domain/externalReference.js';
38
+ export { buildExternalReferenceRequestIdentity, buildExternalReferenceInstanceIdentity } from './domain/externalReferenceIdentity.js';
39
+ export { EXTERNAL_REFERENCE_MANIFEST_FILENAME, writeExternalReferenceArtifact } from './artifacts/externalReferenceArtifactWriter.js';
40
+ export { readExternalReferenceArtifact } from './artifacts/externalReferenceArtifactReader.js';
41
+ export { importExternalReference, approveExternalReference } from './application/externalReferencePersistenceService.js';
42
+ export { REFERENCE_REGION_ID_PATTERN, MAX_REFERENCE_REGIONS, deriveReferenceRegionGeometry, isValidReferenceRegionRectangle, isValidReferenceRegion, isValidReferenceRegions, } from './domain/externalReferenceRegions.js';
43
+ export { MAX_REFERENCE_REGION_PAIRS, REFERENCE_REGION_RELATIONSHIP_FAMILY_COUNT, MAX_REFERENCE_REGION_RELATIONSHIP_RECORDS, isValidReferenceRegionRelationship, isValidReferenceRegionRelationshipGraph, deriveReferenceRegionRelationships, } from './domain/externalReferenceRegionRelationships.js';
44
+ export { buildReferenceRequirementIdentity } from './domain/externalReferenceRequirementIdentity.js';
45
+ export { MAX_REFERENCE_REQUIREMENTS, REFERENCE_REQUIREMENT_REGION_PROPERTIES, isReferenceRequirementRegionProperty, REFERENCE_REQUIREMENT_MEASUREMENTS, isReferenceRequirementMeasurement, deriveReferenceRequirementMeasurement, REFERENCE_REQUIREMENT_TOLERANCE_ABSOLUTE_PX_MIN, REFERENCE_REQUIREMENT_TOLERANCE_ABSOLUTE_PX_MAX, REFERENCE_REQUIREMENT_TOLERANCE_PERCENT_MIN, REFERENCE_REQUIREMENT_TOLERANCE_PERCENT_MAX, isValidReferenceRequirementTolerance, isValidReferenceRequirementSubjectShape, isValidRawReferenceRequirement, buildReferenceRequirement, isValidReferenceRequirementShape, isValidReferenceRequirements, deriveReferenceRequirementExpectation, REFERENCE_REQUIREMENT_ADEQUACY_STATES, REFERENCE_REQUIREMENT_ADEQUACY_REASON_CODES, deriveReferenceRequirementAdequacy, isValidReferenceRequirementAdequacy, } from './domain/externalReferenceRequirements.js';
46
+ export { STATE_LABEL_PATTERN, AUTHENTICATED_STATE_VALUES, isValidStateLabel, isValidAuthenticatedState, isValidExplicitStateDimensions, } from './domain/explicitState.js';
47
+ export { APPLICABLE_VIEWPORT_MIN, APPLICABLE_VIEWPORT_MAX, isValidApplicableViewport, isValidExternalReferenceApplicability, } from './domain/externalReferenceApplicability.js';
48
+ export { evaluateReferenceCandidateCompatibility } from './domain/externalReferenceCompatibility.js';
49
+ export { RUNTIME_TARGET_NAME_PATTERN, MAX_REFERENCE_RUNTIME_BINDINGS, REFERENCE_RUNTIME_BINDING_STATUSES, REFERENCE_RUNTIME_BINDING_REASON_CODES, isValidReferenceRuntimeBindingDeclarations, evaluateReferenceRuntimeBindings, } from './domain/externalReferenceRuntimeBinding.js';
50
+ export { REFERENCE_REQUIREMENT_FIDELITY_STATUSES, REFERENCE_REQUIREMENT_FIDELITY_REASON_CODES, REFERENCE_FIDELITY_STATES, REFERENCE_FIDELITY_BLOCK_REASONS, evaluateReferenceCandidateFidelity, isValidReferenceRequirementFidelityResult, } from './domain/externalReferenceFidelity.js';
51
+ export { evaluateReferenceCandidateFidelityFromArtifactRoots } from './application/referenceFidelityEvaluationService.js';
52
+ export { buildReferenceCorrectionReviewIdentity, buildReferenceCorrectionAttemptIdentity } from './domain/referenceCorrectionIdentity.js';
53
+ export { DEFAULT_VIEWER_PORT, VIEWER_HOST, isValidViewerPort } from './viewerServer/port.js';
54
+ export { startViewer, defaultViewerAssetsRoot } from './viewerServer/viewerService.js';
55
+ export { PROJECT_CONFIG_FILENAME, PROJECT_CONFIG_SCHEMA_VERSION, OBSERVATION_ALIAS_PATTERN, validateObservationAlias, validateProjectConfig, readProjectConfig } from './projectWorkflow/projectConfig.js';
56
+ export { discoverFrontendObserverProject } from './projectWorkflow/projectDiscovery.js';
57
+ export { ALIAS_CATALOG_SCHEMA_VERSION, readAliasCatalog, serializeAliasCatalog, validateAliasCatalog, writeAliasCatalog } from './projectWorkflow/aliasCatalog.js';
58
+ export { projectConfigPath, projectStateRoot, aliasCatalogPath, projectEvidenceRoot, projectObservationsRoot, observationOutputLocation } from './projectWorkflow/projectPaths.js';
59
+ export { initializeFrontendObserverProject, captureNamedObservation, loadProjectViewerState } from './application/projectWorkflowService.js';
60
+ export { CHECK_RESULT_SCHEMA_VERSION, CHECK_WORKFLOW_STATUSES } from './projectWorkflow/checkResult.js';
61
+ export { checkProject } from './application/projectCheckService.js';
62
+ export { VIEWER_PROTOCOL_VERSION } from './viewerServer/httpServer.js';
63
+ export { REFERENCE_CORRECTION_OVERALL_STATES, prepareReferenceCorrection, reviewReferenceCorrectionAttempt } from './domain/referenceCorrectionWorkflow.js';
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export declare const ALIAS_CATALOG_SCHEMA_VERSION: "1.0.0";
2
+ export interface ObservationAliasRecord {
3
+ observationId: string;
4
+ requestId: string;
5
+ relativeArtifactDir: string;
6
+ }
7
+ export interface AliasCatalog {
8
+ schemaVersion: typeof ALIAS_CATALOG_SCHEMA_VERSION;
9
+ observations: Record<string, ObservationAliasRecord>;
10
+ }
11
+ export type AliasCatalogReadResult = {
12
+ ok: true;
13
+ catalog: AliasCatalog;
14
+ } | {
15
+ ok: false;
16
+ reason: string;
17
+ };
18
+ export declare function validateAliasCatalog(value: unknown): AliasCatalogReadResult;
19
+ export declare function readAliasCatalog(catalogPath: string): Promise<AliasCatalogReadResult>;
20
+ export declare function serializeAliasCatalog(catalog: AliasCatalog): string;
21
+ export declare function writeAliasCatalog(catalogPath: string, catalog: AliasCatalog): Promise<void>;
@@ -0,0 +1,67 @@
1
+ import { readFile, writeFile, rename, rm } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { randomBytes } from 'node:crypto';
4
+ import { validateObservationAlias } from './projectConfig.js';
5
+ export const ALIAS_CATALOG_SCHEMA_VERSION = '1.0.0';
6
+ const REQUEST_ID = /^[a-f0-9]{64}$/;
7
+ const OBSERVATION_ID = /^[a-f0-9]{64}-[a-f0-9]{32}$/;
8
+ function isObject(value) { return typeof value === 'object' && value !== null && !Array.isArray(value); }
9
+ function safeRelativeDir(value) {
10
+ if (value.length === 0 || value.includes('\\') || path.posix.isAbsolute(value))
11
+ return false;
12
+ const parts = value.split('/');
13
+ return parts.every((part) => part.length > 0 && part !== '.' && part !== '..' && !part.includes(':'));
14
+ }
15
+ export function validateAliasCatalog(value) {
16
+ if (!isObject(value))
17
+ return { ok: false, reason: 'catalog root must be an object' };
18
+ const rootUnknown = Object.keys(value).filter((key) => key !== 'schemaVersion' && key !== 'observations');
19
+ if (rootUnknown.length > 0)
20
+ return { ok: false, reason: `catalog has unsupported field(s): ${rootUnknown.join(', ')}` };
21
+ if (value.schemaVersion !== ALIAS_CATALOG_SCHEMA_VERSION)
22
+ return { ok: false, reason: `unsupported catalog schema version: ${String(value.schemaVersion)}` };
23
+ if (!isObject(value.observations))
24
+ return { ok: false, reason: 'catalog observations must be an object' };
25
+ const observations = {};
26
+ for (const [alias, raw] of Object.entries(value.observations)) {
27
+ if (!validateObservationAlias(alias, true).ok)
28
+ return { ok: false, reason: `catalog contains invalid alias: ${alias}` };
29
+ if (!isObject(raw))
30
+ return { ok: false, reason: `catalog record for ${alias} must be an object` };
31
+ const unknown = Object.keys(raw).filter((key) => !['observationId', 'requestId', 'relativeArtifactDir'].includes(key));
32
+ if (unknown.length > 0)
33
+ return { ok: false, reason: `catalog record for ${alias} has unsupported field(s): ${unknown.join(', ')}` };
34
+ if (typeof raw.observationId !== 'string' || !OBSERVATION_ID.test(raw.observationId))
35
+ return { ok: false, reason: `catalog record for ${alias} has invalid observationId` };
36
+ if (typeof raw.requestId !== 'string' || !REQUEST_ID.test(raw.requestId))
37
+ return { ok: false, reason: `catalog record for ${alias} has invalid requestId` };
38
+ if (typeof raw.relativeArtifactDir !== 'string' || !safeRelativeDir(raw.relativeArtifactDir))
39
+ return { ok: false, reason: `catalog record for ${alias} has unsafe relativeArtifactDir` };
40
+ observations[alias] = { observationId: raw.observationId, requestId: raw.requestId, relativeArtifactDir: raw.relativeArtifactDir };
41
+ }
42
+ return { ok: true, catalog: { schemaVersion: ALIAS_CATALOG_SCHEMA_VERSION, observations } };
43
+ }
44
+ export async function readAliasCatalog(catalogPath) {
45
+ try {
46
+ return validateAliasCatalog(JSON.parse(await readFile(catalogPath, 'utf8')));
47
+ }
48
+ catch (error) {
49
+ return { ok: false, reason: `catalog could not be read: ${error instanceof Error ? error.message : String(error)}` };
50
+ }
51
+ }
52
+ export function serializeAliasCatalog(catalog) {
53
+ const observations = Object.fromEntries(Object.keys(catalog.observations).sort().map((alias) => [alias, catalog.observations[alias]]));
54
+ return `${JSON.stringify({ schemaVersion: ALIAS_CATALOG_SCHEMA_VERSION, observations }, null, 2)}\n`;
55
+ }
56
+ export async function writeAliasCatalog(catalogPath, catalog) {
57
+ const tempPath = `${catalogPath}.tmp-${process.pid}-${randomBytes(6).toString('hex')}`;
58
+ try {
59
+ await writeFile(tempPath, serializeAliasCatalog(catalog), 'utf8');
60
+ await rename(tempPath, catalogPath);
61
+ }
62
+ catch (error) {
63
+ await rm(tempPath, { force: true }).catch(() => undefined);
64
+ throw error;
65
+ }
66
+ }
67
+ //# sourceMappingURL=aliasCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aliasCatalog.js","sourceRoot":"","sources":["../../src/projectWorkflow/aliasCatalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ComparisonConfig } from '../domain/comparison.js';
2
+ export type LoadBindingsFileResult = {
3
+ ok: true;
4
+ bindings: unknown;
5
+ } | {
6
+ ok: false;
7
+ error: string;
8
+ };
9
+ /** Shared wrapper parser used by both the low-level fidelity command and project check. */
10
+ export declare function loadBindingsFile(filePath: string): LoadBindingsFileResult;
11
+ export declare function loadComparisonConfigFile(filePath: string): {
12
+ ok: true;
13
+ config: ComparisonConfig;
14
+ } | {
15
+ ok: false;
16
+ error: string;
17
+ };
18
+ /** Resolve an existing acceptance input only after real-path containment succeeds. */
19
+ export declare function resolveContainedAcceptancePath(projectRoot: string, relativePath: string): {
20
+ ok: true;
21
+ path: string;
22
+ } | {
23
+ ok: false;
24
+ error: string;
25
+ };
@@ -0,0 +1,55 @@
1
+ import { readFileSync, realpathSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { isValidComparisonConfig } from '../domain/comparison.js';
4
+ /** Shared wrapper parser used by both the low-level fidelity command and project check. */
5
+ export function loadBindingsFile(filePath) {
6
+ let rawText;
7
+ try {
8
+ rawText = readFileSync(filePath, 'utf8');
9
+ }
10
+ catch (error) {
11
+ return { ok: false, error: `--bindings-file could not be read: ${error instanceof Error ? error.message : String(error)}` };
12
+ }
13
+ let parsed;
14
+ try {
15
+ parsed = JSON.parse(rawText);
16
+ }
17
+ catch (error) {
18
+ return { ok: false, error: `--bindings-file is not valid JSON: ${error instanceof Error ? error.message : String(error)}` };
19
+ }
20
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
21
+ return { ok: false, error: '--bindings-file root must be a JSON object' };
22
+ const record = parsed;
23
+ const unknownFields = Object.keys(record).filter((key) => key !== 'bindings');
24
+ if (unknownFields.length > 0)
25
+ return { ok: false, error: `--bindings-file has unsupported top-level field(s): ${unknownFields.join(', ')}` };
26
+ if (!('bindings' in record))
27
+ return { ok: false, error: '--bindings-file must have a "bindings" property' };
28
+ return { ok: true, bindings: record.bindings };
29
+ }
30
+ export function loadComparisonConfigFile(filePath) {
31
+ let parsed;
32
+ try {
33
+ parsed = JSON.parse(readFileSync(filePath, 'utf8'));
34
+ }
35
+ catch (error) {
36
+ return { ok: false, error: `comparison config could not be read: ${error instanceof Error ? error.message : String(error)}` };
37
+ }
38
+ if (!isValidComparisonConfig(parsed))
39
+ return { ok: false, error: 'comparison config is not a valid canonical ComparisonConfig' };
40
+ return { ok: true, config: parsed };
41
+ }
42
+ /** Resolve an existing acceptance input only after real-path containment succeeds. */
43
+ export function resolveContainedAcceptancePath(projectRoot, relativePath) {
44
+ try {
45
+ const realRoot = realpathSync(projectRoot);
46
+ const resolved = realpathSync(path.resolve(projectRoot, relativePath));
47
+ if (resolved !== realRoot && !resolved.startsWith(`${realRoot}${path.sep}`))
48
+ return { ok: false, error: `acceptance path escapes project root: ${relativePath}` };
49
+ return { ok: true, path: resolved };
50
+ }
51
+ catch {
52
+ return { ok: false, error: `acceptance path could not be resolved inside the project: ${relativePath}` };
53
+ }
54
+ }
55
+ //# sourceMappingURL=checkAcceptance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkAcceptance.js","sourceRoot":"","sources":["../../src/projectWorkflow/checkAcceptance.ts"],"names":[],"mappings":"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"}