bruniai 0.1.13 → 0.1.15

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 (56) hide show
  1. package/README.md +13 -9
  2. package/dist/compare-image-to-url.d.ts +16 -0
  3. package/dist/compare-image-to-url.d.ts.map +1 -0
  4. package/dist/compare-image-to-url.js +115 -0
  5. package/dist/compare-image-to-url.js.map +1 -0
  6. package/dist/compare-urls.d.ts.map +1 -1
  7. package/dist/compare-urls.js +18 -5
  8. package/dist/compare-urls.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/runtime/comparison/core.d.ts +6 -0
  14. package/dist/runtime/comparison/core.d.ts.map +1 -1
  15. package/dist/runtime/comparison/core.js.map +1 -1
  16. package/dist/runtime/comparison/image-core.d.ts +6 -4
  17. package/dist/runtime/comparison/image-core.d.ts.map +1 -1
  18. package/dist/runtime/comparison/image-core.js +37 -31
  19. package/dist/runtime/comparison/image-core.js.map +1 -1
  20. package/dist/runtime/comparison/image-image-core.d.ts +2 -0
  21. package/dist/runtime/comparison/image-image-core.d.ts.map +1 -1
  22. package/dist/runtime/comparison/image-image-core.js +34 -28
  23. package/dist/runtime/comparison/image-image-core.js.map +1 -1
  24. package/dist/runtime/comparison/section-explanation-mode.d.ts +3 -0
  25. package/dist/runtime/comparison/section-explanation-mode.d.ts.map +1 -0
  26. package/dist/runtime/comparison/section-explanation-mode.js +10 -0
  27. package/dist/runtime/comparison/section-explanation-mode.js.map +1 -0
  28. package/dist/runtime/image/report.d.ts +1 -1
  29. package/dist/runtime/image/report.d.ts.map +1 -1
  30. package/dist/runtime/image/report.js +2 -2
  31. package/dist/runtime/image/report.js.map +1 -1
  32. package/dist/runtime/vision/agents.d.ts.map +1 -1
  33. package/dist/runtime/vision/agents.js +129 -86
  34. package/dist/runtime/vision/agents.js.map +1 -1
  35. package/dist/runtime/vision/vision.d.ts.map +1 -1
  36. package/dist/runtime/vision/vision.js +2 -0
  37. package/dist/runtime/vision/vision.js.map +1 -1
  38. package/dist/types.d.ts +29 -8
  39. package/dist/types.d.ts.map +1 -1
  40. package/package.json +2 -2
  41. package/dist/compare-images.d.ts +0 -16
  42. package/dist/compare-images.d.ts.map +0 -1
  43. package/dist/compare-images.js +0 -74
  44. package/dist/compare-images.js.map +0 -1
  45. package/dist/runtime/comparison/figma-core.d.ts +0 -66
  46. package/dist/runtime/comparison/figma-core.d.ts.map +0 -1
  47. package/dist/runtime/comparison/figma-core.js +0 -116
  48. package/dist/runtime/comparison/figma-core.js.map +0 -1
  49. package/dist/runtime/vision/comparison-html.d.ts +0 -16
  50. package/dist/runtime/vision/comparison-html.d.ts.map +0 -1
  51. package/dist/runtime/vision/comparison-html.js +0 -116
  52. package/dist/runtime/vision/comparison-html.js.map +0 -1
  53. package/dist/runtime/vision/section-judge.d.ts +0 -8
  54. package/dist/runtime/vision/section-judge.d.ts.map +0 -1
  55. package/dist/runtime/vision/section-judge.js +0 -87
  56. package/dist/runtime/vision/section-judge.js.map +0 -1
package/README.md CHANGED
@@ -13,7 +13,7 @@ npm install bruniai
13
13
  ## Usage
14
14
 
