agent-web-interface 4.2.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/browser/connection-utils.d.ts +48 -0
- package/dist/src/browser/connection-utils.d.ts.map +1 -0
- package/dist/src/browser/connection-utils.js +129 -0
- package/dist/src/browser/connection-utils.js.map +1 -0
- package/dist/src/browser/index.d.ts +3 -1
- package/dist/src/browser/index.d.ts.map +1 -1
- package/dist/src/browser/index.js +2 -1
- package/dist/src/browser/index.js.map +1 -1
- package/dist/src/browser/session-manager.d.ts +1 -89
- package/dist/src/browser/session-manager.d.ts.map +1 -1
- package/dist/src/browser/session-manager.js +1 -116
- package/dist/src/browser/session-manager.js.map +1 -1
- package/dist/src/browser/session-manager.types.d.ts +90 -0
- package/dist/src/browser/session-manager.types.d.ts.map +1 -0
- package/dist/src/browser/session-manager.types.js +7 -0
- package/dist/src/browser/session-manager.types.js.map +1 -0
- package/dist/src/form/constraint-extraction.d.ts +31 -0
- package/dist/src/form/constraint-extraction.d.ts.map +1 -0
- package/dist/src/form/constraint-extraction.js +110 -0
- package/dist/src/form/constraint-extraction.js.map +1 -0
- package/dist/src/form/field-extractor.d.ts.map +1 -1
- package/dist/src/form/field-extractor.js +3 -444
- package/dist/src/form/field-extractor.js.map +1 -1
- package/dist/src/form/field-state-extractor.d.ts +22 -0
- package/dist/src/form/field-state-extractor.d.ts.map +1 -0
- package/dist/src/form/field-state-extractor.js +55 -0
- package/dist/src/form/field-state-extractor.js.map +1 -0
- package/dist/src/form/form-actions.d.ts +45 -0
- package/dist/src/form/form-actions.d.ts.map +1 -0
- package/dist/src/form/form-actions.js +108 -0
- package/dist/src/form/form-actions.js.map +1 -0
- package/dist/src/form/form-detector.d.ts +0 -36
- package/dist/src/form/form-detector.d.ts.map +1 -1
- package/dist/src/form/form-detector.js +11 -376
- package/dist/src/form/form-detector.js.map +1 -1
- package/dist/src/form/input-clustering.d.ts +15 -0
- package/dist/src/form/input-clustering.d.ts.map +1 -0
- package/dist/src/form/input-clustering.js +61 -0
- package/dist/src/form/input-clustering.js.map +1 -0
- package/dist/src/form/intent-inference.d.ts +28 -0
- package/dist/src/form/intent-inference.d.ts.map +1 -0
- package/dist/src/form/intent-inference.js +137 -0
- package/dist/src/form/intent-inference.js.map +1 -0
- package/dist/src/form/purpose-inference.d.ts +50 -0
- package/dist/src/form/purpose-inference.d.ts.map +1 -0
- package/dist/src/form/purpose-inference.js +313 -0
- package/dist/src/form/purpose-inference.js.map +1 -0
- package/dist/src/form/submit-detection.d.ts +36 -0
- package/dist/src/form/submit-detection.d.ts.map +1 -0
- package/dist/src/form/submit-detection.js +101 -0
- package/dist/src/form/submit-detection.js.map +1 -0
- package/dist/src/form/types.d.ts +2 -2
- package/dist/src/index.js +65 -48
- package/dist/src/index.js.map +1 -1
- package/dist/src/observation/observation-accumulator.d.ts +1 -1
- package/dist/src/observation/observation-accumulator.js +1 -1
- package/dist/src/observation/observer-script.d.ts +1 -1
- package/dist/src/observation/observer-script.d.ts.map +1 -1
- package/dist/src/observation/observer-script.js +129 -7
- package/dist/src/observation/observer-script.js.map +1 -1
- package/dist/src/query/disambiguation.d.ts +18 -0
- package/dist/src/query/disambiguation.d.ts.map +1 -0
- package/dist/src/query/disambiguation.js +123 -0
- package/dist/src/query/disambiguation.js.map +1 -0
- package/dist/src/query/fuzzy-match.d.ts +17 -0
- package/dist/src/query/fuzzy-match.d.ts.map +1 -0
- package/dist/src/query/fuzzy-match.js +34 -0
- package/dist/src/query/fuzzy-match.js.map +1 -0
- package/dist/src/query/index.d.ts +3 -0
- package/dist/src/query/index.d.ts.map +1 -1
- package/dist/src/query/index.js +6 -0
- package/dist/src/query/index.js.map +1 -1
- package/dist/src/query/query-engine.d.ts +0 -35
- package/dist/src/query/query-engine.d.ts.map +1 -1
- package/dist/src/query/query-engine.js +9 -309
- package/dist/src/query/query-engine.js.map +1 -1
- package/dist/src/query/scoring.d.ts +52 -0
- package/dist/src/query/scoring.d.ts.map +1 -0
- package/dist/src/query/scoring.js +162 -0
- package/dist/src/query/scoring.js.map +1 -0
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/mcp-server.js +29 -1
- package/dist/src/server/mcp-server.js.map +1 -1
- package/dist/src/snapshot/element-resolver.d.ts +50 -18
- package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
- package/dist/src/snapshot/element-resolver.js +180 -101
- package/dist/src/snapshot/element-resolver.js.map +1 -1
- package/dist/src/snapshot/extractors/ax-extractor.d.ts +1 -1
- package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/ax-extractor.js +4 -1
- package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -1
- package/dist/src/snapshot/extractors/index.d.ts +1 -1
- package/dist/src/snapshot/extractors/index.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/index.js +1 -1
- package/dist/src/snapshot/extractors/index.js.map +1 -1
- package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/region-resolver.js +8 -0
- package/dist/src/snapshot/extractors/region-resolver.js.map +1 -1
- package/dist/src/snapshot/extractors/types.d.ts +8 -0
- package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/types.js +16 -0
- package/dist/src/snapshot/extractors/types.js.map +1 -1
- package/dist/src/snapshot/frame-context.d.ts +68 -0
- package/dist/src/snapshot/frame-context.d.ts.map +1 -0
- package/dist/src/snapshot/frame-context.js +131 -0
- package/dist/src/snapshot/frame-context.js.map +1 -0
- package/dist/src/snapshot/heading-index.d.ts +28 -0
- package/dist/src/snapshot/heading-index.d.ts.map +1 -0
- package/dist/src/snapshot/heading-index.js +108 -0
- package/dist/src/snapshot/heading-index.js.map +1 -0
- package/dist/src/snapshot/index.d.ts +5 -3
- package/dist/src/snapshot/index.d.ts.map +1 -1
- package/dist/src/snapshot/index.js +3 -2
- package/dist/src/snapshot/index.js.map +1 -1
- package/dist/src/snapshot/kind-mapping.d.ts +30 -0
- package/dist/src/snapshot/kind-mapping.d.ts.map +1 -0
- package/dist/src/snapshot/kind-mapping.js +114 -0
- package/dist/src/snapshot/kind-mapping.js.map +1 -0
- package/dist/src/snapshot/node-filter.d.ts +31 -0
- package/dist/src/snapshot/node-filter.d.ts.map +1 -0
- package/dist/src/snapshot/node-filter.js +137 -0
- package/dist/src/snapshot/node-filter.js.map +1 -0
- package/dist/src/snapshot/node-synthesizer.d.ts +62 -0
- package/dist/src/snapshot/node-synthesizer.d.ts.map +1 -0
- package/dist/src/snapshot/node-synthesizer.js +185 -0
- package/dist/src/snapshot/node-synthesizer.js.map +1 -0
- package/dist/src/snapshot/snapshot-compiler.d.ts +2 -36
- package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
- package/dist/src/snapshot/snapshot-compiler.js +28 -520
- package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
- package/dist/src/snapshot/snapshot.types.d.ts +7 -2
- package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
- package/dist/src/snapshot/snapshot.types.js +9 -0
- package/dist/src/snapshot/snapshot.types.js.map +1 -1
- package/dist/src/state/actionables-filter.d.ts +5 -0
- package/dist/src/state/actionables-filter.d.ts.map +1 -1
- package/dist/src/state/actionables-filter.js +22 -3
- package/dist/src/state/actionables-filter.js.map +1 -1
- package/dist/src/state/diff-engine.js +3 -3
- package/dist/src/state/diff-engine.js.map +1 -1
- package/dist/src/state/element-registry.d.ts.map +1 -1
- package/dist/src/state/element-registry.js +6 -4
- package/dist/src/state/element-registry.js.map +1 -1
- package/dist/src/state/hash-utils.d.ts +24 -0
- package/dist/src/state/hash-utils.d.ts.map +1 -0
- package/dist/src/state/hash-utils.js +41 -0
- package/dist/src/state/hash-utils.js.map +1 -0
- package/dist/src/state/layer-detector.d.ts.map +1 -1
- package/dist/src/state/layer-detector.js +15 -286
- package/dist/src/state/layer-detector.js.map +1 -1
- package/dist/src/state/layer-detectors/drawer-detector.d.ts +32 -0
- package/dist/src/state/layer-detectors/drawer-detector.d.ts.map +1 -0
- package/dist/src/state/layer-detectors/drawer-detector.js +96 -0
- package/dist/src/state/layer-detectors/drawer-detector.js.map +1 -0
- package/dist/src/state/layer-detectors/index.d.ts +10 -0
- package/dist/src/state/layer-detectors/index.d.ts.map +1 -0
- package/dist/src/state/layer-detectors/index.js +10 -0
- package/dist/src/state/layer-detectors/index.js.map +1 -0
- package/dist/src/state/layer-detectors/modal-detector.d.ts +30 -0
- package/dist/src/state/layer-detectors/modal-detector.d.ts.map +1 -0
- package/dist/src/state/layer-detectors/modal-detector.js +127 -0
- package/dist/src/state/layer-detectors/modal-detector.js.map +1 -0
- package/dist/src/state/layer-detectors/popover-detector.d.ts +20 -0
- package/dist/src/state/layer-detectors/popover-detector.d.ts.map +1 -0
- package/dist/src/state/layer-detectors/popover-detector.js +76 -0
- package/dist/src/state/layer-detectors/popover-detector.js.map +1 -0
- package/dist/src/state/layer-detectors/toast-detector.d.ts +24 -0
- package/dist/src/state/layer-detectors/toast-detector.d.ts.map +1 -0
- package/dist/src/state/layer-detectors/toast-detector.js +48 -0
- package/dist/src/state/layer-detectors/toast-detector.js.map +1 -0
- package/dist/src/state/region-mapping.d.ts +13 -0
- package/dist/src/state/region-mapping.d.ts.map +1 -0
- package/dist/src/state/region-mapping.js +25 -0
- package/dist/src/state/region-mapping.js.map +1 -0
- package/dist/src/state/state-manager.d.ts.map +1 -1
- package/dist/src/state/state-manager.js +8 -192
- package/dist/src/state/state-manager.js.map +1 -1
- package/dist/src/state/state-renderer.d.ts.map +1 -1
- package/dist/src/state/state-renderer.js +16 -2
- package/dist/src/state/state-renderer.js.map +1 -1
- package/dist/src/state/types.d.ts +8 -4
- package/dist/src/state/types.d.ts.map +1 -1
- package/dist/src/state/url-sanitization.d.ts +22 -0
- package/dist/src/state/url-sanitization.d.ts.map +1 -0
- package/dist/src/state/url-sanitization.js +60 -0
- package/dist/src/state/url-sanitization.js.map +1 -0
- package/dist/src/state/value-masking.d.ts +36 -0
- package/dist/src/state/value-masking.d.ts.map +1 -0
- package/dist/src/state/value-masking.js +86 -0
- package/dist/src/state/value-masking.js.map +1 -0
- package/dist/src/tools/action-context.d.ts +60 -0
- package/dist/src/tools/action-context.d.ts.map +1 -0
- package/dist/src/tools/action-context.js +78 -0
- package/dist/src/tools/action-context.js.map +1 -0
- package/dist/src/tools/action-stabilization.d.ts +48 -0
- package/dist/src/tools/action-stabilization.d.ts.map +1 -0
- package/dist/src/tools/action-stabilization.js +87 -0
- package/dist/src/tools/action-stabilization.js.map +1 -0
- package/dist/src/tools/browser-tools.d.ts +8 -146
- package/dist/src/tools/browser-tools.d.ts.map +1 -1
- package/dist/src/tools/browser-tools.js +13 -689
- package/dist/src/tools/browser-tools.js.map +1 -1
- package/dist/src/tools/canvas-tools.d.ts +32 -0
- package/dist/src/tools/canvas-tools.d.ts.map +1 -0
- package/dist/src/tools/canvas-tools.js +370 -0
- package/dist/src/tools/canvas-tools.js.map +1 -0
- package/dist/src/tools/effect-tracker.d.ts +25 -0
- package/dist/src/tools/effect-tracker.d.ts.map +1 -0
- package/dist/src/tools/effect-tracker.js +69 -0
- package/dist/src/tools/effect-tracker.js.map +1 -0
- package/dist/src/tools/execute-action.d.ts +1 -31
- package/dist/src/tools/execute-action.d.ts.map +1 -1
- package/dist/src/tools/execute-action.js +7 -276
- package/dist/src/tools/execute-action.js.map +1 -1
- package/dist/src/tools/form-tools.d.ts +4 -6
- package/dist/src/tools/form-tools.d.ts.map +1 -1
- package/dist/src/tools/form-tools.js +10 -42
- package/dist/src/tools/form-tools.js.map +1 -1
- package/dist/src/tools/index.d.ts +6 -4
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +21 -10
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/interaction-tools.d.ts +46 -0
- package/dist/src/tools/interaction-tools.d.ts.map +1 -0
- package/dist/src/tools/interaction-tools.js +138 -0
- package/dist/src/tools/interaction-tools.js.map +1 -0
- package/dist/src/tools/navigation-detection.d.ts +31 -0
- package/dist/src/tools/navigation-detection.d.ts.map +1 -0
- package/dist/src/tools/navigation-detection.js +46 -0
- package/dist/src/tools/navigation-detection.js.map +1 -0
- package/dist/src/tools/navigation-tools.d.ts +57 -0
- package/dist/src/tools/navigation-tools.d.ts.map +1 -0
- package/dist/src/tools/navigation-tools.js +178 -0
- package/dist/src/tools/navigation-tools.js.map +1 -0
- package/dist/src/tools/observation-tools.d.ts +53 -0
- package/dist/src/tools/observation-tools.d.ts.map +1 -0
- package/dist/src/tools/observation-tools.js +247 -0
- package/dist/src/tools/observation-tools.js.map +1 -0
- package/dist/src/tools/response-builder.js +2 -2
- package/dist/src/tools/response-builder.js.map +1 -1
- package/dist/src/tools/stale-element-retry.d.ts +37 -0
- package/dist/src/tools/stale-element-retry.d.ts.map +1 -0
- package/dist/src/tools/stale-element-retry.js +68 -0
- package/dist/src/tools/stale-element-retry.js.map +1 -0
- package/dist/src/tools/state-manager-registry.d.ts +26 -0
- package/dist/src/tools/state-manager-registry.d.ts.map +1 -0
- package/dist/src/tools/state-manager-registry.js +39 -0
- package/dist/src/tools/state-manager-registry.js.map +1 -0
- package/dist/src/tools/tool-context.d.ts +53 -0
- package/dist/src/tools/tool-context.d.ts.map +1 -0
- package/dist/src/tools/tool-context.js +119 -0
- package/dist/src/tools/tool-context.js.map +1 -0
- package/dist/src/tools/tool-result.types.d.ts +16 -1
- package/dist/src/tools/tool-result.types.d.ts.map +1 -1
- package/dist/src/tools/tool-result.types.js +11 -0
- package/dist/src/tools/tool-result.types.js.map +1 -1
- package/dist/src/tools/tool-schemas.d.ts +358 -146
- package/dist/src/tools/tool-schemas.d.ts.map +1 -1
- package/dist/src/tools/tool-schemas.js +142 -19
- package/dist/src/tools/tool-schemas.js.map +1 -1
- package/dist/src/tools/viewport-tools.d.ts +36 -0
- package/dist/src/tools/viewport-tools.d.ts.map +1 -0
- package/dist/src/tools/viewport-tools.js +105 -0
- package/dist/src/tools/viewport-tools.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-tools.js","sourceRoot":"","sources":["../../../src/tools/browser-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-tools.js","sourceRoot":"","sources":["../../../src/tools/browser-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kCAAkC;AAClC,OAAO,EACL,eAAe,EAEf,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,6BAA6B;AAC7B,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,GACP,MAAM,uBAAuB,CAAC;AAE/B,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,oBAAoB;AACpB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE3E,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tool handler for canvas element inspection.
|
|
5
|
+
* Detects canvas rendering libraries (Fabric.js, Konva, PixiJS, Phaser, Three.js, EaselJS),
|
|
6
|
+
* queries their scene graphs for object metadata, and returns annotated screenshots.
|
|
7
|
+
*/
|
|
8
|
+
import type { CompositeResult } from './tool-result.types.js';
|
|
9
|
+
/** A single detected object on the canvas. */
|
|
10
|
+
export interface CanvasObject {
|
|
11
|
+
type: string;
|
|
12
|
+
label: string;
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
w: number;
|
|
16
|
+
h: number;
|
|
17
|
+
}
|
|
18
|
+
/** Result returned by the canvas detection script. */
|
|
19
|
+
export interface CanvasMetadata {
|
|
20
|
+
library: string;
|
|
21
|
+
objects: CanvasObject[];
|
|
22
|
+
canvas_size: {
|
|
23
|
+
w: number;
|
|
24
|
+
h: number;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Inspect a canvas element: detect library, query scene graph, and return
|
|
29
|
+
* an annotated screenshot with coordinate grid + object bounding boxes.
|
|
30
|
+
*/
|
|
31
|
+
export declare function inspectCanvas(rawInput: unknown): Promise<CompositeResult>;
|
|
32
|
+
//# sourceMappingURL=canvas-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/canvas-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAC;AAavF,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AA4TD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CA8D/E"}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tool handler for canvas element inspection.
|
|
5
|
+
* Detects canvas rendering libraries (Fabric.js, Konva, PixiJS, Phaser, Three.js, EaselJS),
|
|
6
|
+
* queries their scene graphs for object metadata, and returns annotated screenshots.
|
|
7
|
+
*/
|
|
8
|
+
import { InspectCanvasInputSchema } from './tool-schemas.js';
|
|
9
|
+
import { captureScreenshot, getElementBoundingBox } from '../screenshot/index.js';
|
|
10
|
+
import { getSessionManager, resolveExistingPage, ensureCdpSession, requireSnapshot, resolveElementByEid, } from './tool-context.js';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Canvas detection script (executed in page context via Runtime.callFunctionOn)
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/**
|
|
15
|
+
* JavaScript function string executed via CDP Runtime.callFunctionOn with
|
|
16
|
+
* `this` bound to the target canvas DOM element.
|
|
17
|
+
*
|
|
18
|
+
* Returns { library, objects[], canvas_size } describing detected library
|
|
19
|
+
* and scene graph contents. Each library detector validates canvas ownership
|
|
20
|
+
* to avoid false positives on multi-canvas pages.
|
|
21
|
+
*/
|
|
22
|
+
const CANVAS_DETECT_SCRIPT = `function() {
|
|
23
|
+
var canvas = this;
|
|
24
|
+
var MAX_OBJECTS = 50;
|
|
25
|
+
var result = {
|
|
26
|
+
library: 'none',
|
|
27
|
+
objects: [],
|
|
28
|
+
canvas_size: { w: canvas.width, h: canvas.height }
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// -- Helpers --
|
|
32
|
+
|
|
33
|
+
/** Safe constructor name: returns '' for minified names (length <= 2). */
|
|
34
|
+
function safeName(obj) {
|
|
35
|
+
var n = obj && obj.constructor && obj.constructor.name;
|
|
36
|
+
return n && n.length > 2 ? n : '';
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Scan window keys for first object matching predicate. */
|
|
40
|
+
function scanWindow(pred) {
|
|
41
|
+
var keys = Object.keys(window);
|
|
42
|
+
for (var i = 0; i < keys.length; i++) {
|
|
43
|
+
try { var v = window[keys[i]]; if (v && pred(v)) return v; } catch(e) {}
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Collect up to max items into result.objects via an extractor function. */
|
|
49
|
+
function collect(items, max, extract) {
|
|
50
|
+
for (var i = 0; i < Math.min(items.length, max); i++) {
|
|
51
|
+
result.objects.push(extract(items[i], i));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
// -- Fabric.js --
|
|
57
|
+
var fc = null;
|
|
58
|
+
if (typeof fabric !== 'undefined') {
|
|
59
|
+
fc = canvas.__canvas || null;
|
|
60
|
+
if (!fc && fabric.Canvas && fabric.Canvas.activeInstances) {
|
|
61
|
+
fc = fabric.Canvas.activeInstances.find(function(c) {
|
|
62
|
+
return c.lowerCanvasEl === canvas || c.upperCanvasEl === canvas;
|
|
63
|
+
}) || null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (!fc) {
|
|
67
|
+
var canvasesToMatch = [canvas];
|
|
68
|
+
if (canvas.classList) {
|
|
69
|
+
if (canvas.classList.contains('upper-canvas') && canvas.previousElementSibling)
|
|
70
|
+
canvasesToMatch.push(canvas.previousElementSibling);
|
|
71
|
+
if (canvas.classList.contains('lower-canvas') && canvas.nextElementSibling)
|
|
72
|
+
canvasesToMatch.push(canvas.nextElementSibling);
|
|
73
|
+
}
|
|
74
|
+
fc = scanWindow(function(obj) {
|
|
75
|
+
if (typeof obj.getObjects !== 'function') return false;
|
|
76
|
+
for (var ci = 0; ci < canvasesToMatch.length; ci++) {
|
|
77
|
+
try {
|
|
78
|
+
if (obj.lowerCanvasEl === canvasesToMatch[ci] || obj.upperCanvasEl === canvasesToMatch[ci])
|
|
79
|
+
return true;
|
|
80
|
+
} catch(e) {}
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (fc && typeof fc.getObjects === 'function') {
|
|
86
|
+
result.library = 'fabric';
|
|
87
|
+
collect(fc.getObjects(), MAX_OBJECTS, function(o, i) {
|
|
88
|
+
return {
|
|
89
|
+
type: o.type || 'object',
|
|
90
|
+
label: o.name || o.type || ('object-' + i),
|
|
91
|
+
x: Math.round(o.left || 0), y: Math.round(o.top || 0),
|
|
92
|
+
w: Math.round((o.width || 0) * (o.scaleX || 1)),
|
|
93
|
+
h: Math.round((o.height || 0) * (o.scaleY || 1))
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
if (canvas.classList && (canvas.classList.contains('lower-canvas') || canvas.classList.contains('upper-canvas'))) {
|
|
99
|
+
result.library = 'fabric';
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// -- Konva --
|
|
104
|
+
if (typeof Konva !== 'undefined' && Konva.stages) {
|
|
105
|
+
var stage = Konva.stages.find(function(s) {
|
|
106
|
+
var c = s.container(); return c && c.contains(canvas);
|
|
107
|
+
});
|
|
108
|
+
if (stage) {
|
|
109
|
+
result.library = 'konva';
|
|
110
|
+
collect(stage.find('Shape'), MAX_OBJECTS, function(s, i) {
|
|
111
|
+
var cr = s.getClientRect();
|
|
112
|
+
return {
|
|
113
|
+
type: s.getClassName(),
|
|
114
|
+
label: s.name() || s.getClassName() + '-' + i,
|
|
115
|
+
x: Math.round(cr.x), y: Math.round(cr.y),
|
|
116
|
+
w: Math.round(cr.width), h: Math.round(cr.height)
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// -- PixiJS (canvas ownership: app.view / app.renderer.view / app.canvas) --
|
|
124
|
+
if (typeof PIXI !== 'undefined') {
|
|
125
|
+
var app = window.__PIXI_APP__ || window.app || scanWindow(function(obj) {
|
|
126
|
+
return obj.renderer && obj.stage;
|
|
127
|
+
});
|
|
128
|
+
if (app && app.stage) {
|
|
129
|
+
var pixiView = app.view || app.canvas || (app.renderer && (app.renderer.view || app.renderer.canvas));
|
|
130
|
+
if (pixiView !== canvas) app = null;
|
|
131
|
+
}
|
|
132
|
+
if (app && app.stage) {
|
|
133
|
+
result.library = 'pixi';
|
|
134
|
+
collect(app.stage.children, MAX_OBJECTS, function(c, i) {
|
|
135
|
+
var b = c.getBounds ? c.getBounds() : null;
|
|
136
|
+
var t = safeName(c) || (c.isSprite ? 'Sprite' : 'DisplayObject');
|
|
137
|
+
return {
|
|
138
|
+
type: t, label: c.name || c.label || (t + '-' + i),
|
|
139
|
+
x: b ? Math.round(b.x) : Math.round(c.x || 0),
|
|
140
|
+
y: b ? Math.round(b.y) : Math.round(c.y || 0),
|
|
141
|
+
w: b ? Math.round(b.width) : 0, h: b ? Math.round(b.height) : 0
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// -- Phaser (canvas ownership: game.canvas) --
|
|
149
|
+
if (typeof Phaser !== 'undefined' && window.game && window.game.canvas === canvas) {
|
|
150
|
+
result.library = 'phaser';
|
|
151
|
+
var scene = window.game.scene.getScenes(true)[0];
|
|
152
|
+
if (scene) {
|
|
153
|
+
collect(scene.children.getChildren(), MAX_OBJECTS, function(c, i) {
|
|
154
|
+
return {
|
|
155
|
+
type: c.type || 'gameObject',
|
|
156
|
+
label: c.name || ((c.type || 'gameObject') + '-' + i),
|
|
157
|
+
x: Math.round(c.x || 0), y: Math.round(c.y || 0),
|
|
158
|
+
w: Math.round(c.displayWidth || c.width || 0),
|
|
159
|
+
h: Math.round(c.displayHeight || c.height || 0)
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// -- Three.js (canvas ownership: renderer.domElement) --
|
|
167
|
+
if (typeof THREE !== 'undefined') {
|
|
168
|
+
var threeScene = null;
|
|
169
|
+
var rendererMatchesCanvas = false;
|
|
170
|
+
var wkeys = Object.keys(window);
|
|
171
|
+
for (var wi = 0; wi < wkeys.length; wi++) {
|
|
172
|
+
try {
|
|
173
|
+
var wobj = window[wkeys[wi]];
|
|
174
|
+
if (wobj && typeof wobj === 'object') {
|
|
175
|
+
if (wobj.domElement === canvas && typeof wobj.render === 'function')
|
|
176
|
+
rendererMatchesCanvas = true;
|
|
177
|
+
if (!threeScene && wobj.isScene && typeof wobj.traverse === 'function')
|
|
178
|
+
threeScene = wobj;
|
|
179
|
+
}
|
|
180
|
+
} catch(e) {}
|
|
181
|
+
}
|
|
182
|
+
if (!threeScene && window.scene && typeof window.scene.traverse === 'function')
|
|
183
|
+
threeScene = window.scene;
|
|
184
|
+
if (rendererMatchesCanvas && threeScene) {
|
|
185
|
+
result.library = 'three';
|
|
186
|
+
var count = 0;
|
|
187
|
+
threeScene.traverse(function(obj) {
|
|
188
|
+
if (count >= MAX_OBJECTS) return;
|
|
189
|
+
if (obj.isMesh || obj.isSprite) {
|
|
190
|
+
result.objects.push({
|
|
191
|
+
type: obj.type || 'mesh',
|
|
192
|
+
label: obj.name || ((obj.type || 'mesh') + '-' + count),
|
|
193
|
+
x: Math.round(obj.position.x), y: Math.round(obj.position.y),
|
|
194
|
+
w: 0, h: 0
|
|
195
|
+
});
|
|
196
|
+
count++;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// -- EaselJS / ZIM (canvas ownership: stage.canvas) --
|
|
204
|
+
if (typeof createjs !== 'undefined') {
|
|
205
|
+
var easelStage = (typeof zim !== 'undefined' && zim.stage) || null;
|
|
206
|
+
if (!easelStage) {
|
|
207
|
+
easelStage = scanWindow(function(obj) {
|
|
208
|
+
return obj instanceof createjs.Stage && obj.canvas === canvas;
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
if (easelStage) {
|
|
212
|
+
result.library = typeof zim !== 'undefined' ? 'zim' : 'easeljs';
|
|
213
|
+
collect(easelStage.children, MAX_OBJECTS, function(c, i) {
|
|
214
|
+
var b = c.getBounds ? c.getBounds() : null;
|
|
215
|
+
var t = safeName(c) || (c.graphics ? 'Shape' : 'DisplayObject');
|
|
216
|
+
return {
|
|
217
|
+
type: t, label: c.name || ('object-' + i),
|
|
218
|
+
x: Math.round(c.x || 0), y: Math.round(c.y || 0),
|
|
219
|
+
w: b ? Math.round(b.width) : 0, h: b ? Math.round(b.height) : 0
|
|
220
|
+
};
|
|
221
|
+
});
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
} catch(e) {}
|
|
226
|
+
|
|
227
|
+
return result;
|
|
228
|
+
}`;
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
// Canvas overlay script (executed in page context via Runtime.callFunctionOn)
|
|
231
|
+
// ---------------------------------------------------------------------------
|
|
232
|
+
/**
|
|
233
|
+
* JavaScript function string that creates a temporary overlay canvas with
|
|
234
|
+
* coordinate grid lines and object bounding boxes. Executed with `this` = canvas
|
|
235
|
+
* element, arguments = [gridSpacing, objects[]].
|
|
236
|
+
*
|
|
237
|
+
* Uses position:fixed because getBoundingClientRect returns viewport-relative
|
|
238
|
+
* coordinates.
|
|
239
|
+
*/
|
|
240
|
+
const CANVAS_OVERLAY_SCRIPT = `function(gridSpacing, objects) {
|
|
241
|
+
var canvas = this;
|
|
242
|
+
var rect = canvas.getBoundingClientRect();
|
|
243
|
+
|
|
244
|
+
var overlay = document.createElement('canvas');
|
|
245
|
+
overlay.id = '__inspect_canvas_overlay__';
|
|
246
|
+
overlay.width = canvas.width;
|
|
247
|
+
overlay.height = canvas.height;
|
|
248
|
+
overlay.style.cssText = [
|
|
249
|
+
'position:fixed',
|
|
250
|
+
'left:' + rect.left + 'px',
|
|
251
|
+
'top:' + rect.top + 'px',
|
|
252
|
+
'width:' + rect.width + 'px',
|
|
253
|
+
'height:' + rect.height + 'px',
|
|
254
|
+
'z-index:2147483647',
|
|
255
|
+
'pointer-events:none'
|
|
256
|
+
].join(';');
|
|
257
|
+
|
|
258
|
+
document.body.appendChild(overlay);
|
|
259
|
+
var ctx = overlay.getContext('2d');
|
|
260
|
+
|
|
261
|
+
// Coordinate grid (blue)
|
|
262
|
+
ctx.strokeStyle = 'rgba(0, 100, 255, 0.3)';
|
|
263
|
+
ctx.lineWidth = 1;
|
|
264
|
+
ctx.font = '10px monospace';
|
|
265
|
+
ctx.fillStyle = 'rgba(0, 100, 255, 0.6)';
|
|
266
|
+
for (var x = 0; x <= canvas.width; x += gridSpacing) {
|
|
267
|
+
ctx.beginPath(); ctx.moveTo(x, 0); ctx.lineTo(x, canvas.height); ctx.stroke();
|
|
268
|
+
ctx.fillText(String(x), x + 2, 10);
|
|
269
|
+
}
|
|
270
|
+
for (var y = 0; y <= canvas.height; y += gridSpacing) {
|
|
271
|
+
ctx.beginPath(); ctx.moveTo(0, y); ctx.lineTo(canvas.width, y); ctx.stroke();
|
|
272
|
+
ctx.fillText(String(y), 2, y - 2);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Object bounding boxes (red)
|
|
276
|
+
ctx.strokeStyle = 'rgba(255, 0, 0, 0.7)';
|
|
277
|
+
ctx.lineWidth = 2;
|
|
278
|
+
ctx.fillStyle = 'rgba(255, 0, 0, 0.8)';
|
|
279
|
+
ctx.font = '11px monospace';
|
|
280
|
+
for (var i = 0; i < objects.length; i++) {
|
|
281
|
+
var obj = objects[i];
|
|
282
|
+
if (obj.w > 0 && obj.h > 0) ctx.strokeRect(obj.x, obj.y, obj.w, obj.h);
|
|
283
|
+
ctx.fillText(obj.label, obj.x + 2, obj.y - 3);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return overlay.id;
|
|
287
|
+
}`;
|
|
288
|
+
// ---------------------------------------------------------------------------
|
|
289
|
+
// Overlay cleanup helper
|
|
290
|
+
// ---------------------------------------------------------------------------
|
|
291
|
+
const OVERLAY_ID = '__inspect_canvas_overlay__';
|
|
292
|
+
/**
|
|
293
|
+
* Remove overlay and release CDP object reference. Best-effort, never throws.
|
|
294
|
+
*/
|
|
295
|
+
async function cleanupInspection(cdp, objectId) {
|
|
296
|
+
await cdp
|
|
297
|
+
.send('Runtime.evaluate', {
|
|
298
|
+
expression: `document.getElementById('${OVERLAY_ID}')?.remove()`,
|
|
299
|
+
returnByValue: true,
|
|
300
|
+
})
|
|
301
|
+
.catch(() => {
|
|
302
|
+
/* best-effort cleanup */
|
|
303
|
+
});
|
|
304
|
+
if (objectId) {
|
|
305
|
+
await cdp.send('Runtime.releaseObject', { objectId }).catch(() => {
|
|
306
|
+
/* best-effort cleanup */
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// ---------------------------------------------------------------------------
|
|
311
|
+
// Tool handler
|
|
312
|
+
// ---------------------------------------------------------------------------
|
|
313
|
+
/**
|
|
314
|
+
* Inspect a canvas element: detect library, query scene graph, and return
|
|
315
|
+
* an annotated screenshot with coordinate grid + object bounding boxes.
|
|
316
|
+
*/
|
|
317
|
+
export async function inspectCanvas(rawInput) {
|
|
318
|
+
const input = InspectCanvasInputSchema.parse(rawInput);
|
|
319
|
+
const session = getSessionManager();
|
|
320
|
+
let handle = resolveExistingPage(session, input.page_id);
|
|
321
|
+
const pageId = handle.page_id;
|
|
322
|
+
const ensureResult = await ensureCdpSession(session, handle);
|
|
323
|
+
handle = ensureResult.handle;
|
|
324
|
+
const snapshot = requireSnapshot(pageId);
|
|
325
|
+
const node = resolveElementByEid(pageId, input.eid, snapshot);
|
|
326
|
+
// Scroll canvas into view before computing bounding box and overlay
|
|
327
|
+
await handle.cdp.send('DOM.scrollIntoViewIfNeeded', {
|
|
328
|
+
backendNodeId: node.backend_node_id,
|
|
329
|
+
});
|
|
330
|
+
// Parallelize independent CDP calls
|
|
331
|
+
const [clip, { object }] = await Promise.all([
|
|
332
|
+
getElementBoundingBox(handle.cdp, node.backend_node_id),
|
|
333
|
+
handle.cdp.send('DOM.resolveNode', { backendNodeId: node.backend_node_id }),
|
|
334
|
+
]);
|
|
335
|
+
// Detect canvas library and query scene graph
|
|
336
|
+
const detectResult = await handle.cdp.send('Runtime.callFunctionOn', {
|
|
337
|
+
objectId: object.objectId,
|
|
338
|
+
functionDeclaration: CANVAS_DETECT_SCRIPT,
|
|
339
|
+
returnByValue: true,
|
|
340
|
+
awaitPromise: false,
|
|
341
|
+
});
|
|
342
|
+
const metadata = detectResult.result.value ?? {
|
|
343
|
+
library: 'none',
|
|
344
|
+
objects: [],
|
|
345
|
+
canvas_size: { w: clip.width, h: clip.height },
|
|
346
|
+
};
|
|
347
|
+
const gridSpacing = input.grid_spacing ?? 50;
|
|
348
|
+
// Create overlay with grid and object bounding boxes
|
|
349
|
+
await handle.cdp.send('Runtime.callFunctionOn', {
|
|
350
|
+
objectId: object.objectId,
|
|
351
|
+
functionDeclaration: CANVAS_OVERLAY_SCRIPT,
|
|
352
|
+
arguments: [{ value: gridSpacing }, { value: metadata.objects }],
|
|
353
|
+
returnByValue: true,
|
|
354
|
+
awaitPromise: false,
|
|
355
|
+
});
|
|
356
|
+
// Capture screenshot with overlay, always clean up overlay + release objectId
|
|
357
|
+
let screenshotResult;
|
|
358
|
+
try {
|
|
359
|
+
screenshotResult = await captureScreenshot(handle.cdp, {
|
|
360
|
+
format: input.format ?? 'png',
|
|
361
|
+
quality: input.quality,
|
|
362
|
+
clip,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
finally {
|
|
366
|
+
await cleanupInspection(handle.cdp, object.objectId);
|
|
367
|
+
}
|
|
368
|
+
return { type: 'composite', text: JSON.stringify(metadata), image: screenshotResult };
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=canvas-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-tools.js","sourceRoot":"","sources":["../../../src/tools/canvas-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect Tracker
|
|
3
|
+
*
|
|
4
|
+
* Computes observed effects by comparing snapshots before and after actions.
|
|
5
|
+
*
|
|
6
|
+
* @module tools/effect-tracker
|
|
7
|
+
*/
|
|
8
|
+
import type { BaseSnapshot } from '../snapshot/snapshot.types.js';
|
|
9
|
+
import { type ObservedEffect } from '../form/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Compute an ObservedEffect by comparing snapshots before and after an action.
|
|
12
|
+
*
|
|
13
|
+
* This function analyzes differences between two snapshots to determine:
|
|
14
|
+
* - Which elements became enabled/disabled
|
|
15
|
+
* - Which elements appeared/disappeared
|
|
16
|
+
* - Which elements had their values change
|
|
17
|
+
*
|
|
18
|
+
* @param triggerEid - EID of the element that triggered the action
|
|
19
|
+
* @param actionType - Type of action performed
|
|
20
|
+
* @param prevSnapshot - Snapshot before the action (null if first action)
|
|
21
|
+
* @param currSnapshot - Snapshot after the action
|
|
22
|
+
* @returns ObservedEffect if meaningful changes detected, null otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare function computeObservedEffect(triggerEid: string, actionType: 'click' | 'type' | 'select' | 'focus' | 'blur', prevSnapshot: BaseSnapshot | null, currSnapshot: BaseSnapshot): ObservedEffect | null;
|
|
25
|
+
//# sourceMappingURL=effect-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-tracker.d.ts","sourceRoot":"","sources":["../../../src/tools/effect-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,YAAY,EAAE,YAAY,GACzB,cAAc,GAAG,IAAI,CA6DvB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect Tracker
|
|
3
|
+
*
|
|
4
|
+
* Computes observed effects by comparing snapshots before and after actions.
|
|
5
|
+
*
|
|
6
|
+
* @module tools/effect-tracker
|
|
7
|
+
*/
|
|
8
|
+
import { createObservedEffect } from '../form/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Compute an ObservedEffect by comparing snapshots before and after an action.
|
|
11
|
+
*
|
|
12
|
+
* This function analyzes differences between two snapshots to determine:
|
|
13
|
+
* - Which elements became enabled/disabled
|
|
14
|
+
* - Which elements appeared/disappeared
|
|
15
|
+
* - Which elements had their values change
|
|
16
|
+
*
|
|
17
|
+
* @param triggerEid - EID of the element that triggered the action
|
|
18
|
+
* @param actionType - Type of action performed
|
|
19
|
+
* @param prevSnapshot - Snapshot before the action (null if first action)
|
|
20
|
+
* @param currSnapshot - Snapshot after the action
|
|
21
|
+
* @returns ObservedEffect if meaningful changes detected, null otherwise
|
|
22
|
+
*/
|
|
23
|
+
export function computeObservedEffect(triggerEid, actionType, prevSnapshot, currSnapshot) {
|
|
24
|
+
// Skip if no previous snapshot to compare
|
|
25
|
+
if (!prevSnapshot) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
// Build maps of enabled/visible states
|
|
29
|
+
const beforeEids = new Map();
|
|
30
|
+
const beforeVisible = new Set();
|
|
31
|
+
const beforeValues = new Map();
|
|
32
|
+
for (const node of prevSnapshot.nodes) {
|
|
33
|
+
beforeEids.set(node.node_id, node.state?.enabled ?? true);
|
|
34
|
+
if (node.state?.visible) {
|
|
35
|
+
beforeVisible.add(node.node_id);
|
|
36
|
+
}
|
|
37
|
+
if (node.attributes?.value !== undefined) {
|
|
38
|
+
beforeValues.set(node.node_id, node.attributes.value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const afterEids = new Map();
|
|
42
|
+
const afterVisible = new Set();
|
|
43
|
+
const valueChanges = [];
|
|
44
|
+
for (const node of currSnapshot.nodes) {
|
|
45
|
+
afterEids.set(node.node_id, node.state?.enabled ?? true);
|
|
46
|
+
if (node.state?.visible) {
|
|
47
|
+
afterVisible.add(node.node_id);
|
|
48
|
+
}
|
|
49
|
+
// Detect value changes
|
|
50
|
+
const prevValue = beforeValues.get(node.node_id);
|
|
51
|
+
const currValue = node.attributes?.value;
|
|
52
|
+
if (currValue !== undefined && currValue !== prevValue) {
|
|
53
|
+
// Skip if this is the trigger element itself (self-change from typing)
|
|
54
|
+
if (node.node_id !== triggerEid) {
|
|
55
|
+
valueChanges.push(node.node_id);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Create the observed effect
|
|
60
|
+
const effect = createObservedEffect(triggerEid, actionType, beforeEids, afterEids, beforeVisible, afterVisible, valueChanges);
|
|
61
|
+
// Only return if there are meaningful changes
|
|
62
|
+
const hasChanges = effect.enabled.length > 0 ||
|
|
63
|
+
effect.disabled.length > 0 ||
|
|
64
|
+
effect.appeared.length > 0 ||
|
|
65
|
+
effect.disappeared.length > 0 ||
|
|
66
|
+
effect.value_changed.length > 0;
|
|
67
|
+
return hasChanges ? effect : null;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=effect-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-tracker.js","sourceRoot":"","sources":["../../../src/tools/effect-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAE7E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,UAA0D,EAC1D,YAAiC,EACjC,YAA0B;IAE1B,0CAA0C;IAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACtC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACxB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACtC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACxB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,uBAAuB;QACvB,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;QACzC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACvD,uEAAuE;YACvE,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,oBAAoB,CACjC,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,CACb,CAAC;IAEF,8CAA8C;IAC9C,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC1B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC1B,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC7B,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAElC,OAAO,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC"}
|
|
@@ -7,31 +7,11 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Navigation-aware click outcome model for better error classification.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
10
|
+
import type { ReadableNode, BaseSnapshot } from '../snapshot/snapshot.types.js';
|
|
11
11
|
import type { PageHandle } from '../browser/page-registry.js';
|
|
12
|
-
import { type StabilizationResult } from '../delta/dom-stabilizer.js';
|
|
13
|
-
import type { BaseSnapshot, ReadableNode } from '../snapshot/snapshot.types.js';
|
|
14
|
-
import { StateManager } from '../state/state-manager.js';
|
|
15
12
|
import type { StateResponse } from '../state/types.js';
|
|
16
13
|
import type { ClickOutcome } from '../state/element-ref.types.js';
|
|
17
14
|
import type { RuntimeHealth } from '../state/health.types.js';
|
|
18
|
-
/**
|
|
19
|
-
* Get or create state manager for a page.
|
|
20
|
-
*
|
|
21
|
-
* @param pageId - Page ID
|
|
22
|
-
* @returns State manager instance
|
|
23
|
-
*/
|
|
24
|
-
export declare function getStateManager(pageId: string): StateManager;
|
|
25
|
-
/**
|
|
26
|
-
* Remove state manager for a page (call on page close).
|
|
27
|
-
*
|
|
28
|
-
* @param pageId - Page ID
|
|
29
|
-
*/
|
|
30
|
-
export declare function removeStateManager(pageId: string): void;
|
|
31
|
-
/**
|
|
32
|
-
* Clear all state managers (call on session close).
|
|
33
|
-
*/
|
|
34
|
-
export declare function clearAllStateManagers(): void;
|
|
35
15
|
/**
|
|
36
16
|
* Result of executing an action.
|
|
37
17
|
*/
|
|
@@ -68,16 +48,6 @@ export type CaptureSnapshotFn = () => Promise<{
|
|
|
68
48
|
snapshot: BaseSnapshot;
|
|
69
49
|
runtime_health: RuntimeHealth;
|
|
70
50
|
}>;
|
|
71
|
-
/**
|
|
72
|
-
* Stabilize page after explicit navigation (goto, back, forward, reload).
|
|
73
|
-
*
|
|
74
|
-
* Uses a longer network timeout since navigations typically trigger more
|
|
75
|
-
* requests than in-page actions.
|
|
76
|
-
*
|
|
77
|
-
* @param page - Puppeteer Page instance
|
|
78
|
-
* @returns Stabilization result with status
|
|
79
|
-
*/
|
|
80
|
-
export declare function stabilizeAfterNavigation(page: Page): Promise<StabilizationResult>;
|
|
81
51
|
/**
|
|
82
52
|
* Execute a mutating action with automatic snapshot capture and state response generation.
|
|
83
53
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-action.d.ts","sourceRoot":"","sources":["../../../src/tools/execute-action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"execute-action.d.ts","sourceRoot":"","sources":["../../../src/tools/execute-action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAe9D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAE1B,wDAAwD;IACxD,cAAc,EAAE,aAAa,CAAC;IAE9B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,EAAE,YAAY,CAAC;IAEvB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,8CAA8C;IAC9C,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,aAAa,CAAC;CAC/B,CAAC,CAAC;AAMH;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC3B,eAAe,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,YAAY,CAAC,CAyDvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAChD,aAAa,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CAAE,EAC3E,eAAe,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,YAAY,CAAC,CA2GvB;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAChD,aAAa,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CAAE,EAC3E,eAAe,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,uBAAuB,CAAC,CA0IlC"}
|