agent-web-interface 4.2.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/dist/src/browser/connection-utils.d.ts +48 -0
  2. package/dist/src/browser/connection-utils.d.ts.map +1 -0
  3. package/dist/src/browser/connection-utils.js +129 -0
  4. package/dist/src/browser/connection-utils.js.map +1 -0
  5. package/dist/src/browser/index.d.ts +3 -1
  6. package/dist/src/browser/index.d.ts.map +1 -1
  7. package/dist/src/browser/index.js +2 -1
  8. package/dist/src/browser/index.js.map +1 -1
  9. package/dist/src/browser/session-manager.d.ts +1 -89
  10. package/dist/src/browser/session-manager.d.ts.map +1 -1
  11. package/dist/src/browser/session-manager.js +1 -116
  12. package/dist/src/browser/session-manager.js.map +1 -1
  13. package/dist/src/browser/session-manager.types.d.ts +90 -0
  14. package/dist/src/browser/session-manager.types.d.ts.map +1 -0
  15. package/dist/src/browser/session-manager.types.js +7 -0
  16. package/dist/src/browser/session-manager.types.js.map +1 -0
  17. package/dist/src/form/constraint-extraction.d.ts +31 -0
  18. package/dist/src/form/constraint-extraction.d.ts.map +1 -0
  19. package/dist/src/form/constraint-extraction.js +110 -0
  20. package/dist/src/form/constraint-extraction.js.map +1 -0
  21. package/dist/src/form/field-extractor.d.ts.map +1 -1
  22. package/dist/src/form/field-extractor.js +3 -444
  23. package/dist/src/form/field-extractor.js.map +1 -1
  24. package/dist/src/form/field-state-extractor.d.ts +22 -0
  25. package/dist/src/form/field-state-extractor.d.ts.map +1 -0
  26. package/dist/src/form/field-state-extractor.js +55 -0
  27. package/dist/src/form/field-state-extractor.js.map +1 -0
  28. package/dist/src/form/form-actions.d.ts +45 -0
  29. package/dist/src/form/form-actions.d.ts.map +1 -0
  30. package/dist/src/form/form-actions.js +108 -0
  31. package/dist/src/form/form-actions.js.map +1 -0
  32. package/dist/src/form/form-detector.d.ts +0 -36
  33. package/dist/src/form/form-detector.d.ts.map +1 -1
  34. package/dist/src/form/form-detector.js +11 -376
  35. package/dist/src/form/form-detector.js.map +1 -1
  36. package/dist/src/form/input-clustering.d.ts +15 -0
  37. package/dist/src/form/input-clustering.d.ts.map +1 -0
  38. package/dist/src/form/input-clustering.js +61 -0
  39. package/dist/src/form/input-clustering.js.map +1 -0
  40. package/dist/src/form/intent-inference.d.ts +28 -0
  41. package/dist/src/form/intent-inference.d.ts.map +1 -0
  42. package/dist/src/form/intent-inference.js +137 -0
  43. package/dist/src/form/intent-inference.js.map +1 -0
  44. package/dist/src/form/purpose-inference.d.ts +50 -0
  45. package/dist/src/form/purpose-inference.d.ts.map +1 -0
  46. package/dist/src/form/purpose-inference.js +313 -0
  47. package/dist/src/form/purpose-inference.js.map +1 -0
  48. package/dist/src/form/submit-detection.d.ts +36 -0
  49. package/dist/src/form/submit-detection.d.ts.map +1 -0
  50. package/dist/src/form/submit-detection.js +101 -0
  51. package/dist/src/form/submit-detection.js.map +1 -0
  52. package/dist/src/form/types.d.ts +2 -2
  53. package/dist/src/index.js +65 -48
  54. package/dist/src/index.js.map +1 -1
  55. package/dist/src/observation/observation-accumulator.d.ts +1 -1
  56. package/dist/src/observation/observation-accumulator.js +1 -1
  57. package/dist/src/observation/observer-script.d.ts +1 -1
  58. package/dist/src/observation/observer-script.d.ts.map +1 -1
  59. package/dist/src/observation/observer-script.js +129 -7
  60. package/dist/src/observation/observer-script.js.map +1 -1
  61. package/dist/src/query/disambiguation.d.ts +18 -0
  62. package/dist/src/query/disambiguation.d.ts.map +1 -0
  63. package/dist/src/query/disambiguation.js +123 -0
  64. package/dist/src/query/disambiguation.js.map +1 -0
  65. package/dist/src/query/fuzzy-match.d.ts +17 -0
  66. package/dist/src/query/fuzzy-match.d.ts.map +1 -0
  67. package/dist/src/query/fuzzy-match.js +34 -0
  68. package/dist/src/query/fuzzy-match.js.map +1 -0
  69. package/dist/src/query/index.d.ts +3 -0
  70. package/dist/src/query/index.d.ts.map +1 -1
  71. package/dist/src/query/index.js +6 -0
  72. package/dist/src/query/index.js.map +1 -1
  73. package/dist/src/query/query-engine.d.ts +0 -35
  74. package/dist/src/query/query-engine.d.ts.map +1 -1
  75. package/dist/src/query/query-engine.js +9 -309
  76. package/dist/src/query/query-engine.js.map +1 -1
  77. package/dist/src/query/scoring.d.ts +52 -0
  78. package/dist/src/query/scoring.d.ts.map +1 -0
  79. package/dist/src/query/scoring.js +162 -0
  80. package/dist/src/query/scoring.js.map +1 -0
  81. package/dist/src/server/mcp-server.d.ts.map +1 -1
  82. package/dist/src/server/mcp-server.js +29 -1
  83. package/dist/src/server/mcp-server.js.map +1 -1
  84. package/dist/src/snapshot/element-resolver.d.ts +50 -18
  85. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  86. package/dist/src/snapshot/element-resolver.js +180 -101
  87. package/dist/src/snapshot/element-resolver.js.map +1 -1
  88. package/dist/src/snapshot/extractors/ax-extractor.d.ts +1 -1
  89. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -1
  90. package/dist/src/snapshot/extractors/ax-extractor.js +4 -1
  91. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -1
  92. package/dist/src/snapshot/extractors/index.d.ts +1 -1
  93. package/dist/src/snapshot/extractors/index.d.ts.map +1 -1
  94. package/dist/src/snapshot/extractors/index.js +1 -1
  95. package/dist/src/snapshot/extractors/index.js.map +1 -1
  96. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -1
  97. package/dist/src/snapshot/extractors/region-resolver.js +8 -0
  98. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -1
  99. package/dist/src/snapshot/extractors/types.d.ts +8 -0
  100. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  101. package/dist/src/snapshot/extractors/types.js +16 -0
  102. package/dist/src/snapshot/extractors/types.js.map +1 -1
  103. package/dist/src/snapshot/frame-context.d.ts +68 -0
  104. package/dist/src/snapshot/frame-context.d.ts.map +1 -0
  105. package/dist/src/snapshot/frame-context.js +131 -0
  106. package/dist/src/snapshot/frame-context.js.map +1 -0
  107. package/dist/src/snapshot/heading-index.d.ts +28 -0
  108. package/dist/src/snapshot/heading-index.d.ts.map +1 -0
  109. package/dist/src/snapshot/heading-index.js +108 -0
  110. package/dist/src/snapshot/heading-index.js.map +1 -0
  111. package/dist/src/snapshot/index.d.ts +5 -3
  112. package/dist/src/snapshot/index.d.ts.map +1 -1
  113. package/dist/src/snapshot/index.js +3 -2
  114. package/dist/src/snapshot/index.js.map +1 -1
  115. package/dist/src/snapshot/kind-mapping.d.ts +30 -0
  116. package/dist/src/snapshot/kind-mapping.d.ts.map +1 -0
  117. package/dist/src/snapshot/kind-mapping.js +114 -0
  118. package/dist/src/snapshot/kind-mapping.js.map +1 -0
  119. package/dist/src/snapshot/node-filter.d.ts +31 -0
  120. package/dist/src/snapshot/node-filter.d.ts.map +1 -0
  121. package/dist/src/snapshot/node-filter.js +137 -0
  122. package/dist/src/snapshot/node-filter.js.map +1 -0
  123. package/dist/src/snapshot/node-synthesizer.d.ts +62 -0
  124. package/dist/src/snapshot/node-synthesizer.d.ts.map +1 -0
  125. package/dist/src/snapshot/node-synthesizer.js +185 -0
  126. package/dist/src/snapshot/node-synthesizer.js.map +1 -0
  127. package/dist/src/snapshot/snapshot-compiler.d.ts +2 -36
  128. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  129. package/dist/src/snapshot/snapshot-compiler.js +28 -520
  130. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  131. package/dist/src/snapshot/snapshot.types.d.ts +7 -2
  132. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  133. package/dist/src/snapshot/snapshot.types.js +9 -0
  134. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  135. package/dist/src/state/actionables-filter.d.ts +5 -0
  136. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  137. package/dist/src/state/actionables-filter.js +22 -3
  138. package/dist/src/state/actionables-filter.js.map +1 -1
  139. package/dist/src/state/diff-engine.js +3 -3
  140. package/dist/src/state/diff-engine.js.map +1 -1
  141. package/dist/src/state/element-registry.d.ts.map +1 -1
  142. package/dist/src/state/element-registry.js +6 -4
  143. package/dist/src/state/element-registry.js.map +1 -1
  144. package/dist/src/state/hash-utils.d.ts +24 -0
  145. package/dist/src/state/hash-utils.d.ts.map +1 -0
  146. package/dist/src/state/hash-utils.js +41 -0
  147. package/dist/src/state/hash-utils.js.map +1 -0
  148. package/dist/src/state/layer-detector.d.ts.map +1 -1
  149. package/dist/src/state/layer-detector.js +15 -286
  150. package/dist/src/state/layer-detector.js.map +1 -1
  151. package/dist/src/state/layer-detectors/drawer-detector.d.ts +32 -0
  152. package/dist/src/state/layer-detectors/drawer-detector.d.ts.map +1 -0
  153. package/dist/src/state/layer-detectors/drawer-detector.js +96 -0
  154. package/dist/src/state/layer-detectors/drawer-detector.js.map +1 -0
  155. package/dist/src/state/layer-detectors/index.d.ts +10 -0
  156. package/dist/src/state/layer-detectors/index.d.ts.map +1 -0
  157. package/dist/src/state/layer-detectors/index.js +10 -0
  158. package/dist/src/state/layer-detectors/index.js.map +1 -0
  159. package/dist/src/state/layer-detectors/modal-detector.d.ts +30 -0
  160. package/dist/src/state/layer-detectors/modal-detector.d.ts.map +1 -0
  161. package/dist/src/state/layer-detectors/modal-detector.js +127 -0
  162. package/dist/src/state/layer-detectors/modal-detector.js.map +1 -0
  163. package/dist/src/state/layer-detectors/popover-detector.d.ts +20 -0
  164. package/dist/src/state/layer-detectors/popover-detector.d.ts.map +1 -0
  165. package/dist/src/state/layer-detectors/popover-detector.js +76 -0
  166. package/dist/src/state/layer-detectors/popover-detector.js.map +1 -0
  167. package/dist/src/state/layer-detectors/toast-detector.d.ts +24 -0
  168. package/dist/src/state/layer-detectors/toast-detector.d.ts.map +1 -0
  169. package/dist/src/state/layer-detectors/toast-detector.js +48 -0
  170. package/dist/src/state/layer-detectors/toast-detector.js.map +1 -0
  171. package/dist/src/state/region-mapping.d.ts +13 -0
  172. package/dist/src/state/region-mapping.d.ts.map +1 -0
  173. package/dist/src/state/region-mapping.js +25 -0
  174. package/dist/src/state/region-mapping.js.map +1 -0
  175. package/dist/src/state/state-manager.d.ts.map +1 -1
  176. package/dist/src/state/state-manager.js +8 -192
  177. package/dist/src/state/state-manager.js.map +1 -1
  178. package/dist/src/state/state-renderer.d.ts.map +1 -1
  179. package/dist/src/state/state-renderer.js +16 -2
  180. package/dist/src/state/state-renderer.js.map +1 -1
  181. package/dist/src/state/types.d.ts +8 -4
  182. package/dist/src/state/types.d.ts.map +1 -1
  183. package/dist/src/state/url-sanitization.d.ts +22 -0
  184. package/dist/src/state/url-sanitization.d.ts.map +1 -0
  185. package/dist/src/state/url-sanitization.js +60 -0
  186. package/dist/src/state/url-sanitization.js.map +1 -0
  187. package/dist/src/state/value-masking.d.ts +36 -0
  188. package/dist/src/state/value-masking.d.ts.map +1 -0
  189. package/dist/src/state/value-masking.js +86 -0
  190. package/dist/src/state/value-masking.js.map +1 -0
  191. package/dist/src/tools/action-context.d.ts +60 -0
  192. package/dist/src/tools/action-context.d.ts.map +1 -0
  193. package/dist/src/tools/action-context.js +78 -0
  194. package/dist/src/tools/action-context.js.map +1 -0
  195. package/dist/src/tools/action-stabilization.d.ts +48 -0
  196. package/dist/src/tools/action-stabilization.d.ts.map +1 -0
  197. package/dist/src/tools/action-stabilization.js +87 -0
  198. package/dist/src/tools/action-stabilization.js.map +1 -0
  199. package/dist/src/tools/browser-tools.d.ts +8 -146
  200. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  201. package/dist/src/tools/browser-tools.js +13 -689
  202. package/dist/src/tools/browser-tools.js.map +1 -1
  203. package/dist/src/tools/canvas-tools.d.ts +32 -0
  204. package/dist/src/tools/canvas-tools.d.ts.map +1 -0
  205. package/dist/src/tools/canvas-tools.js +370 -0
  206. package/dist/src/tools/canvas-tools.js.map +1 -0
  207. package/dist/src/tools/effect-tracker.d.ts +25 -0
  208. package/dist/src/tools/effect-tracker.d.ts.map +1 -0
  209. package/dist/src/tools/effect-tracker.js +69 -0
  210. package/dist/src/tools/effect-tracker.js.map +1 -0
  211. package/dist/src/tools/execute-action.d.ts +1 -31
  212. package/dist/src/tools/execute-action.d.ts.map +1 -1
  213. package/dist/src/tools/execute-action.js +7 -276
  214. package/dist/src/tools/execute-action.js.map +1 -1
  215. package/dist/src/tools/form-tools.d.ts +4 -6
  216. package/dist/src/tools/form-tools.d.ts.map +1 -1
  217. package/dist/src/tools/form-tools.js +10 -42
  218. package/dist/src/tools/form-tools.js.map +1 -1
  219. package/dist/src/tools/index.d.ts +6 -4
  220. package/dist/src/tools/index.d.ts.map +1 -1
  221. package/dist/src/tools/index.js +21 -10
  222. package/dist/src/tools/index.js.map +1 -1
  223. package/dist/src/tools/interaction-tools.d.ts +46 -0
  224. package/dist/src/tools/interaction-tools.d.ts.map +1 -0
  225. package/dist/src/tools/interaction-tools.js +138 -0
  226. package/dist/src/tools/interaction-tools.js.map +1 -0
  227. package/dist/src/tools/navigation-detection.d.ts +31 -0
  228. package/dist/src/tools/navigation-detection.d.ts.map +1 -0
  229. package/dist/src/tools/navigation-detection.js +46 -0
  230. package/dist/src/tools/navigation-detection.js.map +1 -0
  231. package/dist/src/tools/navigation-tools.d.ts +57 -0
  232. package/dist/src/tools/navigation-tools.d.ts.map +1 -0
  233. package/dist/src/tools/navigation-tools.js +178 -0
  234. package/dist/src/tools/navigation-tools.js.map +1 -0
  235. package/dist/src/tools/observation-tools.d.ts +53 -0
  236. package/dist/src/tools/observation-tools.d.ts.map +1 -0
  237. package/dist/src/tools/observation-tools.js +247 -0
  238. package/dist/src/tools/observation-tools.js.map +1 -0
  239. package/dist/src/tools/response-builder.js +2 -2
  240. package/dist/src/tools/response-builder.js.map +1 -1
  241. package/dist/src/tools/stale-element-retry.d.ts +37 -0
  242. package/dist/src/tools/stale-element-retry.d.ts.map +1 -0
  243. package/dist/src/tools/stale-element-retry.js +68 -0
  244. package/dist/src/tools/stale-element-retry.js.map +1 -0
  245. package/dist/src/tools/state-manager-registry.d.ts +26 -0
  246. package/dist/src/tools/state-manager-registry.d.ts.map +1 -0
  247. package/dist/src/tools/state-manager-registry.js +39 -0
  248. package/dist/src/tools/state-manager-registry.js.map +1 -0
  249. package/dist/src/tools/tool-context.d.ts +53 -0
  250. package/dist/src/tools/tool-context.d.ts.map +1 -0
  251. package/dist/src/tools/tool-context.js +119 -0
  252. package/dist/src/tools/tool-context.js.map +1 -0
  253. package/dist/src/tools/tool-result.types.d.ts +16 -1
  254. package/dist/src/tools/tool-result.types.d.ts.map +1 -1
  255. package/dist/src/tools/tool-result.types.js +11 -0
  256. package/dist/src/tools/tool-result.types.js.map +1 -1
  257. package/dist/src/tools/tool-schemas.d.ts +358 -146
  258. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  259. package/dist/src/tools/tool-schemas.js +142 -19
  260. package/dist/src/tools/tool-schemas.js.map +1 -1
  261. package/dist/src/tools/viewport-tools.d.ts +36 -0
  262. package/dist/src/tools/viewport-tools.d.ts.map +1 -0
  263. package/dist/src/tools/viewport-tools.js +105 -0
  264. package/dist/src/tools/viewport-tools.js.map +1 -0
  265. package/package.json +1 -1
