agent-web-interface 4.4.0 → 4.5.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 (319) hide show
  1. package/dist/src/browser/browser-session-config.d.ts +33 -0
  2. package/dist/src/browser/browser-session-config.d.ts.map +1 -0
  3. package/dist/src/browser/browser-session-config.js +24 -0
  4. package/dist/src/browser/browser-session-config.js.map +1 -0
  5. package/dist/src/browser/ensure-browser.d.ts +12 -27
  6. package/dist/src/browser/ensure-browser.d.ts.map +1 -1
  7. package/dist/src/browser/ensure-browser.js +104 -37
  8. package/dist/src/browser/ensure-browser.js.map +1 -1
  9. package/dist/src/browser/index.d.ts +2 -1
  10. package/dist/src/browser/index.d.ts.map +1 -1
  11. package/dist/src/browser/index.js +1 -0
  12. package/dist/src/browser/index.js.map +1 -1
  13. package/dist/src/browser/session-manager.d.ts +20 -0
  14. package/dist/src/browser/session-manager.d.ts.map +1 -1
  15. package/dist/src/browser/session-manager.js +122 -17
  16. package/dist/src/browser/session-manager.js.map +1 -1
  17. package/dist/src/browser/session-manager.types.d.ts +14 -2
  18. package/dist/src/browser/session-manager.types.d.ts.map +1 -1
  19. package/dist/src/browser/session-manager.types.js +5 -1
  20. package/dist/src/browser/session-manager.types.js.map +1 -1
  21. package/dist/src/cli/args.d.ts +12 -18
  22. package/dist/src/cli/args.d.ts.map +1 -1
  23. package/dist/src/cli/args.js +35 -40
  24. package/dist/src/cli/args.js.map +1 -1
  25. package/dist/src/form/constraint-extraction.d.ts +5 -0
  26. package/dist/src/form/constraint-extraction.d.ts.map +1 -1
  27. package/dist/src/form/constraint-extraction.js +13 -6
  28. package/dist/src/form/constraint-extraction.js.map +1 -1
  29. package/dist/src/form/field-extractor.d.ts.map +1 -1
  30. package/dist/src/form/field-extractor.js +14 -7
  31. package/dist/src/form/field-extractor.js.map +1 -1
  32. package/dist/src/form/form-state.d.ts.map +1 -1
  33. package/dist/src/form/form-state.js +16 -4
  34. package/dist/src/form/form-state.js.map +1 -1
  35. package/dist/src/gateway/http-gateway.d.ts +56 -0
  36. package/dist/src/gateway/http-gateway.d.ts.map +1 -0
  37. package/dist/src/gateway/http-gateway.js +229 -0
  38. package/dist/src/gateway/http-gateway.js.map +1 -0
  39. package/dist/src/gateway/json-rpc-errors.d.ts +6 -0
  40. package/dist/src/gateway/json-rpc-errors.d.ts.map +1 -0
  41. package/dist/src/gateway/json-rpc-errors.js +11 -0
  42. package/dist/src/gateway/json-rpc-errors.js.map +1 -0
  43. package/dist/src/gateway/session-router.d.ts +80 -0
  44. package/dist/src/gateway/session-router.d.ts.map +1 -0
  45. package/dist/src/gateway/session-router.js +177 -0
  46. package/dist/src/gateway/session-router.js.map +1 -0
  47. package/dist/src/http-entry.d.ts +20 -0
  48. package/dist/src/http-entry.d.ts.map +1 -0
  49. package/dist/src/http-entry.js +112 -0
  50. package/dist/src/http-entry.js.map +1 -0
  51. package/dist/src/index.d.ts +1 -10
  52. package/dist/src/index.d.ts.map +1 -1
  53. package/dist/src/index.js +25 -232
  54. package/dist/src/index.js.map +1 -1
  55. package/dist/src/lib/text-utils.d.ts +0 -24
  56. package/dist/src/lib/text-utils.d.ts.map +1 -1
  57. package/dist/src/lib/text-utils.js +2 -38
  58. package/dist/src/lib/text-utils.js.map +1 -1
  59. package/dist/src/observation/eid-linker.d.ts.map +1 -1
  60. package/dist/src/observation/eid-linker.js +1 -21
  61. package/dist/src/observation/eid-linker.js.map +1 -1
  62. package/dist/src/server/index.d.ts +0 -1
  63. package/dist/src/server/index.d.ts.map +1 -1
  64. package/dist/src/server/index.js +0 -1
  65. package/dist/src/server/index.js.map +1 -1
  66. package/dist/src/server/mcp-server.d.ts +6 -2
  67. package/dist/src/server/mcp-server.d.ts.map +1 -1
  68. package/dist/src/server/mcp-server.js +3 -91
  69. package/dist/src/server/mcp-server.js.map +1 -1
  70. package/dist/src/server/server-config.d.ts +4 -20
  71. package/dist/src/server/server-config.d.ts.map +1 -1
  72. package/dist/src/server/server-config.js +6 -50
  73. package/dist/src/server/server-config.js.map +1 -1
  74. package/dist/src/server/tool-registrar.types.d.ts +25 -0
  75. package/dist/src/server/tool-registrar.types.d.ts.map +1 -0
  76. package/dist/src/server/tool-registrar.types.js +10 -0
  77. package/dist/src/server/tool-registrar.types.js.map +1 -0
  78. package/dist/src/server/tool-result-handler.d.ts +61 -0
  79. package/dist/src/server/tool-result-handler.d.ts.map +1 -0
  80. package/dist/src/server/tool-result-handler.js +137 -0
  81. package/dist/src/server/tool-result-handler.js.map +1 -0
  82. package/dist/src/session/session-controller.d.ts +123 -0
  83. package/dist/src/session/session-controller.d.ts.map +1 -0
  84. package/dist/src/session/session-controller.js +273 -0
  85. package/dist/src/session/session-controller.js.map +1 -0
  86. package/dist/src/shared/services/index.d.ts +0 -2
  87. package/dist/src/shared/services/index.d.ts.map +1 -1
  88. package/dist/src/shared/services/index.js +0 -2
  89. package/dist/src/shared/services/index.js.map +1 -1
  90. package/dist/src/shared/version.d.ts +10 -0
  91. package/dist/src/shared/version.d.ts.map +1 -0
  92. package/dist/src/shared/version.js +32 -0
  93. package/dist/src/shared/version.js.map +1 -0
  94. package/dist/src/snapshot/element-resolver.d.ts +3 -2
  95. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  96. package/dist/src/snapshot/element-resolver.js +83 -8
  97. package/dist/src/snapshot/element-resolver.js.map +1 -1
  98. package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -1
  99. package/dist/src/snapshot/extractors/attribute-extractor.js +4 -0
  100. package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -1
  101. package/dist/src/snapshot/extractors/layout-extractor.d.ts +9 -7
  102. package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -1
  103. package/dist/src/snapshot/extractors/layout-extractor.js +34 -19
  104. package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -1
  105. package/dist/src/snapshot/extractors/state-extractor.d.ts +2 -2
  106. package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -1
  107. package/dist/src/snapshot/extractors/state-extractor.js +22 -2
  108. package/dist/src/snapshot/extractors/state-extractor.js.map +1 -1
  109. package/dist/src/snapshot/extractors/types.d.ts +6 -0
  110. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  111. package/dist/src/snapshot/extractors/types.js.map +1 -1
  112. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  113. package/dist/src/snapshot/snapshot-compiler.js +15 -2
  114. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  115. package/dist/src/snapshot/snapshot.types.d.ts +10 -1
  116. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  117. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  118. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  119. package/dist/src/state/actionables-filter.js +7 -3
  120. package/dist/src/state/actionables-filter.js.map +1 -1
  121. package/dist/src/state/atoms-extractor.d.ts.map +1 -1
  122. package/dist/src/state/atoms-extractor.js +3 -23
  123. package/dist/src/state/atoms-extractor.js.map +1 -1
  124. package/dist/src/state/diff-engine.d.ts.map +1 -1
  125. package/dist/src/state/diff-engine.js +6 -33
  126. package/dist/src/state/diff-engine.js.map +1 -1
  127. package/dist/src/state/element-identity.d.ts +3 -6
  128. package/dist/src/state/element-identity.d.ts.map +1 -1
  129. package/dist/src/state/element-identity.js +10 -7
  130. package/dist/src/state/element-identity.js.map +1 -1
  131. package/dist/src/state/element-ref.types.d.ts +5 -27
  132. package/dist/src/state/element-ref.types.d.ts.map +1 -1
  133. package/dist/src/state/state-manager.d.ts.map +1 -1
  134. package/dist/src/state/state-manager.js +3 -1
  135. package/dist/src/state/state-manager.js.map +1 -1
  136. package/dist/src/state/state-renderer.d.ts.map +1 -1
  137. package/dist/src/state/state-renderer.js +3 -1
  138. package/dist/src/state/state-renderer.js.map +1 -1
  139. package/dist/src/state/types.d.ts +2 -1
  140. package/dist/src/state/types.d.ts.map +1 -1
  141. package/dist/src/state/url-sanitization.d.ts +1 -1
  142. package/dist/src/state/url-sanitization.d.ts.map +1 -1
  143. package/dist/src/state/url-sanitization.js +29 -13
  144. package/dist/src/state/url-sanitization.js.map +1 -1
  145. package/dist/src/tools/action-context.d.ts +6 -11
  146. package/dist/src/tools/action-context.d.ts.map +1 -1
  147. package/dist/src/tools/action-context.js +10 -19
  148. package/dist/src/tools/action-context.js.map +1 -1
  149. package/dist/src/tools/action-stabilization.d.ts.map +1 -1
  150. package/dist/src/tools/action-stabilization.js +6 -0
  151. package/dist/src/tools/action-stabilization.js.map +1 -1
  152. package/dist/src/tools/browser-tools.d.ts +3 -2
  153. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  154. package/dist/src/tools/browser-tools.js +5 -3
  155. package/dist/src/tools/browser-tools.js.map +1 -1
  156. package/dist/src/tools/canvas-tools.d.ts +2 -1
  157. package/dist/src/tools/canvas-tools.d.ts.map +1 -1
  158. package/dist/src/tools/canvas-tools.js +5 -7
  159. package/dist/src/tools/canvas-tools.js.map +1 -1
  160. package/dist/src/tools/errors.d.ts +2 -34
  161. package/dist/src/tools/errors.d.ts.map +1 -1
  162. package/dist/src/tools/errors.js +1 -44
  163. package/dist/src/tools/errors.js.map +1 -1
  164. package/dist/src/tools/execute-action.d.ts +4 -3
  165. package/dist/src/tools/execute-action.d.ts.map +1 -1
  166. package/dist/src/tools/execute-action.js +32 -23
  167. package/dist/src/tools/execute-action.js.map +1 -1
  168. package/dist/src/tools/form-tools.d.ts +3 -8
  169. package/dist/src/tools/form-tools.d.ts.map +1 -1
  170. package/dist/src/tools/form-tools.js +38 -18
  171. package/dist/src/tools/form-tools.js.map +1 -1
  172. package/dist/src/tools/index.d.ts +6 -6
  173. package/dist/src/tools/index.d.ts.map +1 -1
  174. package/dist/src/tools/index.js +7 -10
  175. package/dist/src/tools/index.js.map +1 -1
  176. package/dist/src/tools/interaction-tools.d.ts +6 -5
  177. package/dist/src/tools/interaction-tools.d.ts.map +1 -1
  178. package/dist/src/tools/interaction-tools.js +29 -32
  179. package/dist/src/tools/interaction-tools.js.map +1 -1
  180. package/dist/src/tools/navigation-tools.d.ts +7 -13
  181. package/dist/src/tools/navigation-tools.d.ts.map +1 -1
  182. package/dist/src/tools/navigation-tools.js +52 -59
  183. package/dist/src/tools/navigation-tools.js.map +1 -1
  184. package/dist/src/tools/observation-tools.d.ts +6 -5
  185. package/dist/src/tools/observation-tools.d.ts.map +1 -1
  186. package/dist/src/tools/observation-tools.js +30 -34
  187. package/dist/src/tools/observation-tools.js.map +1 -1
  188. package/dist/src/tools/readability-tools.d.ts +16 -0
  189. package/dist/src/tools/readability-tools.d.ts.map +1 -0
  190. package/dist/src/tools/readability-tools.js +45 -0
  191. package/dist/src/tools/readability-tools.js.map +1 -0
  192. package/dist/src/tools/response-builder.d.ts +20 -32
  193. package/dist/src/tools/response-builder.d.ts.map +1 -1
  194. package/dist/src/tools/response-builder.js +31 -47
  195. package/dist/src/tools/response-builder.js.map +1 -1
  196. package/dist/src/tools/stale-element-retry.d.ts.map +1 -1
  197. package/dist/src/tools/stale-element-retry.js +37 -2
  198. package/dist/src/tools/stale-element-retry.js.map +1 -1
  199. package/dist/src/tools/tool-context.d.ts +4 -36
  200. package/dist/src/tools/tool-context.d.ts.map +1 -1
  201. package/dist/src/tools/tool-context.js +6 -75
  202. package/dist/src/tools/tool-context.js.map +1 -1
  203. package/dist/src/tools/tool-context.types.d.ts +141 -0
  204. package/dist/src/tools/tool-context.types.d.ts.map +1 -0
  205. package/dist/src/tools/tool-context.types.js +11 -0
  206. package/dist/src/tools/tool-context.types.js.map +1 -0
  207. package/dist/src/tools/tool-registration.d.ts +25 -0
  208. package/dist/src/tools/tool-registration.d.ts.map +1 -0
  209. package/dist/src/tools/tool-registration.js +180 -0
  210. package/dist/src/tools/tool-registration.js.map +1 -0
  211. package/dist/src/tools/tool-schemas.d.ts +88 -1947
  212. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  213. package/dist/src/tools/tool-schemas.js +21 -302
  214. package/dist/src/tools/tool-schemas.js.map +1 -1
  215. package/dist/src/tools/viewport-tools.d.ts +4 -3
  216. package/dist/src/tools/viewport-tools.d.ts.map +1 -1
  217. package/dist/src/tools/viewport-tools.js +17 -21
  218. package/dist/src/tools/viewport-tools.js.map +1 -1
  219. package/dist/src/worker/chrome-worker-process.d.ts +4 -0
  220. package/dist/src/worker/chrome-worker-process.d.ts.map +1 -1
  221. package/dist/src/worker/chrome-worker-process.js +1 -1
  222. package/dist/src/worker/chrome-worker-process.js.map +1 -1
  223. package/package.json +7 -3
  224. package/dist/src/factpack/action-selector.d.ts +0 -36
  225. package/dist/src/factpack/action-selector.d.ts.map +0 -1
  226. package/dist/src/factpack/action-selector.js +0 -367
  227. package/dist/src/factpack/action-selector.js.map +0 -1
  228. package/dist/src/factpack/dialog-detector.d.ts +0 -19
  229. package/dist/src/factpack/dialog-detector.d.ts.map +0 -1
  230. package/dist/src/factpack/dialog-detector.js +0 -354
  231. package/dist/src/factpack/dialog-detector.js.map +0 -1
  232. package/dist/src/factpack/form-detector.d.ts +0 -28
  233. package/dist/src/factpack/form-detector.d.ts.map +0 -1
  234. package/dist/src/factpack/form-detector.js +0 -555
  235. package/dist/src/factpack/form-detector.js.map +0 -1
  236. package/dist/src/factpack/index.d.ts +0 -32
  237. package/dist/src/factpack/index.d.ts.map +0 -1
  238. package/dist/src/factpack/index.js +0 -73
  239. package/dist/src/factpack/index.js.map +0 -1
  240. package/dist/src/factpack/page-classifier.d.ts +0 -22
  241. package/dist/src/factpack/page-classifier.d.ts.map +0 -1
  242. package/dist/src/factpack/page-classifier.js +0 -526
  243. package/dist/src/factpack/page-classifier.js.map +0 -1
  244. package/dist/src/factpack/types.d.ts +0 -307
  245. package/dist/src/factpack/types.d.ts.map +0 -1
  246. package/dist/src/factpack/types.js +0 -12
  247. package/dist/src/factpack/types.js.map +0 -1
  248. package/dist/src/lib/constants.d.ts +0 -27
  249. package/dist/src/lib/constants.d.ts.map +0 -1
  250. package/dist/src/lib/constants.js +0 -63
  251. package/dist/src/lib/constants.js.map +0 -1
  252. package/dist/src/lib/index.d.ts +0 -12
  253. package/dist/src/lib/index.d.ts.map +0 -1
  254. package/dist/src/lib/index.js +0 -17
  255. package/dist/src/lib/index.js.map +0 -1
  256. package/dist/src/lib/regions.d.ts +0 -29
  257. package/dist/src/lib/regions.d.ts.map +0 -1
  258. package/dist/src/lib/regions.js +0 -93
  259. package/dist/src/lib/regions.js.map +0 -1
  260. package/dist/src/lib/scoring.d.ts +0 -47
  261. package/dist/src/lib/scoring.d.ts.map +0 -1
  262. package/dist/src/lib/scoring.js +0 -79
  263. package/dist/src/lib/scoring.js.map +0 -1
  264. package/dist/src/lib/selectors.d.ts +0 -42
  265. package/dist/src/lib/selectors.d.ts.map +0 -1
  266. package/dist/src/lib/selectors.js +0 -138
  267. package/dist/src/lib/selectors.js.map +0 -1
  268. package/dist/src/renderer/budget-manager.d.ts +0 -46
  269. package/dist/src/renderer/budget-manager.d.ts.map +0 -1
  270. package/dist/src/renderer/budget-manager.js +0 -133
  271. package/dist/src/renderer/budget-manager.js.map +0 -1
  272. package/dist/src/renderer/constants.d.ts +0 -38
  273. package/dist/src/renderer/constants.d.ts.map +0 -1
  274. package/dist/src/renderer/constants.js +0 -29
  275. package/dist/src/renderer/constants.js.map +0 -1
  276. package/dist/src/renderer/index.d.ts +0 -12
  277. package/dist/src/renderer/index.d.ts.map +0 -1
  278. package/dist/src/renderer/index.js +0 -16
  279. package/dist/src/renderer/index.js.map +0 -1
  280. package/dist/src/renderer/section-renderers.d.ts +0 -42
  281. package/dist/src/renderer/section-renderers.d.ts.map +0 -1
  282. package/dist/src/renderer/section-renderers.js +0 -252
  283. package/dist/src/renderer/section-renderers.js.map +0 -1
  284. package/dist/src/renderer/token-counter.d.ts +0 -45
  285. package/dist/src/renderer/token-counter.d.ts.map +0 -1
  286. package/dist/src/renderer/token-counter.js +0 -65
  287. package/dist/src/renderer/token-counter.js.map +0 -1
  288. package/dist/src/renderer/types.d.ts +0 -71
  289. package/dist/src/renderer/types.d.ts.map +0 -1
  290. package/dist/src/renderer/types.js +0 -7
  291. package/dist/src/renderer/types.js.map +0 -1
  292. package/dist/src/renderer/xml-renderer.d.ts +0 -42
  293. package/dist/src/renderer/xml-renderer.d.ts.map +0 -1
  294. package/dist/src/renderer/xml-renderer.js +0 -103
  295. package/dist/src/renderer/xml-renderer.js.map +0 -1
  296. package/dist/src/server/session-store.d.ts +0 -163
  297. package/dist/src/server/session-store.d.ts.map +0 -1
  298. package/dist/src/server/session-store.js +0 -248
  299. package/dist/src/server/session-store.js.map +0 -1
  300. package/dist/src/session/session-worker-binding.d.ts +0 -57
  301. package/dist/src/session/session-worker-binding.d.ts.map +0 -1
  302. package/dist/src/session/session-worker-binding.js +0 -109
  303. package/dist/src/session/session-worker-binding.js.map +0 -1
  304. package/dist/src/shared/services/dom-transformer.service.d.ts +0 -71
  305. package/dist/src/shared/services/dom-transformer.service.d.ts.map +0 -1
  306. package/dist/src/shared/services/dom-transformer.service.js +0 -190
  307. package/dist/src/shared/services/dom-transformer.service.js.map +0 -1
  308. package/dist/src/shared/services/selector-builder.service.d.ts +0 -53
  309. package/dist/src/shared/services/selector-builder.service.d.ts.map +0 -1
  310. package/dist/src/shared/services/selector-builder.service.js +0 -240
  311. package/dist/src/shared/services/selector-builder.service.js.map +0 -1
  312. package/dist/src/state/constants.d.ts +0 -125
  313. package/dist/src/state/constants.d.ts.map +0 -1
  314. package/dist/src/state/constants.js +0 -131
  315. package/dist/src/state/constants.js.map +0 -1
  316. package/dist/src/tools/state-manager-registry.d.ts +0 -26
  317. package/dist/src/tools/state-manager-registry.d.ts.map +0 -1
  318. package/dist/src/tools/state-manager-registry.js +0 -39
  319. package/dist/src/tools/state-manager-registry.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Browser Session Config
