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,178 @@
1
+ /**
2
+ * Navigation Tools
3
+ *
4
+ * MCP tool handlers for browser navigation and session management.
5
+ */
6
+ import { observationAccumulator } from '../observation/index.js';
7
+ import { ClosePageInputSchema, CloseSessionInputSchema, NavigateInputSchema, GoBackInputSchema, GoForwardInputSchema, ReloadInputSchema, } from './tool-schemas.js';
8
+ import { cleanupTempFiles } from '../lib/temp-file.js';
9
+ import { getStateManager, removeStateManager, clearAllStateManagers, } from './state-manager-registry.js';
10
+ import { stabilizeAfterNavigation } from './action-stabilization.js';
11
+ import { buildClosePageResponse, buildCloseSessionResponse, buildListPagesResponse, } from './response-builder.js';
12
+ import { getDependencyTracker } from '../form/index.js';
13
+ import { getSessionManager, getSnapshotStore } from './tool-context.js';
14
+ import { captureSnapshotWithRecovery } from './action-context.js';
15
+ // Convenience alias for module-internal use
16
+ const snapshotStore = getSnapshotStore();
17
+ /**
18
+ * Execute a navigation action with snapshot capture.
19
+ * Consolidates goBack, goForward, and reload handlers.
20
+ *
21
+ * Waits for both DOM stabilization and network idle after navigation
22
+ * to ensure the page is fully loaded before capturing snapshot.
23
+ *
24
+ * @param pageId - Optional page ID
25
+ * @param action - Navigation action to execute
26
+ * @returns State response after navigation
27
+ */
28
+ async function executeNavigationAction(pageId, action) {
29
+ const session = getSessionManager();
30
+ let handle = await session.resolvePageOrCreate(pageId);
31
+ const page_id = handle.page_id;
32
+ session.touchPage(page_id);
33
+ // Clear dependency tracker before navigation (old dependencies no longer valid)
34
+ getDependencyTracker().clearPage(page_id);
35
+ // Execute navigation
36
+ switch (action) {
37
+ case 'back':
38
+ await handle.page.goBack();
39
+ break;
40
+ case 'forward':
41
+ await handle.page.goForward();
42
+ break;
43
+ case 'reload':
44
+ await handle.page.reload();
45
+ break;
46
+ }
47
+ // Wait for page to stabilize (DOM + network idle)
48
+ await stabilizeAfterNavigation(handle.page);
49
+ // Re-inject observation accumulator (new document context after navigation)
50
+ await observationAccumulator.inject(handle.page);
51
+ // Auto-capture snapshot after navigation
52
+ const captureResult = await captureSnapshotWithRecovery(session, handle, page_id);
53
+ handle = captureResult.handle;
54
+ const snapshot = captureResult.snapshot;
55
+ snapshotStore.store(page_id, snapshot);
56
+ // Return XML state response (trimmed for navigation snapshots)
57
+ const stateManager = getStateManager(page_id);
58
+ return stateManager.generateResponse(snapshot, { trimRegions: true });
59
+ }
60
+ /**
61
+ * List all open browser pages with their metadata.
62
+ *
63
+ * Syncs with browser context to ensure all tabs are registered,
64
+ * including tabs opened externally or after reconnection.
65
+ *
66
+ * @returns XML result with page list
67
+ */
68
+ export async function listPages() {
69
+ const session = getSessionManager();
70
+ // Sync to pick up any unregistered browser tabs
71
+ const pages = await session.syncPages();
72
+ const pageInfos = await Promise.all(pages.map(async (h) => {
73
+ const liveUrl = h.page.url?.() ?? h.url ?? '';
74
+ let liveTitle = h.title ?? '';
75
+ if (typeof h.page.title === 'function') {
76
+ try {
77
+ liveTitle = await h.page.title();
78
+ }
79
+ catch {
80
+ // Ignore pages that cannot expose title in the current state.
81
+ }
82
+ }
83
+ h.url = liveUrl;
84
+ h.title = liveTitle;
85
+ return {
86
+ page_id: h.page_id,
87
+ url: liveUrl,
88
+ title: liveTitle,
89
+ };
90
+ }));
91
+ return buildListPagesResponse(pageInfos);
92
+ }
93
+ /**
94
+ * Close a specific page.
95
+ *
96
+ * @param rawInput - Close options (will be validated)
97
+ * @returns Close result
98
+ */
99
+ export async function closePage(rawInput) {
100
+ const input = ClosePageInputSchema.parse(rawInput);
101
+ const session = getSessionManager();
102
+ await session.closePage(input.page_id);
103
+ snapshotStore.removeByPageId(input.page_id);
104
+ removeStateManager(input.page_id); // Clean up state manager
105
+ getDependencyTracker().clearPage(input.page_id); // Clean up dependencies
106
+ return buildClosePageResponse(input.page_id);
107
+ }
108
+ /**
109
+ * Close the entire browser session.
110
+ *
111
+ * @param rawInput - Close options (will be validated)
112
+ * @returns Close result
113
+ */
114
+ export async function closeSession(rawInput) {
115
+ CloseSessionInputSchema.parse(rawInput);
116
+ const session = getSessionManager();
117
+ await session.shutdown();
118
+ snapshotStore.clear();
119
+ clearAllStateManagers(); // Clean up all state managers
120
+ getDependencyTracker().clearAll(); // Clean up all dependencies
121
+ await cleanupTempFiles(); // Clean up screenshot temp files
122
+ return buildCloseSessionResponse();
123
+ }
124
+ /**
125
+ * Navigate to a URL.
126
+ *
127
+ * @param rawInput - Navigation options (will be validated)
128
+ * @returns Navigation result with snapshot data
129
+ */
130
+ export async function navigate(rawInput) {
131
+ const input = NavigateInputSchema.parse(rawInput);
132
+ const session = getSessionManager();
133
+ let handle = await session.resolvePageOrCreate(input.page_id);
134
+ const page_id = handle.page_id;
135
+ session.touchPage(page_id);
136
+ // Clear dependency tracker before navigation (old dependencies no longer valid)
137
+ getDependencyTracker().clearPage(page_id);
138
+ await session.navigateTo(page_id, input.url);
139
+ // Auto-capture snapshot after navigation
140
+ const captureResult = await captureSnapshotWithRecovery(session, handle, page_id);
141
+ handle = captureResult.handle;
142
+ const snapshot = captureResult.snapshot;
143
+ snapshotStore.store(page_id, snapshot);
144
+ // Return XML state response directly (trimmed for navigation snapshots)
145
+ const stateManager = getStateManager(page_id);
146
+ return stateManager.generateResponse(snapshot, { trimRegions: true });
147
+ }
148
+ /**
149
+ * Go back in browser history.
150
+ *
151
+ * @param rawInput - Navigation options (will be validated)
152
+ * @returns Navigation result with snapshot data
153
+ */
154
+ export async function goBack(rawInput) {
155
+ const input = GoBackInputSchema.parse(rawInput);
156
+ return executeNavigationAction(input.page_id, 'back');
157
+ }
158
+ /**
159
+ * Go forward in browser history.
160
+ *
161
+ * @param rawInput - Navigation options (will be validated)
162
+ * @returns Navigation result with snapshot data
163
+ */
164
+ export async function goForward(rawInput) {
165
+ const input = GoForwardInputSchema.parse(rawInput);
166
+ return executeNavigationAction(input.page_id, 'forward');
167
+ }
168
+ /**
169
+ * Reload the current page.
170
+ *
171
+ * @param rawInput - Navigation options (will be validated)
172
+ * @returns Navigation result with snapshot data
173
+ */
174
+ export async function reload(rawInput) {
175
+ const input = ReloadInputSchema.parse(rawInput);
176
+ return executeNavigationAction(input.page_id, 'reload');
177
+ }
178
+ //# sourceMappingURL=navigation-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-tools.js","sourceRoot":"","sources":["../../../src/tools/navigation-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,4CAA4C;AAC5C,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AAOzC;;;;;;;;;;GAUG;AACH,KAAK,UAAU,uBAAuB,CACpC,MAA0B,EAC1B,MAAwB;IAExB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE3B,gFAAgF;IAChF,oBAAoB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE1C,qBAAqB;IACrB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM;IACV,CAAC;IAED,kDAAkD;IAClD,MAAM,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5C,4EAA4E;IAC5E,MAAM,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEjD,yCAAyC;IACzC,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClF,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACxC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEvC,+DAA+D;IAC/D,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,gDAAgD;IAChD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QAC9C,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAE9B,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,8DAA8D;YAChE,CAAC;QACH,CAAC;QAED,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC;QAChB,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;QAEpB,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAiB;IAEjB,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;IAC5D,oBAAoB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;IAEzE,OAAO,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAiB;IAEjB,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzB,aAAa,CAAC,KAAK,EAAE,CAAC;IACtB,qBAAqB,EAAE,CAAC,CAAC,8BAA8B;IACvD,oBAAoB,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,4BAA4B;IAC/D,MAAM,gBAAgB,EAAE,CAAC,CAAC,iCAAiC;IAE3D,OAAO,yBAAyB,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAiB;IAEjB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE3B,gFAAgF;IAChF,oBAAoB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE1C,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7C,yCAAyC;IACzC,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClF,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACxC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEvC,wEAAwE;IACxE,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAiB;IAC5C,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAiB;IAEjB,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAiB;IAC5C,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Observation Tools
3
+ *
4
+ * MCP tool handlers for page observation: snapshots, find, get_element, scroll.
5
+ */
6
+ import type { NodeKind } from '../snapshot/snapshot.types.js';
7
+ /**
8
+ * Capture a fresh snapshot of the current page.
9
+ *
10
+ * @param rawInput - Capture options (will be validated)
11
+ * @returns Snapshot data for the current page
12
+ */
13
+ export declare function captureSnapshot(rawInput: unknown): Promise<import('./tool-schemas.js').CaptureSnapshotOutput>;
14
+ /**
15
+ * Map schema kind values to internal NodeKind values.
16
+ *
17
+ * The find schema uses user-friendly names that don't always match
18
+ * internal NodeKind values. For example, 'textbox' in the schema maps to
19
+ * both 'input' and 'textarea' internally.
20
+ *
21
+ * @param schemaKind - Kind value from the find schema
22
+ * @returns Matching NodeKind value(s)
23
+ */
24
+ export declare function mapSchemaKindToNodeKind(schemaKind: string): NodeKind | NodeKind[];
25
+ /**
26
+ * Find elements by semantic criteria.
27
+ *
28
+ * @param rawInput - Query filters (will be validated)
29
+ * @returns Matched nodes
30
+ */
31
+ export declare function findElements(rawInput: unknown): import('./tool-schemas.js').FindElementsOutput;
32
+ /**
33
+ * Get full details for a specific node.
34
+ *
35
+ * @param rawInput - Node details request (will be validated)
36
+ * @returns Full node details
37
+ */
38
+ export declare function getNodeDetails(rawInput: unknown): import('./tool-schemas.js').GetNodeDetailsOutput;
39
+ /**
40
+ * Scroll an element into view.
41
+ *
42
+ * @param rawInput - Scroll options (will be validated)
43
+ * @returns Scroll result with delta
44
+ */
45
+ export declare function scrollElementIntoView(rawInput: unknown): Promise<import('./tool-schemas.js').ScrollElementIntoViewOutput>;
46
+ /**
47
+ * Scroll the page up or down.
48
+ *
49
+ * @param rawInput - Scroll options (will be validated)
50
+ * @returns Scroll result with delta
51
+ */
52
+ export declare function scrollPage(rawInput: unknown): Promise<import('./tool-schemas.js').ScrollPageOutput>;
53
+ //# sourceMappingURL=observation-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observation-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/observation-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,+BAA+B,CAAC;AAuB9E;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,qBAAqB,CAAC,CA8B5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,CASjF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,mBAAmB,EAAE,kBAAkB,CA2F9F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,GAChB,OAAO,mBAAmB,EAAE,oBAAoB,CAqDlD;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,2BAA2B,CAAC,CAuBlE;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,gBAAgB,CAAC,CAkBvD"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Observation Tools
3
+ *
4
+ * MCP tool handlers for page observation: snapshots, find, get_element, scroll.
5
+ */
6
+ import { scrollIntoView, scrollPage as scrollPageByAmount } from '../snapshot/index.js';
7
+ import { observationAccumulator } from '../observation/index.js';
8
+ import { ATTACHMENT_SIGNIFICANCE_THRESHOLD } from '../observation/observation.types.js';
9
+ import { CaptureSnapshotInputSchema, FindElementsInputSchema, GetNodeDetailsInputSchema, ScrollElementIntoViewInputSchema, ScrollPageInputSchema, } from './tool-schemas.js';
10
+ import { QueryEngine } from '../query/query-engine.js';
11
+ import { isReadableNode, isStructuralNode, isLiveRegionNode } from '../snapshot/snapshot.types.js';
12
+ import { computeEid } from '../state/element-identity.js';
13
+ import { LIVE_REGION_KINDS } from '../state/actionables-filter.js';
14
+ import { executeAction, executeActionWithRetry } from './execute-action.js';
15
+ import { getStateManager } from './state-manager-registry.js';
16
+ import { buildFindElementsResponse, buildGetElementDetailsResponse, } from './response-builder.js';
17
+ import { getSessionManager, getSnapshotStore, resolveExistingPage, requireSnapshot, resolveElementByEid, } from './tool-context.js';
18
+ import { captureSnapshotWithRecovery, prepareActionContext } from './action-context.js';
19
+ // Convenience alias for module-internal use
20
+ const snapshotStore = getSnapshotStore();
21
+ /**
22
+ * Capture a fresh snapshot of the current page.
23
+ *
24
+ * @param rawInput - Capture options (will be validated)
25
+ * @returns Snapshot data for the current page
26
+ */
27
+ export async function captureSnapshot(rawInput) {
28
+ const input = CaptureSnapshotInputSchema.parse(rawInput);
29
+ const session = getSessionManager();
30
+ let handle = resolveExistingPage(session, input.page_id);
31
+ const page_id = handle.page_id;
32
+ // Capture any accumulated observations (no action window)
33
+ const observations = await observationAccumulator.getAccumulatedObservations(handle.page);
34
+ const captureResult = await captureSnapshotWithRecovery(session, handle, page_id);
35
+ handle = captureResult.handle;
36
+ const snapshot = captureResult.snapshot;
37
+ // Filter observations to reduce noise (threshold 5 requires semantic signals)
38
+ const filteredObservations = observationAccumulator.filterBySignificance(observations, ATTACHMENT_SIGNIFICANCE_THRESHOLD);
39
+ // Attach accumulated observations to snapshot if any
40
+ if (filteredObservations.sincePrevious.length > 0) {
41
+ snapshot.observations = filteredObservations;
42
+ }
43
+ snapshotStore.store(page_id, snapshot);
44
+ // Return XML state response directly (trimmed for observation snapshots)
45
+ const stateManager = getStateManager(page_id);
46
+ return stateManager.generateResponse(snapshot, { trimRegions: true });
47
+ }
48
+ /**
49
+ * Map schema kind values to internal NodeKind values.
50
+ *
51
+ * The find schema uses user-friendly names that don't always match
52
+ * internal NodeKind values. For example, 'textbox' in the schema maps to
53
+ * both 'input' and 'textarea' internally.
54
+ *
55
+ * @param schemaKind - Kind value from the find schema
56
+ * @returns Matching NodeKind value(s)
57
+ */
58
+ export function mapSchemaKindToNodeKind(schemaKind) {
59
+ switch (schemaKind) {
60
+ case 'textbox':
61
+ return ['input', 'textarea'];
62
+ case 'alert':
63
+ return [...LIVE_REGION_KINDS];
64
+ default:
65
+ return schemaKind;
66
+ }
67
+ }
68
+ /**
69
+ * Find elements by semantic criteria.
70
+ *
71
+ * @param rawInput - Query filters (will be validated)
72
+ * @returns Matched nodes
73
+ */
74
+ export function findElements(rawInput) {
75
+ const input = FindElementsInputSchema.parse(rawInput);
76
+ const session = getSessionManager();
77
+ const handle = resolveExistingPage(session, input.page_id);
78
+ const page_id = handle.page_id;
79
+ const snap = snapshotStore.getByPageId(page_id);
80
+ if (!snap) {
81
+ throw new Error(`No snapshot for page ${page_id} - capture a snapshot first`);
82
+ }
83
+ // Build query request from input
84
+ const request = {
85
+ limit: input.limit,
86
+ };
87
+ if (input.kind) {
88
+ request.kind = mapSchemaKindToNodeKind(input.kind);
89
+ }
90
+ if (input.label) {
91
+ request.label = { text: input.label, mode: 'contains', caseSensitive: false };
92
+ }
93
+ if (input.region) {
94
+ request.region = input.region;
95
+ }
96
+ const engine = new QueryEngine(snap);
97
+ const response = engine.find(request);
98
+ // Get registry and state manager for EID lookup
99
+ const stateManager = getStateManager(page_id);
100
+ const registry = stateManager.getElementRegistry();
101
+ const activeLayer = stateManager.getActiveLayer();
102
+ const matches = response.matches.map((m) => {
103
+ // Check if this is a readable/structural (non-interactive) node
104
+ const isNonInteractive = isReadableNode(m.node) || isStructuralNode(m.node) || isLiveRegionNode(m.node);
105
+ // Look up EID from registry (for interactive nodes)
106
+ const registryEid = registry.getEidBySnapshotAndBackendNodeId(snap.snapshot_id, m.node.backend_node_id);
107
+ // Determine EID:
108
+ // - Interactive nodes: use registry EID
109
+ // - Non-interactive nodes with include_readable: compute rd-* ID on-demand
110
+ // - Non-interactive nodes without include_readable: use unknown-* fallback
111
+ let eid;
112
+ if (registryEid) {
113
+ eid = registryEid;
114
+ }
115
+ else if (isNonInteractive && input.include_readable) {
116
+ // Compute on-demand semantic ID for readable content with rd- prefix
117
+ eid = `rd-${computeEid(m.node, activeLayer).substring(0, 10)}`;
118
+ }
119
+ else {
120
+ eid = `unknown-${m.node.backend_node_id}`;
121
+ }
122
+ const match = {
123
+ eid,
124
+ kind: m.node.kind,
125
+ label: m.node.label,
126
+ selector: m.node.find?.primary ?? '',
127
+ region: m.node.where.region,
128
+ };
129
+ // Include state if present (type-safe assignment via NodeState interface)
130
+ if (m.node.state) {
131
+ match.state = m.node.state;
132
+ }
133
+ // Include attributes if present (filter to common ones)
134
+ if (m.node.attributes) {
135
+ const attrs = {};
136
+ if (m.node.attributes.input_type)
137
+ attrs.input_type = m.node.attributes.input_type;
138
+ if (m.node.attributes.placeholder)
139
+ attrs.placeholder = m.node.attributes.placeholder;
140
+ if (m.node.attributes.value)
141
+ attrs.value = m.node.attributes.value;
142
+ if (m.node.attributes.href)
143
+ attrs.href = m.node.attributes.href;
144
+ if (m.node.attributes.alt)
145
+ attrs.alt = m.node.attributes.alt;
146
+ if (m.node.attributes.src)
147
+ attrs.src = m.node.attributes.src;
148
+ if (Object.keys(attrs).length > 0) {
149
+ match.attributes = attrs;
150
+ }
151
+ }
152
+ return match;
153
+ });
154
+ return buildFindElementsResponse(page_id, snap.snapshot_id, matches);
155
+ }
156
+ /**
157
+ * Get full details for a specific node.
158
+ *
159
+ * @param rawInput - Node details request (will be validated)
160
+ * @returns Full node details
161
+ */
162
+ export function getNodeDetails(rawInput) {
163
+ const input = GetNodeDetailsInputSchema.parse(rawInput);
164
+ const session = getSessionManager();
165
+ const handle = resolveExistingPage(session, input.page_id);
166
+ const page_id = handle.page_id;
167
+ const snap = snapshotStore.getByPageId(page_id);
168
+ if (!snap) {
169
+ throw new Error(`No snapshot for page ${page_id} - capture a snapshot first`);
170
+ }
171
+ // Look up element by EID from registry
172
+ const stateManager = getStateManager(page_id);
173
+ const elementRef = stateManager.getElementRegistry().getByEid(input.eid);
174
+ if (!elementRef) {
175
+ throw new Error(`Element with eid ${input.eid} not found in registry`);
176
+ }
177
+ // Find the node by backend_node_id
178
+ const node = snap.nodes.find((n) => n.backend_node_id === elementRef.ref.backend_node_id);
179
+ if (!node) {
180
+ throw new Error(`Element with eid ${input.eid} has stale reference`);
181
+ }
182
+ const details = {
183
+ eid: input.eid,
184
+ kind: node.kind,
185
+ label: node.label,
186
+ where: {
187
+ region: node.where.region,
188
+ group_id: node.where.group_id,
189
+ group_path: node.where.group_path,
190
+ heading_context: node.where.heading_context,
191
+ },
192
+ layout: {
193
+ bbox: node.layout.bbox,
194
+ display: node.layout.display,
195
+ screen_zone: node.layout.screen_zone,
196
+ },
197
+ };
198
+ if (node.state) {
199
+ details.state = { ...node.state };
200
+ }
201
+ if (node.find) {
202
+ details.find = { primary: node.find.primary, alternates: node.find.alternates };
203
+ }
204
+ if (node.attributes) {
205
+ details.attributes = { ...node.attributes };
206
+ }
207
+ return buildGetElementDetailsResponse(page_id, snap.snapshot_id, details);
208
+ }
209
+ /**
210
+ * Scroll an element into view.
211
+ *
212
+ * @param rawInput - Scroll options (will be validated)
213
+ * @returns Scroll result with delta
214
+ */
215
+ export async function scrollElementIntoView(rawInput) {
216
+ const input = ScrollElementIntoViewInputSchema.parse(rawInput);
217
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
218
+ const snap = requireSnapshot(pageId);
219
+ const node = resolveElementByEid(pageId, input.eid, snap);
220
+ // Execute action with automatic retry on stale elements
221
+ const result = await executeActionWithRetry(handleRef.current, node, async (backendNodeId) => {
222
+ await scrollIntoView(handleRef.current.cdp, backendNodeId);
223
+ }, snapshotStore, captureSnapshot);
224
+ // Store snapshot for future queries
225
+ snapshotStore.store(pageId, result.snapshot);
226
+ // Return XML state response directly
227
+ return result.state_response;
228
+ }
229
+ /**
230
+ * Scroll the page up or down.
231
+ *
232
+ * @param rawInput - Scroll options (will be validated)
233
+ * @returns Scroll result with delta
234
+ */
235
+ export async function scrollPage(rawInput) {
236
+ const input = ScrollPageInputSchema.parse(rawInput);
237
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
238
+ // Execute action with new simplified wrapper
239
+ const result = await executeAction(handleRef.current, async () => {
240
+ await scrollPageByAmount(handleRef.current.cdp, input.direction, input.amount);
241
+ }, captureSnapshot);
242
+ // Store snapshot for future queries
243
+ snapshotStore.store(pageId, result.snapshot);
244
+ // Return XML state response directly
245
+ return result.state_response;
246
+ }
247
+ //# sourceMappingURL=observation-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observation-tools.js","sourceRoot":"","sources":["../../../src/tools/observation-tools.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * - State tools return `<state>...</state>` (via StateManager)
6
6
  * - Data tools return `<result type="...">...</result>` (via builders here)