@@ -14,207 +14,9 @@
14
14
  *
15
15
  * @module form/field-extractor
16
16
  */
17
- /**
18
- * Mapping from input type to semantic type
19
- */
20
- const INPUT_TYPE_TO_SEMANTIC = {
21
- email: 'email',
22
- tel: 'phone',
23
- password: 'password',
24
- url: 'url',
25
- search: 'search',
26
- date: 'date',
27
- 'datetime-local': 'date',
28
- time: 'date',
29
- month: 'date',
30
- week: 'date',
31
- number: 'quantity',
32
- file: 'file',
33
- color: 'color',
34
- };
35
- /**
36
- * Mapping from autocomplete attribute to semantic type
37
- */
38
- const AUTOCOMPLETE_TO_SEMANTIC = {
39
- email: 'email',
40
- tel: 'phone',
41
- 'tel-national': 'phone',
42
- 'tel-local': 'phone',
43
- password: 'password',
44
- 'new-password': 'password',
45
- 'current-password': 'password',
46
- username: 'username',
47
- name: 'full_name',
48
- 'given-name': 'first_name',
49
- 'family-name': 'last_name',
50
- 'additional-name': 'name',
51
- nickname: 'username',
52
- 'street-address': 'street',
53
- 'address-line1': 'street',
54
- 'address-line2': 'address',
55
- 'address-level1': 'state',
56
- 'address-level2': 'city',
57
- 'postal-code': 'zip',
58
- country: 'country',
59
- 'country-name': 'country',
60
- 'cc-number': 'card_number',
61
- 'cc-exp': 'card_expiry',
62
- 'cc-exp-month': 'card_expiry',
63
- 'cc-exp-year': 'card_expiry',
64
- 'cc-csc': 'card_cvv',
65
- bday: 'date_of_birth',
66
- 'bday-day': 'date_of_birth',
67
- 'bday-month': 'date_of_birth',
68
- 'bday-year': 'date_of_birth',
69
- url: 'url',
70
- photo: 'file',
71
- };
72
- /**
73
- * Keywords for semantic type inference from labels
74
- */
75
- const LABEL_KEYWORDS = {
76
- email: ['email', 'e-mail', 'mail address'],
77
- phone: ['phone', 'telephone', 'mobile', 'cell', 'contact number'],
78
- password: ['password', 'passcode', 'pin'],
79
- password_confirm: ['confirm password', 'repeat password', 'retype password', 're-enter password'],
80
- name: ['name', 'full name'],
81
- first_name: ['first name', 'given name', 'forename'],
82
- last_name: ['last name', 'surname', 'family name'],
83
- full_name: ['full name', 'your name', 'customer name'],
84
- username: ['username', 'user name', 'user id', 'login', 'account name'],
85
- address: ['address', 'location'],
86
- street: ['street', 'address line', 'street address'],
87
- city: ['city', 'town', 'locality'],
88
- state: ['state', 'province', 'region'],
89
- zip: ['zip', 'postal code', 'postcode', 'zip code'],
90
- country: ['country', 'nation'],
91
- card_number: ['card number', 'credit card', 'debit card', 'card #'],
92
- card_expiry: ['expiry', 'expiration', 'exp date', 'valid thru'],
93
- card_cvv: ['cvv', 'cvc', 'security code', 'card verification'],
94
- date: ['date', 'when'],
95
- date_of_birth: ['birth', 'dob', 'birthday', 'date of birth'],
96
- quantity: ['quantity', 'qty', 'amount', 'count', 'number of'],
97
- price: ['price', 'cost', 'amount', 'total'],
98
- search: ['search', 'find', 'lookup', 'query'],
99
- comment: ['comment', 'note', 'remarks', 'feedback'],
100
- message: ['message', 'text', 'content', 'body'],
101
- url: ['url', 'website', 'link', 'web address'],
102
- file: ['file', 'upload', 'attachment', 'document'],
103
- color: ['color', 'colour'],
104
- selection: ['select', 'choose', 'option'],
105
- toggle: ['enable', 'disable', 'turn on', 'turn off'],
106
- consent: ['agree', 'consent', 'accept', 'terms', 'privacy', 'subscribe'],
107
- unknown: [],
108
- };
109
- /**
110
- * Name patterns for semantic type inference.
111
- * Maps common naming patterns (camelCase, snake_case, kebab-case) to semantic types.
112
- */
113
- const NAME_PATTERNS = {
114
- // Email patterns
115
- email: 'email',
116
- emailaddress: 'email',
117
- email_address: 'email',
118
- 'email-address': 'email',
119
- useremail: 'email',
120
- user_email: 'email',
121
- // Phone patterns
122
- phone: 'phone',
123
- phonenumber: 'phone',
124
- phone_number: 'phone',
125
- 'phone-number': 'phone',
126
- tel: 'phone',
127
- telephone: 'phone',
128
- mobile: 'phone',
129
- // Password patterns
130
- password: 'password',
131
- passwd: 'password',
132
- pass: 'password',
133
- confirmpassword: 'password_confirm',
134
- confirm_password: 'password_confirm',
135
- passwordconfirm: 'password_confirm',
136
- // Name patterns
137
- firstname: 'first_name',
138
- first_name: 'first_name',
139
- 'first-name': 'first_name',
140
- givenname: 'first_name',
141
- lastname: 'last_name',
142
- last_name: 'last_name',
143
- 'last-name': 'last_name',
144
- familyname: 'last_name',
145
- fullname: 'full_name',
146
- full_name: 'full_name',
147
- // Username
148
- username: 'username',
149
- user_name: 'username',
150
- userid: 'username',
151
- user_id: 'username',
152
- // Address
153
- streetaddress: 'street',
154
- street_address: 'street',
155
- addressline: 'street',
156
- address_line: 'street',
157
- city: 'city',
158
- state: 'state',
159
- province: 'state',
160
- zip: 'zip',
161
- zipcode: 'zip',
162
- zip_code: 'zip',
163
- postalcode: 'zip',
164
- postal_code: 'zip',
165
- country: 'country',
166
- // Payment
167
- cardnumber: 'card_number',
168
- card_number: 'card_number',
169
- ccnumber: 'card_number',
170
- cc_number: 'card_number',
171
- cvv: 'card_cvv',
172
- cvc: 'card_cvv',
173
- expiry: 'card_expiry',
174
- expiration: 'card_expiry',
175
- // Dates
176
- dateofbirth: 'date_of_birth',
177
- date_of_birth: 'date_of_birth',
178
- dob: 'date_of_birth',
179
- birthday: 'date_of_birth',
180
- birthdate: 'date_of_birth',
181
- };
182
- /**
183
- * Extract semantic type from naming patterns.
184
- *
185
- * @param label - The accessible label
186
- * @param testId - Optional test ID attribute
187
- * @returns Object with inferred type and signal description
188
- */
189
- function extractNamePatterns(label, testId) {
190
- // Normalize label to check against patterns
191
- const normalizedLabel = label.toLowerCase().replace(/[^a-z0-9_-]/g, '');
192
- // Check label against patterns
193
- for (const [pattern, type] of Object.entries(NAME_PATTERNS)) {
194
- if (normalizedLabel.includes(pattern)) {
195
- return { type, signal: `label matches pattern "${pattern}"` };
196
- }
197
- }
198
- // Check test_id against patterns
199
- if (testId) {
200
- const normalizedTestId = testId.toLowerCase().replace(/[^a-z0-9_-]/g, '');
201
- for (const [pattern, type] of Object.entries(NAME_PATTERNS)) {
202
- if (normalizedTestId.includes(pattern)) {
203
- return { type, signal: `test_id matches pattern "${pattern}"` };
204
- }
205
- }
206
- }
207
- return { type: 'unknown', signal: '' };
208
- }
209
- /**
210
- * Sensitive field types that should have values masked
211
- */
212
- const SENSITIVE_TYPES = new Set([
213
- 'password',
214
- 'password_confirm',
215
- 'card_number',
216
- 'card_cvv',
217
- ]);
17
+ import { inferPurpose } from './purpose-inference.js';
18
+ import { extractConstraints } from './constraint-extraction.js';
19
+ import { extractFieldState } from './field-state-extractor.js';
218
20
  /**
219
21
  * Extract form fields from a snapshot for given field EIDs.
220
22
  *
@@ -261,249 +63,6 @@ function extractField(node, sequence, snapshot, config) {
261
63
  sequence,
262
64
  };
263
65
  }
264
- /**
265
- * Infer the semantic purpose of a field.
266
- */
267
- function inferPurpose(node) {
268
- const inferredFrom = [];
269
- let semanticType = 'unknown';
270
- let confidence = 0;
271
- // Priority 1: Input type attribute (high confidence)
272
- const inputType = node.attributes?.input_type;
273
- if (inputType && INPUT_TYPE_TO_SEMANTIC[inputType]) {
274
- semanticType = INPUT_TYPE_TO_SEMANTIC[inputType];
275
- confidence = 0.95;
276
- inferredFrom.push(`input_type="${inputType}"`);
277
- }
278
- // Priority 2: Autocomplete attribute (high confidence)
279
- const autocomplete = node.attributes?.autocomplete;
280
- if (autocomplete && AUTOCOMPLETE_TO_SEMANTIC[autocomplete]) {
281
- const autoType = AUTOCOMPLETE_TO_SEMANTIC[autocomplete];
282
- if (semanticType === 'unknown' || confidence < 0.9) {
283
- semanticType = autoType;
284
- confidence = Math.max(confidence, 0.9);
285
- inferredFrom.push(`autocomplete="${autocomplete}"`);
286
- }
287
- }
288
- // Priority 3-5: Label, placeholder, aria-label (medium confidence)
289
- // Note: node.label is the computed accessible name which includes aria-label,
290
- // aria-labelledby, and other ARIA labeling mechanisms
291
- if (semanticType === 'unknown' || confidence < 0.8) {
292
- const textSources = [
293
- { text: node.label, source: 'label', confidence: 0.7 },
294
- { text: node.attributes?.placeholder, source: 'placeholder', confidence: 0.65 },
295
- ];
296
- for (const { text, source, confidence: sourceConfidence } of textSources) {
297
- if (!text)
298
- continue;
299
- const lowerText = text.toLowerCase();
300
- for (const [type, keywords] of Object.entries(LABEL_KEYWORDS)) {
301
- if (type === 'unknown')
302
- continue;
303
- for (const keyword of keywords) {
304
- if (lowerText.includes(keyword)) {
305
- if (semanticType === 'unknown' || confidence < sourceConfidence) {
306
- semanticType = type;
307
- confidence = Math.max(confidence, sourceConfidence);
308
- inferredFrom.push(`${source} contains "${keyword}"`);
309
- }
310
- break;
311
- }
312
- }
313
- if (semanticType !== 'unknown' && confidence >= 0.7)
314
- break;
315
- }
316
- if (semanticType !== 'unknown' && confidence >= 0.7)
317
- break;
318
- }
319
- }
320
- // Priority 6: Name attribute patterns (low confidence: 0.5)
321
- // Detect naming conventions like camelCase (firstName), snake_case (first_name),
322
- // or kebab-case (first-name) that may indicate field purpose
323
- if (semanticType === 'unknown' || confidence < 0.5) {
324
- const testId = node.attributes?.test_id ?? '';
325
- const namePatterns = extractNamePatterns(node.label, testId);
326
- if (namePatterns.type !== 'unknown') {
327
- semanticType = namePatterns.type;
328
- confidence = Math.max(confidence, 0.5);
329
- inferredFrom.push(namePatterns.signal);
330
- }
331
- }
332
- // Fallback based on node kind
333
- if (semanticType === 'unknown') {
334
- switch (node.kind) {
335
- case 'checkbox':
336
- semanticType = 'toggle';
337
- confidence = 0.5;
338
- inferredFrom.push('node kind is checkbox');
339
- break;
340
- case 'radio':
341
- semanticType = 'selection';
342
- confidence = 0.5;
343
- inferredFrom.push('node kind is radio');
344
- break;
345
- case 'select':
346
- case 'combobox':
347
- semanticType = 'selection';
348
- confidence = 0.5;
349
- inferredFrom.push(`node kind is ${node.kind}`);
350
- break;
351
- case 'textarea':
352
- semanticType = 'message';
353
- confidence = 0.4;
354
- inferredFrom.push('node kind is textarea');
355
- break;
356
- case 'slider':
357
- semanticType = 'quantity';
358
- confidence = 0.4;
359
- inferredFrom.push('node kind is slider');
360
- break;
361
- }
362
- }
363
- return {
364
- semantic_type: semanticType,
365
- confidence,
366
- inferred_from: inferredFrom.length > 0 ? inferredFrom : ['no signals found'],
367
- };
368
- }
369
- /**
370
- * Extract constraints for a field.
371
- */
372
- function extractConstraints(node, snapshot) {
373
- const constraints = {
374
- required: false,
375
- required_confidence: 0,
376
- };
377
- // Check required state
378
- if (node.state?.required) {
379
- constraints.required = true;
380
- constraints.required_confidence = 1.0;
381
- }
382
- else {
383
- // Check label for required indicators
384
- const label = node.label.toLowerCase();
385
- if (label.includes('*') || label.includes('required')) {
386
- constraints.required = true;
387
- constraints.required_confidence = 0.8;
388
- }
389
- }
390
- // Extract options for select/radio/combobox
391
- if (node.kind === 'radio') {
392
- // Find related radio buttons with same name pattern
393
- constraints.options = extractRadioOptions(node, snapshot);
394
- }
395
- else if (node.kind === 'combobox' || node.kind === 'select') {
396
- // Extract options for select/combobox elements
397
- constraints.options = extractSelectOptions(node, snapshot);
398
- }
399
- // TODO: Extract more constraints from DOM attributes
400
- // - minlength, maxlength
401
- // - min, max, step
402
- // - pattern
403
- return constraints;
404
- }
405
- /**
406
- * Extract options for radio button groups.
407
- */
408
- function extractRadioOptions(node, snapshot) {
409
- const options = [];
410
- // Find all radio buttons in the same region/group
411
- const radioButtons = snapshot.nodes.filter((n) => n.kind === 'radio' &&
412
- n.where.region === node.where.region &&
413
- (n.where.heading_context === node.where.heading_context ||
414
- n.where.group_id === node.where.group_id));
415
- for (const radio of radioButtons) {
416
- options.push({
417
- value: radio.label,
418
- label: radio.label,
419
- selected: radio.state?.checked ?? false,
420
- disabled: !(radio.state?.enabled ?? true),
421
- eid: radio.node_id,
422
- });
423
- }
424
- return options;
425
- }
426
- /**
427
- * Extract options for select/combobox elements.
428
- *
429
- * Attempts to find option elements by looking for:
430
- * 1. Nodes in the same group with 'listitem' kind
431
- * 2. Nodes with 'menuitem' kind that share the same region/group
432
- * 3. If value is set, creates a single option representing current selection
433
- *
434
- * Note: Full option extraction may require additional CDP calls.
435
- * This provides a best-effort extraction from available snapshot data.
436
- */
437
- function extractSelectOptions(node, snapshot) {
438
- const options = [];
439
- // Look for listitem or menuitem nodes in the same group_id
440
- if (node.where.group_id) {
441
- const potentialOptions = snapshot.nodes.filter((n) => (n.kind === 'listitem' || n.kind === 'menuitem') &&
442
- n.where.group_id === node.where.group_id &&
443
- n.node_id !== node.node_id);
444
- for (const opt of potentialOptions) {
445
- const isSelected = opt.state?.selected ?? false;
446
- options.push({
447
- value: opt.label,
448
- label: opt.label,
449
- selected: isSelected,
450
- disabled: !(opt.state?.enabled ?? true),
451
- eid: opt.node_id,
452
- });
453
- }
454
- }
455
- // If we found options, return them
456
- if (options.length > 0) {
457
- return options;
458
- }
459
- // Fallback: if node has a value, create a single option for the current selection
460
- // This at least lets us know what's currently selected even if we can't see all options
461
- if (node.attributes?.value) {
462
- options.push({
463
- value: node.attributes.value,
464
- label: node.attributes.value,
465
- selected: true,
466
- });
467
- }
468
- return options;
469
- }
470
- /**
471
- * Extract state for a field.
472
- *
473
- * Note: This extracts initial state from the snapshot (HTML attributes).
474
- * Runtime values may be overlaid later via readRuntimeValues().
475
- */
476
- function extractFieldState(node, config, semanticType) {
477
- // Get value from HTML attribute, potentially masked
478
- let currentValue = node.attributes?.value;
479
- const isSensitive = SENSITIVE_TYPES.has(semanticType);
480
- if (currentValue && isSensitive && config.mask_sensitive) {
481
- currentValue = '••••••••';
482
- }
483
- // Determine if field has a value (from attribute)
484
- // Note: Using || here intentionally because we want falsy values (empty string) to fall through
485
- /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
486
- const hasValue = Boolean(currentValue ||
487
- node.state?.checked ||
488
- (node.kind === 'checkbox' && node.state?.checked) ||
489
- (node.kind === 'radio' && node.state?.checked));
490
- /* eslint-enable @typescript-eslint/prefer-nullish-coalescing */
491
- // Filled is initially same as hasValue (may be updated after runtime read)
492
- const filled = hasValue;
493
- // Determine validity
494
- const valid = !(node.state?.invalid ?? false);
495
- return {
496
- current_value: currentValue,
497
- value_source: currentValue !== undefined ? 'attribute' : undefined,
498
- has_value: hasValue,
499
- filled,
500
- valid,
501
- enabled: node.state?.enabled ?? true,
502
- touched: false, // We can't know this without observing interactions
503
- focused: node.state?.focused ?? false,
504
- visible: node.state?.visible ?? true,
505
- };
506
- }
507
66
  /**
508
67
  * Link radio buttons into groups.
509
68
  */
