agent-web-interface 4.3.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 (251) 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 +52 -47
  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/snapshot/element-resolver.d.ts +24 -13
  82. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  83. package/dist/src/snapshot/element-resolver.js +117 -87
  84. package/dist/src/snapshot/element-resolver.js.map +1 -1
  85. package/dist/src/snapshot/extractors/ax-extractor.d.ts +1 -1
  86. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -1
  87. package/dist/src/snapshot/extractors/ax-extractor.js +4 -1
  88. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -1
  89. package/dist/src/snapshot/extractors/index.d.ts +1 -1
  90. package/dist/src/snapshot/extractors/index.d.ts.map +1 -1
  91. package/dist/src/snapshot/extractors/index.js +1 -1
  92. package/dist/src/snapshot/extractors/index.js.map +1 -1
  93. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -1
  94. package/dist/src/snapshot/extractors/region-resolver.js +8 -0
  95. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -1
  96. package/dist/src/snapshot/extractors/types.d.ts +8 -0
  97. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  98. package/dist/src/snapshot/extractors/types.js +16 -0
  99. package/dist/src/snapshot/extractors/types.js.map +1 -1
  100. package/dist/src/snapshot/frame-context.d.ts +68 -0
  101. package/dist/src/snapshot/frame-context.d.ts.map +1 -0
  102. package/dist/src/snapshot/frame-context.js +131 -0
  103. package/dist/src/snapshot/frame-context.js.map +1 -0
  104. package/dist/src/snapshot/heading-index.d.ts +28 -0
  105. package/dist/src/snapshot/heading-index.d.ts.map +1 -0
  106. package/dist/src/snapshot/heading-index.js +108 -0
  107. package/dist/src/snapshot/heading-index.js.map +1 -0
  108. package/dist/src/snapshot/index.d.ts +5 -3
  109. package/dist/src/snapshot/index.d.ts.map +1 -1
  110. package/dist/src/snapshot/index.js +3 -2
  111. package/dist/src/snapshot/index.js.map +1 -1
  112. package/dist/src/snapshot/kind-mapping.d.ts +30 -0
  113. package/dist/src/snapshot/kind-mapping.d.ts.map +1 -0
  114. package/dist/src/snapshot/kind-mapping.js +114 -0
  115. package/dist/src/snapshot/kind-mapping.js.map +1 -0
  116. package/dist/src/snapshot/node-filter.d.ts +31 -0
  117. package/dist/src/snapshot/node-filter.d.ts.map +1 -0
  118. package/dist/src/snapshot/node-filter.js +137 -0
  119. package/dist/src/snapshot/node-filter.js.map +1 -0
  120. package/dist/src/snapshot/node-synthesizer.d.ts +62 -0
  121. package/dist/src/snapshot/node-synthesizer.d.ts.map +1 -0
  122. package/dist/src/snapshot/node-synthesizer.js +185 -0
  123. package/dist/src/snapshot/node-synthesizer.js.map +1 -0
  124. package/dist/src/snapshot/snapshot-compiler.d.ts +2 -36
  125. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  126. package/dist/src/snapshot/snapshot-compiler.js +25 -547
  127. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  128. package/dist/src/snapshot/snapshot.types.d.ts +7 -2
  129. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  130. package/dist/src/snapshot/snapshot.types.js +8 -0
  131. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  132. package/dist/src/state/actionables-filter.d.ts +5 -0
  133. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  134. package/dist/src/state/actionables-filter.js +21 -3
  135. package/dist/src/state/actionables-filter.js.map +1 -1
  136. package/dist/src/state/diff-engine.js +3 -3
  137. package/dist/src/state/diff-engine.js.map +1 -1
  138. package/dist/src/state/element-registry.d.ts.map +1 -1
  139. package/dist/src/state/element-registry.js +6 -4
  140. package/dist/src/state/element-registry.js.map +1 -1
  141. package/dist/src/state/hash-utils.d.ts +24 -0
  142. package/dist/src/state/hash-utils.d.ts.map +1 -0
  143. package/dist/src/state/hash-utils.js +41 -0
  144. package/dist/src/state/hash-utils.js.map +1 -0
  145. package/dist/src/state/layer-detector.d.ts.map +1 -1
  146. package/dist/src/state/layer-detector.js +15 -286
  147. package/dist/src/state/layer-detector.js.map +1 -1
  148. package/dist/src/state/layer-detectors/drawer-detector.d.ts +32 -0
  149. package/dist/src/state/layer-detectors/drawer-detector.d.ts.map +1 -0
  150. package/dist/src/state/layer-detectors/drawer-detector.js +96 -0
  151. package/dist/src/state/layer-detectors/drawer-detector.js.map +1 -0
  152. package/dist/src/state/layer-detectors/index.d.ts +10 -0
  153. package/dist/src/state/layer-detectors/index.d.ts.map +1 -0
  154. package/dist/src/state/layer-detectors/index.js +10 -0
  155. package/dist/src/state/layer-detectors/index.js.map +1 -0
  156. package/dist/src/state/layer-detectors/modal-detector.d.ts +30 -0
  157. package/dist/src/state/layer-detectors/modal-detector.d.ts.map +1 -0
  158. package/dist/src/state/layer-detectors/modal-detector.js +127 -0
  159. package/dist/src/state/layer-detectors/modal-detector.js.map +1 -0
  160. package/dist/src/state/layer-detectors/popover-detector.d.ts +20 -0
  161. package/dist/src/state/layer-detectors/popover-detector.d.ts.map +1 -0
  162. package/dist/src/state/layer-detectors/popover-detector.js +76 -0
  163. package/dist/src/state/layer-detectors/popover-detector.js.map +1 -0
  164. package/dist/src/state/layer-detectors/toast-detector.d.ts +24 -0
  165. package/dist/src/state/layer-detectors/toast-detector.d.ts.map +1 -0
  166. package/dist/src/state/layer-detectors/toast-detector.js +48 -0
  167. package/dist/src/state/layer-detectors/toast-detector.js.map +1 -0
  168. package/dist/src/state/region-mapping.d.ts +13 -0
  169. package/dist/src/state/region-mapping.d.ts.map +1 -0
  170. package/dist/src/state/region-mapping.js +25 -0
  171. package/dist/src/state/region-mapping.js.map +1 -0
  172. package/dist/src/state/state-manager.d.ts.map +1 -1
  173. package/dist/src/state/state-manager.js +8 -192
  174. package/dist/src/state/state-manager.js.map +1 -1
  175. package/dist/src/state/state-renderer.d.ts.map +1 -1
  176. package/dist/src/state/state-renderer.js +14 -2
  177. package/dist/src/state/state-renderer.js.map +1 -1
  178. package/dist/src/state/types.d.ts +8 -4
  179. package/dist/src/state/types.d.ts.map +1 -1
  180. package/dist/src/state/url-sanitization.d.ts +22 -0
  181. package/dist/src/state/url-sanitization.d.ts.map +1 -0
  182. package/dist/src/state/url-sanitization.js +60 -0
  183. package/dist/src/state/url-sanitization.js.map +1 -0
  184. package/dist/src/state/value-masking.d.ts +36 -0
  185. package/dist/src/state/value-masking.d.ts.map +1 -0
  186. package/dist/src/state/value-masking.js +86 -0
  187. package/dist/src/state/value-masking.js.map +1 -0
  188. package/dist/src/tools/action-context.d.ts +60 -0
  189. package/dist/src/tools/action-context.d.ts.map +1 -0
  190. package/dist/src/tools/action-context.js +78 -0
  191. package/dist/src/tools/action-context.js.map +1 -0
  192. package/dist/src/tools/action-stabilization.d.ts +48 -0
  193. package/dist/src/tools/action-stabilization.d.ts.map +1 -0
  194. package/dist/src/tools/action-stabilization.js +87 -0
  195. package/dist/src/tools/action-stabilization.js.map +1 -0
  196. package/dist/src/tools/browser-tools.d.ts +8 -167
  197. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  198. package/dist/src/tools/browser-tools.js +13 -651
  199. package/dist/src/tools/browser-tools.js.map +1 -1
  200. package/dist/src/tools/effect-tracker.d.ts +25 -0
  201. package/dist/src/tools/effect-tracker.d.ts.map +1 -0
  202. package/dist/src/tools/effect-tracker.js +69 -0
  203. package/dist/src/tools/effect-tracker.js.map +1 -0
  204. package/dist/src/tools/execute-action.d.ts +1 -31
  205. package/dist/src/tools/execute-action.d.ts.map +1 -1
  206. package/dist/src/tools/execute-action.js +7 -276
  207. package/dist/src/tools/execute-action.js.map +1 -1
  208. package/dist/src/tools/form-tools.d.ts +2 -2
  209. package/dist/src/tools/form-tools.js +4 -4
  210. package/dist/src/tools/form-tools.js.map +1 -1
  211. package/dist/src/tools/index.d.ts +2 -2
  212. package/dist/src/tools/index.d.ts.map +1 -1
  213. package/dist/src/tools/index.js +10 -8
  214. package/dist/src/tools/index.js.map +1 -1
  215. package/dist/src/tools/interaction-tools.d.ts +46 -0
  216. package/dist/src/tools/interaction-tools.d.ts.map +1 -0
  217. package/dist/src/tools/interaction-tools.js +138 -0
  218. package/dist/src/tools/interaction-tools.js.map +1 -0
  219. package/dist/src/tools/navigation-detection.d.ts +31 -0
  220. package/dist/src/tools/navigation-detection.d.ts.map +1 -0
  221. package/dist/src/tools/navigation-detection.js +46 -0
  222. package/dist/src/tools/navigation-detection.js.map +1 -0
  223. package/dist/src/tools/navigation-tools.d.ts +57 -0
  224. package/dist/src/tools/navigation-tools.d.ts.map +1 -0
  225. package/dist/src/tools/navigation-tools.js +178 -0
  226. package/dist/src/tools/navigation-tools.js.map +1 -0
  227. package/dist/src/tools/observation-tools.d.ts +53 -0
  228. package/dist/src/tools/observation-tools.d.ts.map +1 -0
  229. package/dist/src/tools/observation-tools.js +247 -0
  230. package/dist/src/tools/observation-tools.js.map +1 -0
  231. package/dist/src/tools/response-builder.js +2 -2
  232. package/dist/src/tools/response-builder.js.map +1 -1
  233. package/dist/src/tools/stale-element-retry.d.ts +37 -0
  234. package/dist/src/tools/stale-element-retry.d.ts.map +1 -0
  235. package/dist/src/tools/stale-element-retry.js +68 -0
  236. package/dist/src/tools/stale-element-retry.js.map +1 -0
  237. package/dist/src/tools/state-manager-registry.d.ts +26 -0
  238. package/dist/src/tools/state-manager-registry.d.ts.map +1 -0
  239. package/dist/src/tools/state-manager-registry.js +39 -0
  240. package/dist/src/tools/state-manager-registry.js.map +1 -0
  241. package/dist/src/tools/tool-context.js +1 -1
  242. package/dist/src/tools/tool-context.js.map +1 -1
  243. package/dist/src/tools/tool-schemas.d.ts +106 -21
  244. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  245. package/dist/src/tools/tool-schemas.js +59 -18
  246. package/dist/src/tools/tool-schemas.js.map +1 -1
  247. package/dist/src/tools/viewport-tools.d.ts +36 -0
  248. package/dist/src/tools/viewport-tools.d.ts.map +1 -0
  249. package/dist/src/tools/viewport-tools.js +105 -0
  250. package/dist/src/tools/viewport-tools.js.map +1 -0
  251. package/package.json +1 -1
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Action Stabilization
3
+ *
4
+ * Stabilizes the page after actions using tiered waiting (DOM + network).
5
+ *
6
+ * @module tools/action-stabilization
7
+ */
8
+ import type { Page } from 'puppeteer-core';
9
+ import { type StabilizationResult } from '../delta/dom-stabilizer.js';
10
+ import type { PageHandle } from '../browser/page-registry.js';
11
+ import type { BaseSnapshot } from '../snapshot/snapshot.types.js';
12
+ import type { RuntimeHealth } from '../state/health.types.js';
13
+ /**
14
+ * Stabilize page after an action using tiered waiting strategy.
15
+ *
16
+ * This addresses the core issue: actions may trigger API calls that complete
17
+ * after DOM mutations settle. The tiered approach:
18
+ *
19
+ * 1. Wait for DOM to stabilize (MutationObserver) - catches SPA rendering
20
+ * 2. Wait for network to quiet down (networkidle) - catches pending API calls
21
+ * 3. If DOM stabilization fails (navigation), fall back to network idle wait
22
+ *
23
+ * Timeouts are generous but never throw - we proceed even if network stays busy
24
+ * (common with analytics, long-polling, websockets).
25
+ *
26
+ * @param page - Puppeteer Page instance
27
+ * @param networkTimeoutMs - Optional custom timeout for network idle (default: 3000ms)
28
+ * @returns Stabilization result with status
29
+ */
30
+ export declare function stabilizeAfterAction(page: Page, networkTimeoutMs?: number): Promise<StabilizationResult>;
31
+ /**
32
+ * Stabilize page after explicit navigation (goto, back, forward, reload).
33
+ *
34
+ * Uses a longer network timeout since navigations typically trigger more
35
+ * requests than in-page actions.
36
+ *
37
+ * @param page - Puppeteer Page instance
38
+ * @returns Stabilization result with status
39
+ */
40
+ export declare function stabilizeAfterNavigation(page: Page): Promise<StabilizationResult>;
41
+ /**
42
+ * Capture snapshot without recovery (fallback path).
43
+ */
44
+ export declare function captureSnapshotFallback(handle: PageHandle): Promise<{
45
+ snapshot: BaseSnapshot;
46
+ runtime_health: RuntimeHealth;
47
+ }>;
48
+ //# sourceMappingURL=action-stabilization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-stabilization.d.ts","sourceRoot":"","sources":["../../../src/tools/action-stabilization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAS9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,gBAAgB,GAAE,MAAuC,GACxD,OAAO,CAAC,mBAAmB,CAAC,CA0C9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEvF;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,cAAc,EAAE,aAAa,CAAA;CAAE,CAAC,CAGpE"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Action Stabilization
3
+ *
4
+ * Stabilizes the page after actions using tiered waiting (DOM + network).
5
+ *
6
+ * @module tools/action-stabilization
7
+ */
8
+ import { stabilizeDom } from '../delta/dom-stabilizer.js';
9
+ import { createHealthyRuntime } from '../state/health.types.js';
10
+ import { compileSnapshot } from '../snapshot/index.js';
11
+ import { waitForNetworkQuiet, ACTION_NETWORK_IDLE_TIMEOUT_MS, NAVIGATION_NETWORK_IDLE_TIMEOUT_MS, } from '../browser/page-stabilization.js';
12
+ /**
13
+ * Stabilize page after an action using tiered waiting strategy.
14
+ *
15
+ * This addresses the core issue: actions may trigger API calls that complete
16
+ * after DOM mutations settle. The tiered approach:
17
+ *
18
+ * 1. Wait for DOM to stabilize (MutationObserver) - catches SPA rendering
19
+ * 2. Wait for network to quiet down (networkidle) - catches pending API calls
20
+ * 3. If DOM stabilization fails (navigation), fall back to network idle wait
21
+ *
22
+ * Timeouts are generous but never throw - we proceed even if network stays busy
23
+ * (common with analytics, long-polling, websockets).
24
+ *
25
+ * @param page - Puppeteer Page instance
26
+ * @param networkTimeoutMs - Optional custom timeout for network idle (default: 3000ms)
27
+ * @returns Stabilization result with status
28
+ */
29
+ export async function stabilizeAfterAction(page, networkTimeoutMs = ACTION_NETWORK_IDLE_TIMEOUT_MS) {
30
+ // Step 1: Try MutationObserver-based DOM stabilization first
31
+ const result = await stabilizeDom(page);
32
+ // Step 2: Handle based on DOM stabilization result
33
+ if (result.status === 'stable' || result.status === 'timeout') {
34
+ // DOM settled (or timed out) - now wait for network to quiet down
35
+ // This catches API calls that haven't rendered to DOM yet
36
+ const networkIdle = await waitForNetworkQuiet(page, networkTimeoutMs);
37
+ if (!networkIdle && result.status === 'stable') {
38
+ // DOM was stable but network didn't idle - add a note
39
+ return {
40
+ ...result,
41
+ warning: result.warning ?? 'Network did not reach idle state within timeout',
42
+ };
43
+ }
44
+ return result;
45
+ }
46
+ // status === 'error' means page.evaluate() failed, likely due to navigation
47
+ // Fall back to waiting for network idle on the new page
48
+ try {
49
+ // Wait for network to settle on the new page
50
+ await waitForNetworkQuiet(page, networkTimeoutMs);
51
+ return {
52
+ status: 'stable',
53
+ waitTimeMs: result.waitTimeMs,
54
+ warning: 'Navigation detected; waited for networkidle',
55
+ };
56
+ }
57
+ catch (waitError) {
58
+ // If network wait also fails, the page might be in an unusual state
59
+ // Return the original error but with additional context
60
+ const message = waitError instanceof Error ? waitError.message : String(waitError);
61
+ return {
62
+ status: 'error',
63
+ waitTimeMs: result.waitTimeMs,
64
+ warning: `${result.warning}. Fallback network wait also failed: ${message}`,
65
+ };
66
+ }
67
+ }
68
+ /**
69
+ * Stabilize page after explicit navigation (goto, back, forward, reload).
70
+ *
71
+ * Uses a longer network timeout since navigations typically trigger more
72
+ * requests than in-page actions.
73
+ *
74
+ * @param page - Puppeteer Page instance
75
+ * @returns Stabilization result with status
76
+ */
77
+ export async function stabilizeAfterNavigation(page) {
78
+ return stabilizeAfterAction(page, NAVIGATION_NETWORK_IDLE_TIMEOUT_MS);
79
+ }
80
+ /**
81
+ * Capture snapshot without recovery (fallback path).
82
+ */
83
+ export async function captureSnapshotFallback(handle) {
84
+ const snapshot = await compileSnapshot(handle.cdp, handle.page, handle.page_id);
85
+ return { snapshot, runtime_health: createHealthyRuntime() };
86
+ }
87
+ //# sourceMappingURL=action-stabilization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-stabilization.js","sourceRoot":"","sources":["../../../src/tools/action-stabilization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAA4B,MAAM,4BAA4B,CAAC;AAIpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,kCAAkC,GACnC,MAAM,kCAAkC,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAU,EACV,mBAA2B,8BAA8B;IAEzD,6DAA6D;IAC7D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAExC,mDAAmD;IACnD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9D,kEAAkE;QAClE,0DAA0D;QAC1D,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAEtE,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/C,sDAAsD;YACtD,OAAO;gBACL,GAAG,MAAM;gBACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,iDAAiD;aAC7E,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,wDAAwD;IACxD,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAElD,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,6CAA6C;SACvD,CAAC;IACJ,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,oEAAoE;QACpE,wDAAwD;QACxD,MAAM,OAAO,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnF,OAAO;YACL,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,wCAAwC,OAAO,EAAE;SAC5E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAU;IACvD,OAAO,oBAAoB,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAChF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,EAAE,CAAC;AAC9D,CAAC"}
@@ -1,171 +1,12 @@
1
1
  /**
2
2
  * Browser Tools
3
3
  *
4
- * MCP tool handlers for browser automation.
5
- */
6
- import type { SessionManager } from '../browser/session-manager.js';
7
- import type { NodeKind } from '../snapshot/snapshot.types.js';
8
- export { getSnapshotStore } from './tool-context.js';
9
- /**
10
- * Initialize tools with a session manager instance.
11
- * Must be called before using any tool handlers.
12
- */
13
- export declare function initializeTools(manager: SessionManager): void;
14
- /**
15
- * List all open browser pages with their metadata.
16
- *
17
- * Syncs with browser context to ensure all tabs are registered,
18
- * including tabs opened externally or after reconnection.
19
- *
20
- * @returns XML result with page list
21
- */
22
- export declare function listPages(): Promise<import('./tool-schemas.js').ListPagesOutput>;
23
- /**
24
- * Close a specific page.
25
- *
26
- * @param rawInput - Close options (will be validated)
27
- * @returns Close result
28
- */
29
- export declare function closePage(rawInput: unknown): Promise<import('./tool-schemas.js').ClosePageOutput>;
30
- /**
31
- * Close the entire browser session.
32
- *
33
- * @param rawInput - Close options (will be validated)
34
- * @returns Close result
35
- */
36
- export declare function closeSession(rawInput: unknown): Promise<import('./tool-schemas.js').CloseSessionOutput>;
37
- /**
38
- * Navigate to a URL.
39
- *
40
- * @param rawInput - Navigation options (will be validated)
41
- * @returns Navigation result with snapshot data
42
- */
43
- export declare function navigate(rawInput: unknown): Promise<import('./tool-schemas.js').NavigateOutput>;
44
- /**
45
- * Go back in browser history.
46
- *
47
- * @param rawInput - Navigation options (will be validated)
48
- * @returns Navigation result with snapshot data
49
- */
50
- export declare function goBack(rawInput: unknown): Promise<import('./tool-schemas.js').GoBackOutput>;
51
- /**
52
- * Go forward in browser history.
53
- *
54
- * @param rawInput - Navigation options (will be validated)
55
- * @returns Navigation result with snapshot data
56
- */
57
- export declare function goForward(rawInput: unknown): Promise<import('./tool-schemas.js').GoForwardOutput>;
58
- /**
59
- * Reload the current page.
60
- *
61
- * @param rawInput - Navigation options (will be validated)
62
- * @returns Navigation result with snapshot data
63
- */
64
- export declare function reload(rawInput: unknown): Promise<import('./tool-schemas.js').ReloadOutput>;
65
- /**
66
- * Capture a fresh snapshot of the current page.
67
- *
68
- * @param rawInput - Capture options (will be validated)
69
- * @returns Snapshot data for the current page
70
- */
71
- export declare function captureSnapshot(rawInput: unknown): Promise<import('./tool-schemas.js').CaptureSnapshotOutput>;
72
- /**
73
- * Map schema kind values to internal NodeKind values.
74
- *
75
- * The find_elements schema uses user-friendly names that don't always match
76
- * internal NodeKind values. For example, 'textbox' in the schema maps to
77
- * both 'input' and 'textarea' internally.
78
- *
79
- * @param schemaKind - Kind value from the find_elements schema
80
- * @returns Matching NodeKind value(s)
81
- */
82
- export declare function mapSchemaKindToNodeKind(schemaKind: string): NodeKind | NodeKind[];
83
- /**
84
- * Find elements by semantic criteria.
85
- *
86
- * @param rawInput - Query filters (will be validated)
87
- * @returns Matched nodes
88
- */
89
- export declare function findElements(rawInput: unknown): import('./tool-schemas.js').FindElementsOutput;
90
- /**
91
- * Get full details for a specific node.
92
- *
93
- * @param rawInput - Node details request (will be validated)
94
- * @returns Full node details
95
- */
96
- export declare function getNodeDetails(rawInput: unknown): import('./tool-schemas.js').GetNodeDetailsOutput;
97
- /**
98
- * Scroll an element into view.
99
- *
100
- * @param rawInput - Scroll options (will be validated)
101
- * @returns Scroll result with delta
102
- */
103
- export declare function scrollElementIntoView(rawInput: unknown): Promise<import('./tool-schemas.js').ScrollElementIntoViewOutput>;
104
- /**
105
- * Scroll the page up or down.
106
- *
107
- * @param rawInput - Scroll options (will be validated)
108
- * @returns Scroll result with delta
109
- */
110
- export declare function scrollPage(rawInput: unknown): Promise<import('./tool-schemas.js').ScrollPageOutput>;
111
- /**
112
- * Click an element or at viewport coordinates.
113
- *
114
- * Three modes:
115
- * 1. eid only → click element center (existing behavior)
116
- * 2. eid + x/y → click at offset relative to element top-left
117
- * 3. x/y only → click at absolute viewport coordinates
118
- *
119
- * @param rawInput - Click options (will be validated)
120
- * @returns Click result with navigation-aware outcome
121
- */
122
- export declare function click(rawInput: unknown): Promise<import('./tool-schemas.js').ClickOutput>;
123
- /**
124
- * Type text into an element.
125
- *
126
- * @param rawInput - Type options (will be validated)
127
- * @returns Type result with delta
128
- */
129
- export declare function type(rawInput: unknown): Promise<import('./tool-schemas.js').TypeOutput>;
130
- /**
131
- * Press a keyboard key (no agent_version).
132
- *
133
- * @param rawInput - Press options (will be validated)
134
- * @returns Press result with delta
135
- */
136
- export declare function press(rawInput: unknown): Promise<import('./tool-schemas.js').PressOutput>;
137
- /**
138
- * Select a dropdown option.
139
- *
140
- * @param rawInput - Select options (will be validated)
141
- * @returns Select result with delta
142
- */
143
- export declare function select(rawInput: unknown): Promise<import('./tool-schemas.js').SelectOutput>;
144
- /**
145
- * Hover over an element.
146
- *
147
- * @param rawInput - Hover options (will be validated)
148
- * @returns Hover result with delta
149
- */
150
- export declare function hover(rawInput: unknown): Promise<import('./tool-schemas.js').HoverOutput>;
151
- /**
152
- * Drag from one point to another.
153
- *
154
- * If eid is provided, coordinates are relative to the element's top-left corner.
155
- * Otherwise, coordinates are absolute viewport coordinates.
156
- *
157
- * @param rawInput - Drag options (will be validated)
158
- * @returns Drag result with updated snapshot
159
- */
160
- export declare function drag(rawInput: unknown): Promise<import('./tool-schemas.js').DragOutput>;
161
- /**
162
- * Take a screenshot of the page or a specific element.
163
- *
164
- * Observation tool - does not mutate page state.
165
- * Returns inline image (<2MB) or temp file path (>=2MB).
166
- *
167
- * @param rawInput - Screenshot options (will be validated)
168
- * @returns ImageResult or FileResult
169
- */
170
- export declare function takeScreenshot(rawInput: unknown): Promise<import('./tool-schemas.js').TakeScreenshotOutput>;
4
+ * Re-export barrel for all browser automation tool handlers.
5
+ * The actual implementations live in category-specific modules.
6
+ */
7
+ export { initializeTools, type ActionContext, prepareActionContext, captureSnapshotWithRecovery, createActionCapture, buildRuntimeHealth, } from './action-context.js';
8
+ export { listPages, closePage, closeSession, navigate, goBack, goForward, reload, } from './navigation-tools.js';
9
+ export { captureSnapshot, findElements, getNodeDetails, scrollElementIntoView, scrollPage, mapSchemaKindToNodeKind, } from './observation-tools.js';
10
+ export { click, type, press, select, hover } from './interaction-tools.js';
11
+ export { drag, wheel, takeScreenshot } from './viewport-tools.js';
171
12
  //# sourceMappingURL=browser-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/browser-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/browser-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,eAAe,EACf,KAAK,aAAa,EAClB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,GACP,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}