agent-web-interface 4.4.0 → 4.5.1

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 (334) hide show
  1. package/README.md +35 -34
  2. package/dist/src/browser/browser-session-config.d.ts +33 -0
  3. package/dist/src/browser/browser-session-config.d.ts.map +1 -0
  4. package/dist/src/browser/browser-session-config.js +25 -0
  5. package/dist/src/browser/browser-session-config.js.map +1 -0
  6. package/dist/src/browser/ensure-browser.d.ts +12 -27
  7. package/dist/src/browser/ensure-browser.d.ts.map +1 -1
  8. package/dist/src/browser/ensure-browser.js +131 -39
  9. package/dist/src/browser/ensure-browser.js.map +1 -1
  10. package/dist/src/browser/index.d.ts +2 -1
  11. package/dist/src/browser/index.d.ts.map +1 -1
  12. package/dist/src/browser/index.js +1 -0
  13. package/dist/src/browser/index.js.map +1 -1
  14. package/dist/src/browser/page-network-recorder.d.ts +95 -0
  15. package/dist/src/browser/page-network-recorder.d.ts.map +1 -0
  16. package/dist/src/browser/page-network-recorder.js +306 -0
  17. package/dist/src/browser/page-network-recorder.js.map +1 -0
  18. package/dist/src/browser/session-manager.d.ts +20 -0
  19. package/dist/src/browser/session-manager.d.ts.map +1 -1
  20. package/dist/src/browser/session-manager.js +169 -20
  21. package/dist/src/browser/session-manager.js.map +1 -1
  22. package/dist/src/browser/session-manager.types.d.ts +14 -2
  23. package/dist/src/browser/session-manager.types.d.ts.map +1 -1
  24. package/dist/src/browser/session-manager.types.js +5 -1
  25. package/dist/src/browser/session-manager.types.js.map +1 -1
  26. package/dist/src/cli/args.d.ts +12 -18
  27. package/dist/src/cli/args.d.ts.map +1 -1
  28. package/dist/src/cli/args.js +35 -40
  29. package/dist/src/cli/args.js.map +1 -1
  30. package/dist/src/form/constraint-extraction.d.ts +5 -0
  31. package/dist/src/form/constraint-extraction.d.ts.map +1 -1
  32. package/dist/src/form/constraint-extraction.js +13 -6
  33. package/dist/src/form/constraint-extraction.js.map +1 -1
  34. package/dist/src/form/field-extractor.d.ts.map +1 -1
  35. package/dist/src/form/field-extractor.js +14 -7
  36. package/dist/src/form/field-extractor.js.map +1 -1
  37. package/dist/src/form/form-state.d.ts.map +1 -1
  38. package/dist/src/form/form-state.js +16 -4
  39. package/dist/src/form/form-state.js.map +1 -1
  40. package/dist/src/gateway/http-gateway.d.ts +56 -0
  41. package/dist/src/gateway/http-gateway.d.ts.map +1 -0
  42. package/dist/src/gateway/http-gateway.js +229 -0
  43. package/dist/src/gateway/http-gateway.js.map +1 -0
  44. package/dist/src/gateway/json-rpc-errors.d.ts +6 -0
  45. package/dist/src/gateway/json-rpc-errors.d.ts.map +1 -0
  46. package/dist/src/gateway/json-rpc-errors.js +11 -0
  47. package/dist/src/gateway/json-rpc-errors.js.map +1 -0
  48. package/dist/src/gateway/session-router.d.ts +80 -0
  49. package/dist/src/gateway/session-router.d.ts.map +1 -0
  50. package/dist/src/gateway/session-router.js +177 -0
  51. package/dist/src/gateway/session-router.js.map +1 -0
  52. package/dist/src/http-entry.d.ts +20 -0
  53. package/dist/src/http-entry.d.ts.map +1 -0
  54. package/dist/src/http-entry.js +112 -0
  55. package/dist/src/http-entry.js.map +1 -0
  56. package/dist/src/index.d.ts +1 -10
  57. package/dist/src/index.d.ts.map +1 -1
  58. package/dist/src/index.js +25 -232
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/src/lib/text-utils.d.ts +0 -24
  61. package/dist/src/lib/text-utils.d.ts.map +1 -1
  62. package/dist/src/lib/text-utils.js +2 -38
  63. package/dist/src/lib/text-utils.js.map +1 -1
  64. package/dist/src/observation/eid-linker.d.ts.map +1 -1
  65. package/dist/src/observation/eid-linker.js +1 -21
  66. package/dist/src/observation/eid-linker.js.map +1 -1
  67. package/dist/src/server/index.d.ts +0 -1
  68. package/dist/src/server/index.d.ts.map +1 -1
  69. package/dist/src/server/index.js +0 -1
  70. package/dist/src/server/index.js.map +1 -1
  71. package/dist/src/server/mcp-server.d.ts +6 -2
  72. package/dist/src/server/mcp-server.d.ts.map +1 -1
  73. package/dist/src/server/mcp-server.js +3 -91
  74. package/dist/src/server/mcp-server.js.map +1 -1
  75. package/dist/src/server/server-config.d.ts +4 -20
  76. package/dist/src/server/server-config.d.ts.map +1 -1
  77. package/dist/src/server/server-config.js +6 -50
  78. package/dist/src/server/server-config.js.map +1 -1
  79. package/dist/src/server/tool-registrar.types.d.ts +25 -0
  80. package/dist/src/server/tool-registrar.types.d.ts.map +1 -0
  81. package/dist/src/server/tool-registrar.types.js +10 -0
  82. package/dist/src/server/tool-registrar.types.js.map +1 -0
  83. package/dist/src/server/tool-result-handler.d.ts +61 -0
  84. package/dist/src/server/tool-result-handler.d.ts.map +1 -0
  85. package/dist/src/server/tool-result-handler.js +155 -0
  86. package/dist/src/server/tool-result-handler.js.map +1 -0
  87. package/dist/src/session/session-controller.d.ts +124 -0
  88. package/dist/src/session/session-controller.d.ts.map +1 -0
  89. package/dist/src/session/session-controller.js +276 -0
  90. package/dist/src/session/session-controller.js.map +1 -0
  91. package/dist/src/shared/services/index.d.ts +0 -2
  92. package/dist/src/shared/services/index.d.ts.map +1 -1
  93. package/dist/src/shared/services/index.js +0 -2
  94. package/dist/src/shared/services/index.js.map +1 -1
  95. package/dist/src/shared/version.d.ts +10 -0
  96. package/dist/src/shared/version.d.ts.map +1 -0
  97. package/dist/src/shared/version.js +32 -0
  98. package/dist/src/shared/version.js.map +1 -0
  99. package/dist/src/snapshot/element-resolver.d.ts +3 -2
  100. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  101. package/dist/src/snapshot/element-resolver.js +83 -8
  102. package/dist/src/snapshot/element-resolver.js.map +1 -1
  103. package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -1
  104. package/dist/src/snapshot/extractors/attribute-extractor.js +4 -0
  105. package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -1
  106. package/dist/src/snapshot/extractors/layout-extractor.d.ts +9 -7
  107. package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -1
  108. package/dist/src/snapshot/extractors/layout-extractor.js +34 -19
  109. package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -1
  110. package/dist/src/snapshot/extractors/state-extractor.d.ts +2 -2
  111. package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -1
  112. package/dist/src/snapshot/extractors/state-extractor.js +22 -2
  113. package/dist/src/snapshot/extractors/state-extractor.js.map +1 -1
  114. package/dist/src/snapshot/extractors/types.d.ts +6 -0
  115. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  116. package/dist/src/snapshot/extractors/types.js.map +1 -1
  117. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  118. package/dist/src/snapshot/snapshot-compiler.js +15 -2
  119. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  120. package/dist/src/snapshot/snapshot.types.d.ts +10 -1
  121. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  122. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  123. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  124. package/dist/src/state/actionables-filter.js +7 -3
  125. package/dist/src/state/actionables-filter.js.map +1 -1
  126. package/dist/src/state/atoms-extractor.d.ts.map +1 -1
  127. package/dist/src/state/atoms-extractor.js +3 -23
  128. package/dist/src/state/atoms-extractor.js.map +1 -1
  129. package/dist/src/state/diff-engine.d.ts.map +1 -1
  130. package/dist/src/state/diff-engine.js +6 -33
  131. package/dist/src/state/diff-engine.js.map +1 -1
  132. package/dist/src/state/element-identity.d.ts +3 -6
  133. package/dist/src/state/element-identity.d.ts.map +1 -1
  134. package/dist/src/state/element-identity.js +10 -7
  135. package/dist/src/state/element-identity.js.map +1 -1
  136. package/dist/src/state/element-ref.types.d.ts +5 -27
  137. package/dist/src/state/element-ref.types.d.ts.map +1 -1
  138. package/dist/src/state/state-manager.d.ts.map +1 -1
  139. package/dist/src/state/state-manager.js +3 -1
  140. package/dist/src/state/state-manager.js.map +1 -1
  141. package/dist/src/state/state-renderer.d.ts.map +1 -1
  142. package/dist/src/state/state-renderer.js +3 -1
  143. package/dist/src/state/state-renderer.js.map +1 -1
  144. package/dist/src/state/types.d.ts +2 -1
  145. package/dist/src/state/types.d.ts.map +1 -1
  146. package/dist/src/state/url-sanitization.d.ts +1 -1
  147. package/dist/src/state/url-sanitization.d.ts.map +1 -1
  148. package/dist/src/state/url-sanitization.js +29 -13
  149. package/dist/src/state/url-sanitization.js.map +1 -1
  150. package/dist/src/tools/action-context.d.ts +6 -11
  151. package/dist/src/tools/action-context.d.ts.map +1 -1
  152. package/dist/src/tools/action-context.js +10 -19
  153. package/dist/src/tools/action-context.js.map +1 -1
  154. package/dist/src/tools/action-stabilization.d.ts.map +1 -1
  155. package/dist/src/tools/action-stabilization.js +6 -0
  156. package/dist/src/tools/action-stabilization.js.map +1 -1
  157. package/dist/src/tools/browser-tools.d.ts +4 -2
  158. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  159. package/dist/src/tools/browser-tools.js +7 -3
  160. package/dist/src/tools/browser-tools.js.map +1 -1
  161. package/dist/src/tools/canvas-tools.d.ts +2 -1
  162. package/dist/src/tools/canvas-tools.d.ts.map +1 -1
  163. package/dist/src/tools/canvas-tools.js +5 -7
  164. package/dist/src/tools/canvas-tools.js.map +1 -1
  165. package/dist/src/tools/errors.d.ts +2 -34
  166. package/dist/src/tools/errors.d.ts.map +1 -1
  167. package/dist/src/tools/errors.js +1 -44
  168. package/dist/src/tools/errors.js.map +1 -1
  169. package/dist/src/tools/execute-action.d.ts +4 -3
  170. package/dist/src/tools/execute-action.d.ts.map +1 -1
  171. package/dist/src/tools/execute-action.js +32 -23
  172. package/dist/src/tools/execute-action.js.map +1 -1
  173. package/dist/src/tools/form-tools.d.ts +3 -8
  174. package/dist/src/tools/form-tools.d.ts.map +1 -1
  175. package/dist/src/tools/form-tools.js +38 -18
  176. package/dist/src/tools/form-tools.js.map +1 -1
  177. package/dist/src/tools/index.d.ts +8 -6
  178. package/dist/src/tools/index.d.ts.map +1 -1
  179. package/dist/src/tools/index.js +10 -10
  180. package/dist/src/tools/index.js.map +1 -1
  181. package/dist/src/tools/interaction-tools.d.ts +6 -5
  182. package/dist/src/tools/interaction-tools.d.ts.map +1 -1
  183. package/dist/src/tools/interaction-tools.js +29 -32
  184. package/dist/src/tools/interaction-tools.js.map +1 -1
  185. package/dist/src/tools/navigation-tools.d.ts +7 -13
  186. package/dist/src/tools/navigation-tools.d.ts.map +1 -1
  187. package/dist/src/tools/navigation-tools.js +57 -59
  188. package/dist/src/tools/navigation-tools.js.map +1 -1
  189. package/dist/src/tools/network-tools.d.ts +10 -0
  190. package/dist/src/tools/network-tools.d.ts.map +1 -0
  191. package/dist/src/tools/network-tools.js +117 -0
  192. package/dist/src/tools/network-tools.js.map +1 -0
  193. package/dist/src/tools/observation-tools.d.ts +6 -5
  194. package/dist/src/tools/observation-tools.d.ts.map +1 -1
  195. package/dist/src/tools/observation-tools.js +30 -34
  196. package/dist/src/tools/observation-tools.js.map +1 -1
  197. package/dist/src/tools/readability-tools.d.ts +16 -0
  198. package/dist/src/tools/readability-tools.d.ts.map +1 -0
  199. package/dist/src/tools/readability-tools.js +45 -0
  200. package/dist/src/tools/readability-tools.js.map +1 -0
  201. package/dist/src/tools/response-builder.d.ts +20 -32
  202. package/dist/src/tools/response-builder.d.ts.map +1 -1
  203. package/dist/src/tools/response-builder.js +31 -47
  204. package/dist/src/tools/response-builder.js.map +1 -1
  205. package/dist/src/tools/stale-element-retry.d.ts.map +1 -1
  206. package/dist/src/tools/stale-element-retry.js +37 -2
  207. package/dist/src/tools/stale-element-retry.js.map +1 -1
  208. package/dist/src/tools/tool-context.d.ts +4 -36
  209. package/dist/src/tools/tool-context.d.ts.map +1 -1
  210. package/dist/src/tools/tool-context.js +6 -75
  211. package/dist/src/tools/tool-context.js.map +1 -1
  212. package/dist/src/tools/tool-context.types.d.ts +147 -0
  213. package/dist/src/tools/tool-context.types.d.ts.map +1 -0
  214. package/dist/src/tools/tool-context.types.js +11 -0
  215. package/dist/src/tools/tool-context.types.js.map +1 -0
  216. package/dist/src/tools/tool-registration.d.ts +25 -0
  217. package/dist/src/tools/tool-registration.d.ts.map +1 -0
  218. package/dist/src/tools/tool-registration.js +195 -0
  219. package/dist/src/tools/tool-registration.js.map +1 -0
  220. package/dist/src/tools/tool-schemas.d.ts +178 -1947
  221. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  222. package/dist/src/tools/tool-schemas.js +130 -302
  223. package/dist/src/tools/tool-schemas.js.map +1 -1
  224. package/dist/src/tools/viewport-tools.d.ts +4 -3
  225. package/dist/src/tools/viewport-tools.d.ts.map +1 -1
  226. package/dist/src/tools/viewport-tools.js +17 -21
  227. package/dist/src/tools/viewport-tools.js.map +1 -1
  228. package/dist/src/worker/chrome-worker-process.d.ts +4 -0
  229. package/dist/src/worker/chrome-worker-process.d.ts.map +1 -1
  230. package/dist/src/worker/chrome-worker-process.js +1 -1
  231. package/dist/src/worker/chrome-worker-process.js.map +1 -1
  232. package/dist/vitest.config.js +1 -1
  233. package/dist/vitest.config.js.map +1 -1
  234. package/dist/vitest.integration.config.d.ts +3 -0
  235. package/dist/vitest.integration.config.d.ts.map +1 -0
  236. package/dist/vitest.integration.config.js +11 -0
  237. package/dist/vitest.integration.config.js.map +1 -0
  238. package/package.json +20 -5
  239. package/dist/src/factpack/action-selector.d.ts +0 -36
  240. package/dist/src/factpack/action-selector.d.ts.map +0 -1
  241. package/dist/src/factpack/action-selector.js +0 -367
  242. package/dist/src/factpack/action-selector.js.map +0 -1
  243. package/dist/src/factpack/dialog-detector.d.ts +0 -19
  244. package/dist/src/factpack/dialog-detector.d.ts.map +0 -1
  245. package/dist/src/factpack/dialog-detector.js +0 -354
  246. package/dist/src/factpack/dialog-detector.js.map +0 -1
  247. package/dist/src/factpack/form-detector.d.ts +0 -28
  248. package/dist/src/factpack/form-detector.d.ts.map +0 -1
  249. package/dist/src/factpack/form-detector.js +0 -555
  250. package/dist/src/factpack/form-detector.js.map +0 -1
  251. package/dist/src/factpack/index.d.ts +0 -32
  252. package/dist/src/factpack/index.d.ts.map +0 -1
  253. package/dist/src/factpack/index.js +0 -73
  254. package/dist/src/factpack/index.js.map +0 -1
  255. package/dist/src/factpack/page-classifier.d.ts +0 -22
  256. package/dist/src/factpack/page-classifier.d.ts.map +0 -1
  257. package/dist/src/factpack/page-classifier.js +0 -526
  258. package/dist/src/factpack/page-classifier.js.map +0 -1
  259. package/dist/src/factpack/types.d.ts +0 -307
  260. package/dist/src/factpack/types.d.ts.map +0 -1
  261. package/dist/src/factpack/types.js +0 -12
  262. package/dist/src/factpack/types.js.map +0 -1
  263. package/dist/src/lib/constants.d.ts +0 -27
  264. package/dist/src/lib/constants.d.ts.map +0 -1
  265. package/dist/src/lib/constants.js +0 -63
  266. package/dist/src/lib/constants.js.map +0 -1
  267. package/dist/src/lib/index.d.ts +0 -12
  268. package/dist/src/lib/index.d.ts.map +0 -1
  269. package/dist/src/lib/index.js +0 -17
  270. package/dist/src/lib/index.js.map +0 -1
  271. package/dist/src/lib/regions.d.ts +0 -29
  272. package/dist/src/lib/regions.d.ts.map +0 -1
  273. package/dist/src/lib/regions.js +0 -93
  274. package/dist/src/lib/regions.js.map +0 -1
  275. package/dist/src/lib/scoring.d.ts +0 -47
  276. package/dist/src/lib/scoring.d.ts.map +0 -1
  277. package/dist/src/lib/scoring.js +0 -79
  278. package/dist/src/lib/scoring.js.map +0 -1
  279. package/dist/src/lib/selectors.d.ts +0 -42
  280. package/dist/src/lib/selectors.d.ts.map +0 -1
  281. package/dist/src/lib/selectors.js +0 -138
  282. package/dist/src/lib/selectors.js.map +0 -1
  283. package/dist/src/renderer/budget-manager.d.ts +0 -46
  284. package/dist/src/renderer/budget-manager.d.ts.map +0 -1
  285. package/dist/src/renderer/budget-manager.js +0 -133
  286. package/dist/src/renderer/budget-manager.js.map +0 -1
  287. package/dist/src/renderer/constants.d.ts +0 -38
  288. package/dist/src/renderer/constants.d.ts.map +0 -1
  289. package/dist/src/renderer/constants.js +0 -29
  290. package/dist/src/renderer/constants.js.map +0 -1
  291. package/dist/src/renderer/index.d.ts +0 -12
  292. package/dist/src/renderer/index.d.ts.map +0 -1
  293. package/dist/src/renderer/index.js +0 -16
  294. package/dist/src/renderer/index.js.map +0 -1
  295. package/dist/src/renderer/section-renderers.d.ts +0 -42
  296. package/dist/src/renderer/section-renderers.d.ts.map +0 -1
  297. package/dist/src/renderer/section-renderers.js +0 -252
  298. package/dist/src/renderer/section-renderers.js.map +0 -1
  299. package/dist/src/renderer/token-counter.d.ts +0 -45
  300. package/dist/src/renderer/token-counter.d.ts.map +0 -1
  301. package/dist/src/renderer/token-counter.js +0 -65
  302. package/dist/src/renderer/token-counter.js.map +0 -1
  303. package/dist/src/renderer/types.d.ts +0 -71
  304. package/dist/src/renderer/types.d.ts.map +0 -1
  305. package/dist/src/renderer/types.js +0 -7
  306. package/dist/src/renderer/types.js.map +0 -1
  307. package/dist/src/renderer/xml-renderer.d.ts +0 -42
  308. package/dist/src/renderer/xml-renderer.d.ts.map +0 -1
  309. package/dist/src/renderer/xml-renderer.js +0 -103
  310. package/dist/src/renderer/xml-renderer.js.map +0 -1
  311. package/dist/src/server/session-store.d.ts +0 -163
  312. package/dist/src/server/session-store.d.ts.map +0 -1
  313. package/dist/src/server/session-store.js +0 -248
  314. package/dist/src/server/session-store.js.map +0 -1
  315. package/dist/src/session/session-worker-binding.d.ts +0 -57
  316. package/dist/src/session/session-worker-binding.d.ts.map +0 -1
  317. package/dist/src/session/session-worker-binding.js +0 -109
  318. package/dist/src/session/session-worker-binding.js.map +0 -1
  319. package/dist/src/shared/services/dom-transformer.service.d.ts +0 -71
  320. package/dist/src/shared/services/dom-transformer.service.d.ts.map +0 -1
  321. package/dist/src/shared/services/dom-transformer.service.js +0 -190
  322. package/dist/src/shared/services/dom-transformer.service.js.map +0 -1
  323. package/dist/src/shared/services/selector-builder.service.d.ts +0 -53
  324. package/dist/src/shared/services/selector-builder.service.d.ts.map +0 -1
  325. package/dist/src/shared/services/selector-builder.service.js +0 -240
  326. package/dist/src/shared/services/selector-builder.service.js.map +0 -1
  327. package/dist/src/state/constants.d.ts +0 -125
  328. package/dist/src/state/constants.d.ts.map +0 -1
  329. package/dist/src/state/constants.js +0 -131
  330. package/dist/src/state/constants.js.map +0 -1
  331. package/dist/src/tools/state-manager-registry.d.ts +0 -26
  332. package/dist/src/tools/state-manager-registry.d.ts.map +0 -1
  333. package/dist/src/tools/state-manager-registry.js +0 -39
  334. package/dist/src/tools/state-manager-registry.js.map +0 -1
