agent-web-interface 4.0.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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/src/browser/ensure-browser.d.ts +39 -0
  4. package/dist/src/browser/ensure-browser.d.ts.map +1 -0
  5. package/dist/src/browser/ensure-browser.js +65 -0
  6. package/dist/src/browser/ensure-browser.js.map +1 -0
  7. package/dist/src/browser/index.d.ts +8 -0
  8. package/dist/src/browser/index.d.ts.map +1 -0
  9. package/dist/src/browser/index.js +8 -0
  10. package/dist/src/browser/index.js.map +1 -0
  11. package/dist/src/browser/page-network-tracker.d.ts +96 -0
  12. package/dist/src/browser/page-network-tracker.d.ts.map +1 -0
  13. package/dist/src/browser/page-network-tracker.js +235 -0
  14. package/dist/src/browser/page-network-tracker.js.map +1 -0
  15. package/dist/src/browser/page-registry.d.ts +137 -0
  16. package/dist/src/browser/page-registry.d.ts.map +1 -0
  17. package/dist/src/browser/page-registry.js +194 -0
  18. package/dist/src/browser/page-registry.js.map +1 -0
  19. package/dist/src/browser/page-stabilization.d.ts +35 -0
  20. package/dist/src/browser/page-stabilization.d.ts.map +1 -0
  21. package/dist/src/browser/page-stabilization.js +42 -0
  22. package/dist/src/browser/page-stabilization.js.map +1 -0
  23. package/dist/src/browser/session-manager.d.ts +336 -0
  24. package/dist/src/browser/session-manager.d.ts.map +1 -0
  25. package/dist/src/browser/session-manager.js +964 -0
  26. package/dist/src/browser/session-manager.js.map +1 -0
  27. package/dist/src/cdp/cdp-client.interface.d.ts +193 -0
  28. package/dist/src/cdp/cdp-client.interface.d.ts.map +1 -0
  29. package/dist/src/cdp/cdp-client.interface.js +9 -0
  30. package/dist/src/cdp/cdp-client.interface.js.map +1 -0
  31. package/dist/src/cdp/index.d.ts +9 -0
  32. package/dist/src/cdp/index.d.ts.map +1 -0
  33. package/dist/src/cdp/index.js +8 -0
  34. package/dist/src/cdp/index.js.map +1 -0
  35. package/dist/src/cdp/puppeteer-cdp-client.d.ts +97 -0
  36. package/dist/src/cdp/puppeteer-cdp-client.d.ts.map +1 -0
  37. package/dist/src/cdp/puppeteer-cdp-client.js +273 -0
  38. package/dist/src/cdp/puppeteer-cdp-client.js.map +1 -0
  39. package/dist/src/cli/args.d.ts +35 -0
  40. package/dist/src/cli/args.d.ts.map +1 -0
  41. package/dist/src/cli/args.js +76 -0
  42. package/dist/src/cli/args.js.map +1 -0
  43. package/dist/src/delta/dom-stabilizer.d.ts +46 -0
  44. package/dist/src/delta/dom-stabilizer.d.ts.map +1 -0
  45. package/dist/src/delta/dom-stabilizer.js +121 -0
  46. package/dist/src/delta/dom-stabilizer.js.map +1 -0
  47. package/dist/src/delta/index.d.ts +8 -0
  48. package/dist/src/delta/index.d.ts.map +1 -0
  49. package/dist/src/delta/index.js +7 -0
  50. package/dist/src/delta/index.js.map +1 -0
  51. package/dist/src/factpack/action-selector.d.ts +36 -0
  52. package/dist/src/factpack/action-selector.d.ts.map +1 -0
  53. package/dist/src/factpack/action-selector.js +367 -0
  54. package/dist/src/factpack/action-selector.js.map +1 -0
  55. package/dist/src/factpack/dialog-detector.d.ts +19 -0
  56. package/dist/src/factpack/dialog-detector.d.ts.map +1 -0
  57. package/dist/src/factpack/dialog-detector.js +354 -0
  58. package/dist/src/factpack/dialog-detector.js.map +1 -0
  59. package/dist/src/factpack/form-detector.d.ts +28 -0
  60. package/dist/src/factpack/form-detector.d.ts.map +1 -0
  61. package/dist/src/factpack/form-detector.js +555 -0
  62. package/dist/src/factpack/form-detector.js.map +1 -0
  63. package/dist/src/factpack/index.d.ts +32 -0
  64. package/dist/src/factpack/index.d.ts.map +1 -0
  65. package/dist/src/factpack/index.js +73 -0
  66. package/dist/src/factpack/index.js.map +1 -0
  67. package/dist/src/factpack/page-classifier.d.ts +22 -0
  68. package/dist/src/factpack/page-classifier.d.ts.map +1 -0
  69. package/dist/src/factpack/page-classifier.js +526 -0
  70. package/dist/src/factpack/page-classifier.js.map +1 -0
  71. package/dist/src/factpack/types.d.ts +307 -0
  72. package/dist/src/factpack/types.d.ts.map +1 -0
  73. package/dist/src/factpack/types.js +12 -0
  74. package/dist/src/factpack/types.js.map +1 -0
  75. package/dist/src/form/dependency-tracker.d.ts +108 -0
  76. package/dist/src/form/dependency-tracker.d.ts.map +1 -0
  77. package/dist/src/form/dependency-tracker.js +298 -0
  78. package/dist/src/form/dependency-tracker.js.map +1 -0
  79. package/dist/src/form/field-extractor.d.ts +32 -0
  80. package/dist/src/form/field-extractor.d.ts.map +1 -0
  81. package/dist/src/form/field-extractor.js +544 -0
  82. package/dist/src/form/field-extractor.js.map +1 -0
  83. package/dist/src/form/form-detector.d.ts +103 -0
  84. package/dist/src/form/form-detector.d.ts.map +1 -0
  85. package/dist/src/form/form-detector.js +704 -0
  86. package/dist/src/form/form-detector.js.map +1 -0
  87. package/dist/src/form/form-state.d.ts +23 -0
  88. package/dist/src/form/form-state.d.ts.map +1 -0
  89. package/dist/src/form/form-state.js +39 -0
  90. package/dist/src/form/form-state.js.map +1 -0
  91. package/dist/src/form/index.d.ts +23 -0
  92. package/dist/src/form/index.d.ts.map +1 -0
  93. package/dist/src/form/index.js +27 -0
  94. package/dist/src/form/index.js.map +1 -0
  95. package/dist/src/form/runtime-value-reader.d.ts +72 -0
  96. package/dist/src/form/runtime-value-reader.d.ts.map +1 -0
  97. package/dist/src/form/runtime-value-reader.js +232 -0
  98. package/dist/src/form/runtime-value-reader.js.map +1 -0
  99. package/dist/src/form/types.d.ts +384 -0
  100. package/dist/src/form/types.d.ts.map +1 -0
  101. package/dist/src/form/types.js +17 -0
  102. package/dist/src/form/types.js.map +1 -0
  103. package/dist/src/index.d.ts +8 -0
  104. package/dist/src/index.d.ts.map +1 -0
  105. package/dist/src/index.js +212 -0
  106. package/dist/src/index.js.map +1 -0
  107. package/dist/src/lib/constants.d.ts +27 -0
  108. package/dist/src/lib/constants.d.ts.map +1 -0
  109. package/dist/src/lib/constants.js +63 -0
  110. package/dist/src/lib/constants.js.map +1 -0
  111. package/dist/src/lib/index.d.ts +12 -0
  112. package/dist/src/lib/index.d.ts.map +1 -0
  113. package/dist/src/lib/index.js +17 -0
  114. package/dist/src/lib/index.js.map +1 -0
  115. package/dist/src/lib/regions.d.ts +29 -0
  116. package/dist/src/lib/regions.d.ts.map +1 -0
  117. package/dist/src/lib/regions.js +93 -0
  118. package/dist/src/lib/regions.js.map +1 -0
  119. package/dist/src/lib/scoring.d.ts +47 -0
  120. package/dist/src/lib/scoring.d.ts.map +1 -0
  121. package/dist/src/lib/scoring.js +79 -0
  122. package/dist/src/lib/scoring.js.map +1 -0
  123. package/dist/src/lib/selectors.d.ts +42 -0
  124. package/dist/src/lib/selectors.d.ts.map +1 -0
  125. package/dist/src/lib/selectors.js +138 -0
  126. package/dist/src/lib/selectors.js.map +1 -0
  127. package/dist/src/lib/text-utils.d.ts +155 -0
  128. package/dist/src/lib/text-utils.d.ts.map +1 -0
  129. package/dist/src/lib/text-utils.js +391 -0
  130. package/dist/src/lib/text-utils.js.map +1 -0
  131. package/dist/src/observation/eid-linker.d.ts +104 -0
  132. package/dist/src/observation/eid-linker.d.ts.map +1 -0
  133. package/dist/src/observation/eid-linker.js +403 -0
  134. package/dist/src/observation/eid-linker.js.map +1 -0
  135. package/dist/src/observation/index.d.ts +12 -0
  136. package/dist/src/observation/index.d.ts.map +1 -0
  137. package/dist/src/observation/index.js +15 -0
  138. package/dist/src/observation/index.js.map +1 -0
  139. package/dist/src/observation/observation-accumulator.d.ts +58 -0
  140. package/dist/src/observation/observation-accumulator.d.ts.map +1 -0
  141. package/dist/src/observation/observation-accumulator.js +213 -0
  142. package/dist/src/observation/observation-accumulator.js.map +1 -0
  143. package/dist/src/observation/observation.types.d.ts +139 -0
  144. package/dist/src/observation/observation.types.d.ts.map +1 -0
  145. package/dist/src/observation/observation.types.js +59 -0
  146. package/dist/src/observation/observation.types.js.map +1 -0
  147. package/dist/src/observation/observer-script.d.ts +19 -0
  148. package/dist/src/observation/observer-script.d.ts.map +1 -0
  149. package/dist/src/observation/observer-script.js +569 -0
  150. package/dist/src/observation/observer-script.js.map +1 -0
  151. package/dist/src/query/index.d.ts +9 -0
  152. package/dist/src/query/index.d.ts.map +1 -0
  153. package/dist/src/query/index.js +10 -0
  154. package/dist/src/query/index.js.map +1 -0
  155. package/dist/src/query/query-engine.d.ts +111 -0
  156. package/dist/src/query/query-engine.d.ts.map +1 -0
  157. package/dist/src/query/query-engine.js +509 -0
  158. package/dist/src/query/query-engine.js.map +1 -0
  159. package/dist/src/query/types/index.d.ts +5 -0
  160. package/dist/src/query/types/index.d.ts.map +1 -0
  161. package/dist/src/query/types/index.js +5 -0
  162. package/dist/src/query/types/index.js.map +1 -0
  163. package/dist/src/query/types/query.types.d.ts +141 -0
  164. package/dist/src/query/types/query.types.d.ts.map +1 -0
  165. package/dist/src/query/types/query.types.js +19 -0
  166. package/dist/src/query/types/query.types.js.map +1 -0
  167. package/dist/src/renderer/budget-manager.d.ts +46 -0
  168. package/dist/src/renderer/budget-manager.d.ts.map +1 -0
  169. package/dist/src/renderer/budget-manager.js +133 -0
  170. package/dist/src/renderer/budget-manager.js.map +1 -0
  171. package/dist/src/renderer/constants.d.ts +38 -0
  172. package/dist/src/renderer/constants.d.ts.map +1 -0
  173. package/dist/src/renderer/constants.js +29 -0
  174. package/dist/src/renderer/constants.js.map +1 -0
  175. package/dist/src/renderer/index.d.ts +12 -0
  176. package/dist/src/renderer/index.d.ts.map +1 -0
  177. package/dist/src/renderer/index.js +16 -0
  178. package/dist/src/renderer/index.js.map +1 -0
  179. package/dist/src/renderer/section-renderers.d.ts +42 -0
  180. package/dist/src/renderer/section-renderers.d.ts.map +1 -0
  181. package/dist/src/renderer/section-renderers.js +252 -0
  182. package/dist/src/renderer/section-renderers.js.map +1 -0
  183. package/dist/src/renderer/token-counter.d.ts +45 -0
  184. package/dist/src/renderer/token-counter.d.ts.map +1 -0
  185. package/dist/src/renderer/token-counter.js +65 -0
  186. package/dist/src/renderer/token-counter.js.map +1 -0
  187. package/dist/src/renderer/types.d.ts +71 -0
  188. package/dist/src/renderer/types.d.ts.map +1 -0
  189. package/dist/src/renderer/types.js +7 -0
  190. package/dist/src/renderer/types.js.map +1 -0
  191. package/dist/src/renderer/xml-renderer.d.ts +42 -0
  192. package/dist/src/renderer/xml-renderer.d.ts.map +1 -0
  193. package/dist/src/renderer/xml-renderer.js +103 -0
  194. package/dist/src/renderer/xml-renderer.js.map +1 -0
  195. package/dist/src/server/index.d.ts +8 -0
  196. package/dist/src/server/index.d.ts.map +1 -0
  197. package/dist/src/server/index.js +8 -0
  198. package/dist/src/server/index.js.map +1 -0
  199. package/dist/src/server/mcp-server.d.ts +59 -0
  200. package/dist/src/server/mcp-server.d.ts.map +1 -0
  201. package/dist/src/server/mcp-server.js +140 -0
  202. package/dist/src/server/mcp-server.js.map +1 -0
  203. package/dist/src/server/server-config.d.ts +41 -0
  204. package/dist/src/server/server-config.d.ts.map +1 -0
  205. package/dist/src/server/server-config.js +80 -0
  206. package/dist/src/server/server-config.js.map +1 -0
  207. package/dist/src/server/session-store.d.ts +148 -0
  208. package/dist/src/server/session-store.d.ts.map +1 -0
  209. package/dist/src/server/session-store.js +224 -0
  210. package/dist/src/server/session-store.js.map +1 -0
  211. package/dist/src/shared/errors/browser-session.error.d.ts +102 -0
  212. package/dist/src/shared/errors/browser-session.error.d.ts.map +1 -0
  213. package/dist/src/shared/errors/browser-session.error.js +153 -0
  214. package/dist/src/shared/errors/browser-session.error.js.map +1 -0
  215. package/dist/src/shared/errors/index.d.ts +5 -0
  216. package/dist/src/shared/errors/index.d.ts.map +1 -0
  217. package/dist/src/shared/errors/index.js +5 -0
  218. package/dist/src/shared/errors/index.js.map +1 -0
  219. package/dist/src/shared/services/dom-transformer.service.d.ts +71 -0
  220. package/dist/src/shared/services/dom-transformer.service.d.ts.map +1 -0
  221. package/dist/src/shared/services/dom-transformer.service.js +190 -0
  222. package/dist/src/shared/services/dom-transformer.service.js.map +1 -0
  223. package/dist/src/shared/services/index.d.ts +7 -0
  224. package/dist/src/shared/services/index.d.ts.map +1 -0
  225. package/dist/src/shared/services/index.js +7 -0
  226. package/dist/src/shared/services/index.js.map +1 -0
  227. package/dist/src/shared/services/logging.service.d.ts +154 -0
  228. package/dist/src/shared/services/logging.service.d.ts.map +1 -0
  229. package/dist/src/shared/services/logging.service.js +267 -0
  230. package/dist/src/shared/services/logging.service.js.map +1 -0
  231. package/dist/src/shared/services/selector-builder.service.d.ts +53 -0
  232. package/dist/src/shared/services/selector-builder.service.d.ts.map +1 -0
  233. package/dist/src/shared/services/selector-builder.service.js +240 -0
  234. package/dist/src/shared/services/selector-builder.service.js.map +1 -0
  235. package/dist/src/shared/types/base.types.d.ts +45 -0
  236. package/dist/src/shared/types/base.types.d.ts.map +1 -0
  237. package/dist/src/shared/types/base.types.js +8 -0
  238. package/dist/src/shared/types/base.types.js.map +1 -0
  239. package/dist/src/shared/types/index.d.ts +5 -0
  240. package/dist/src/shared/types/index.d.ts.map +1 -0
  241. package/dist/src/shared/types/index.js +5 -0
  242. package/dist/src/shared/types/index.js.map +1 -0
  243. package/dist/src/snapshot/element-resolver.d.ts +102 -0
  244. package/dist/src/snapshot/element-resolver.d.ts.map +1 -0
  245. package/dist/src/snapshot/element-resolver.js +379 -0
  246. package/dist/src/snapshot/element-resolver.js.map +1 -0
  247. package/dist/src/snapshot/extractors/attribute-extractor.d.ts +40 -0
  248. package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -0
  249. package/dist/src/snapshot/extractors/attribute-extractor.js +237 -0
  250. package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -0
  251. package/dist/src/snapshot/extractors/ax-extractor.d.ts +36 -0
  252. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -0
  253. package/dist/src/snapshot/extractors/ax-extractor.js +144 -0
  254. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -0
  255. package/dist/src/snapshot/extractors/dom-extractor.d.ts +21 -0
  256. package/dist/src/snapshot/extractors/dom-extractor.d.ts.map +1 -0
  257. package/dist/src/snapshot/extractors/dom-extractor.js +137 -0
  258. package/dist/src/snapshot/extractors/dom-extractor.js.map +1 -0
  259. package/dist/src/snapshot/extractors/grouping-resolver.d.ts +39 -0
  260. package/dist/src/snapshot/extractors/grouping-resolver.d.ts.map +1 -0
  261. package/dist/src/snapshot/extractors/grouping-resolver.js +260 -0
  262. package/dist/src/snapshot/extractors/grouping-resolver.js.map +1 -0
  263. package/dist/src/snapshot/extractors/index.d.ts +19 -0
  264. package/dist/src/snapshot/extractors/index.d.ts.map +1 -0
  265. package/dist/src/snapshot/extractors/index.js +27 -0
  266. package/dist/src/snapshot/extractors/index.js.map +1 -0
  267. package/dist/src/snapshot/extractors/label-resolver.d.ts +44 -0
  268. package/dist/src/snapshot/extractors/label-resolver.d.ts.map +1 -0
  269. package/dist/src/snapshot/extractors/label-resolver.js +173 -0
  270. package/dist/src/snapshot/extractors/label-resolver.js.map +1 -0
  271. package/dist/src/snapshot/extractors/layout-extractor.d.ts +52 -0
  272. package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -0
  273. package/dist/src/snapshot/extractors/layout-extractor.js +382 -0
  274. package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -0
  275. package/dist/src/snapshot/extractors/locator-builder.d.ts +27 -0
  276. package/dist/src/snapshot/extractors/locator-builder.d.ts.map +1 -0
  277. package/dist/src/snapshot/extractors/locator-builder.js +223 -0
  278. package/dist/src/snapshot/extractors/locator-builder.js.map +1 -0
  279. package/dist/src/snapshot/extractors/region-resolver.d.ts +31 -0
  280. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -0
  281. package/dist/src/snapshot/extractors/region-resolver.js +168 -0
  282. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -0
  283. package/dist/src/snapshot/extractors/state-extractor.d.ts +30 -0
  284. package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -0
  285. package/dist/src/snapshot/extractors/state-extractor.js +181 -0
  286. package/dist/src/snapshot/extractors/state-extractor.js.map +1 -0
  287. package/dist/src/snapshot/extractors/types.d.ts +213 -0
  288. package/dist/src/snapshot/extractors/types.d.ts.map +1 -0
  289. package/dist/src/snapshot/extractors/types.js +145 -0
  290. package/dist/src/snapshot/extractors/types.js.map +1 -0
  291. package/dist/src/snapshot/index.d.ts +14 -0
  292. package/dist/src/snapshot/index.d.ts.map +1 -0
  293. package/dist/src/snapshot/index.js +18 -0
  294. package/dist/src/snapshot/index.js.map +1 -0
  295. package/dist/src/snapshot/snapshot-compiler.d.ts +73 -0
  296. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -0
  297. package/dist/src/snapshot/snapshot-compiler.js +763 -0
  298. package/dist/src/snapshot/snapshot-compiler.js.map +1 -0
  299. package/dist/src/snapshot/snapshot-health.d.ts +97 -0
  300. package/dist/src/snapshot/snapshot-health.d.ts.map +1 -0
  301. package/dist/src/snapshot/snapshot-health.js +214 -0
  302. package/dist/src/snapshot/snapshot-health.js.map +1 -0
  303. package/dist/src/snapshot/snapshot-store.d.ts +137 -0
  304. package/dist/src/snapshot/snapshot-store.d.ts.map +1 -0
  305. package/dist/src/snapshot/snapshot-store.js +202 -0
  306. package/dist/src/snapshot/snapshot-store.js.map +1 -0
  307. package/dist/src/snapshot/snapshot.types.d.ts +250 -0
  308. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -0
  309. package/dist/src/snapshot/snapshot.types.js +54 -0
  310. package/dist/src/snapshot/snapshot.types.js.map +1 -0
  311. package/dist/src/state/actionables-filter.d.ts +47 -0
  312. package/dist/src/state/actionables-filter.d.ts.map +1 -0
  313. package/dist/src/state/actionables-filter.js +173 -0
  314. package/dist/src/state/actionables-filter.js.map +1 -0
  315. package/dist/src/state/atoms-extractor.d.ts +23 -0
  316. package/dist/src/state/atoms-extractor.d.ts.map +1 -0
  317. package/dist/src/state/atoms-extractor.js +160 -0
  318. package/dist/src/state/atoms-extractor.js.map +1 -0
  319. package/dist/src/state/constants.d.ts +125 -0
  320. package/dist/src/state/constants.d.ts.map +1 -0
  321. package/dist/src/state/constants.js +131 -0
  322. package/dist/src/state/constants.js.map +1 -0
  323. package/dist/src/state/diff-engine.d.ts +23 -0
  324. package/dist/src/state/diff-engine.d.ts.map +1 -0
  325. package/dist/src/state/diff-engine.js +475 -0
  326. package/dist/src/state/diff-engine.js.map +1 -0
  327. package/dist/src/state/element-identity.d.ts +75 -0
  328. package/dist/src/state/element-identity.d.ts.map +1 -0
  329. package/dist/src/state/element-identity.js +129 -0
  330. package/dist/src/state/element-identity.js.map +1 -0
  331. package/dist/src/state/element-ref.types.d.ts +135 -0
  332. package/dist/src/state/element-ref.types.d.ts.map +1 -0
  333. package/dist/src/state/element-ref.types.js +13 -0
  334. package/dist/src/state/element-ref.types.js.map +1 -0
  335. package/dist/src/state/element-registry.d.ts +118 -0
  336. package/dist/src/state/element-registry.d.ts.map +1 -0
  337. package/dist/src/state/element-registry.js +222 -0
  338. package/dist/src/state/element-registry.js.map +1 -0
  339. package/dist/src/state/health.types.d.ts +93 -0
  340. package/dist/src/state/health.types.d.ts.map +1 -0
  341. package/dist/src/state/health.types.js +56 -0
  342. package/dist/src/state/health.types.js.map +1 -0
  343. package/dist/src/state/layer-detector.d.ts +23 -0
  344. package/dist/src/state/layer-detector.d.ts.map +1 -0
  345. package/dist/src/state/layer-detector.js +368 -0
  346. package/dist/src/state/layer-detector.js.map +1 -0
  347. package/dist/src/state/locator-generator.d.ts +21 -0
  348. package/dist/src/state/locator-generator.d.ts.map +1 -0
  349. package/dist/src/state/locator-generator.js +137 -0
  350. package/dist/src/state/locator-generator.js.map +1 -0
  351. package/dist/src/state/state-manager.d.ts +104 -0
  352. package/dist/src/state/state-manager.d.ts.map +1 -0
  353. package/dist/src/state/state-manager.js +618 -0
  354. package/dist/src/state/state-manager.js.map +1 -0
  355. package/dist/src/state/state-renderer.d.ts +63 -0
  356. package/dist/src/state/state-renderer.d.ts.map +1 -0
  357. package/dist/src/state/state-renderer.js +340 -0
  358. package/dist/src/state/state-renderer.js.map +1 -0
  359. package/dist/src/state/types.d.ts +353 -0
  360. package/dist/src/state/types.d.ts.map +1 -0
  361. package/dist/src/state/types.js +8 -0
  362. package/dist/src/state/types.js.map +1 -0
  363. package/dist/src/tools/browser-tools.d.ts +140 -0
  364. package/dist/src/tools/browser-tools.d.ts.map +1 -0
  365. package/dist/src/tools/browser-tools.js +657 -0
  366. package/dist/src/tools/browser-tools.js.map +1 -0
  367. package/dist/src/tools/errors.d.ts +63 -0
  368. package/dist/src/tools/errors.d.ts.map +1 -0
  369. package/dist/src/tools/errors.js +86 -0
  370. package/dist/src/tools/errors.js.map +1 -0
  371. package/dist/src/tools/execute-action.d.ts +135 -0
  372. package/dist/src/tools/execute-action.d.ts.map +1 -0
  373. package/dist/src/tools/execute-action.js +579 -0
  374. package/dist/src/tools/execute-action.js.map +1 -0
  375. package/dist/src/tools/form-tools.d.ts +109 -0
  376. package/dist/src/tools/form-tools.d.ts.map +1 -0
  377. package/dist/src/tools/form-tools.js +434 -0
  378. package/dist/src/tools/form-tools.js.map +1 -0
  379. package/dist/src/tools/index.d.ts +11 -0
  380. package/dist/src/tools/index.d.ts.map +1 -0
  381. package/dist/src/tools/index.js +49 -0
  382. package/dist/src/tools/index.js.map +1 -0
  383. package/dist/src/tools/response-builder.d.ts +98 -0
  384. package/dist/src/tools/response-builder.d.ts.map +1 -0
  385. package/dist/src/tools/response-builder.js +219 -0
  386. package/dist/src/tools/response-builder.js.map +1 -0
  387. package/dist/src/tools/tool-schemas.d.ts +2482 -0
  388. package/dist/src/tools/tool-schemas.d.ts.map +1 -0
  389. package/dist/src/tools/tool-schemas.js +606 -0
  390. package/dist/src/tools/tool-schemas.js.map +1 -0
  391. package/dist/vitest.config.d.ts +3 -0
  392. package/dist/vitest.config.d.ts.map +1 -0
  393. package/dist/vitest.config.js +16 -0
  394. package/dist/vitest.config.js.map +1 -0
  395. package/package.json +76 -0
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Form Tools
3
+ *
4
+ * MCP tool handlers for form understanding.
5
+ * Provides semantic understanding of form-like interactions.
6
+ */
7
+ import { z } from 'zod';
8
+ import { type FormRegion, type FormField, type FormAction, type FieldDependency } from '../form/index.js';
9
+ import type { SessionManager } from '../browser/session-manager.js';
10
+ /**
11
+ * Initialize form tools with a session manager instance.
12
+ * Must be called before using any form tool handlers.
13
+ *
14
+ * @param manager - SessionManager instance
15
+ */
16
+ export declare function initializeFormTools(manager: SessionManager): void;
17
+ /**
18
+ * get_form_understanding input schema
19
+ */
20
+ export declare const GetFormUnderstandingInputSchema: z.ZodObject<{
21
+ /** Page identifier (optional, defaults to MRU page) */
22
+ page_id: z.ZodOptional<z.ZodString>;
23
+ /** Form ID to get specific form (optional) */
24
+ form_id: z.ZodOptional<z.ZodString>;
25
+ /** Include field values in response (default: false for security) */
26
+ include_values: z.ZodDefault<z.ZodBoolean>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ include_values: boolean;
29
+ page_id?: string | undefined;
30
+ form_id?: string | undefined;
31
+ }, {
32
+ page_id?: string | undefined;
33
+ include_values?: boolean | undefined;
34
+ form_id?: string | undefined;
35
+ }>;
36
+ export type GetFormUnderstandingInput = z.infer<typeof GetFormUnderstandingInputSchema>;
37
+ /**
38
+ * get_field_context input schema
39
+ */
40
+ export declare const GetFieldContextInputSchema: z.ZodObject<{
41
+ /** Page identifier (optional, defaults to MRU page) */
42
+ page_id: z.ZodOptional<z.ZodString>;
43
+ /** Element ID of the field */
44
+ eid: z.ZodString;
45
+ }, "strip", z.ZodTypeAny, {
46
+ eid: string;
47
+ page_id?: string | undefined;
48
+ }, {
49
+ eid: string;
50
+ page_id?: string | undefined;
51
+ }>;
52
+ export type GetFieldContextInput = z.infer<typeof GetFieldContextInputSchema>;
53
+ /**
54
+ * Build XML response for form understanding.
55
+ *
56
+ * Optimized format with no wrapper elements, flattened attributes, and label as content.
57
+ * Fields use their kind as tag name (textbox, checkbox, etc.), actions use button tag.
58
+ */
59
+ declare function buildFormUnderstandingXml(pageId: string, forms: FormRegion[], includeValues: boolean, limitations?: string): string;
60
+ /**
61
+ * Build XML element for a form field using kind as tag name and label as content.
62
+ * Omits default values (enabled=true, filled=false).
63
+ */
64
+ declare function buildFieldElementXml(field: FormField, includeValues: boolean, indent: number): string;
65
+ /**
66
+ * Build XML element for a form action as <button>.
67
+ * Omits default values (enabled=true).
68
+ */
69
+ declare function buildButtonXml(action: FormAction, indent: number): string;
70
+ /**
71
+ * Suggest the next action for a form.
72
+ */
73
+ declare function suggestNextAction(form: FormRegion): {
74
+ eid: string;
75
+ label: string;
76
+ reason: string;
77
+ } | undefined;
78
+ /**
79
+ * Build XML for field context.
80
+ *
81
+ * Optimized format with flattened attributes and no unnecessary wrappers.
82
+ * Label is text content, state/constraints are root attributes, defaults omitted.
83
+ */
84
+ declare function buildFieldContextXml(field: FormField, form: FormRegion, dependencies: FieldDependency[]): string;
85
+ /** @internal Exported for testing only */
86
+ export declare const _testExports: {
87
+ buildFormUnderstandingXml: typeof buildFormUnderstandingXml;
88
+ buildFieldContextXml: typeof buildFieldContextXml;
89
+ buildFieldElementXml: typeof buildFieldElementXml;
90
+ buildButtonXml: typeof buildButtonXml;
91
+ suggestNextAction: typeof suggestNextAction;
92
+ };
93
+ /**
94
+ * Get form understanding for a page.
95
+ *
96
+ * Detects form regions and extracts rich metadata about fields,
97
+ * dependencies, and state. Reads actual runtime values via CDP
98
+ * to provide accurate filled/has_value status.
99
+ */
100
+ export declare function getFormUnderstanding(rawInput: unknown): Promise<string>;
101
+ /**
102
+ * Get context for a specific field.
103
+ *
104
+ * Returns detailed information about a field including purpose inference,
105
+ * constraints, dependencies, and suggested next action.
106
+ */
107
+ export declare function getFieldContext(rawInput: unknown): string;
108
+ export {};
109
+ //# sourceMappingURL=form-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/form-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EAErB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAMpE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAEjE;AAoCD;;GAEG;AACH,eAAO,MAAM,+BAA+B;IAC1C,uDAAuD;;IAEvD,8CAA8C;;IAE9C,qEAAqE;;;;;;;;;;EAErE,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF;;GAEG;AACH,eAAO,MAAM,0BAA0B;IACrC,uDAAuD;;IAEvD,8BAA8B;;;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E;;;;;GAKG;AACH,iBAAS,yBAAyB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,EAAE,EACnB,aAAa,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAqDR;AAED;;;GAGG;AACH,iBAAS,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkC9F;AAED;;;GAGG;AACH,iBAAS,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAalE;AAED;;GAEG;AACH,iBAAS,iBAAiB,CACxB,IAAI,EAAE,UAAU,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAsC5D;AAED;;;;;GAKG;AACH,iBAAS,oBAAoB,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,eAAe,EAAE,GAC9B,MAAM,CAgGR;AAMD,0CAA0C;AAC1C,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAC;AAMF;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA4F7E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAsCzD"}
@@ -0,0 +1,434 @@
1
+ /**
2
+ * Form Tools
3
+ *
4
+ * MCP tool handlers for form understanding.
5
+ * Provides semantic understanding of form-like interactions.
6
+ */
7
+ import { z } from 'zod';
8
+ import { getSnapshotStore } from './browser-tools.js';
9
+ import { detectForms, getDependencyTracker, computeFormState, readRuntimeValues, } from '../form/index.js';
10
+ import { escapeXml } from '../lib/text-utils.js';
11
+ // Module-level reference to session manager (set via initializeFormTools)
12
+ let sessionManager = null;
13
+ /**
14
+ * Initialize form tools with a session manager instance.
15
+ * Must be called before using any form tool handlers.
16
+ *
17
+ * @param manager - SessionManager instance
18
+ */
19
+ export function initializeFormTools(manager) {
20
+ sessionManager = manager;
21
+ }
22
+ /**
23
+ * Get the session manager, throwing if not initialized.
24
+ */
25
+ function getSessionManager() {
26
+ if (!sessionManager) {
27
+ throw new Error('Form tools not initialized. Call initializeFormTools() first.');
28
+ }
29
+ return sessionManager;
30
+ }
31
+ /**
32
+ * Resolve page_id to a PageHandle, throwing if not found.
33
+ *
34
+ * @param session - SessionManager instance
35
+ * @param page_id - Optional page identifier
36
+ * @returns PageHandle for the resolved page
37
+ * @throws Error if no page available
38
+ */
39
+ function resolvePage(session, page_id) {
40
+ const handle = session.resolvePage(page_id);
41
+ if (!handle) {
42
+ const message = page_id
43
+ ? `Page not found: ${page_id}`
44
+ : 'No page available. Use navigate first.';
45
+ throw new Error(message);
46
+ }
47
+ session.touchPage(handle.page_id);
48
+ return handle;
49
+ }
50
+ // ============================================================================
51
+ // Input/Output Schemas
52
+ // ============================================================================
53
+ /**
54
+ * get_form_understanding input schema
55
+ */
56
+ export const GetFormUnderstandingInputSchema = z.object({
57
+ /** Page identifier (optional, defaults to MRU page) */
58
+ page_id: z.string().optional(),
59
+ /** Form ID to get specific form (optional) */
60
+ form_id: z.string().optional(),
61
+ /** Include field values in response (default: false for security) */
62
+ include_values: z.boolean().default(false),
63
+ });
64
+ /**
65
+ * get_field_context input schema
66
+ */
67
+ export const GetFieldContextInputSchema = z.object({
68
+ /** Page identifier (optional, defaults to MRU page) */
69
+ page_id: z.string().optional(),
70
+ /** Element ID of the field */
71
+ eid: z.string(),
72
+ });
73
+ // ============================================================================
74
+ // Response Builders
75
+ // ============================================================================
76
+ /**
77
+ * Build XML response for form understanding.
78
+ *
79
+ * Optimized format with no wrapper elements, flattened attributes, and label as content.
80
+ * Fields use their kind as tag name (textbox, checkbox, etc.), actions use button tag.
81
+ */
82
+ function buildFormUnderstandingXml(pageId, forms, includeValues, limitations) {
83
+ const lines = [];
84
+ const limitAttr = limitations ? ` limitations="${escapeXml(limitations)}"` : '';
85
+ lines.push(`<forms page="${escapeXml(pageId)}"${limitAttr}>`);
86
+ // Sort forms by form_id for deterministic output
87
+ const sortedForms = [...forms].sort((a, b) => a.form_id.localeCompare(b.form_id));
88
+ for (const form of sortedForms) {
89
+ // Form attributes with flattened state
90
+ const formAttrs = [
91
+ `id="${escapeXml(form.form_id)}"`,
92
+ `intent="${form.intent ?? 'unknown'}"`,
93
+ `completion="${form.state.completion_pct}%"`,
94
+ ];
95
+ if (!form.state.can_submit)
96
+ formAttrs.push('can_submit="false"');
97
+ if (form.state.error_count > 0)
98
+ formAttrs.push(`errors="${form.state.error_count}"`);
99
+ lines.push(` <form ${formAttrs.join(' ')}>`);
100
+ // Sort fields by backend_node_id (DOM order proxy) for deterministic output
101
+ const sortedFields = [...form.fields].sort((a, b) => (a.backend_node_id ?? 0) - (b.backend_node_id ?? 0));
102
+ // Fields - use kind as tag name, label as content
103
+ for (const field of sortedFields) {
104
+ lines.push(buildFieldElementXml(field, includeValues, 4));
105
+ }
106
+ // Sort actions by eid for deterministic output
107
+ const sortedActions = [...form.actions].sort((a, b) => a.eid.localeCompare(b.eid));
108
+ // Actions as <button> elements
109
+ for (const action of sortedActions) {
110
+ lines.push(buildButtonXml(action, 4));
111
+ }
112
+ // Next suggested action
113
+ const nextAction = suggestNextAction(form);
114
+ if (nextAction) {
115
+ lines.push(` <next eid="${escapeXml(nextAction.eid)}" reason="${escapeXml(nextAction.reason)}" />`);
116
+ }
117
+ lines.push(' </form>');
118
+ }
119
+ lines.push('</forms>');
120
+ return lines.join('\n');
121
+ }
122
+ /**
123
+ * Build XML element for a form field using kind as tag name and label as content.
124
+ * Omits default values (enabled=true, filled=false).
125
+ */
126
+ function buildFieldElementXml(field, includeValues, indent) {
127
+ const pad = ' '.repeat(indent);
128
+ const attrs = [
129
+ `eid="${escapeXml(field.eid)}"`,
130
+ `purpose="${field.purpose.semantic_type}"`,
131
+ ];
132
+ // Only include non-default states
133
+ if (field.state.filled)
134
+ attrs.push('filled="true"');
135
+ if (!field.state.enabled)
136
+ attrs.push('enabled="false"');
137
+ if (!field.state.valid) {
138
+ attrs.push('invalid="true"');
139
+ if (field.state.validation_message) {
140
+ attrs.push(`error="${escapeXml(field.state.validation_message)}"`);
141
+ }
142
+ }
143
+ if (field.constraints.required)
144
+ attrs.push('required="true"');
145
+ if (includeValues && field.state.current_value) {
146
+ attrs.push(`value="${escapeXml(field.state.current_value)}"`);
147
+ }
148
+ if (field.depends_on && field.depends_on.length > 0) {
149
+ const sortedDeps = [...field.depends_on].sort((a, b) => a.source_eid.localeCompare(b.source_eid));
150
+ const deps = sortedDeps.map((d) => d.source_eid).join(',');
151
+ attrs.push(`depends="${escapeXml(deps)}"`);
152
+ }
153
+ // Use kind as tag name
154
+ const tag = field.kind;
155
+ return `${pad}<${tag} ${attrs.join(' ')}>${escapeXml(field.label)}</${tag}>`;
156
+ }
157
+ /**
158
+ * Build XML element for a form action as <button>.
159
+ * Omits default values (enabled=true).
160
+ */
161
+ function buildButtonXml(action, indent) {
162
+ const pad = ' '.repeat(indent);
163
+ const attrs = [`eid="${escapeXml(action.eid)}"`, `type="${action.type}"`];
164
+ // Only include non-defaults
165
+ if (!action.enabled)
166
+ attrs.push('enabled="false"');
167
+ if (action.is_primary)
168
+ attrs.push('primary="true"');
169
+ if (!action.enabled && action.disabled_reason) {
170
+ attrs.push(`blocked="${escapeXml(action.disabled_reason)}"`);
171
+ }
172
+ return `${pad}<button ${attrs.join(' ')}>${escapeXml(action.label)}</button>`;
173
+ }
174
+ /**
175
+ * Suggest the next action for a form.
176
+ */
177
+ function suggestNextAction(form) {
178
+ // Find first required unfilled field that is enabled
179
+ const nextRequired = form.fields.find((f) => f.constraints.required && !f.state.filled && f.state.enabled);
180
+ if (nextRequired) {
181
+ return {
182
+ eid: nextRequired.eid,
183
+ label: nextRequired.label,
184
+ reason: 'Next required field',
185
+ };
186
+ }
187
+ // Find first unfilled optional field that is enabled
188
+ const nextOptional = form.fields.find((f) => !f.state.filled && f.state.enabled);
189
+ if (nextOptional) {
190
+ return {
191
+ eid: nextOptional.eid,
192
+ label: nextOptional.label,
193
+ reason: 'Optional field',
194
+ };
195
+ }
196
+ // Check if form can be submitted
197
+ if (form.state.can_submit) {
198
+ const submitAction = form.actions.find((a) => a.type === 'submit' && a.enabled);
199
+ if (submitAction) {
200
+ return {
201
+ eid: submitAction.eid,
202
+ label: submitAction.label,
203
+ reason: 'Form ready to submit',
204
+ };
205
+ }
206
+ }
207
+ return undefined;
208
+ }
209
+ /**
210
+ * Build XML for field context.
211
+ *
212
+ * Optimized format with flattened attributes and no unnecessary wrappers.
213
+ * Label is text content, state/constraints are root attributes, defaults omitted.
214
+ */
215
+ function buildFieldContextXml(field, form, dependencies) {
216
+ const lines = [];
217
+ // Build root <field> attributes
218
+ const attrs = [
219
+ `eid="${escapeXml(field.eid)}"`,
220
+ `kind="${field.kind}"`,
221
+ `purpose="${field.purpose.semantic_type}"`,
222
+ `confidence="${field.purpose.confidence.toFixed(2)}"`,
223
+ ];
224
+ // Signals as comma-separated attribute (sorted for deterministic output)
225
+ const sortedSignals = [...field.purpose.inferred_from].sort();
226
+ if (sortedSignals.length > 0) {
227
+ attrs.push(`signals="${escapeXml(sortedSignals.join(', '))}"`);
228
+ }
229
+ // State flags (only include non-defaults)
230
+ if (field.state.filled)
231
+ attrs.push('filled="true"');
232
+ if (!field.state.enabled)
233
+ attrs.push('enabled="false"');
234
+ if (!field.state.valid)
235
+ attrs.push('valid="false"');
236
+ if (field.state.focused)
237
+ attrs.push('focused="true"');
238
+ if (field.state.value_source) {
239
+ attrs.push(`value_source="${field.state.value_source}"`);
240
+ }
241
+ // Constraints (only include non-defaults)
242
+ if (field.constraints.required)
243
+ attrs.push('required="true"');
244
+ if (field.constraints.min_length !== undefined) {
245
+ attrs.push(`min_length="${field.constraints.min_length}"`);
246
+ }
247
+ if (field.constraints.max_length !== undefined) {
248
+ attrs.push(`max_length="${field.constraints.max_length}"`);
249
+ }
250
+ if (field.constraints.pattern) {
251
+ attrs.push(`pattern="${escapeXml(field.constraints.pattern)}"`);
252
+ }
253
+ // Validation error
254
+ if (!field.state.valid && field.state.validation_message) {
255
+ attrs.push(`error="${escapeXml(field.state.validation_message)}"`);
256
+ }
257
+ // Dependencies summary (eids of fields this depends on)
258
+ if (dependencies.length > 0) {
259
+ const depEids = [...new Set(dependencies.map((d) => d.source_eid))].sort();
260
+ attrs.push(`depends="${escapeXml(depEids.join(','))}"`);
261
+ }
262
+ // Start field element with label as content
263
+ lines.push(`<field ${attrs.join(' ')}>${escapeXml(field.label)}`);
264
+ // Options (for select/radio), sorted by value for deterministic output
265
+ const hasOptions = field.constraints.options && field.constraints.options.length > 0;
266
+ if (hasOptions) {
267
+ const sortedOptions = [...field.constraints.options].sort((a, b) => a.value.localeCompare(b.value));
268
+ for (const opt of sortedOptions) {
269
+ const optAttrs = [`value="${escapeXml(opt.value)}"`];
270
+ if (opt.selected)
271
+ optAttrs.push('selected="true"');
272
+ if (opt.eid)
273
+ optAttrs.push(`eid="${escapeXml(opt.eid)}"`);
274
+ lines.push(` <option ${optAttrs.join(' ')}>${escapeXml(opt.label)}</option>`);
275
+ }
276
+ }
277
+ // Dependencies (sorted by source_eid, then type for deterministic output)
278
+ if (dependencies.length > 0) {
279
+ const sortedDeps = [...dependencies].sort((a, b) => a.source_eid.localeCompare(b.source_eid) || a.type.localeCompare(b.type));
280
+ for (const dep of sortedDeps) {
281
+ lines.push(` <dependency source="${escapeXml(dep.source_eid)}" ` +
282
+ `type="${dep.type}" confidence="${dep.confidence.toFixed(2)}" />`);
283
+ }
284
+ }
285
+ // Form context
286
+ lines.push(` <form id="${escapeXml(form.form_id)}" ` +
287
+ `intent="${form.intent ?? 'unknown'}" completion="${form.state.completion_pct}%" />`);
288
+ // Next suggested action
289
+ const nextAction = suggestNextAction(form);
290
+ if (nextAction) {
291
+ lines.push(` <next eid="${escapeXml(nextAction.eid)}" reason="${escapeXml(nextAction.reason)}" />`);
292
+ }
293
+ lines.push('</field>');
294
+ return lines.join('\n');
295
+ }
296
+ // ============================================================================
297
+ // Test Exports (for unit testing XML output format)
298
+ // ============================================================================
299
+ /** @internal Exported for testing only */
300
+ export const _testExports = {
301
+ buildFormUnderstandingXml,
302
+ buildFieldContextXml,
303
+ buildFieldElementXml,
304
+ buildButtonXml,
305
+ suggestNextAction,
306
+ };
307
+ // ============================================================================
308
+ // Tool Handlers
309
+ // ============================================================================
310
+ /**
311
+ * Get form understanding for a page.
312
+ *
313
+ * Detects form regions and extracts rich metadata about fields,
314
+ * dependencies, and state. Reads actual runtime values via CDP
315
+ * to provide accurate filled/has_value status.
316
+ */
317
+ export async function getFormUnderstanding(rawInput) {
318
+ const input = GetFormUnderstandingInputSchema.parse(rawInput);
319
+ const session = getSessionManager();
320
+ const snapshotStore = getSnapshotStore();
321
+ // Resolve page with CDP client for runtime value reading
322
+ const handle = resolvePage(session, input.page_id);
323
+ const pageId = handle.page_id;
324
+ // Get snapshot for the page
325
+ const snapshot = snapshotStore.getByPageId(pageId);
326
+ if (!snapshot) {
327
+ return '<error>No snapshot available. Use capture_snapshot first.</error>';
328
+ }
329
+ // Detect forms
330
+ const allForms = detectForms(snapshot);
331
+ // Filter by form_id if specified
332
+ const forms = input.form_id ? allForms.filter((f) => f.form_id === input.form_id) : allForms;
333
+ if (forms.length === 0 && input.form_id) {
334
+ return `<error>Form not found: ${escapeXml(input.form_id)}</error>`;
335
+ }
336
+ // Read runtime values for form fields
337
+ const allFields = forms.flatMap((f) => f.fields);
338
+ let limitations;
339
+ if (allFields.length > 0) {
340
+ // Build field value requests
341
+ const fieldRequests = allFields.map((f) => ({
342
+ backend_node_id: f.backend_node_id,
343
+ frame_id: f.frame_id,
344
+ semantic_type: f.purpose.semantic_type,
345
+ input_type: snapshot.nodes.find((n) => n.node_id === f.eid)?.attributes?.input_type,
346
+ label: f.label,
347
+ }));
348
+ const runtimeResult = await readRuntimeValues(handle.cdp, fieldRequests, {
349
+ maxFieldsToRead: 50,
350
+ concurrencyLimit: 8,
351
+ timeoutMs: 2000,
352
+ maskSensitive: true,
353
+ });
354
+ // Update field states with runtime values
355
+ for (const form of forms) {
356
+ for (const field of form.fields) {
357
+ const runtimeValue = runtimeResult.values.get(field.backend_node_id);
358
+ if (runtimeValue !== undefined) {
359
+ // Runtime read succeeded
360
+ field.state.has_value = runtimeValue.length > 0;
361
+ field.state.filled = runtimeValue.length > 0;
362
+ field.state.value_source = 'runtime';
363
+ if (input.include_values) {
364
+ field.state.current_value = runtimeValue; // Already masked if sensitive
365
+ }
366
+ }
367
+ else {
368
+ // Runtime read failed - be conservative, don't trust attribute
369
+ // Keep existing filled state from snapshot but mark source as unknown
370
+ field.state.value_source = undefined; // Unknown
371
+ }
372
+ }
373
+ // Recompute form state after field updates
374
+ form.state = computeFormState(form.fields);
375
+ }
376
+ if (runtimeResult.partial) {
377
+ limitations = runtimeResult.partial_reason;
378
+ }
379
+ }
380
+ // Enrich fields with observed dependencies
381
+ const tracker = getDependencyTracker();
382
+ for (const form of forms) {
383
+ for (const field of form.fields) {
384
+ const deps = tracker.getDependenciesFor(pageId, field.eid);
385
+ if (deps.length > 0) {
386
+ field.depends_on = deps;
387
+ }
388
+ const dependents = tracker.getDependentsOf(pageId, field.eid);
389
+ if (dependents.length > 0) {
390
+ field.dependents = dependents;
391
+ }
392
+ }
393
+ }
394
+ return buildFormUnderstandingXml(pageId, forms, input.include_values, limitations);
395
+ }
396
+ /**
397
+ * Get context for a specific field.
398
+ *
399
+ * Returns detailed information about a field including purpose inference,
400
+ * constraints, dependencies, and suggested next action.
401
+ */
402
+ export function getFieldContext(rawInput) {
403
+ const input = GetFieldContextInputSchema.parse(rawInput);
404
+ const session = getSessionManager();
405
+ const snapshotStore = getSnapshotStore();
406
+ // Resolve page
407
+ const handle = resolvePage(session, input.page_id);
408
+ const pageId = handle.page_id;
409
+ // Get snapshot for the page
410
+ const snapshot = snapshotStore.getByPageId(pageId);
411
+ if (!snapshot) {
412
+ return '<error>No snapshot available. Use capture_snapshot first.</error>';
413
+ }
414
+ // Find the field's form
415
+ const allForms = detectForms(snapshot);
416
+ let targetField;
417
+ let targetForm;
418
+ for (const form of allForms) {
419
+ const field = form.fields.find((f) => f.eid === input.eid);
420
+ if (field) {
421
+ targetField = field;
422
+ targetForm = form;
423
+ break;
424
+ }
425
+ }
426
+ if (!targetField || !targetForm) {
427
+ return `<error>Field not found in any form: ${escapeXml(input.eid)}</error>`;
428
+ }
429
+ // Get dependencies
430
+ const tracker = getDependencyTracker();
431
+ const dependencies = tracker.getDependenciesFor(pageId, input.eid);
432
+ return buildFieldContextXml(targetField, targetForm, dependencies);
433
+ }
434
+ //# sourceMappingURL=form-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-tools.js","sourceRoot":"","sources":["../../../src/tools/form-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MCP Tools Module
3
+ *
4
+ * Browser automation tools exposed via MCP protocol.
5
+ */
6
+ export { initializeTools, getSnapshotStore } from './browser-tools.js';
7
+ export { listPages, closePage, closeSession, navigate, goBack, goForward, reload, captureSnapshot, findElements, getNodeDetails, scrollElementIntoView, scrollPage, click, type, press, select, hover, } from './browser-tools.js';
8
+ export { ensureBrowserForTools, getSessionManager } from '../server/server-config.js';
9
+ export { ListPagesInputSchema, ListPagesOutputSchema, type ListPagesInput, type ListPagesOutput, ClosePageInputSchema, ClosePageOutputSchema, type ClosePageInput, type ClosePageOutput, CloseSessionInputSchema, CloseSessionOutputSchema, type CloseSessionInput, type CloseSessionOutput, NavigateInputSchema, NavigateOutputSchema, type NavigateInput, type NavigateOutput, GoBackInputSchema, GoBackOutputSchema, type GoBackInput, type GoBackOutput, GoForwardInputSchema, GoForwardOutputSchema, type GoForwardInput, type GoForwardOutput, ReloadInputSchema, ReloadOutputSchema, type ReloadInput, type ReloadOutput, CaptureSnapshotInputSchema, CaptureSnapshotOutputSchema, type CaptureSnapshotInput, type CaptureSnapshotOutput, FindElementsInputSchema, FindElementsOutputSchema, type FindElementsInput, type FindElementsOutput, GetNodeDetailsInputSchema, GetNodeDetailsOutputSchema, type GetNodeDetailsInput, type GetNodeDetailsOutput, ScrollElementIntoViewInputSchema, ScrollElementIntoViewInputSchemaBase, ScrollElementIntoViewOutputSchema, type ScrollElementIntoViewInput, type ScrollElementIntoViewOutput, ScrollPageInputSchema, ScrollPageOutputSchema, type ScrollPageInput, type ScrollPageOutput, ClickInputSchema, ClickInputSchemaBase, ClickOutputSchema, type ClickInput, type ClickOutput, TypeInputSchema, TypeInputSchemaBase, TypeOutputSchema, type TypeInput, type TypeOutput, PressInputSchema, PressOutputSchema, type PressInput, type PressOutput, SelectInputSchema, SelectInputSchemaBase, SelectOutputSchema, type SelectInput, type SelectOutput, HoverInputSchema, HoverInputSchemaBase, HoverOutputSchema, type HoverInput, type HoverOutput, } from './tool-schemas.js';
10
+ export { initializeFormTools, getFormUnderstanding, getFieldContext, GetFormUnderstandingInputSchema, GetFieldContextInputSchema, type GetFormUnderstandingInput, type GetFieldContextInput, } from './form-tools.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,GACN,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGtF,OAAO,EAEL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,EAEpB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,EAEpB,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAEvB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAEjB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,EAEpB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAEjB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAE1B,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAEvB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,gCAAgC,EAChC,oCAAoC,EACpC,iCAAiC,EACjC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAEhC,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAErB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EAEf,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAEjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,+BAA+B,EAC/B,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * MCP Tools Module
3
+ *
4
+ * Browser automation tools exposed via MCP protocol.
5
+ */
6
+ export { initializeTools, getSnapshotStore } from './browser-tools.js';
7
+ // Tool handlers - Simplified API
8
+ export { listPages, closePage, closeSession, navigate, goBack, goForward, reload, captureSnapshot, findElements, getNodeDetails, scrollElementIntoView, scrollPage, click, type, press, select, hover, } from './browser-tools.js';
9
+ // Server config - lazy browser initialization
10
+ export { ensureBrowserForTools, getSessionManager } from '../server/server-config.js';
11
+ // Schemas - Simplified API
12
+ export {
13
+ // list_pages
14
+ ListPagesInputSchema, ListPagesOutputSchema,
15
+ // close_page
16
+ ClosePageInputSchema, ClosePageOutputSchema,
17
+ // close_session
18
+ CloseSessionInputSchema, CloseSessionOutputSchema,
19
+ // navigate
20
+ NavigateInputSchema, NavigateOutputSchema,
21
+ // go_back
22
+ GoBackInputSchema, GoBackOutputSchema,
23
+ // go_forward
24
+ GoForwardInputSchema, GoForwardOutputSchema,
25
+ // reload
26
+ ReloadInputSchema, ReloadOutputSchema,
27
+ // capture_snapshot
28
+ CaptureSnapshotInputSchema, CaptureSnapshotOutputSchema,
29
+ // find_elements
30
+ FindElementsInputSchema, FindElementsOutputSchema,
31
+ // get_element_details
32
+ GetNodeDetailsInputSchema, GetNodeDetailsOutputSchema,
33
+ // scroll_element_into_view
34
+ ScrollElementIntoViewInputSchema, ScrollElementIntoViewInputSchemaBase, ScrollElementIntoViewOutputSchema,
35
+ // scroll_page
36
+ ScrollPageInputSchema, ScrollPageOutputSchema,
37
+ // click
38
+ ClickInputSchema, ClickInputSchemaBase, ClickOutputSchema,
39
+ // type
40
+ TypeInputSchema, TypeInputSchemaBase, TypeOutputSchema,
41
+ // press
42
+ PressInputSchema, PressOutputSchema,
43
+ // select
44
+ SelectInputSchema, SelectInputSchemaBase, SelectOutputSchema,
45
+ // hover
46
+ HoverInputSchema, HoverInputSchemaBase, HoverOutputSchema, } from './tool-schemas.js';
47
+ // Form tools
48
+ export { initializeFormTools, getFormUnderstanding, getFieldContext, GetFormUnderstandingInputSchema, GetFieldContextInputSchema, } from './form-tools.js';
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,iCAAiC;AACjC,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,EACN,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,GACN,MAAM,oBAAoB,CAAC;AAE5B,8CAA8C;AAC9C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,2BAA2B;AAC3B,OAAO;AACL,aAAa;AACb,oBAAoB,EACpB,qBAAqB;AAGrB,aAAa;AACb,oBAAoB,EACpB,qBAAqB;AAGrB,gBAAgB;AAChB,uBAAuB,EACvB,wBAAwB;AAGxB,WAAW;AACX,mBAAmB,EACnB,oBAAoB;AAGpB,UAAU;AACV,iBAAiB,EACjB,kBAAkB;AAGlB,aAAa;AACb,oBAAoB,EACpB,qBAAqB;AAGrB,SAAS;AACT,iBAAiB,EACjB,kBAAkB;AAGlB,mBAAmB;AACnB,0BAA0B,EAC1B,2BAA2B;AAG3B,gBAAgB;AAChB,uBAAuB,EACvB,wBAAwB;AAGxB,sBAAsB;AACtB,yBAAyB,EACzB,0BAA0B;AAG1B,2BAA2B;AAC3B,gCAAgC,EAChC,oCAAoC,EACpC,iCAAiC;AAGjC,cAAc;AACd,qBAAqB,EACrB,sBAAsB;AAGtB,QAAQ;AACR,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB;AAGjB,OAAO;AACP,eAAe,EACf,mBAAmB,EACnB,gBAAgB;AAGhB,QAAQ;AACR,gBAAgB,EAChB,iBAAiB;AAGjB,SAAS;AACT,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB;AAGlB,QAAQ;AACR,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAE3B,aAAa;AACb,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,+BAA+B,EAC/B,0BAA0B,GAG3B,MAAM,iBAAiB,CAAC"}