15
15
  ```typescript
16
- import { compareImages, compareUrls } from "bruniai";
16
+ import { compareImageToUrl, compareUrls } from "bruniai";
17
17
 
18
18
  const result = await compareUrls({
19
19
  baseUrl: "https://example.com",
@@ -25,9 +25,10 @@ console.log(result.status); // "pass" | "fail" | "warning"
25
25
  console.log(result.visual_analysis);
26
26
  console.log(result.images.base_screenshot);
27
27
 
28
- const imageResult = await compareImages({
29
- baseImage: "https://example.com/design.png",
30
- previewImage: "data:image/png;base64,...",
28
+ const imageResult = await compareImageToUrl({
29
+ baseImageSource: "https://example.com/design.png",
30
+ previewUrl: "https://preview.example.com",
31
+ page: "/contact",
31
32
  });
32
33
 
33
34
  console.log(imageResult.status);
@@ -54,21 +55,24 @@ Performs a visual comparison between two URLs.
54
55
  - `sections_analysis`: Formatted sections analysis text
55
56
  - `images`: Object containing paths to generated screenshots and diff images
56
57
 
57
- ### `compareImages(input: CompareImagesInput): Promise<CompareImagesOutput>`
58
+ ### `compareImageToUrl(input: CompareImageToUrlInput): Promise<CompareImageToUrlOutput>`
58
59
 
59
- Performs a visual comparison between two images.
60
+ Performs a visual comparison between a base image source and a preview URL.
60
61
 
61
62
  **Parameters:**
62
63
 
63
- - `baseImage` (string): Base/reference image as an HTTP(S) URL or `data:image/...`
64
- - `previewImage` (string): Preview/changed image as an HTTP(S) URL or `data:image/...`
64
+ - `baseImageSource` (string): Base/reference image source as an HTTP(S) image URL or `data:image/...`
65
+ - `previewUrl` (string): Preview/changed webpage URL to analyze
66
+ - `page` (string, optional): Page path to compare on the preview URL (default: "/")
67
+ - `prNumber` (string, optional): PR number for metadata
68
+ - `repository` (string, optional): Repository name for metadata
65
69
 
66
70
  **Returns:**
67
71
 
68
72
  - `status`: Overall comparison status ("pass" | "fail" | "warning" | "none")
69
73
  - `visual_analysis`: Detailed visual analysis result from AI
70
74
  - `sections_analysis`: Formatted sections analysis text
71
- - `images`: Object containing paths to normalized images and diff images
75
+ - `images`: Object containing paths to normalized screenshots and diff images
72
76
 
73
77
  ## Requirements
74
78
 
@@ -0,0 +1,16 @@
1
+ import type { CompareImageToUrlInput, CompareImageToUrlOutput } from "./types.js";
2
+ /**
3
+ * Compare a base image source against a preview URL and return analysis results.
4
+ *
5
+ * This function performs a complete image-to-URL comparison workflow:
6
+ * - Creates a temporary directory for images
7
+ * - Captures the preview webpage with Stagehand
8
+ * - Normalizes the design image and preview screenshot into comparable PNGs
9
+ * - Generates diff images and matched section crops
10
+ * - Produces structured analysis output
11
+ *
12
+ * @param input - Comparison input parameters
13
+ * @returns Complete analysis results with image paths
14
+ */
15
+ export declare function compareImageToUrl(input: CompareImageToUrlInput): Promise<CompareImageToUrlOutput>;
16
+ //# sourceMappingURL=compare-image-to-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-image-to-url.d.ts","sourceRoot":"","sources":["../src/compare-image-to-url.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AA8DpB;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAsElC"}
@@ -0,0 +1,115 @@
1
+ import { Stagehand } from "@browserbasehq/stagehand";
2
+ import { join } from "path";
3
+ import { mkdirSync, existsSync } from "fs";
4
+ import { tmpdir } from "os";
5
+ async function importSourceModule(relativePath) {
6
+ return (await import(new URL(relativePath, import.meta.url).href));
7
+ }
8
+ async function loadImageToUrlComparisonModule() {
9
+ if (import.meta.url.includes("/packages/bruniai/src/")) {
10
+ try {
11
+ return await import("../../../dist/comparison/image-core.js");
12
+ }
13
+ catch {
14
+ return await importSourceModule("../../../src/comparison/image-core.ts");
15
+ }
16
+ }
17
+ return await import("./runtime/comparison/image-core.js");
18
+ }
19
+ function isSupportedImageSource(input) {
20
+ if (!input) {
21
+ return false;
22
+ }
23
+ if (input.startsWith("data:image/")) {
24
+ return true;
25
+ }
26
+ try {
27
+ const parsed = new URL(input);
28
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ function assertSupportedImageSource(input, fieldName) {
35
+ if (!isSupportedImageSource(input)) {
36
+ throw new Error(`${fieldName} must be an HTTP(S) image URL or data:image/... string`);
37
+ }
38
+ }
39
+ function assertSupportedPreviewUrl(input, fieldName) {
40
+ try {
41
+ const parsed = new URL(input);
42
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
43
+ throw new Error("unsupported protocol");
44
+ }
45
+ }
46
+ catch {
47
+ throw new Error(`${fieldName} must be an HTTP(S) URL`);
48
+ }
49
+ }
50
+ /**
51
+ * Compare a base image source against a preview URL and return analysis results.
52
+ *
53
+ * This function performs a complete image-to-URL comparison workflow:
54
+ * - Creates a temporary directory for images
55
+ * - Captures the preview webpage with Stagehand
56
+ * - Normalizes the design image and preview screenshot into comparable PNGs
57
+ * - Generates diff images and matched section crops
58
+ * - Produces structured analysis output
59
+ *
60
+ * @param input - Comparison input parameters
61
+ * @returns Complete analysis results with image paths
62
+ */
63
+ export async function compareImageToUrl(input) {
64
+ const { baseImageSource, previewUrl, page = "/", sectionExplanationMode = "fast", prNumber, repository, } = input;
65
+ assertSupportedImageSource(baseImageSource, "baseImageSource");
66
+ assertSupportedPreviewUrl(previewUrl, "previewUrl");
67
+ const { performImageToUrlComparison } = await loadImageToUrlComparisonModule();
68
+ const imagesDir = join(tmpdir(), `bruniai-${Date.now()}`);
69
+ if (!existsSync(imagesDir)) {
70
+ mkdirSync(imagesDir, { recursive: true });
71
+ }
72
+ const stagehand = new Stagehand({
73
+ env: "LOCAL",
74
+ disablePino: true,
75
+ localBrowserLaunchOptions: {
76
+ headless: true,
77
+ },
78
+ });
79
+ try {
80
+ await stagehand.init();
81
+ const result = await performImageToUrlComparison({
82
+ stagehand,
83
+ baseImageSource,
84
+ previewUrl,
85
+ page,
86
+ sectionExplanationMode,
87
+ imagesDir,
88
+ prNumber,
89
+ repository,
90
+ });
91
+ const status = result.visual_analysis.status === "none"
92
+ ? "pass"
93
+ : result.visual_analysis.status;
94
+ return {
95
+ status,
96
+ visual_analysis: result.visual_analysis,
97
+ sections_analysis: result.sections_analysis,
98
+ images: {
99
+ base_screenshot: result.base_screenshot,
100
+ preview_screenshot: result.preview_screenshot,
101
+ diff_image: result.diff_image,
102
+ section_screenshots: Object.keys(result.section_screenshots).length > 0
103
+ ? Object.fromEntries(Object.entries(result.section_screenshots).map(([key, value]) => [
104
+ key,
105
+ { base: value.base, preview: value.preview },
106
+ ]))
107
+ : undefined,
108
+ },
109
+ };
110
+ }
111
+ finally {
112
+ await stagehand.close();
113
+ }
114
+ }
115
+ //# sourceMappingURL=compare-image-to-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-image-to-url.js","sourceRoot":"","sources":["../src/compare-image-to-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAKrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAK5B,KAAK,UAAU,kBAAkB,CAAI,YAAoB;IACvD,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAM,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,8BAA8B;IAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,kBAAkB,CAC7B,uCAAuC,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAa,EAAE,SAAiB;IAClE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,wDAAwD,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa,EAAE,SAAiB;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,yBAAyB,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA6B;IAE7B,MAAM,EACJ,eAAe,EACf,UAAU,EACV,IAAI,GAAG,GAAG,EACV,sBAAsB,GAAG,MAAM,EAC/B,QAAQ,EACR,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,0BAA0B,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC/D,yBAAyB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEpD,MAAM,EAAE,2BAA2B,EAAE,GACnC,MAAM,8BAA8B,EAAE,CAAC;IAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,GAAG,EAAE,OAAO;QACZ,WAAW,EAAE,IAAI;QACjB,yBAAyB,EAAE;YACzB,QAAQ,EAAE,IAAI;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,SAAS;YACT,eAAe;YACf,UAAU;YACV,IAAI;YACJ,sBAAsB;YACtB,SAAS;YACT,QAAQ;YACR,UAAU;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GACV,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,MAAM;YACtC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAEpC,OAAO;YACL,MAAM;YACN,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,MAAM,EAAE;gBACN,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,mBAAmB,EACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC;oBAChD,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;wBAC/D,GAAG;wBACH,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;qBAC7C,CAAC,CACH;oBACH,CAAC,CAAC,SAAS;aAChB;SACF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compare-urls.d.ts","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAYtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAiE5B"}
1
+ {"version":3,"file":"compare-urls.d.ts","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAyBtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAwE5B"}
@@ -2,9 +2,20 @@ import { Stagehand } from "@browserbasehq/stagehand";
2
2
  import { join } from "path";
3
3
  import { mkdirSync, existsSync } from "fs";
4
4
  import { tmpdir } from "os";
5
- const comparisonCoreModulePromise = import.meta.url.includes("/packages/bruniai/src/")
6
- ? import("../../../dist/comparison/core.js")
7
- : import("./runtime/comparison/core.js");
5
+ async function importSourceModule(relativePath) {
6
+ return (await import(new URL(relativePath, import.meta.url).href));
7
+ }
8
+ async function loadComparisonCoreModule() {
9
+ if (import.meta.url.includes("/packages/bruniai/src/")) {
10
+ try {
11
+ return await import("../../../dist/comparison/core.js");
12
+ }
13
+ catch {
14
+ return await importSourceModule("../../../src/comparison/core.ts");
15
+ }
16
+ }
17
+ return await import("./runtime/comparison/core.js");
18
+ }
8
19
  /**
9
20
  * Compare two URLs visually and return analysis results.
10
21
  *
@@ -31,8 +42,8 @@ const comparisonCoreModulePromise = import.meta.url.includes("/packages/bruniai/
31
42
  * ```