3
+ *
4
+ * Defines the browser configuration that agents can specify per session.
5
+ * Each session can independently choose to launch a new browser or connect
6
+ * to an existing one, with its own headless/headed preference.
7
+ *
8
+ * Env var AWI_CDP_URL overrides to connect to an existing CDP endpoint.
9
+ *
10
+ * @module browser/browser-session-config
11
+ */
12
+ /**
13
+ * Per-session browser configuration.
14
+ *
15
+ * Agents pass browser preferences via the `navigate` tool's optional parameters.
16
+ * If not provided, sensible defaults are used (launch, headed, persistent profile).
17
+ */
18
+ export interface BrowserSessionConfig {
19
+ /** Run browser in headless mode. Default: false */
20
+ headless?: boolean;
21
+ /** Use an isolated temp profile instead of persistent. Default: false */
22
+ isolated?: boolean;
23
+ /** Auto-connect to Chrome 144+ via DevToolsActivePort */
24
+ autoConnect?: boolean;
25
+ }
26
+ /**
27
+ * Returns sensible default browser configuration.
28
+ *
29
+ * Launch a headed Chrome with a persistent profile — the most common
30
+ * configuration for interactive browser automation.
31
+ */
32
+ export declare function defaultBrowserConfig(): BrowserSessionConfig;
33
+ //# sourceMappingURL=browser-session-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session-config.d.ts","sourceRoot":"","sources":["../../../src/browser/browser-session-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CAK3D"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Browser Session Config
3
+ *
4
+ * Defines the browser configuration that agents can specify per session.
5
+ * Each session can independently choose to launch a new browser or connect
6
+ * to an existing one, with its own headless/headed preference.
7
+ *
8
+ * Env var AWI_CDP_URL overrides to connect to an existing CDP endpoint.
9
+ *
10
+ * @module browser/browser-session-config
11
+ */
12
+ /**
13
+ * Returns sensible default browser configuration.
14
+ *
15
+ * Launch a headed Chrome with a persistent profile — the most common
16
+ * configuration for interactive browser automation.
17
+ */
18
+ export function defaultBrowserConfig() {
19
+ return {
20
+ headless: false,
21
+ isolated: false,
22
+ };
23
+ }
24
+ //# sourceMappingURL=browser-session-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session-config.js","sourceRoot":"","sources":["../../../src/browser/browser-session-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC"}
@@ -2,38 +2,23 @@
2
2
  * Lazy Browser Initialization