@@ -1,367 +0,0 @@
1
- /**
2
- * Action Selector
3
- *
4
- * Selects and scores key actions from a BaseSnapshot.
5
- *
6
- * Design: Generic First, Specific Second
7
- * 1. Score ALL interactive elements generically (works on any page)
8
- * 2. Optionally categorize actions (may return 'generic')
9
- * 3. Select top actions above threshold
10
- */
11
- import { QueryEngine } from '../query/query-engine.js';
12
- import { normalizeText } from '../lib/text-utils.js';
13
- // ============================================================================
14
- // Scoring Configuration
15
- // ============================================================================
16
- /** Default options */
17
- const DEFAULT_MAX_ACTIONS = 12;
18
- const DEFAULT_MIN_SCORE = 0.2;
19
- /** Interactive kinds to consider */
20
- const INTERACTIVE_KINDS = [
21
- 'button',
22
- 'link',
23
- 'input',
24
- 'checkbox',
25
- 'radio',
26
- 'select',
27
- 'combobox',
28
- 'tab',
29
- 'menuitem',
30
- ];
31
- // ============================================================================
32
- // Category Patterns
33
- // ============================================================================
34
- /** Patterns for cart-related actions */
35
- const CART_PATTERNS = [
36
- /\badd to cart\b/i,
37
- /\badd to bag\b/i,
38
- /\badd to basket\b/i,
39
- /\bbuy now\b/i,
40
- /\bpurchase\b/i,
41
- /\bcheckout\b/i,
42
- /\bproceed to/i,
43
- /\bview cart\b/i,
44
- /\bview bag\b/i,
45
- ];
46
- /** Patterns for auth-related actions */
47
- const AUTH_PATTERNS = [
48
- /\bsign in\b/i,
49
- /\blog in\b/i,
50
- /\blogin\b/i,
51
- /\bsign up\b/i,
52
- /\bsignup\b/i,
53
- /\bregister\b/i,
54
- /\bcreate account\b/i,
55
- /\bsign out\b/i,
56
- /\blog out\b/i,
57
- /\blogout\b/i,
58
- ];
59
- /** Patterns for primary CTA actions */
60
- const PRIMARY_CTA_PATTERNS = [
61
- /\bsubmit\b/i,
62
- /\bconfirm\b/i,
63
- /\bcontinue\b/i,
64
- /\bnext\b/i,
65
- /\bsave\b/i,
66
- /\bdone\b/i,
67
- /\bget started\b/i,
68
- /\bstart\b/i,
69
- /\bapply\b/i,
70
- /\bsend\b/i,
71
- /\bsubscribe\b/i,
72
- /\bjoin\b/i,
73
- /\btry\b/i,
74
- /\bdownload\b/i,
75
- ];
76
- /** Patterns for secondary CTA actions */
77
- const SECONDARY_CTA_PATTERNS = [
78
- /\blearn more\b/i,
79
- /\bread more\b/i,
80
- /\bview\b/i,
81
- /\bsee\b/i,
82
- /\bexplore\b/i,
83
- /\bdiscover\b/i,
84
- /\bbrowse\b/i,
85
- /\bdetails\b/i,
86
- /\bmore info\b/i,
87
- ];
88
- /** Patterns for search actions */
89
- const SEARCH_PATTERNS = [/\bsearch\b/i, /\bfind\b/i];
90
- /** Patterns for media control actions */
91
- const MEDIA_PATTERNS = [/\bplay\b/i, /\bpause\b/i, /\bstop\b/i, /\bmute\b/i, /\bvolume\b/i];
92
- // ============================================================================
93
- // Helper Functions
94
- // ============================================================================
95
- /**
96
- * Check if label matches any pattern.
97
- */
98
- function matchesPatterns(label, patterns) {
99
- const normalized = normalizeText(label);
100
- return patterns.some((p) => p.test(normalized));
101
- }
102
- /**
103
- * Check if node is above the fold.
104
- */
105
- function isAboveFold(node, viewport) {
106
- const bbox = node.layout.bbox;
107
- // Consider above fold if top of element is within viewport
108
- return bbox.y < viewport.height && bbox.y >= 0;
109
- }
110
- /**
111
- * Calculate element area.
112
- */
113
- function getElementArea(node) {
114
- const bbox = node.layout.bbox;
115
- return bbox.w * bbox.h;
116
- }
117
- /**
118
- * Categorize an action based on its label and context.
119
- */
120
- function categorizeAction(node, isFormSubmit, isInDialog) {
121
- const label = node.label;
122
- // Check patterns in order of specificity
123
- // Cart actions (highest priority for commerce)
124
- if (matchesPatterns(label, CART_PATTERNS)) {
125
- return { category: 'cart-action', confidence: 0.9 };
126
- }
127
- // Auth actions
128
- if (matchesPatterns(label, AUTH_PATTERNS)) {
129
- return { category: 'auth-action', confidence: 0.85 };
130
- }
131
- // Search actions
132
- if (matchesPatterns(label, SEARCH_PATTERNS)) {
133
- return { category: 'search', confidence: 0.8 };
134
- }
135
- // Media controls
136
- if (matchesPatterns(label, MEDIA_PATTERNS)) {
137
- return { category: 'media-control', confidence: 0.85 };
138
- }
139
- // Form submit (contextual)
140
- if (isFormSubmit) {
141
- return { category: 'form-submit', confidence: 0.9 };
142
- }
143
- // Dialog action (contextual)
144
- if (isInDialog) {
145
- return { category: 'dialog-action', confidence: 0.8 };
146
- }
147
- // Primary CTA patterns
148
- if (matchesPatterns(label, PRIMARY_CTA_PATTERNS)) {
149
- return { category: 'primary-cta', confidence: 0.75 };
150
- }
151
- // Secondary CTA patterns
152
- if (matchesPatterns(label, SECONDARY_CTA_PATTERNS)) {
153
- return { category: 'secondary-cta', confidence: 0.7 };
154
- }
155
- // Navigation (links in nav region)
156
- if (node.kind === 'link' && (node.where.region === 'nav' || node.where.region === 'header')) {
157
- return { category: 'navigation', confidence: 0.7 };
158
- }
159
- // Generic fallback
160
- return { category: 'generic', confidence: 0.3 };
161
- }
162
- /**
163
- * Score an action based on various signals.
164
- */
165
- function scoreAction(node, viewport, medianArea, formSubmitIds, dialogNodeIds) {
166
- const signals = [];
167
- let score = 0;
168
- // Must be visible (baseline)
169
- if (node.state?.visible) {
170
- score += 0.1;
171
- signals.push({ type: 'visible', weight: 0.1 });
172
- }
173
- else {
174
- // Not visible - return low score
175
- return { score: 0, signals: [{ type: 'not-visible', weight: 0 }] };
176
- }
177
- // Enabled state
178
- if (node.state?.enabled ?? true) {
179
- score += 0.1;
180
- signals.push({ type: 'enabled', weight: 0.1 });
181
- }
182
- // Above fold (high value)
183
- if (isAboveFold(node, viewport)) {
184
- score += 0.25;
185
- signals.push({ type: 'above-fold', weight: 0.25 });
186
- }
187
- // Main region
188
- if (node.where.region === 'main') {
189
- score += 0.15;
190
- signals.push({ type: 'main-region', weight: 0.15 });
191
- }
192
- else if (node.where.region === 'header') {
193
- score += 0.1;
194
- signals.push({ type: 'header-region', weight: 0.1 });
195
- }
196
- // Button kind (usually more important than links)
197
- if (node.kind === 'button') {
198
- score += 0.15;
199
- signals.push({ type: 'button-kind', weight: 0.15 });
200
- }
201
- // Has meaningful label
202
- if (node.label && node.label.trim().length > 0) {
203
- score += 0.1;
204
- signals.push({ type: 'has-label', weight: 0.1 });
205
- // Action verb in label
206
- const label = normalizeText(node.label);
207
- if (matchesPatterns(label, PRIMARY_CTA_PATTERNS) ||
208
- matchesPatterns(label, CART_PATTERNS) ||
209
- matchesPatterns(label, AUTH_PATTERNS)) {
210
- score += 0.15;
211
- signals.push({ type: 'action-verb', weight: 0.15 });
212
- }
213
- }
214
- // Large element (above median)
215
- const area = getElementArea(node);
216
- if (area > medianArea) {
217
- score += 0.1;
218
- signals.push({ type: 'large-element', weight: 0.1 });
219
- }
220
- // Form submit button bonus
221
- if (formSubmitIds.has(node.node_id)) {
222
- score += 0.2;
223
- signals.push({ type: 'form-submit', weight: 0.2 });
224
- }
225
- // Dialog action bonus
226
- if (dialogNodeIds.has(node.node_id)) {
227
- score += 0.15;
228
- signals.push({ type: 'dialog-action', weight: 0.15 });
229
- }
230
- return { score, signals };
231
- }
232
- /**
233
- * Calculate median element area from nodes.
234
- */
235
- function calculateMedianArea(nodes) {
236
- const areas = nodes.map(getElementArea).sort((a, b) => a - b);
237
- if (areas.length === 0)
238
- return 0;
239
- const mid = Math.floor(areas.length / 2);
240
- return areas.length % 2 !== 0 ? areas[mid] : (areas[mid - 1] + areas[mid]) / 2;
241
- }
242
- /**
243
- * Collect form submit button IDs.
244
- */
245
- function collectFormSubmitIds(formResult) {
246
- const ids = new Set();
247
- if (formResult) {
248
- for (const form of formResult.forms) {
249
- if (form.submit_button) {
250
- ids.add(form.submit_button.node_id);
251
- }
252
- }
253
- }
254
- return ids;
255
- }
256
- /**
257
- * Collect dialog action node IDs.
258
- */
259
- function collectDialogNodeIds(dialogResult) {
260
- const ids = new Set();
261
- if (dialogResult) {
262
- for (const dialog of dialogResult.dialogs) {
263
- for (const action of dialog.actions) {
264
- ids.add(action.node_id);
265
- }
266
- }
267
- }
268
- return ids;
269
- }
270
- /**
271
- * Select key actions from a BaseSnapshot.
272
- *
273
- * @param snapshot - The snapshot to analyze
274
- * @param options - Selection options
275
- * @returns Selection result with top actions and metadata
276
- */
277
- export function selectKeyActions(snapshot, options = {}) {
278
- const startTime = performance.now();
279
- const engine = new QueryEngine(snapshot);
280
- const maxActions = options.max_actions ?? DEFAULT_MAX_ACTIONS;
281
- const minScore = options.min_action_score ?? DEFAULT_MIN_SCORE;
282
- // Collect context
283
- const formSubmitIds = collectFormSubmitIds(options.forms);
284
- const dialogNodeIds = collectDialogNodeIds(options.dialogs);
285
- // Step 1: Collect all interactive candidates
286
- const candidates = [];
287
- for (const kind of INTERACTIVE_KINDS) {
288
- const matches = engine.find({
289
- kind,
290
- state: { visible: true },
291
- limit: 100,
292
- });
293
- candidates.push(...matches.matches.map((m) => m.node));
294
- }
295
- // Deduplicate (in case of overlapping queries)
296
- const seenIds = new Set();
297
- const uniqueCandidates = candidates.filter((node) => {
298
- if (seenIds.has(node.node_id))
299
- return false;
300
- seenIds.add(node.node_id);
301
- return true;
302
- });
303
- // Step 2: Calculate median area for scoring
304
- const medianArea = calculateMedianArea(uniqueCandidates);
305
- // Step 3: Score each candidate
306
- const scored = [];
307
- for (const node of uniqueCandidates) {
308
- const { score, signals } = scoreAction(node, snapshot.viewport, medianArea, formSubmitIds, dialogNodeIds);
309
- // Skip below threshold
310
- if (score < minScore)
311
- continue;
312
- const isFormSubmit = formSubmitIds.has(node.node_id);
313
- const isInDialog = dialogNodeIds.has(node.node_id);
314
- const { category, confidence: categoryConfidence } = categorizeAction(node, isFormSubmit, isInDialog);
315
- scored.push({
316
- node,
317
- score,
318
- signals,
319
- category,
320
- categoryConfidence,
321
- });
322
- }
323
- // Step 4: Sort by score descending
324
- scored.sort((a, b) => b.score - a.score);
325
- // Step 5: Select top actions
326
- const topScored = scored.slice(0, maxActions);
327
- // Step 6: Build result
328
- const actions = topScored.map((item) => ({
329
- node_id: item.node.node_id,
330
- backend_node_id: item.node.backend_node_id,
331
- label: item.node.label,
332
- kind: item.node.kind,
333
- region: item.node.where.region,
334
- locator: item.node.find?.primary ?? '',
335
- enabled: item.node.state?.enabled ?? true,
336
- score: item.score,
337
- signals: item.signals,
338
- category: item.category,
339
- category_confidence: item.categoryConfidence,
340
- }));
341
- // Step 7: Identify primary CTA
342
- let primaryCta;
343
- const ctaCategories = [
344
- 'primary-cta',
345
- 'cart-action',
346
- 'form-submit',
347
- 'auth-action',
348
- ];
349
- for (const action of actions) {
350
- if (ctaCategories.includes(action.category)) {
351
- primaryCta = action;
352
- break;
353
- }
354
- }
355
- // If no specific CTA found, use highest-scored button
356
- primaryCta ??= actions.find((a) => a.kind === 'button');
357
- const selectionTimeMs = performance.now() - startTime;
358
- return {
359
- actions,
360
- primary_cta: primaryCta,
361
- meta: {
362
- candidates_evaluated: uniqueCandidates.length,
363
- selection_time_ms: selectionTimeMs,
364
- },
365
- };
366
- }
367
- //# sourceMappingURL=action-selector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action-selector.js","sourceRoot":"","sources":["../../../src/factpack/action-selector.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Dialog Detector
3
- *
4
- * Detects dialogs/modals in a BaseSnapshot.
5
- *
6
- * Design: Generic First, Specific Second
7
- * 1. Detect ALL visible dialogs (always works)
8
- * 2. Optionally classify type (may return 'unknown')
9
- */
10
- import type { BaseSnapshot } from '../snapshot/snapshot.types.js';
11
- import type { DialogDetectionResult } from './types.js';
12
- /**
13
- * Detect dialogs in a BaseSnapshot.
14
- *
15
- * @param snapshot - The snapshot to analyze
16
- * @returns Detection result with all dialogs and metadata
17
- */
18
- export declare function detectDialogs(snapshot: BaseSnapshot): DialogDetectionResult;
19
- //# sourceMappingURL=dialog-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-detector.d.ts","sourceRoot":"","sources":["../../../src/factpack/dialog-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,+BAA+B,CAAC;AAGhF,OAAO,KAAK,EACV,qBAAqB,EAMtB,MAAM,YAAY,CAAC;AA6TpB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,qBAAqB,CA4E3E"}