32
43
  */
33
44
  export async function compareUrls(input) {
34
- const { baseUrl, previewUrl, page = "/" } = input;
35
- const { performComparison } = await comparisonCoreModulePromise;
45
+ const { baseUrl, previewUrl, page = "/", sectionExplanationMode = "fast", } = input;
46
+ const { performComparison } = await loadComparisonCoreModule();
36
47
  // Create temporary directory for images.
37
48
  const imagesDir = join(tmpdir(), `bruniai-${Date.now()}`);
38
49
  if (!existsSync(imagesDir)) {
@@ -41,6 +52,7 @@ export async function compareUrls(input) {
41
52
  // Initialize Stagehand.
42
53
  const stagehand = new Stagehand({
43
54
  env: "LOCAL",
55
+ disablePino: true,
44
56
  localBrowserLaunchOptions: {
45
57
  headless: true,
46
58
  },
@@ -53,6 +65,7 @@ export async function compareUrls(input) {
53
65
  baseUrl,
54
66
  previewUrl,
55
67
  page,
68
+ sectionExplanationMode,
56
69
  imagesDir,
57
70
  prNumber: input.prNumber,
58
71
  repository: input.repository,
@@ -1 +1 @@
1
- {"version":3,"file":"compare-urls.js","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAI5B,MAAM,2BAA2B,GAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAChD,CAAC,CAAC,MAAM,CAAC,kCAAkC,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAuB;IAEvB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,2BAA2B,CAAC;IAEhE,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,GAAG,EAAE,OAAO;QACZ,yBAAyB,EAAE;YACzB,QAAQ,EAAE,IAAI;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,+BAA+B;QAC/B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,SAAS;YACT,OAAO;YACP,UAAU;YACV,IAAI;YACJ,SAAS;YACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;QAEH,0BAA0B;QAC1B,kFAAkF;QAClF,MAAM,MAAM,GACV,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,MAAM;YACtC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAEpC,MAAM,MAAM,GAAsB;YAChC,MAAM;YACN,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,MAAM,EAAE;gBACN,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,mBAAmB,EACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC;oBAChD,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAC5C,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;wBAChB,GAAG;wBACH,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;qBAC7C,CACF,CACF;oBACH,CAAC,CAAC,SAAS;aAChB;SACF,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"compare-urls.js","sourceRoot":"","sources":["../src/compare-urls.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,6 @@
5
5
  * Provides a simple API to compare two URLs and analyze visual differences.
6
6
  */
7
7
  export { compareUrls } from "./compare-urls.js";
8
- export { compareImages } from "./compare-images.js";
9
- export type { CompareImagesInput, CompareImagesOutput, CompareUrlsInput, CompareUrlsOutput, ComparisonImages, } from "./types.js";
8
+ export { compareImageToUrl } from "./compare-image-to-url.js";
9
+ export type { CompareImageToUrlInput, CompareImageToUrlOutput, CompareUrlsInput, CompareUrlsOutput, ComparisonImages, } from "./types.js";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -5,5 +5,5 @@
5
5
  * Provides a simple API to compare two URLs and analyze visual differences.
6
6
  */
7
7
  export { compareUrls } from "./compare-urls.js";
8
- export { compareImages } from "./compare-images.js";
8
+ export { compareImageToUrl } from "./compare-image-to-url.js";
9
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -13,6 +13,12 @@ export interface ComparisonOptions {
13
13
  previewUrl: string;
14
14
  /** Page path to compare (e.g., "/" or "/about"). */
15
15
  page: string;
16
+ /**
17
+ * Reserved for deterministic section explanation flows.
18
+ * The current URL-to-URL path does not use it directly yet, but the option
19
+ * is threaded through for API consistency.
20
+ */
21
+ sectionExplanationMode?: "fast" | "detailed" | "off";
16
22
  /** Directory where images should be saved. */
17
23
  imagesDir: string;
18
24
  /** Optional PR number for metadata. */
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/comparison/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAS1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,SAAS,EAAE,SAAS,CAAC;IACrB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,eAAe,EAAE,oBAAoB,CAAC;IACtC,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,sDAAsD;IACtD,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACzC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAqI3B"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/comparison/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAS1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,SAAS,EAAE,SAAS,CAAC;IACrB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IACrD,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,eAAe,EAAE,oBAAoB,CAAC;IACtC,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,sDAAsD;IACtD,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACzC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAqI3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/comparison/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/comparison/core.ts"],"names":[],"mappings":"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"}
@@ -7,16 +7,18 @@
7
7
  import type { Stagehand } from "@browserbasehq/stagehand";
8
8
  import type { VisualAnalysisResult } from "../vision/types.js";
9
9
  import type { SectionVisualResult } from "../reporter/types.js";
10
- export interface ImageComparisonOptions {
10
+ import { type SectionExplanationMode } from "./section-explanation-mode.js";
11
+ export interface ImageToUrlComparisonOptions {
11
12
  stagehand: Stagehand;
12
- baseImageUrl: string;
13
+ baseImageSource: string;
13
14
  previewUrl: string;
14
15
  page: string;
16
+ sectionExplanationMode?: SectionExplanationMode;
15
17
  imagesDir: string;
16
18
  prNumber?: string;
17
19
  repository?: string;
18
20
  }
19
- export interface ImageComparisonResult {
21
+ export interface ImageToUrlComparisonResult {
20
22
  visual_analysis: VisualAnalysisResult;
21
23
  sections_analysis: string;
22
24
  base_screenshot: string;
@@ -29,5 +31,5 @@ export interface ImageComparisonResult {
29
31
  section_results: SectionVisualResult[];
30
32
  mode: "image-to-url";
31
33
  }
32
- export declare function performImageComparison(options: ImageComparisonOptions): Promise<ImageComparisonResult>;
34
+ export declare function performImageToUrlComparison(options: ImageToUrlComparisonOptions): Promise<ImageToUrlComparisonResult>;
33
35
  //# sourceMappingURL=image-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-core.d.ts","sourceRoot":"","sources":["../../src/comparison/image-core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAe1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAKhE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,oBAAoB,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,IAAI,EAAE,cAAc,CAAC;CACtB;AAiDD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAuRhC"}
1
+ {"version":3,"file":"image-core.d.ts","sourceRoot":"","sources":["../../src/comparison/image-core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAe1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,oBAAoB,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,IAAI,EAAE,cAAc,CAAC;CACtB;AAiDD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAkSrC"}
@@ -11,6 +11,7 @@ import { analyzeSectionDiffExplanationsAgent } from "../vision/index.js";
11
11
  import { join } from "path";
12
12
  import { writeFileSync } from "fs";
13
13
  import sharp from "sharp";
14
+ import { shouldExplainSection, } from "./section-explanation-mode.js";
14
15
  function buildLlmUnavailableExplanation(reason) {
15
16
  return `${reason} Review the matched section crop and diff image directly for the exact visual change.`;
16
17
  }
@@ -38,8 +39,8 @@ async function resizeImageToWidth(inputPath, outputPath, width) {
38
39
  height: metadata.height || 1,
39
40
  };
40
41
  }
41
- export async function performImageComparison(options) {
42
- const { stagehand, baseImageUrl, previewUrl, page, imagesDir, prNumber = "", repository = "", } = options;
42
+ export async function performImageToUrlComparison(options) {
43
+ const { stagehand, baseImageSource, previewUrl, page, sectionExplanationMode = "fast", imagesDir, prNumber = "", repository = "", } = options;
43
44
  let pageSuffix = page.replace(/\//g, "_");
44
45
  pageSuffix = pageSuffix === "_" ? "home" : pageSuffix;
45
46
  const baseOriginalPath = join(imagesDir, `base_original_${pageSuffix}.png`);
@@ -49,7 +50,7 @@ export async function performImageComparison(options) {
49
50
  const diffImagePath = join(imagesDir, `diff_${pageSuffix}.png`);
50
51
  console.log(`\n${"=".repeat(50)}\nšŸ–¼ļø Starting deterministic image-to-URL comparison\n${"=".repeat(50)}`);
51
52
  console.log("\nšŸ“„ Step 1: Downloading design image...");
52
- await downloadImageToPng(baseImageUrl, baseOriginalPath);
53
+ await downloadImageToPng(baseImageSource, baseOriginalPath);
53
54
  console.log("\nāœ‚ļø Step 2: Trimming design image margins...");
54
55
  const trimResult = await trimImageToContent(baseOriginalPath, baseScreenshotPath);
55
56
  const baseWidth = trimResult.trimmedDimensions.width;
@@ -110,31 +111,34 @@ export async function performImageComparison(options) {
110
111
  }
111
112
  }
112
113
  console.log("\n🧠 Step 9: Explaining matched sections with vision...");
113
- if (process.env.OPENAI_API_KEY) {
114
- const explainableSections = sectionMatches
115
- .filter((match) => match.status !== "missing")
116
- .map((match) => {
117
- const artifacts = sectionArtifacts.get(match.sectionId);
118
- if (!artifacts) {
119
- return null;
120
- }
121
- return {
122
- section_id: match.sectionId,
123
- name: match.name,
124
- base_screenshot: artifacts.base,
125
- preview_screenshot: artifacts.preview,
126
- diff_image: artifacts.diff,
127
- match_score: match.matchScore,
128
- final_similarity_score: match.signals.finalSimilarityScore,
129
- pixel_difference: match.signals.pixelDifference,
130
- edge_difference: match.signals.edgeDifference,
131
- structural_similarity: match.signals.structuralSimilarity,
132
- };
133
- })
134
- .filter((section) => section !== null);
114
+ const explainableSections = sectionMatches
115
+ .filter((match) => shouldExplainSection(match.status, sectionExplanationMode))
116
+ .map((match) => {
117
+ const artifacts = sectionArtifacts.get(match.sectionId);
118
+ if (!artifacts) {
119
+ return null;
120
+ }
121
+ return {
122
+ section_id: match.sectionId,
123
+ name: match.name,
124
+ base_screenshot: artifacts.base,
125
+ preview_screenshot: artifacts.preview,
126
+ diff_image: artifacts.diff,
127
+ match_score: match.matchScore,
128
+ final_similarity_score: match.signals.finalSimilarityScore,
129
+ pixel_difference: match.signals.pixelDifference,
130
+ edge_difference: match.signals.edgeDifference,
131
+ structural_similarity: match.signals.structuralSimilarity,
132
+ };
133
+ })
134
+ .filter((section) => section !== null);
135
+ if (sectionExplanationMode === "off") {
136
+ console.log("Skipping section explanation agent because sectionExplanationMode is off.");
137
+ }
138
+ else if (process.env.OPENAI_API_KEY) {
135
139
  if (explainableSections.length > 0) {
136
140
  try {
137
- const explanations = await analyzeSectionDiffExplanationsAgent(explainableSections, baseImageUrl, previewUrl);
141
+ const explanations = await analyzeSectionDiffExplanationsAgent(explainableSections, baseImageSource, previewUrl);
138
142
  const explanationsById = new Map(explanations.map((explanation) => [explanation.section_id, explanation]));
139
143
  let acceptedCount = 0;
140
144
  for (const match of sectionMatches) {
@@ -165,8 +169,9 @@ export async function performImageComparison(options) {
165
169
  }
166
170
  catch (error) {
167
171
  console.warn(`Section explanation agent failed: ${error}`);
168
- for (const match of sectionMatches) {
169
- if (match.status === "missing") {
172
+ for (const section of explainableSections) {
173
+ const match = sectionMatches.find((candidate) => candidate.sectionId === section.section_id);
174
+ if (!match) {
170
175
  continue;
171
176
  }
172
177
  match.humanDescription = buildLlmUnavailableExplanation("The section was compared with the vision model, but the LLM explanation step failed.");
@@ -178,8 +183,9 @@ export async function performImageComparison(options) {
178
183
  }
179
184
  else {
180
185
  console.log("Skipping section explanation agent because OPENAI_API_KEY is not set.");
181
- for (const match of sectionMatches) {
182
- if (match.status === "missing") {
186
+ for (const section of explainableSections) {
187
+ const match = sectionMatches.find((candidate) => candidate.sectionId === section.section_id);
188
+ if (!match) {
183
189
  continue;
184
190
  }
185
191
  match.humanDescription = buildLlmUnavailableExplanation("The section was compared with the vision model, but OPENAI_API_KEY is not set so no LLM explanation was generated.");
@@ -226,7 +232,7 @@ export async function performImageComparison(options) {
226
232
  });
227
233
  console.log("\n🧠 Step 10: Building deterministic report...");
228
234
  const visualAnalysis = buildImageModeVisualAnalysis({
229
- baseUrl: baseImageUrl,
235
+ baseImageSource,
230
236
  previewUrl,
231
237
  prNumber,
232
238
  repository,
@@ -1 +1 @@
1
- {"version":3,"file":"image-core.js","sourceRoot":"","sources":["../../src/comparison/image-core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mCAAmC,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,KAAK,MAAM,OAAO,CAAC;AA6B1B,SAAS,8BAA8B,CAAC,MAAc;IACpD,OAAO,GAAG,MAAM,uFAAuF,CAAC;AAC1G,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,SAAiB,EACjB,UAAkB,EAClB,MAAoE;IAEpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC;IAEnF,MAAM,KAAK,CAAC,SAAS,CAAC;SACnB,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACrC,GAAG,EAAE;SACL,MAAM,CAAC,UAAU,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAAiB,EACjB,UAAkB,EAClB,KAAa;IAEb,MAAM,KAAK,CAAC,SAAS,CAAC;SACnB,MAAM,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;SAC5C,GAAG,EAAE;SACL,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpD,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK;QAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA+B;IAE/B,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,GAAG,EAAE,EACb,UAAU,GAAG,EAAE,GAChB,GAAG,OAAO,CAAC;IAEZ,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1C,UAAU,GAAG,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAEtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,UAAU,MAAM,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,UAAU,MAAM,CAAC,CAAC;IAChF,MAAM,mBAAmB,GAAG,IAAI,CAC9B,SAAS,EACT,oBAAoB,UAAU,MAAM,CACrC,CAAC;IACF,MAAM,qBAAqB,GAAG,IAAI,CAChC,SAAS,EACT,sBAAsB,UAAU,MAAM,CACvC,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,UAAU,MAAM,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CACT,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,yDAAyD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAC7F,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,MAAM,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAEzD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAClE,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,aAAa,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAEtD,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,MAAM,kBAAkB,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAEhF,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,MAAM,iBAAiB,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC;IAElF,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAEvE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAC9C,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,CAAC,QAAQ,CACxB,CAAC;IAEF,MAAM,gBAAgB,GAAG,+BAA+B,CACtD,cAAc,EACd,cAAc,CACf,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,MAAM,kBAAkB,GAAsD,EAAE,CAAC;IACjF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE7D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;QAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QACxE,MAAM,eAAe,GAAG,IAAI,CAC1B,SAAS,EACT,mBAAmB,UAAU,YAAY,WAAW,GAAG,KAAK,CAAC,SAAS,MAAM,CAC7E,CAAC;QAEF,MAAM,eAAe,CAAC,kBAAkB,EAAE,eAAe,EAAE;YACzD,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;YAC7B,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,kBAAkB,GAAG,IAAI,CACvB,SAAS,EACT,sBAAsB,UAAU,YAAY,WAAW,GAAG,KAAK,CAAC,SAAS,MAAM,CAChF,CAAC;YACF,MAAM,eAAe,CAAC,qBAAqB,EAAE,kBAAkB,EAAE;gBAC/D,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;gBAC9B,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM;aAC5D,CAAC,CAAC;YAEH,eAAe,GAAG,IAAI,CACpB,SAAS,EACT,QAAQ,UAAU,YAAY,WAAW,GAAG,KAAK,CAAC,SAAS,MAAM,CAClE,CAAC;YACF,MAAM,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACvB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;gBACpC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,kBAAkB;aAC5B,CAAC;QACJ,CAAC;QAED,IAAI,kBAAkB,IAAI,eAAe,EAAE,CAAC;YAC1C,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;gBACpC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,kBAAkB;gBAC3B,IAAI,EAAE,eAAe;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,mBAAmB,GAAG,cAAc;aACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;aAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,SAAS;gBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,eAAe,EAAE,SAAS,CAAC,IAAI;gBAC/B,kBAAkB,EAAE,SAAS,CAAC,OAAO;gBACrC,UAAU,EAAE,SAAS,CAAC,IAAI;gBAC1B,WAAW,EAAE,KAAK,CAAC,UAAU;gBAC7B,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB;gBAC1D,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe;gBAC/C,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;gBAC7C,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB;aAC1D,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,OAAO,EAA0C,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAEjF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,mCAAmC,CAC5D,mBAAmB,EACnB,YAAY,EACZ,UAAU,CACX,CAAC;gBACF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CACzE,CAAC;gBACF,IAAI,aAAa,GAAG,CAAC,CAAC;gBAEtB,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;oBACnC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,SAAS;oBACX,CAAC;oBAED,KAAK,CAAC,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC;oBACjD,KAAK,CAAC,qBAAqB,GAAG,WAAW,CAAC,sBAAsB,CAAC;oBACjE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAChC,aAAa,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CACjD,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CACvD,CAAC;gBACF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,IAAI,CACV,sCAAsC,aAAa,IAAI,mBAAmB,CAAC,MAAM,2CAA2C,gBAAgB;yBACzI,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;yBACpC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;oBACF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;wBACvC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAC/B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,UAAU,CAC1D,CAAC;wBACF,IAAI,CAAC,KAAK,EAAE,CAAC;4BACX,SAAS;wBACX,CAAC;wBACD,KAAK,CAAC,gBAAgB,GAAG,8BAA8B,CACrD,uGAAuG,CACxG,CAAC;wBACF,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;wBACnC,KAAK,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;gBAC3D,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC/B,SAAS;oBACX,CAAC;oBACD,KAAK,CAAC,gBAAgB,GAAG,8BAA8B,CACrD,sFAAsF,CACvF,CAAC;oBACF,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;oBACnC,KAAK,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,KAAK,CAAC,gBAAgB,GAAG,8BAA8B,CACrD,oHAAoH,CACrH,CAAC;YACF,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACnC,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAA0B,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;gBACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;aAC9B;YACD,aAAa,EAAE,KAAK,CAAC,YAAY;gBAC/B,CAAC,CAAC;oBACE,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;oBAClC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI;iBAC/B;gBACH,CAAC,CAAC,IAAI;YACR,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,gBAAgB,EAAE,KAAK,CAAC,eAAe;YACvC,OAAO,EAAE;gBACP,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe;gBAC/C,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;gBAC7C,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB;gBACzD,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB;aAC3D;YACD,WAAW,EAAE,KAAK,CAAC,gBAAgB;YACnC,WAAW,EAAE,KAAK,CAAC,gBAAgB;YACnC,sBAAsB,EAAE,KAAK,CAAC,qBAAqB;YACnD,kBAAkB,EAAE,KAAK,CAAC,iBAAiB;YAC3C,UAAU,EAAE,SAAS;gBACnB,CAAC,CAAC;oBACE,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB;gBACH,CAAC,CAAC,IAAI;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,4BAA4B,CAAC;QAClD,OAAO,EAAE,YAAY;QACrB,UAAU;QACV,QAAQ;QACR,UAAU;QACV,cAAc;KACf,CAAC,CAAC;IAEH,OAAO;QACL,eAAe,EAAE,cAAc;QAC/B,iBAAiB,EAAE,gBAAgB;QACnC,eAAe,EAAE,kBAAkB;QACnC,kBAAkB,EAAE,qBAAqB;QACzC,UAAU,EAAE,aAAa;QACzB,mBAAmB,EAAE,kBAAkB;QACvC,eAAe,EAAE,cAAc;QAC/B,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"image-core.js","sourceRoot":"","sources":["../../src/comparison/image-core.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,11 @@
6
6
  */
7
7
  import type { VisualAnalysisResult } from "../vision/types.js";
8
8
  import type { SectionVisualResult } from "../reporter/types.js";
9
+ import { type SectionExplanationMode } from "./section-explanation-mode.js";
9
10
  export interface ImageToImageComparisonOptions {
10
11
  baseImageUrl: string;
11
12
  previewImageUrl: string;
13
+ sectionExplanationMode?: SectionExplanationMode;
12
14
  imagesDir: string;
13
15
  prNumber?: string;
14
16
  repository?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"image-image-core.d.ts","sourceRoot":"","sources":["../../src/comparison/image-image-core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,oBAAoB,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAiDD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC,CAiRvC"}
1
+ {"version":3,"file":"image-image-core.d.ts","sourceRoot":"","sources":["../../src/comparison/image-image-core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,oBAAoB,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAiDD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC,CA4RvC"}