3
3
  *
4
4
  * Ensures a browser is ready before tool execution.
5
- * If no browser is running, launches or connects based on CLI configuration.
5
+ * If no browser is running, launches or connects based on session configuration.
6
+ *
7
+ * When a persistent profile is in use and Chrome is already running (from a
8
+ * previous session or another agent), reconnects via DevToolsActivePort instead
9
+ * of failing on the profile lock.
10
+ *
11
+ * CDP endpoint can be set via AWI_CDP_URL env var (http or ws) to connect
12
+ * to an existing browser instead of launching.
6
13
  */
7
14
  import type { SessionManager } from './session-manager.js';
8
- /**
9
- * Options for lazy browser initialization.
10
- */
11
- export interface EnsureBrowserOptions {
12
- /** Run browser in headless mode (default: false) */
13
- headless?: boolean;
14
- /** Use isolated temp profile (default: false) */
15
- isolated?: boolean;
16
- /** HTTP endpoint URL for connecting to existing browser */
17
- browserUrl?: string;
18
- /** WebSocket endpoint URL for connecting to existing browser */
19
- wsEndpoint?: string;
20
- /** Auto-connect to Chrome 144+ via DevToolsActivePort */
21
- autoConnect?: boolean;
22
- /** Chrome user data directory */
23
- userDataDir?: string;
24
- /** Chrome channel */
25
- channel?: 'chrome' | 'chrome-canary' | 'chrome-beta' | 'chrome-dev';
26
- /** Path to Chrome executable */
27
- executablePath?: string;
28
- }
15
+ import type { BrowserSessionConfig } from './browser-session-config.js';
29
16
  /**
30
17
  * Ensure browser is ready for tool execution.
31
18
  *
32
19
  * If browser is already running, returns immediately.
33
- * Otherwise, launches or connects based on provided options.
34
- *
35
- * @param session - SessionManager instance
36
- * @param options - Configuration options from CLI
20
+ * Otherwise, launches or connects based on provided config.
21
+ * Set AWI_CDP_URL env var to connect to an existing CDP endpoint.
37
22
  */
