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.
- package/dist/src/browser/browser-session-config.d.ts +33 -0
- package/dist/src/browser/browser-session-config.d.ts.map +1 -0
- package/dist/src/browser/browser-session-config.js +24 -0
- package/dist/src/browser/browser-session-config.js.map +1 -0
- package/dist/src/browser/ensure-browser.d.ts +12 -27
- package/dist/src/browser/ensure-browser.d.ts.map +1 -1
- package/dist/src/browser/ensure-browser.js +104 -37
- package/dist/src/browser/ensure-browser.js.map +1 -1
- package/dist/src/browser/index.d.ts +2 -1
- package/dist/src/browser/index.d.ts.map +1 -1
- package/dist/src/browser/index.js +1 -0
- package/dist/src/browser/index.js.map +1 -1
- package/dist/src/browser/session-manager.d.ts +20 -0
- package/dist/src/browser/session-manager.d.ts.map +1 -1
- package/dist/src/browser/session-manager.js +122 -17
- package/dist/src/browser/session-manager.js.map +1 -1
- package/dist/src/browser/session-manager.types.d.ts +14 -2
- package/dist/src/browser/session-manager.types.d.ts.map +1 -1
- package/dist/src/browser/session-manager.types.js +5 -1
- package/dist/src/browser/session-manager.types.js.map +1 -1
- package/dist/src/cli/args.d.ts +12 -18
- package/dist/src/cli/args.d.ts.map +1 -1
- package/dist/src/cli/args.js +35 -40
- package/dist/src/cli/args.js.map +1 -1
- package/dist/src/form/constraint-extraction.d.ts +5 -0
- package/dist/src/form/constraint-extraction.d.ts.map +1 -1
- package/dist/src/form/constraint-extraction.js +13 -6
- package/dist/src/form/constraint-extraction.js.map +1 -1
- package/dist/src/form/field-extractor.d.ts.map +1 -1
- package/dist/src/form/field-extractor.js +14 -7
- package/dist/src/form/field-extractor.js.map +1 -1
- package/dist/src/form/form-state.d.ts.map +1 -1
- package/dist/src/form/form-state.js +16 -4
- package/dist/src/form/form-state.js.map +1 -1
- package/dist/src/gateway/http-gateway.d.ts +56 -0
- package/dist/src/gateway/http-gateway.d.ts.map +1 -0
- package/dist/src/gateway/http-gateway.js +229 -0
- package/dist/src/gateway/http-gateway.js.map +1 -0
- package/dist/src/gateway/json-rpc-errors.d.ts +6 -0
- package/dist/src/gateway/json-rpc-errors.d.ts.map +1 -0
- package/dist/src/gateway/json-rpc-errors.js +11 -0
- package/dist/src/gateway/json-rpc-errors.js.map +1 -0
- package/dist/src/gateway/session-router.d.ts +80 -0
- package/dist/src/gateway/session-router.d.ts.map +1 -0
- package/dist/src/gateway/session-router.js +177 -0
- package/dist/src/gateway/session-router.js.map +1 -0
- package/dist/src/http-entry.d.ts +20 -0
- package/dist/src/http-entry.d.ts.map +1 -0
- package/dist/src/http-entry.js +112 -0
- package/dist/src/http-entry.js.map +1 -0
- package/dist/src/index.d.ts +1 -10
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +25 -232
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/text-utils.d.ts +0 -24
- package/dist/src/lib/text-utils.d.ts.map +1 -1
- package/dist/src/lib/text-utils.js +2 -38
- package/dist/src/lib/text-utils.js.map +1 -1
- package/dist/src/observation/eid-linker.d.ts.map +1 -1
- package/dist/src/observation/eid-linker.js +1 -21
- package/dist/src/observation/eid-linker.js.map +1 -1
- package/dist/src/server/index.d.ts +0 -1
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +0 -1
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/mcp-server.d.ts +6 -2
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/mcp-server.js +3 -91
- package/dist/src/server/mcp-server.js.map +1 -1
- package/dist/src/server/server-config.d.ts +4 -20
- package/dist/src/server/server-config.d.ts.map +1 -1
- package/dist/src/server/server-config.js +6 -50
- package/dist/src/server/server-config.js.map +1 -1
- package/dist/src/server/tool-registrar.types.d.ts +25 -0
- package/dist/src/server/tool-registrar.types.d.ts.map +1 -0
- package/dist/src/server/tool-registrar.types.js +10 -0
- package/dist/src/server/tool-registrar.types.js.map +1 -0
- package/dist/src/server/tool-result-handler.d.ts +61 -0
- package/dist/src/server/tool-result-handler.d.ts.map +1 -0
- package/dist/src/server/tool-result-handler.js +137 -0
- package/dist/src/server/tool-result-handler.js.map +1 -0
- package/dist/src/session/session-controller.d.ts +123 -0
- package/dist/src/session/session-controller.d.ts.map +1 -0
- package/dist/src/session/session-controller.js +273 -0
- package/dist/src/session/session-controller.js.map +1 -0
- package/dist/src/shared/services/index.d.ts +0 -2
- package/dist/src/shared/services/index.d.ts.map +1 -1
- package/dist/src/shared/services/index.js +0 -2
- package/dist/src/shared/services/index.js.map +1 -1
- package/dist/src/shared/version.d.ts +10 -0
- package/dist/src/shared/version.d.ts.map +1 -0
- package/dist/src/shared/version.js +32 -0
- package/dist/src/shared/version.js.map +1 -0
- package/dist/src/snapshot/element-resolver.d.ts +3 -2
- package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
- package/dist/src/snapshot/element-resolver.js +83 -8
- package/dist/src/snapshot/element-resolver.js.map +1 -1
- package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/attribute-extractor.js +4 -0
- package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -1
- package/dist/src/snapshot/extractors/layout-extractor.d.ts +9 -7
- package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/layout-extractor.js +34 -19
- package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -1
- package/dist/src/snapshot/extractors/state-extractor.d.ts +2 -2
- package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/state-extractor.js +22 -2
- package/dist/src/snapshot/extractors/state-extractor.js.map +1 -1
- package/dist/src/snapshot/extractors/types.d.ts +6 -0
- package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
- package/dist/src/snapshot/extractors/types.js.map +1 -1
- package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
- package/dist/src/snapshot/snapshot-compiler.js +15 -2
- package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
- package/dist/src/snapshot/snapshot.types.d.ts +10 -1
- package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
- package/dist/src/snapshot/snapshot.types.js.map +1 -1
- package/dist/src/state/actionables-filter.d.ts.map +1 -1
- package/dist/src/state/actionables-filter.js +7 -3
- package/dist/src/state/actionables-filter.js.map +1 -1
- package/dist/src/state/atoms-extractor.d.ts.map +1 -1
- package/dist/src/state/atoms-extractor.js +3 -23
- package/dist/src/state/atoms-extractor.js.map +1 -1
- package/dist/src/state/diff-engine.d.ts.map +1 -1
- package/dist/src/state/diff-engine.js +6 -33
- package/dist/src/state/diff-engine.js.map +1 -1
- package/dist/src/state/element-identity.d.ts +3 -6
- package/dist/src/state/element-identity.d.ts.map +1 -1
- package/dist/src/state/element-identity.js +10 -7
- package/dist/src/state/element-identity.js.map +1 -1
- package/dist/src/state/element-ref.types.d.ts +5 -27
- package/dist/src/state/element-ref.types.d.ts.map +1 -1
- package/dist/src/state/state-manager.d.ts.map +1 -1
- package/dist/src/state/state-manager.js +3 -1
- package/dist/src/state/state-manager.js.map +1 -1
- package/dist/src/state/state-renderer.d.ts.map +1 -1
- package/dist/src/state/state-renderer.js +3 -1
- package/dist/src/state/state-renderer.js.map +1 -1
- package/dist/src/state/types.d.ts +2 -1
- package/dist/src/state/types.d.ts.map +1 -1
- package/dist/src/state/url-sanitization.d.ts +1 -1
- package/dist/src/state/url-sanitization.d.ts.map +1 -1
- package/dist/src/state/url-sanitization.js +29 -13
- package/dist/src/state/url-sanitization.js.map +1 -1
- package/dist/src/tools/action-context.d.ts +6 -11
- package/dist/src/tools/action-context.d.ts.map +1 -1
- package/dist/src/tools/action-context.js +10 -19
- package/dist/src/tools/action-context.js.map +1 -1
- package/dist/src/tools/action-stabilization.d.ts.map +1 -1
- package/dist/src/tools/action-stabilization.js +6 -0
- package/dist/src/tools/action-stabilization.js.map +1 -1
- package/dist/src/tools/browser-tools.d.ts +3 -2
- package/dist/src/tools/browser-tools.d.ts.map +1 -1
- package/dist/src/tools/browser-tools.js +5 -3
- package/dist/src/tools/browser-tools.js.map +1 -1
- package/dist/src/tools/canvas-tools.d.ts +2 -1
- package/dist/src/tools/canvas-tools.d.ts.map +1 -1
- package/dist/src/tools/canvas-tools.js +5 -7
- package/dist/src/tools/canvas-tools.js.map +1 -1
- package/dist/src/tools/errors.d.ts +2 -34
- package/dist/src/tools/errors.d.ts.map +1 -1
- package/dist/src/tools/errors.js +1 -44
- package/dist/src/tools/errors.js.map +1 -1
- package/dist/src/tools/execute-action.d.ts +4 -3
- package/dist/src/tools/execute-action.d.ts.map +1 -1
- package/dist/src/tools/execute-action.js +32 -23
- package/dist/src/tools/execute-action.js.map +1 -1
- package/dist/src/tools/form-tools.d.ts +3 -8
- package/dist/src/tools/form-tools.d.ts.map +1 -1
- package/dist/src/tools/form-tools.js +38 -18
- package/dist/src/tools/form-tools.js.map +1 -1
- package/dist/src/tools/index.d.ts +6 -6
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +7 -10
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/interaction-tools.d.ts +6 -5
- package/dist/src/tools/interaction-tools.d.ts.map +1 -1
- package/dist/src/tools/interaction-tools.js +29 -32
- package/dist/src/tools/interaction-tools.js.map +1 -1
- package/dist/src/tools/navigation-tools.d.ts +7 -13
- package/dist/src/tools/navigation-tools.d.ts.map +1 -1
- package/dist/src/tools/navigation-tools.js +52 -59
- package/dist/src/tools/navigation-tools.js.map +1 -1
- package/dist/src/tools/observation-tools.d.ts +6 -5
- package/dist/src/tools/observation-tools.d.ts.map +1 -1
- package/dist/src/tools/observation-tools.js +30 -34
- package/dist/src/tools/observation-tools.js.map +1 -1
- package/dist/src/tools/readability-tools.d.ts +16 -0
- package/dist/src/tools/readability-tools.d.ts.map +1 -0
- package/dist/src/tools/readability-tools.js +45 -0
- package/dist/src/tools/readability-tools.js.map +1 -0
- package/dist/src/tools/response-builder.d.ts +20 -32
- package/dist/src/tools/response-builder.d.ts.map +1 -1
- package/dist/src/tools/response-builder.js +31 -47
- package/dist/src/tools/response-builder.js.map +1 -1
- package/dist/src/tools/stale-element-retry.d.ts.map +1 -1
- package/dist/src/tools/stale-element-retry.js +37 -2
- package/dist/src/tools/stale-element-retry.js.map +1 -1
- package/dist/src/tools/tool-context.d.ts +4 -36
- package/dist/src/tools/tool-context.d.ts.map +1 -1
- package/dist/src/tools/tool-context.js +6 -75
- package/dist/src/tools/tool-context.js.map +1 -1
- package/dist/src/tools/tool-context.types.d.ts +141 -0
- package/dist/src/tools/tool-context.types.d.ts.map +1 -0
- package/dist/src/tools/tool-context.types.js +11 -0
- package/dist/src/tools/tool-context.types.js.map +1 -0
- package/dist/src/tools/tool-registration.d.ts +25 -0
- package/dist/src/tools/tool-registration.d.ts.map +1 -0
- package/dist/src/tools/tool-registration.js +180 -0
- package/dist/src/tools/tool-registration.js.map +1 -0
- package/dist/src/tools/tool-schemas.d.ts +88 -1947
- package/dist/src/tools/tool-schemas.d.ts.map +1 -1
- package/dist/src/tools/tool-schemas.js +21 -302
- package/dist/src/tools/tool-schemas.js.map +1 -1
- package/dist/src/tools/viewport-tools.d.ts +4 -3
- package/dist/src/tools/viewport-tools.d.ts.map +1 -1
- package/dist/src/tools/viewport-tools.js +17 -21
- package/dist/src/tools/viewport-tools.js.map +1 -1
- package/dist/src/worker/chrome-worker-process.d.ts +4 -0
- package/dist/src/worker/chrome-worker-process.d.ts.map +1 -1
- package/dist/src/worker/chrome-worker-process.js +1 -1
- package/dist/src/worker/chrome-worker-process.js.map +1 -1
- package/package.json +7 -3
- package/dist/src/factpack/action-selector.d.ts +0 -36
- package/dist/src/factpack/action-selector.d.ts.map +0 -1
- package/dist/src/factpack/action-selector.js +0 -367
- package/dist/src/factpack/action-selector.js.map +0 -1
- package/dist/src/factpack/dialog-detector.d.ts +0 -19
- package/dist/src/factpack/dialog-detector.d.ts.map +0 -1
- package/dist/src/factpack/dialog-detector.js +0 -354
- package/dist/src/factpack/dialog-detector.js.map +0 -1
- package/dist/src/factpack/form-detector.d.ts +0 -28
- package/dist/src/factpack/form-detector.d.ts.map +0 -1
- package/dist/src/factpack/form-detector.js +0 -555
- package/dist/src/factpack/form-detector.js.map +0 -1
- package/dist/src/factpack/index.d.ts +0 -32
- package/dist/src/factpack/index.d.ts.map +0 -1
- package/dist/src/factpack/index.js +0 -73
- package/dist/src/factpack/index.js.map +0 -1
- package/dist/src/factpack/page-classifier.d.ts +0 -22
- package/dist/src/factpack/page-classifier.d.ts.map +0 -1
- package/dist/src/factpack/page-classifier.js +0 -526
- package/dist/src/factpack/page-classifier.js.map +0 -1
- package/dist/src/factpack/types.d.ts +0 -307
- package/dist/src/factpack/types.d.ts.map +0 -1
- package/dist/src/factpack/types.js +0 -12
- package/dist/src/factpack/types.js.map +0 -1
- package/dist/src/lib/constants.d.ts +0 -27
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -63
- package/dist/src/lib/constants.js.map +0 -1
- package/dist/src/lib/index.d.ts +0 -12
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -17
- package/dist/src/lib/index.js.map +0 -1
- package/dist/src/lib/regions.d.ts +0 -29
- package/dist/src/lib/regions.d.ts.map +0 -1
- package/dist/src/lib/regions.js +0 -93
- package/dist/src/lib/regions.js.map +0 -1
- package/dist/src/lib/scoring.d.ts +0 -47
- package/dist/src/lib/scoring.d.ts.map +0 -1
- package/dist/src/lib/scoring.js +0 -79
- package/dist/src/lib/scoring.js.map +0 -1
- package/dist/src/lib/selectors.d.ts +0 -42
- package/dist/src/lib/selectors.d.ts.map +0 -1
- package/dist/src/lib/selectors.js +0 -138
- package/dist/src/lib/selectors.js.map +0 -1
- package/dist/src/renderer/budget-manager.d.ts +0 -46
- package/dist/src/renderer/budget-manager.d.ts.map +0 -1
- package/dist/src/renderer/budget-manager.js +0 -133
- package/dist/src/renderer/budget-manager.js.map +0 -1
- package/dist/src/renderer/constants.d.ts +0 -38
- package/dist/src/renderer/constants.d.ts.map +0 -1
- package/dist/src/renderer/constants.js +0 -29
- package/dist/src/renderer/constants.js.map +0 -1
- package/dist/src/renderer/index.d.ts +0 -12
- package/dist/src/renderer/index.d.ts.map +0 -1
- package/dist/src/renderer/index.js +0 -16
- package/dist/src/renderer/index.js.map +0 -1
- package/dist/src/renderer/section-renderers.d.ts +0 -42
- package/dist/src/renderer/section-renderers.d.ts.map +0 -1
- package/dist/src/renderer/section-renderers.js +0 -252
- package/dist/src/renderer/section-renderers.js.map +0 -1
- package/dist/src/renderer/token-counter.d.ts +0 -45
- package/dist/src/renderer/token-counter.d.ts.map +0 -1
- package/dist/src/renderer/token-counter.js +0 -65
- package/dist/src/renderer/token-counter.js.map +0 -1
- package/dist/src/renderer/types.d.ts +0 -71
- package/dist/src/renderer/types.d.ts.map +0 -1
- package/dist/src/renderer/types.js +0 -7
- package/dist/src/renderer/types.js.map +0 -1
- package/dist/src/renderer/xml-renderer.d.ts +0 -42
- package/dist/src/renderer/xml-renderer.d.ts.map +0 -1
- package/dist/src/renderer/xml-renderer.js +0 -103
- package/dist/src/renderer/xml-renderer.js.map +0 -1
- package/dist/src/server/session-store.d.ts +0 -163
- package/dist/src/server/session-store.d.ts.map +0 -1
- package/dist/src/server/session-store.js +0 -248
- package/dist/src/server/session-store.js.map +0 -1
- package/dist/src/session/session-worker-binding.d.ts +0 -57
- package/dist/src/session/session-worker-binding.d.ts.map +0 -1
- package/dist/src/session/session-worker-binding.js +0 -109
- package/dist/src/session/session-worker-binding.js.map +0 -1
- package/dist/src/shared/services/dom-transformer.service.d.ts +0 -71
- package/dist/src/shared/services/dom-transformer.service.d.ts.map +0 -1
- package/dist/src/shared/services/dom-transformer.service.js +0 -190
- package/dist/src/shared/services/dom-transformer.service.js.map +0 -1
- package/dist/src/shared/services/selector-builder.service.d.ts +0 -53
- package/dist/src/shared/services/selector-builder.service.d.ts.map +0 -1
- package/dist/src/shared/services/selector-builder.service.js +0 -240
- package/dist/src/shared/services/selector-builder.service.js.map +0 -1
- package/dist/src/state/constants.d.ts +0 -125
- package/dist/src/state/constants.d.ts.map +0 -1
- package/dist/src/state/constants.js +0 -131
- package/dist/src/state/constants.js.map +0 -1
- package/dist/src/tools/state-manager-registry.d.ts +0 -26
- package/dist/src/tools/state-manager-registry.d.ts.map +0 -1
- package/dist/src/tools/state-manager-registry.js +0 -39
- 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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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;
|
|
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":"AAAA;;;;;GAKG;AAKH,OAAkB,EAEhB,KAAK,cAAc,EACnB,KAAK,IAAI,EAEV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/browser/session-manager.ts"],"names":[],"mappings":"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"}
|