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.
Files changed (265) hide show
  1. package/dist/src/browser/connection-utils.d.ts +48 -0
  2. package/dist/src/browser/connection-utils.d.ts.map +1 -0
  3. package/dist/src/browser/connection-utils.js +129 -0
  4. package/dist/src/browser/connection-utils.js.map +1 -0
  5. package/dist/src/browser/index.d.ts +3 -1
  6. package/dist/src/browser/index.d.ts.map +1 -1
  7. package/dist/src/browser/index.js +2 -1
  8. package/dist/src/browser/index.js.map +1 -1
  9. package/dist/src/browser/session-manager.d.ts +1 -89
  10. package/dist/src/browser/session-manager.d.ts.map +1 -1
  11. package/dist/src/browser/session-manager.js +1 -116
  12. package/dist/src/browser/session-manager.js.map +1 -1
  13. package/dist/src/browser/session-manager.types.d.ts +90 -0
  14. package/dist/src/browser/session-manager.types.d.ts.map +1 -0
  15. package/dist/src/browser/session-manager.types.js +7 -0
  16. package/dist/src/browser/session-manager.types.js.map +1 -0
  17. package/dist/src/form/constraint-extraction.d.ts +31 -0
  18. package/dist/src/form/constraint-extraction.d.ts.map +1 -0
  19. package/dist/src/form/constraint-extraction.js +110 -0
  20. package/dist/src/form/constraint-extraction.js.map +1 -0
  21. package/dist/src/form/field-extractor.d.ts.map +1 -1
  22. package/dist/src/form/field-extractor.js +3 -444
  23. package/dist/src/form/field-extractor.js.map +1 -1
  24. package/dist/src/form/field-state-extractor.d.ts +22 -0
  25. package/dist/src/form/field-state-extractor.d.ts.map +1 -0
  26. package/dist/src/form/field-state-extractor.js +55 -0
  27. package/dist/src/form/field-state-extractor.js.map +1 -0
  28. package/dist/src/form/form-actions.d.ts +45 -0
  29. package/dist/src/form/form-actions.d.ts.map +1 -0
  30. package/dist/src/form/form-actions.js +108 -0
  31. package/dist/src/form/form-actions.js.map +1 -0
  32. package/dist/src/form/form-detector.d.ts +0 -36
  33. package/dist/src/form/form-detector.d.ts.map +1 -1
  34. package/dist/src/form/form-detector.js +11 -376
  35. package/dist/src/form/form-detector.js.map +1 -1
  36. package/dist/src/form/input-clustering.d.ts +15 -0
  37. package/dist/src/form/input-clustering.d.ts.map +1 -0
  38. package/dist/src/form/input-clustering.js +61 -0
  39. package/dist/src/form/input-clustering.js.map +1 -0
  40. package/dist/src/form/intent-inference.d.ts +28 -0
  41. package/dist/src/form/intent-inference.d.ts.map +1 -0
  42. package/dist/src/form/intent-inference.js +137 -0
  43. package/dist/src/form/intent-inference.js.map +1 -0
  44. package/dist/src/form/purpose-inference.d.ts +50 -0
  45. package/dist/src/form/purpose-inference.d.ts.map +1 -0
  46. package/dist/src/form/purpose-inference.js +313 -0
  47. package/dist/src/form/purpose-inference.js.map +1 -0
  48. package/dist/src/form/submit-detection.d.ts +36 -0
  49. package/dist/src/form/submit-detection.d.ts.map +1 -0
  50. package/dist/src/form/submit-detection.js +101 -0
  51. package/dist/src/form/submit-detection.js.map +1 -0
  52. package/dist/src/form/types.d.ts +2 -2
  53. package/dist/src/index.js +65 -48
  54. package/dist/src/index.js.map +1 -1
  55. package/dist/src/observation/observation-accumulator.d.ts +1 -1
  56. package/dist/src/observation/observation-accumulator.js +1 -1
  57. package/dist/src/observation/observer-script.d.ts +1 -1
  58. package/dist/src/observation/observer-script.d.ts.map +1 -1
  59. package/dist/src/observation/observer-script.js +129 -7
  60. package/dist/src/observation/observer-script.js.map +1 -1
  61. package/dist/src/query/disambiguation.d.ts +18 -0
  62. package/dist/src/query/disambiguation.d.ts.map +1 -0
  63. package/dist/src/query/disambiguation.js +123 -0
  64. package/dist/src/query/disambiguation.js.map +1 -0
  65. package/dist/src/query/fuzzy-match.d.ts +17 -0
  66. package/dist/src/query/fuzzy-match.d.ts.map +1 -0
  67. package/dist/src/query/fuzzy-match.js +34 -0
  68. package/dist/src/query/fuzzy-match.js.map +1 -0
  69. package/dist/src/query/index.d.ts +3 -0
  70. package/dist/src/query/index.d.ts.map +1 -1
  71. package/dist/src/query/index.js +6 -0
  72. package/dist/src/query/index.js.map +1 -1
  73. package/dist/src/query/query-engine.d.ts +0 -35
  74. package/dist/src/query/query-engine.d.ts.map +1 -1
  75. package/dist/src/query/query-engine.js +9 -309
  76. package/dist/src/query/query-engine.js.map +1 -1
  77. package/dist/src/query/scoring.d.ts +52 -0
  78. package/dist/src/query/scoring.d.ts.map +1 -0
  79. package/dist/src/query/scoring.js +162 -0
  80. package/dist/src/query/scoring.js.map +1 -0
  81. package/dist/src/server/mcp-server.d.ts.map +1 -1
  82. package/dist/src/server/mcp-server.js +29 -1
  83. package/dist/src/server/mcp-server.js.map +1 -1
  84. package/dist/src/snapshot/element-resolver.d.ts +50 -18
  85. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  86. package/dist/src/snapshot/element-resolver.js +180 -101
  87. package/dist/src/snapshot/element-resolver.js.map +1 -1
  88. package/dist/src/snapshot/extractors/ax-extractor.d.ts +1 -1
  89. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -1
  90. package/dist/src/snapshot/extractors/ax-extractor.js +4 -1
  91. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -1
  92. package/dist/src/snapshot/extractors/index.d.ts +1 -1
  93. package/dist/src/snapshot/extractors/index.d.ts.map +1 -1
  94. package/dist/src/snapshot/extractors/index.js +1 -1
  95. package/dist/src/snapshot/extractors/index.js.map +1 -1
  96. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -1
  97. package/dist/src/snapshot/extractors/region-resolver.js +8 -0
  98. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -1
  99. package/dist/src/snapshot/extractors/types.d.ts +8 -0
  100. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  101. package/dist/src/snapshot/extractors/types.js +16 -0
  102. package/dist/src/snapshot/extractors/types.js.map +1 -1
  103. package/dist/src/snapshot/frame-context.d.ts +68 -0
  104. package/dist/src/snapshot/frame-context.d.ts.map +1 -0
  105. package/dist/src/snapshot/frame-context.js +131 -0
  106. package/dist/src/snapshot/frame-context.js.map +1 -0
  107. package/dist/src/snapshot/heading-index.d.ts +28 -0
  108. package/dist/src/snapshot/heading-index.d.ts.map +1 -0
  109. package/dist/src/snapshot/heading-index.js +108 -0
  110. package/dist/src/snapshot/heading-index.js.map +1 -0
  111. package/dist/src/snapshot/index.d.ts +5 -3
  112. package/dist/src/snapshot/index.d.ts.map +1 -1
  113. package/dist/src/snapshot/index.js +3 -2
  114. package/dist/src/snapshot/index.js.map +1 -1
  115. package/dist/src/snapshot/kind-mapping.d.ts +30 -0
  116. package/dist/src/snapshot/kind-mapping.d.ts.map +1 -0
  117. package/dist/src/snapshot/kind-mapping.js +114 -0
  118. package/dist/src/snapshot/kind-mapping.js.map +1 -0
  119. package/dist/src/snapshot/node-filter.d.ts +31 -0
  120. package/dist/src/snapshot/node-filter.d.ts.map +1 -0
  121. package/dist/src/snapshot/node-filter.js +137 -0
  122. package/dist/src/snapshot/node-filter.js.map +1 -0
  123. package/dist/src/snapshot/node-synthesizer.d.ts +62 -0
  124. package/dist/src/snapshot/node-synthesizer.d.ts.map +1 -0
  125. package/dist/src/snapshot/node-synthesizer.js +185 -0
  126. package/dist/src/snapshot/node-synthesizer.js.map +1 -0
  127. package/dist/src/snapshot/snapshot-compiler.d.ts +2 -36
  128. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  129. package/dist/src/snapshot/snapshot-compiler.js +28 -520
  130. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  131. package/dist/src/snapshot/snapshot.types.d.ts +7 -2
  132. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  133. package/dist/src/snapshot/snapshot.types.js +9 -0
  134. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  135. package/dist/src/state/actionables-filter.d.ts +5 -0
  136. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  137. package/dist/src/state/actionables-filter.js +22 -3
  138. package/dist/src/state/actionables-filter.js.map +1 -1
  139. package/dist/src/state/diff-engine.js +3 -3
  140. package/dist/src/state/diff-engine.js.map +1 -1
  141. package/dist/src/state/element-registry.d.ts.map +1 -1
  142. package/dist/src/state/element-registry.js +6 -4
  143. package/dist/src/state/element-registry.js.map +1 -1
  144. package/dist/src/state/hash-utils.d.ts +24 -0
  145. package/dist/src/state/hash-utils.d.ts.map +1 -0
  146. package/dist/src/state/hash-utils.js +41 -0
  147. package/dist/src/state/hash-utils.js.map +1 -0
  148. package/dist/src/state/layer-detector.d.ts.map +1 -1
  149. package/dist/src/state/layer-detector.js +15 -286
  150. package/dist/src/state/layer-detector.js.map +1 -1
  151. package/dist/src/state/layer-detectors/drawer-detector.d.ts +32 -0
  152. package/dist/src/state/layer-detectors/drawer-detector.d.ts.map +1 -0
  153. package/dist/src/state/layer-detectors/drawer-detector.js +96 -0
  154. package/dist/src/state/layer-detectors/drawer-detector.js.map +1 -0
  155. package/dist/src/state/layer-detectors/index.d.ts +10 -0
  156. package/dist/src/state/layer-detectors/index.d.ts.map +1 -0
  157. package/dist/src/state/layer-detectors/index.js +10 -0
  158. package/dist/src/state/layer-detectors/index.js.map +1 -0
  159. package/dist/src/state/layer-detectors/modal-detector.d.ts +30 -0
  160. package/dist/src/state/layer-detectors/modal-detector.d.ts.map +1 -0
  161. package/dist/src/state/layer-detectors/modal-detector.js +127 -0
  162. package/dist/src/state/layer-detectors/modal-detector.js.map +1 -0
  163. package/dist/src/state/layer-detectors/popover-detector.d.ts +20 -0
  164. package/dist/src/state/layer-detectors/popover-detector.d.ts.map +1 -0
  165. package/dist/src/state/layer-detectors/popover-detector.js +76 -0
  166. package/dist/src/state/layer-detectors/popover-detector.js.map +1 -0
  167. package/dist/src/state/layer-detectors/toast-detector.d.ts +24 -0
  168. package/dist/src/state/layer-detectors/toast-detector.d.ts.map +1 -0
  169. package/dist/src/state/layer-detectors/toast-detector.js +48 -0
  170. package/dist/src/state/layer-detectors/toast-detector.js.map +1 -0
  171. package/dist/src/state/region-mapping.d.ts +13 -0
  172. package/dist/src/state/region-mapping.d.ts.map +1 -0
  173. package/dist/src/state/region-mapping.js +25 -0
  174. package/dist/src/state/region-mapping.js.map +1 -0
  175. package/dist/src/state/state-manager.d.ts.map +1 -1
  176. package/dist/src/state/state-manager.js +8 -192
  177. package/dist/src/state/state-manager.js.map +1 -1
  178. package/dist/src/state/state-renderer.d.ts.map +1 -1
  179. package/dist/src/state/state-renderer.js +16 -2
  180. package/dist/src/state/state-renderer.js.map +1 -1
  181. package/dist/src/state/types.d.ts +8 -4
  182. package/dist/src/state/types.d.ts.map +1 -1
  183. package/dist/src/state/url-sanitization.d.ts +22 -0
  184. package/dist/src/state/url-sanitization.d.ts.map +1 -0
  185. package/dist/src/state/url-sanitization.js +60 -0
  186. package/dist/src/state/url-sanitization.js.map +1 -0
  187. package/dist/src/state/value-masking.d.ts +36 -0
  188. package/dist/src/state/value-masking.d.ts.map +1 -0
  189. package/dist/src/state/value-masking.js +86 -0
  190. package/dist/src/state/value-masking.js.map +1 -0
  191. package/dist/src/tools/action-context.d.ts +60 -0
  192. package/dist/src/tools/action-context.d.ts.map +1 -0
  193. package/dist/src/tools/action-context.js +78 -0
  194. package/dist/src/tools/action-context.js.map +1 -0
  195. package/dist/src/tools/action-stabilization.d.ts +48 -0
  196. package/dist/src/tools/action-stabilization.d.ts.map +1 -0
  197. package/dist/src/tools/action-stabilization.js +87 -0
  198. package/dist/src/tools/action-stabilization.js.map +1 -0
  199. package/dist/src/tools/browser-tools.d.ts +8 -146
  200. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  201. package/dist/src/tools/browser-tools.js +13 -689
  202. package/dist/src/tools/browser-tools.js.map +1 -1
  203. package/dist/src/tools/canvas-tools.d.ts +32 -0
  204. package/dist/src/tools/canvas-tools.d.ts.map +1 -0
  205. package/dist/src/tools/canvas-tools.js +370 -0
  206. package/dist/src/tools/canvas-tools.js.map +1 -0
  207. package/dist/src/tools/effect-tracker.d.ts +25 -0
  208. package/dist/src/tools/effect-tracker.d.ts.map +1 -0
  209. package/dist/src/tools/effect-tracker.js +69 -0
  210. package/dist/src/tools/effect-tracker.js.map +1 -0
  211. package/dist/src/tools/execute-action.d.ts +1 -31
  212. package/dist/src/tools/execute-action.d.ts.map +1 -1
  213. package/dist/src/tools/execute-action.js +7 -276
  214. package/dist/src/tools/execute-action.js.map +1 -1
  215. package/dist/src/tools/form-tools.d.ts +4 -6
  216. package/dist/src/tools/form-tools.d.ts.map +1 -1
  217. package/dist/src/tools/form-tools.js +10 -42
  218. package/dist/src/tools/form-tools.js.map +1 -1
  219. package/dist/src/tools/index.d.ts +6 -4
  220. package/dist/src/tools/index.d.ts.map +1 -1
  221. package/dist/src/tools/index.js +21 -10
  222. package/dist/src/tools/index.js.map +1 -1
  223. package/dist/src/tools/interaction-tools.d.ts +46 -0
  224. package/dist/src/tools/interaction-tools.d.ts.map +1 -0
  225. package/dist/src/tools/interaction-tools.js +138 -0
  226. package/dist/src/tools/interaction-tools.js.map +1 -0
  227. package/dist/src/tools/navigation-detection.d.ts +31 -0
  228. package/dist/src/tools/navigation-detection.d.ts.map +1 -0
  229. package/dist/src/tools/navigation-detection.js +46 -0
  230. package/dist/src/tools/navigation-detection.js.map +1 -0
  231. package/dist/src/tools/navigation-tools.d.ts +57 -0
  232. package/dist/src/tools/navigation-tools.d.ts.map +1 -0
  233. package/dist/src/tools/navigation-tools.js +178 -0
  234. package/dist/src/tools/navigation-tools.js.map +1 -0
  235. package/dist/src/tools/observation-tools.d.ts +53 -0
  236. package/dist/src/tools/observation-tools.d.ts.map +1 -0
  237. package/dist/src/tools/observation-tools.js +247 -0
  238. package/dist/src/tools/observation-tools.js.map +1 -0
  239. package/dist/src/tools/response-builder.js +2 -2
  240. package/dist/src/tools/response-builder.js.map +1 -1
  241. package/dist/src/tools/stale-element-retry.d.ts +37 -0
  242. package/dist/src/tools/stale-element-retry.d.ts.map +1 -0
  243. package/dist/src/tools/stale-element-retry.js +68 -0
  244. package/dist/src/tools/stale-element-retry.js.map +1 -0
  245. package/dist/src/tools/state-manager-registry.d.ts +26 -0
  246. package/dist/src/tools/state-manager-registry.d.ts.map +1 -0
  247. package/dist/src/tools/state-manager-registry.js +39 -0
  248. package/dist/src/tools/state-manager-registry.js.map +1 -0
  249. package/dist/src/tools/tool-context.d.ts +53 -0
  250. package/dist/src/tools/tool-context.d.ts.map +1 -0
  251. package/dist/src/tools/tool-context.js +119 -0
  252. package/dist/src/tools/tool-context.js.map +1 -0
  253. package/dist/src/tools/tool-result.types.d.ts +16 -1
  254. package/dist/src/tools/tool-result.types.d.ts.map +1 -1
  255. package/dist/src/tools/tool-result.types.js +11 -0
  256. package/dist/src/tools/tool-result.types.js.map +1 -1
  257. package/dist/src/tools/tool-schemas.d.ts +358 -146
  258. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  259. package/dist/src/tools/tool-schemas.js +142 -19
  260. package/dist/src/tools/tool-schemas.js.map +1 -1
  261. package/dist/src/tools/viewport-tools.d.ts +36 -0
  262. package/dist/src/tools/viewport-tools.d.ts.map +1 -0
  263. package/dist/src/tools/viewport-tools.js +105 -0
  264. package/dist/src/tools/viewport-tools.js.map +1 -0
  265. 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 { Page } from 'puppeteer-core';
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":"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"}
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"}