@@ -1 +1 @@
1
- {"version":3,"file":"field-extractor.js","sourceRoot":"","sources":["../../../src/form/field-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field-extractor.js","sourceRoot":"","sources":["../../../src/form/field-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Field State Extractor
3
+ *
4
+ * Extracts the current state of form fields including values,
5
+ * validity, enabled/disabled status, and sensitivity masking.
6
+ *
7
+ * @module form/field-state-extractor
8
+ */
9
+ import type { ReadableNode } from '../snapshot/snapshot.types.js';
10
+ import type { FieldSemanticType, FieldState, FormDetectionConfig } from './types.js';
11
+ /**
12
+ * Sensitive field types that should have values masked
13
+ */
14
+ export declare const SENSITIVE_TYPES: Set<FieldSemanticType>;
15
+ /**
16
+ * Extract state for a field.
17
+ *
18
+ * Note: This extracts initial state from the snapshot (HTML attributes).
19
+ * Runtime values may be overlaid later via readRuntimeValues().
20
+ */
21
+ export declare function extractFieldState(node: ReadableNode, config: FormDetectionConfig, semanticType: FieldSemanticType): FieldState;
22
+ //# sourceMappingURL=field-state-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-state-extractor.d.ts","sourceRoot":"","sources":["../../../src/form/field-state-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,eAAe,wBAK1B,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,mBAAmB,EAC3B,YAAY,EAAE,iBAAiB,GAC9B,UAAU,CAqCZ"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Field State Extractor
3
+ *
4
+ * Extracts the current state of form fields including values,
5
+ * validity, enabled/disabled status, and sensitivity masking.
6
+ *
7
+ * @module form/field-state-extractor
8
+ */
9
+ /**
10
+ * Sensitive field types that should have values masked
11
+ */
12
+ export const SENSITIVE_TYPES = new Set([
13
+ 'password',
14
+ 'password_confirm',
15
+ 'card_number',
16
+ 'card_cvv',
17
+ ]);
18
+ /**
19
+ * Extract state for a field.
20
+ *
21
+ * Note: This extracts initial state from the snapshot (HTML attributes).
22
+ * Runtime values may be overlaid later via readRuntimeValues().
23
+ */
24
+ export function extractFieldState(node, config, semanticType) {
25
+ // Get value from HTML attribute, potentially masked
26
+ let currentValue = node.attributes?.value;
27
+ const isSensitive = SENSITIVE_TYPES.has(semanticType);
28
+ if (currentValue && isSensitive && config.mask_sensitive) {
29
+ currentValue = '••••••••';
30
+ }
31
+ // Determine if field has a value (from attribute)
32
+ // Note: Using || here intentionally because we want falsy values (empty string) to fall through
33
+ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
34
+ const hasValue = Boolean(currentValue ||
35
+ node.state?.checked ||
36
+ (node.kind === 'checkbox' && node.state?.checked) ||
37
+ (node.kind === 'radio' && node.state?.checked));
38
+ /* eslint-enable @typescript-eslint/prefer-nullish-coalescing */
39
+ // Filled is initially same as hasValue (may be updated after runtime read)
40
+ const filled = hasValue;
41
+ // Determine validity
42
+ const valid = !(node.state?.invalid ?? false);
43
+ return {
44
+ current_value: currentValue,
45
+ value_source: currentValue !== undefined ? 'attribute' : undefined,
46
+ has_value: hasValue,
47
+ filled,
48
+ valid,
49
+ enabled: node.state?.enabled ?? true,
50
+ touched: false, // We can't know this without observing interactions
51
+ focused: node.state?.focused ?? false,
52
+ visible: node.state?.visible ?? true,
53
+ };
54
+ }
55
+ //# sourceMappingURL=field-state-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-state-extractor.js","sourceRoot":"","sources":["../../../src/form/field-state-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAoB;IACxD,UAAU;IACV,kBAAkB;IAClB,aAAa;IACb,UAAU;CACX,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAkB,EAClB,MAA2B,EAC3B,YAA+B;IAE/B,oDAAoD;IACpD,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;IAC1C,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEtD,IAAI,YAAY,IAAI,WAAW,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACzD,YAAY,GAAG,UAAU,CAAC;IAC5B,CAAC;IAED,kDAAkD;IAClD,gGAAgG;IAChG,iEAAiE;IACjE,MAAM,QAAQ,GAAG,OAAO,CACtB,YAAY;QACZ,IAAI,CAAC,KAAK,EAAE,OAAO;QACnB,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;QACjD,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAC/C,CAAC;IACF,gEAAgE;IAEhE,2EAA2E;IAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC;IAExB,qBAAqB;IACrB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IAE9C,OAAO;QACL,aAAa,EAAE,YAAY;QAC3B,YAAY,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAClE,SAAS,EAAE,QAAQ;QACnB,MAAM;QACN,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI;QACpC,OAAO,EAAE,KAAK,EAAE,oDAAoD;QACpE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK;QACrC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI;KACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Form Actions
3
+ *
4
+ * Extracts action buttons (submit, cancel, reset, etc.) associated
5
+ * with form regions using spatial proximity and keyword matching.
6
+ *
7
+ * @module form/form-actions
8
+ */
9
+ import type { BaseSnapshot, ReadableNode, NodeKind } from '../snapshot/snapshot.types.js';
10
+ import type { FormRegion, FormSignal, FormCandidate } from './types.js';
11
+ /**
12
+ * Interactive input kinds
13
+ */
14
+ export declare const INPUT_KINDS: Set<NodeKind>;
15
+ /**
16
+ * Button kinds that could be submit buttons
17
+ */
18
+ export declare const BUTTON_KINDS: Set<NodeKind>;
19
+ /**
20
+ * Signal weights for form detection
21
+ */
22
+ export declare const SIGNAL_WEIGHTS: Record<FormSignal['type'], number>;
23
+ /**
24
+ * Extract form action buttons.
25
+ */
26
+ export declare function extractFormActions(snapshot: BaseSnapshot, candidate: FormCandidate, computeClusterBbox: (nodes: ReadableNode[]) => {
27
+ x: number;
28
+ y: number;
29
+ width: number;
30
+ height: number;
31
+ } | undefined): FormRegion['actions'];
32
+ /**
33
+ * Check if a button is near a bounding box.
34
+ */
35
+ export declare function isButtonNearBbox(button: ReadableNode, bbox: NonNullable<FormCandidate['bbox']>): boolean;
36
+ /**
37
+ * Check if a button is near a set of fields.
38
+ */
39
+ export declare function isButtonNearFields(button: ReadableNode, snapshot: BaseSnapshot, fieldEids: string[], computeClusterBbox: (nodes: ReadableNode[]) => {
40
+ x: number;
41
+ y: number;
42
+ width: number;
43
+ height: number;
44
+ } | undefined): boolean;
45
+ //# sourceMappingURL=form-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-actions.d.ts","sourceRoot":"","sources":["../../../src/form/form-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGxE;;GAEG;AACH,eAAO,MAAM,WAAW,eAStB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,eAAgC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAU7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,kBAAkB,EAAE,CAClB,KAAK,EAAE,YAAY,EAAE,KAClB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACvE,UAAU,CAAC,SAAS,CAAC,CAyCvB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GACvC,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,kBAAkB,EAAE,CAClB,KAAK,EAAE,YAAY,EAAE,KAClB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACvE,OAAO,CAST"}