7
7
  */
8
- import { getStateManager } from './execute-action.js';
8
+ import { getStateManager } from './state-manager-registry.js';
9
9
  import { escapeXml, xmlAttr } from '../lib/text-utils.js';
10
10
  // ============================================================================
11
11
  // State Response Builders (for mutation/navigation tools)
@@ -86,7 +86,7 @@ export function buildCloseSessionResponse() {
86
86
  */
87
87
  export function buildFindElementsResponse(pageId, snapshotId, matches) {
88
88
  const lines = [];
89
- lines.push(`<result type="find_elements" page_id="${escapeXml(pageId)}" snapshot_id="${escapeXml(snapshotId)}" count="${matches.length}">`);
89
+ lines.push(`<result type="find" page_id="${escapeXml(pageId)}" snapshot_id="${escapeXml(snapshotId)}" count="${matches.length}">`);
90
90
  for (const m of matches) {
91
91
  const attrs = [
92
92
  `eid="${escapeXml(m.eid)}"`,
@@ -1 +1 @@
1
- {"version":3,"file":"response-builder.js","sourceRoot":"","sources":["../../../src/tools/response-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response-builder.js","sourceRoot":"","sources":["../../../src/tools/response-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Stale Element Retry
3
+ *
4
+ * Handles stale element detection and retry logic for element-based actions.
5
+ *
6
+ * @module tools/stale-element-retry
7
+ */
8
+ import type { ReadableNode, BaseSnapshot } from '../snapshot/snapshot.types.js';
9
+ import type { PageHandle } from '../browser/page-registry.js';
10
+ import type { ClickOutcome } from '../state/element-ref.types.js';
11
+ import type { CaptureSnapshotFn } from './execute-action.js';
12
+ /**
13
+ * Check if an error is a stale element error.
14
+ */
15
+ export declare function isStaleElementError(err: unknown): boolean;
16
+ /**
17
+ * Result of handling a stale element retry.
18
+ */
19
+ export interface StaleElementRetryResult {
20
+ success: boolean;
21
+ error?: string;
22
+ outcome: ClickOutcome;
23
+ }
24
+ /**
25
+ * Handle stale element retry logic.
26
+ *
27
+ * @param handle - Page handle
28
+ * @param node - Original target node
29
+ * @param action - Action to retry
30
+ * @param capture - Snapshot capture function
31
+ * @param snapshotStore - Optional snapshot store to update
32
+ * @returns Retry result with success/error/outcome
33
+ */
34
+ export declare function handleStaleElementRetry(handle: PageHandle, node: ReadableNode, action: (backendNodeId: number) => Promise<void>, capture: CaptureSnapshotFn, snapshotStore?: {
35
+ store: (pageId: string, snapshot: BaseSnapshot) => void;
36
+ }): Promise<StaleElementRetryResult>;
37
+ //# sourceMappingURL=stale-element-retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stale-element-retry.d.ts","sourceRoot":"","sources":["../../../src/tools/stale-element-retry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;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,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASzD;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAChD,OAAO,EAAE,iBAAiB,EAC1B,aAAa,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CAAE,GAC1E,OAAO,CAAC,uBAAuB,CAAC,CA4ClC"}