38
- export declare function ensureBrowserReady(session: SessionManager, options: EnsureBrowserOptions): Promise<void>;
23
+ export declare function ensureBrowserReady(session: SessionManager, config: BrowserSessionConfig): Promise<void>;
39
24
  //# sourceMappingURL=ensure-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-browser.d.ts","sourceRoot":"","sources":["../../../src/browser/ensure-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,OAAO,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;IAEpE,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AASD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwCf"}
1
+ {"version":3,"file":"ensure-browser.d.ts","sourceRoot":"","sources":["../../../src/browser/ensure-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AASxE;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA6Df"}
@@ -2,64 +2,131 @@
2
2
  * Lazy Browser Initialization
3
3
  *
4
4
  * Ensures a browser is ready before tool execution.
5
- * If no browser is running, launches or connects based on CLI configuration.
5
+ * If no browser is running, launches or connects based on session configuration.
6
+ *
7
+ * When a persistent profile is in use and Chrome is already running (from a
8
+ * previous session or another agent), reconnects via DevToolsActivePort instead
9
+ * of failing on the profile lock.
10
+ *
11
+ * CDP endpoint can be set via AWI_CDP_URL env var (http or ws) to connect
12
+ * to an existing browser instead of launching.
6
13
  */
14
+ import fs from 'node:fs';
15
+ import path from 'node:path';
16
+ import { DEFAULT_USER_DATA_DIR } from './session-manager.js';
17
+ import { extractErrorMessage } from './connection-utils.js';
7
18
  import { getLogger } from '../shared/services/logging.service.js';
8
19
  const logger = getLogger();
9
- /**
10
- * Determine if we should connect to an existing browser vs launch new one.
11
- */
12
- function shouldConnect(options) {
13
- return !!(options.browserUrl ?? options.wsEndpoint ?? options.autoConnect);
14
- }
20
+ /** Short timeout for reconnect attempts — these are fast pre-checks, not full connections */
21
+ const RECONNECT_TIMEOUT_MS = 5000;
15
22
  /**
16
23
  * Ensure browser is ready for tool execution.
17
24
  *
18
25
  * If browser is already running, returns immediately.
19
- * Otherwise, launches or connects based on provided options.
20
- *
21
- * @param session - SessionManager instance
22
- * @param options - Configuration options from CLI
26
+ * Otherwise, launches or connects based on provided config.
27
+ * Set AWI_CDP_URL env var to connect to an existing CDP endpoint.
23
28
  */
24
- export async function ensureBrowserReady(session, options) {
25
- // Fast path: browser already running
29
+ export async function ensureBrowserReady(session, config) {
26
30
  if (session.isRunning()) {
27
31
  return;
28
32
  }
29
- const mode = shouldConnect(options) ? 'connect' : 'launch';
30
- logger.info('Lazy browser initialization triggered', { mode });
31
- try {
32
- if (shouldConnect(options)) {
33
- // Connect to existing browser
33
+ const inFlightPromise = session.connectionPromise;
34
+ if (session.connectionState === 'connecting' && inFlightPromise) {
35
+ logger.info('Awaiting in-flight browser connection');
36
+ await inFlightPromise;
37
+ return;
38
+ }
39
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty string must be falsy
40
+ const cdpUrl = process.env.AWI_CDP_URL?.trim() || undefined;
41
+ const shouldConnect = !!(cdpUrl ?? config.autoConnect);
42
+ if (shouldConnect) {
43
+ logger.info('Lazy browser initialization triggered', { mode: 'connect' });
44
+ try {
34
45
  await session.connect({
35
- browserURL: options.browserUrl,
36
- browserWSEndpoint: options.wsEndpoint,
37
- autoConnect: options.autoConnect,
38
- userDataDir: options.userDataDir,
46
+ endpointUrl: cdpUrl,
47
+ autoConnect: config.autoConnect,
39
48
  });
49
+ logger.info('Browser initialized successfully', { mode: 'connect' });
40
50
  }
41
- else {
42
- // Launch new browser
43
- await session.launch({
44
- headless: options.headless ?? false,
45
- isolated: options.isolated ?? false,
46
- userDataDir: options.userDataDir,
47
- channel: options.channel,
48
- executablePath: options.executablePath,
51
+ catch (error) {
52
+ logger.error('Browser initialization failed', error instanceof Error ? error : undefined, {
53
+ mode: 'connect',
49
54
  });
55
+ throw error;
50
56
  }
51
- logger.info('Browser initialized successfully', { mode });
57
+ return;
58
+ }
59
+ // Launch mode — try reconnecting to an existing browser first (persistent profiles only)
60
+ const profileDir = config.isolated ? undefined : DEFAULT_USER_DATA_DIR;
61
+ if (profileDir && (await hasPortFile(profileDir)) && (await tryReconnect(session, profileDir))) {
62
+ return;
63
+ }
64
+ // Launch a new browser
65
+ logger.info('Lazy browser initialization triggered', { mode: 'launch' });
66
+ try {
67
+ await session.launch({
68
+ headless: config.headless ?? false,
69
+ isolated: config.isolated ?? false,
70
+ });
71
+ logger.info('Browser initialized successfully', { mode: 'launch' });
52
72
  }
53
73
  catch (error) {
74
+ // Another process may have grabbed the profile between our reconnect attempt
75
+ // and launch (race condition). Try reconnecting one more time.
76
+ if (profileDir && isProfileLockError(error) && (await tryReconnect(session, profileDir))) {
77
+ return;
78
+ }
54
79
  logger.error('Browser initialization failed', error instanceof Error ? error : undefined, {
55
- mode,
56
- browserUrl: options.browserUrl,
57
- wsEndpoint: options.wsEndpoint,
58
- autoConnect: options.autoConnect,
59
- headless: options.headless,
60
- userDataDir: options.userDataDir,
80
+ mode: 'launch',
81
+ headless: config.headless,
61
82
  });
62
83
  throw error;
63
84
  }
64
85
  }
86
+ /**
87
+ * Check if DevToolsActivePort file exists in the profile directory.
88
+ * Used to skip the reconnect attempt entirely on cold starts where
89
+ * Chrome has never run, avoiding wasted I/O.
90
+ */
91
+ async function hasPortFile(profileDir) {
92
+ try {
93
+ await fs.promises.access(path.join(profileDir, 'DevToolsActivePort'), fs.constants.F_OK);
94
+ return true;
95
+ }
96
+ catch {
97
+ return false;
98
+ }
99
+ }
100
+ /**
101
+ * Attempt to reconnect to an existing Chrome via its DevToolsActivePort file.
102
+ * Returns true on success. On failure, returns false.
103
+ * Uses a short timeout since this is a fast pre-check, not a full connection attempt.
104
+ */
105
+ async function tryReconnect(session, profileDir) {
106
+ try {
107
+ await session.connect({
108
+ autoConnect: true,
109
+ userDataDir: profileDir,
110
+ ownedReconnect: true,
111
+ timeout: RECONNECT_TIMEOUT_MS,
112
+ });
113
+ logger.info('Reconnected to existing browser');
114
+ return true;
115
+ }
116
+ catch (error) {
117
+ logger.warning('Reconnect to existing browser failed', {
118
+ error: extractErrorMessage(error),
119
+ });
120
+ return false;
121
+ }
122
+ }
123
+ /**
124
+ * Detect Chrome profile-lock errors from Puppeteer.
125
+ * Matches against Puppeteer's error text which includes "already running for <path>"
126
+ * when the SingletonLock file prevents a second Chrome instance.
127
+ */
128
+ function isProfileLockError(error) {
129
+ const msg = extractErrorMessage(error);
130
+ return /already running for|already in use|SingletonLock/i.test(msg);
131
+ }
65
132
  //# sourceMappingURL=ensure-browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-browser.js","sourceRoot":"","sources":["../../../src/browser/ensure-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AA+B3B;;GAEG;AACH,SAAS,aAAa,CAAC,OAA6B;IAClD,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAuB,EACvB,OAA6B;IAE7B,qCAAqC;IACrC,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,8BAA8B;YAC9B,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,iBAAiB,EAAE,OAAO,CAAC,UAAU;gBACrC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,OAAO,CAAC,MAAM,CAAC;gBACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;gBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;gBACnC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE;YACxF,IAAI;YACJ,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ensure-browser.js","sourceRoot":"","sources":["../../../src/browser/ensure-browser.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  export { PageRegistry, type PageHandle } from './page-registry.js';
7
7
  export { SessionManager } from './session-manager.js';
8
- export type { LaunchOptions, ConnectOptions, ConnectionState, ConnectionStateChangeEvent, } from './session-manager.types.js';
8
+ export type { ChromeChannel, LaunchOptions, ConnectOptions, ConnectionState, ConnectionStateChangeEvent, } from './session-manager.types.js';
9
+ export { CHROME_CHANNELS } from './session-manager.types.js';
9
10
  export { extractErrorMessage } from './connection-utils.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -5,5 +5,6 @@
5
5
  */
6
6
  export { PageRegistry } from './page-registry.js';
7
7
  export { SessionManager } from './session-manager.js';
8
+ export { CHROME_CHANNELS } from './session-manager.types.js';
8
9
  export { extractErrorMessage } from './connection-utils.js';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -10,12 +10,17 @@ import type { ConnectionHealth } from '../state/health.types.js';
10
10
  import type { ConnectionState, ConnectionStateChangeEvent, StorageState, LaunchOptions, ConnectOptions } from './session-manager.types.js';
11
11
  /** Type alias for Puppeteer Page (exported for downstream use) */
12
12
  export type { Page };
13
+ /** Default user data directory for persistent browser profiles */
14
+ export declare const DEFAULT_USER_DATA_DIR: string;
13
15
  /**
14
16
  * Manages browser lifecycle and page creation.
15
17
  *
16
18
  * Supports two modes:
17
19
  * - launch(): Start a new browser instance
18
20
  * - connect(): Connect to an existing browser via CDP
21
+ *
22
+ * Each SessionController owns its own SessionManager instance for
23
+ * per-session browser isolation.
19
24
  */
20
25
  export declare class SessionManager {
21
26
  private browser;
@@ -31,11 +36,18 @@ export declare class SessionManager {
31
36
  private browserDisconnectHandler;
32
37
  /** Last known WebSocket endpoint, saved during detach() for potential reconnection */
33
38
  private _lastWsEndpoint;
39
+ /** Promise for in-flight launch/connect operation */
40
+ private _connectionPromise;
34
41
  constructor();
35
42
  /**
36
43
  * Get current connection state
37
44
  */
38
45
  get connectionState(): ConnectionState;
46
+ /**
47
+ * Get the in-flight connection promise, if any.
48
+ * Callers can await this instead of starting a duplicate launch/connect.
49
+ */
50
+ get connectionPromise(): Promise<void> | null;
39
51
  /**
40
52
  * Get the last known WebSocket endpoint URL.
41
53
  * Saved during detach() for potential reconnection to the same browser.
@@ -56,6 +68,10 @@ export declare class SessionManager {
56
68
  * @throws BrowserSessionError if browser is already running or connection in progress
57
69
  */
58
70
  launch(options?: LaunchOptions): Promise<void>;
71
+ /**
72
+ * Internal launch implementation with timeout.
73
+ */
74
+ private _doLaunch;
59
75
  /**
60
76
  * Connect to an existing browser via CDP.
61
77
  *
@@ -80,6 +96,10 @@ export declare class SessionManager {
80
96
  * ```
81
97
  */
82
98
  connect(options?: ConnectOptions): Promise<void>;
99
+ /**
100
+ * Internal connect implementation.
101
+ */
102
+ private _doConnect;
83
103
  /**
84
104
  * Get the number of pages in the browser context.
85
105
  *
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/browser/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/browser/session-manager.ts"],"names":[],"mappings":"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"}