@amalgm/browser 0.1.2-preview.35541635545 → 0.1.2-preview.37254096068
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/PURPOSE.md +119 -97
- package/README.md +51 -56
- package/SECURITY.md +10 -8
- package/dist/bin/amalgm-browser-mcp.js +2 -3
- package/dist/bin/amalgm-browser-mcp.js.map +1 -1
- package/dist/bin/amalgm-browser-rest.js +8 -18
- package/dist/bin/amalgm-browser-rest.js.map +1 -1
- package/dist/src/account.d.ts +8 -0
- package/dist/src/account.js +42 -0
- package/dist/src/account.js.map +1 -0
- package/dist/src/action.d.ts +1 -2
- package/dist/src/action.js +3 -7
- package/dist/src/action.js.map +1 -1
- package/dist/src/adapters/cli/actions.d.ts +0 -1
- package/dist/src/adapters/cli/actions.js +0 -7
- package/dist/src/adapters/cli/actions.js.map +1 -1
- package/dist/src/adapters/cli/help.d.ts +1 -1
- package/dist/src/adapters/cli/help.js +1 -4
- package/dist/src/adapters/cli/help.js.map +1 -1
- package/dist/src/adapters/cli/resources.js +0 -22
- package/dist/src/adapters/cli/resources.js.map +1 -1
- package/dist/src/adapters/cli/run.js +25 -19
- package/dist/src/adapters/cli/run.js.map +1 -1
- package/dist/src/adapters/execute.js +2 -2
- package/dist/src/adapters/execute.js.map +1 -1
- package/dist/src/adapters/http/events.d.ts +5 -2
- package/dist/src/adapters/http/events.js +18 -2
- package/dist/src/adapters/http/events.js.map +1 -1
- package/dist/src/adapters/http/internal-routes.js +9 -4
- package/dist/src/adapters/http/internal-routes.js.map +1 -1
- package/dist/src/adapters/http/navigation-stream.d.ts +4 -0
- package/dist/src/adapters/http/navigation-stream.js +17 -0
- package/dist/src/adapters/http/navigation-stream.js.map +1 -0
- package/dist/src/adapters/http/openapi.js +2 -8
- package/dist/src/adapters/http/openapi.js.map +1 -1
- package/dist/src/adapters/http/server.js +54 -14
- package/dist/src/adapters/http/server.js.map +1 -1
- package/dist/src/adapters/http/session-routes.js +0 -1
- package/dist/src/adapters/http/session-routes.js.map +1 -1
- package/dist/src/adapters/http/stream.d.ts +6 -0
- package/dist/src/adapters/http/stream.js +89 -0
- package/dist/src/adapters/http/stream.js.map +1 -0
- package/dist/src/adapters/mcp/server.js +2 -2
- package/dist/src/adapters/mcp/server.js.map +1 -1
- package/dist/src/adapters/mcp/tools.js +2 -4
- package/dist/src/adapters/mcp/tools.js.map +1 -1
- package/dist/src/adapters/mcp/types.d.ts +3 -2
- package/dist/src/adapters/toolbox/manifest.js +1 -1
- package/dist/src/adapters/toolbox/manifest.js.map +1 -1
- package/dist/src/auth/login.d.ts +3 -1
- package/dist/src/auth/login.js +48 -33
- package/dist/src/auth/login.js.map +1 -1
- package/dist/src/auth/service.js +56 -67
- package/dist/src/auth/service.js.map +1 -1
- package/dist/src/{drivers/cdp → cdp}/capture.d.ts +1 -1
- package/dist/src/{drivers/cdp → cdp}/capture.js +1 -1
- package/dist/src/cdp/capture.js.map +1 -0
- package/dist/src/{drivers/cdp → cdp}/client.d.ts +3 -1
- package/dist/src/{drivers/cdp → cdp}/client.js +51 -14
- package/dist/src/cdp/client.js.map +1 -0
- package/dist/src/cdp/input.js.map +1 -0
- package/dist/src/cdp/navigation.d.ts +5 -0
- package/dist/src/cdp/navigation.js +47 -0
- package/dist/src/cdp/navigation.js.map +1 -0
- package/dist/src/{drivers/cdp → cdp}/screencast.js +1 -1
- package/dist/src/cdp/screencast.js.map +1 -0
- package/dist/src/chrome/cookie-adapter.d.ts +23 -0
- package/dist/src/chrome/cookie-adapter.js +74 -0
- package/dist/src/chrome/cookie-adapter.js.map +1 -0
- package/dist/src/chrome/cookie-changes.d.ts +12 -0
- package/dist/src/chrome/cookie-changes.js +100 -0
- package/dist/src/chrome/cookie-changes.js.map +1 -0
- package/dist/src/chrome/cookie-observer.d.ts +20 -0
- package/dist/src/chrome/cookie-observer.js +44 -0
- package/dist/src/chrome/cookie-observer.js.map +1 -0
- package/dist/src/chrome/executable.d.ts +1 -0
- package/dist/src/chrome/executable.js +55 -0
- package/dist/src/chrome/executable.js.map +1 -0
- package/dist/src/chrome/flags.d.ts +7 -0
- package/dist/src/chrome/flags.js +59 -0
- package/dist/src/chrome/flags.js.map +1 -0
- package/dist/src/chrome/host.d.ts +25 -0
- package/dist/src/chrome/host.js +137 -0
- package/dist/src/chrome/host.js.map +1 -0
- package/dist/src/chrome/launch.d.ts +11 -0
- package/dist/src/chrome/launch.js +105 -0
- package/dist/src/chrome/launch.js.map +1 -0
- package/dist/src/chrome/relay/editing.d.ts +2 -0
- package/dist/src/chrome/relay/editing.js +14 -0
- package/dist/src/chrome/relay/editing.js.map +1 -0
- package/dist/src/chrome/relay/server.d.ts +18 -0
- package/dist/src/chrome/relay/server.js +120 -0
- package/dist/src/chrome/relay/server.js.map +1 -0
- package/dist/src/chrome/relay/targets.d.ts +11 -0
- package/dist/src/chrome/relay/targets.js +59 -0
- package/dist/src/chrome/relay/targets.js.map +1 -0
- package/dist/src/chrome/relay/view.d.ts +34 -0
- package/dist/src/chrome/relay/view.js +185 -0
- package/dist/src/chrome/relay/view.js.map +1 -0
- package/dist/src/cookies/adapter-credential.d.ts +6 -0
- package/dist/src/cookies/adapter-credential.js +33 -0
- package/dist/src/cookies/adapter-credential.js.map +1 -0
- package/dist/src/cookies/coordinator.d.ts +14 -13
- package/dist/src/cookies/coordinator.js +157 -75
- package/dist/src/cookies/coordinator.js.map +1 -1
- package/dist/src/cookies/database.d.ts +29 -0
- package/dist/src/cookies/database.js +113 -0
- package/dist/src/cookies/database.js.map +1 -0
- package/dist/src/cookies/diff.d.ts +6 -0
- package/dist/src/cookies/diff.js +19 -0
- package/dist/src/cookies/diff.js.map +1 -0
- package/dist/src/cookies/http-store.d.ts +7 -0
- package/dist/src/cookies/http-store.js +105 -0
- package/dist/src/cookies/http-store.js.map +1 -0
- package/dist/src/cookies/jar.d.ts +12 -11
- package/dist/src/cookies/jar.js +128 -120
- package/dist/src/cookies/jar.js.map +1 -1
- package/dist/src/cookies/policy.js +10 -4
- package/dist/src/cookies/policy.js.map +1 -1
- package/dist/src/cookies/secret-file.d.ts +4 -0
- package/dist/src/cookies/secret-file.js +47 -9
- package/dist/src/cookies/secret-file.js.map +1 -1
- package/dist/src/cookies/types.d.ts +34 -2
- package/dist/src/cookies.d.ts +2 -0
- package/dist/src/cookies.js +2 -0
- package/dist/src/cookies.js.map +1 -1
- package/dist/src/defaults.d.ts +1 -5
- package/dist/src/defaults.js +49 -58
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/driver/cli-policy.d.ts +1 -0
- package/dist/src/driver/cli-policy.js +17 -0
- package/dist/src/driver/cli-policy.js.map +1 -0
- package/dist/src/{drivers/headless → driver}/command.d.ts +3 -7
- package/dist/src/{drivers/headless → driver}/command.js +29 -29
- package/dist/src/driver/command.js.map +1 -0
- package/dist/src/{drivers/headless → driver}/driver.d.ts +13 -10
- package/dist/src/{drivers/headless → driver}/driver.js +67 -82
- package/dist/src/driver/driver.js.map +1 -0
- package/dist/src/{interaction/delta.d.ts → driver/evidence.d.ts} +3 -2
- package/dist/src/{interaction/delta.js → driver/evidence.js} +6 -3
- package/dist/src/driver/evidence.js.map +1 -0
- package/dist/src/driver/executable.js.map +1 -0
- package/dist/src/driver/stream.d.ts +1 -0
- package/dist/src/driver/stream.js +22 -0
- package/dist/src/driver/stream.js.map +1 -0
- package/dist/src/driver/wait.d.ts +6 -0
- package/dist/src/driver/wait.js +28 -0
- package/dist/src/driver/wait.js.map +1 -0
- package/dist/src/electron/adblock/cache.js.map +1 -0
- package/dist/src/electron/adblock/cosmetics.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/adblock/index.d.ts +0 -1
- package/dist/src/{drivers/electron/native → electron}/adblock/index.js +0 -1
- package/dist/src/{drivers/electron/native → electron}/adblock/index.js.map +1 -1
- package/dist/src/electron/adblock/policy.js.map +1 -0
- package/dist/src/electron/adblock/preload.js.map +1 -0
- package/dist/src/electron/adblock/settings.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/contracts.d.ts +0 -14
- package/dist/src/{drivers/electron/native → electron}/contracts.js +0 -1
- package/dist/src/electron/contracts.js.map +1 -0
- package/dist/src/{drivers/electron → electron}/cookie-adapter.d.ts +4 -4
- package/dist/src/{drivers/electron → electron}/cookie-adapter.js +9 -6
- package/dist/src/electron/cookie-adapter.js.map +1 -0
- package/dist/src/electron/cookie-sync.d.ts +6 -0
- package/dist/src/electron/cookie-sync.js +18 -0
- package/dist/src/electron/cookie-sync.js.map +1 -0
- package/dist/src/electron/policy.js.map +1 -0
- package/dist/src/electron/session.d.ts +2 -0
- package/dist/src/electron/session.js +9 -0
- package/dist/src/electron/session.js.map +1 -0
- package/dist/src/electron/shell/adblock-ipc.js.map +1 -0
- package/dist/src/electron/shell/context-menu.js.map +1 -0
- package/dist/src/electron/shell/downloads.js.map +1 -0
- package/dist/src/electron/shell/helpers.js.map +1 -0
- package/dist/src/electron/shell/permissions.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/shell/sites.d.ts +1 -3
- package/dist/src/{drivers/electron/native → electron}/shell/sites.js +2 -34
- package/dist/src/electron/shell/sites.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/shell/types.d.ts +0 -1
- package/dist/src/electron/shell/types.js.map +1 -0
- package/dist/src/electron/shell.d.ts +13 -0
- package/dist/src/electron/shell.js +73 -0
- package/dist/src/electron/shell.js.map +1 -0
- package/dist/src/electron/surface/commands.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/surface/create.js +0 -6
- package/dist/src/electron/surface/create.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/surface/events.js +1 -13
- package/dist/src/electron/surface/events.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/surface/presentation.d.ts +2 -9
- package/dist/src/electron/surface/presentation.js +29 -0
- package/dist/src/electron/surface/presentation.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/surface/state.d.ts +5 -0
- package/dist/src/{drivers/electron/native → electron}/surface/state.js +10 -4
- package/dist/src/electron/surface/state.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/surface/types.d.ts +2 -8
- package/dist/src/electron/surface/types.js.map +1 -0
- package/dist/src/{drivers/electron/native → electron}/surface-controller.js +9 -12
- package/dist/src/electron/surface-controller.js.map +1 -0
- package/dist/src/electron-preload.cjs +1 -1
- package/dist/src/electron.cjs +587 -820
- package/dist/src/electron.d.cts +4 -14
- package/dist/src/electron.d.ts +4 -14
- package/dist/src/electron.js +4 -14
- package/dist/src/electron.js.map +1 -1
- package/dist/src/errors.d.ts +1 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +2 -3
- package/dist/src/index.js +0 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/migration/legacy-migration.d.ts +0 -1
- package/dist/src/migration/legacy-migration.js +3 -9
- package/dist/src/migration/legacy-migration.js.map +1 -1
- package/dist/src/migration/legacy-rows.d.ts +1 -2
- package/dist/src/migration/legacy-rows.js +0 -14
- package/dist/src/migration/legacy-rows.js.map +1 -1
- package/dist/src/ports.d.ts +12 -15
- package/dist/src/ports.js.map +1 -1
- package/dist/src/process.d.ts +1 -0
- package/dist/src/process.js +11 -0
- package/dist/src/process.js.map +1 -1
- package/dist/src/product-service.d.ts +4 -6
- package/dist/src/product-service.js +21 -15
- package/dist/src/product-service.js.map +1 -1
- package/dist/src/recording/encoder.js +1 -1
- package/dist/src/recording/encoder.js.map +1 -1
- package/dist/src/recording/service.d.ts +4 -0
- package/dist/src/recording/service.js +72 -62
- package/dist/src/recording/service.js.map +1 -1
- package/dist/src/recording/source.js +1 -1
- package/dist/src/recording/source.js.map +1 -1
- package/dist/src/registry.d.ts +4 -0
- package/dist/src/registry.js +17 -0
- package/dist/src/registry.js.map +1 -1
- package/dist/src/service-options.d.ts +5 -7
- package/dist/src/service.d.ts +16 -18
- package/dist/src/service.js +108 -108
- package/dist/src/service.js.map +1 -1
- package/dist/src/sessions/operations.d.ts +12 -0
- package/dist/src/sessions/operations.js +56 -0
- package/dist/src/sessions/operations.js.map +1 -0
- package/dist/src/testing.d.ts +8 -4
- package/dist/src/testing.js +7 -5
- package/dist/src/testing.js.map +1 -1
- package/dist/src/types.d.ts +0 -39
- package/docs/ACTIONS.md +0 -4
- package/docs/ARCHITECTURE.md +51 -55
- package/docs/AUTHENTICATION.md +41 -36
- package/docs/AXIOMS.md +13 -11
- package/docs/CHROME.md +143 -0
- package/docs/CLI.md +63 -31
- package/docs/COMPATIBILITY.md +14 -23
- package/docs/COOKIES.md +95 -52
- package/docs/ELECTRON_INTEGRATION.md +84 -77
- package/docs/EVENTS.md +5 -9
- package/docs/MCP.md +10 -6
- package/docs/MIGRATION.md +43 -36
- package/docs/OPERATIONS.md +48 -40
- package/docs/README.md +5 -5
- package/docs/REALTIME_BOUNDARY.md +3 -3
- package/docs/RECORDING.md +16 -15
- package/docs/REST.md +57 -26
- package/docs/SDK.md +65 -55
- package/docs/SHELL_INTEGRATION.md +78 -36
- package/docs/TESTING.md +58 -42
- package/docs/TOOLBOX_INTEGRATION.md +9 -4
- package/docs/TROUBLESHOOTING.md +68 -40
- package/examples/basic.ts +1 -0
- package/package.json +8 -15
- package/skills/use-amalgm-browser/SKILL.md +16 -29
- package/skills/use-amalgm-browser/references/actions.md +2 -2
- package/dist/src/adapters/http/profile-routes.d.ts +0 -2
- package/dist/src/adapters/http/profile-routes.js +0 -42
- package/dist/src/adapters/http/profile-routes.js.map +0 -1
- package/dist/src/auth/transport.d.ts +0 -8
- package/dist/src/auth/transport.js +0 -45
- package/dist/src/auth/transport.js.map +0 -1
- package/dist/src/drivers/cdp/capture.js.map +0 -1
- package/dist/src/drivers/cdp/client.js.map +0 -1
- package/dist/src/drivers/cdp/input.js.map +0 -1
- package/dist/src/drivers/cdp/screencast.js.map +0 -1
- package/dist/src/drivers/cdp/target.d.ts +0 -4
- package/dist/src/drivers/cdp/target.js +0 -34
- package/dist/src/drivers/cdp/target.js.map +0 -1
- package/dist/src/drivers/electron/advertisement.d.ts +0 -12
- package/dist/src/drivers/electron/advertisement.js +0 -57
- package/dist/src/drivers/electron/advertisement.js.map +0 -1
- package/dist/src/drivers/electron/contracts.d.ts +0 -45
- package/dist/src/drivers/electron/contracts.js +0 -10
- package/dist/src/drivers/electron/contracts.js.map +0 -1
- package/dist/src/drivers/electron/cookie-adapter.js.map +0 -1
- package/dist/src/drivers/electron/driver.d.ts +0 -19
- package/dist/src/drivers/electron/driver.js +0 -115
- package/dist/src/drivers/electron/driver.js.map +0 -1
- package/dist/src/drivers/electron/native/adblock/cache.js.map +0 -1
- package/dist/src/drivers/electron/native/adblock/cosmetics.js.map +0 -1
- package/dist/src/drivers/electron/native/adblock/policy.js.map +0 -1
- package/dist/src/drivers/electron/native/adblock/preload.js.map +0 -1
- package/dist/src/drivers/electron/native/adblock/settings.js.map +0 -1
- package/dist/src/drivers/electron/native/config.d.ts +0 -4
- package/dist/src/drivers/electron/native/config.js +0 -9
- package/dist/src/drivers/electron/native/config.js.map +0 -1
- package/dist/src/drivers/electron/native/contracts.js.map +0 -1
- package/dist/src/drivers/electron/native/policy.js.map +0 -1
- package/dist/src/drivers/electron/native/session.d.ts +0 -4
- package/dist/src/drivers/electron/native/session.js +0 -11
- package/dist/src/drivers/electron/native/session.js.map +0 -1
- package/dist/src/drivers/electron/native/shell/adblock-ipc.js.map +0 -1
- package/dist/src/drivers/electron/native/shell/context-menu.js.map +0 -1
- package/dist/src/drivers/electron/native/shell/downloads.js.map +0 -1
- package/dist/src/drivers/electron/native/shell/helpers.js.map +0 -1
- package/dist/src/drivers/electron/native/shell/permissions.js.map +0 -1
- package/dist/src/drivers/electron/native/shell/sites.js.map +0 -1
- package/dist/src/drivers/electron/native/shell/types.js.map +0 -1
- package/dist/src/drivers/electron/native/shell.d.ts +0 -14
- package/dist/src/drivers/electron/native/shell.js +0 -115
- package/dist/src/drivers/electron/native/shell.js.map +0 -1
- package/dist/src/drivers/electron/native/surface/commands.js.map +0 -1
- package/dist/src/drivers/electron/native/surface/create.js.map +0 -1
- package/dist/src/drivers/electron/native/surface/events.js.map +0 -1
- package/dist/src/drivers/electron/native/surface/presentation.js +0 -87
- package/dist/src/drivers/electron/native/surface/presentation.js.map +0 -1
- package/dist/src/drivers/electron/native/surface/state.js.map +0 -1
- package/dist/src/drivers/electron/native/surface/types.js.map +0 -1
- package/dist/src/drivers/electron/native/surface-controller.js.map +0 -1
- package/dist/src/drivers/electron/policy.d.ts +0 -4
- package/dist/src/drivers/electron/policy.js +0 -39
- package/dist/src/drivers/electron/policy.js.map +0 -1
- package/dist/src/drivers/electron/session.d.ts +0 -4
- package/dist/src/drivers/electron/session.js +0 -5
- package/dist/src/drivers/electron/session.js.map +0 -1
- package/dist/src/drivers/headless/command.js.map +0 -1
- package/dist/src/drivers/headless/cookie-adapter.d.ts +0 -16
- package/dist/src/drivers/headless/cookie-adapter.js +0 -59
- package/dist/src/drivers/headless/cookie-adapter.js.map +0 -1
- package/dist/src/drivers/headless/driver.js.map +0 -1
- package/dist/src/drivers/headless/executable.js.map +0 -1
- package/dist/src/drivers/headless/screencast.d.ts +0 -3
- package/dist/src/drivers/headless/screencast.js +0 -21
- package/dist/src/drivers/headless/screencast.js.map +0 -1
- package/dist/src/headless.d.ts +0 -3
- package/dist/src/headless.js +0 -4
- package/dist/src/headless.js.map +0 -1
- package/dist/src/interaction/delta.js.map +0 -1
- package/dist/src/interaction/typing.d.ts +0 -39
- package/dist/src/interaction/typing.js +0 -189
- package/dist/src/interaction/typing.js.map +0 -1
- package/dist/src/profiles/directories.d.ts +0 -9
- package/dist/src/profiles/directories.js +0 -57
- package/dist/src/profiles/directories.js.map +0 -1
- package/dist/src/profiles/service.d.ts +0 -30
- package/dist/src/profiles/service.js +0 -89
- package/dist/src/profiles/service.js.map +0 -1
- package/dist/src/runtime-selector.d.ts +0 -12
- package/dist/src/runtime-selector.js +0 -72
- package/dist/src/runtime-selector.js.map +0 -1
- package/docs/HEADLESS_RUNTIME.md +0 -58
- package/examples/custom-driver.ts +0 -45
- /package/dist/src/{drivers/cdp → cdp}/input.d.ts +0 -0
- /package/dist/src/{drivers/cdp → cdp}/input.js +0 -0
- /package/dist/src/{drivers/cdp → cdp}/screencast.d.ts +0 -0
- /package/dist/src/{drivers/headless → driver}/executable.d.ts +0 -0
- /package/dist/src/{drivers/headless → driver}/executable.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/cache.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/cache.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/cosmetics.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/cosmetics.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/policy.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/policy.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/preload.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/preload.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/settings.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/adblock/settings.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/policy.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/policy.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/adblock-ipc.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/adblock-ipc.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/context-menu.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/context-menu.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/downloads.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/downloads.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/helpers.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/helpers.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/permissions.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/permissions.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/shell/types.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/surface/commands.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/surface/commands.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/surface/create.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/surface/events.d.ts +0 -0
- /package/dist/src/{drivers/electron/native → electron}/surface/types.js +0 -0
- /package/dist/src/{drivers/electron/native → electron}/surface-controller.d.ts +0 -0
package/dist/src/service.js
CHANGED
|
@@ -1,67 +1,54 @@
|
|
|
1
1
|
import { BrowserError, asBrowserError } from './errors.js';
|
|
2
|
-
import {
|
|
2
|
+
import { enrollAccount, LOCAL_ACCOUNT } from './account.js';
|
|
3
|
+
import { boundResult, safeOrigin, validateAction } from './action.js';
|
|
3
4
|
import { newId, safeId } from './ids.js';
|
|
4
|
-
import {
|
|
5
|
+
import { BrowserOperations } from './sessions/operations.js';
|
|
5
6
|
import { BrowserSessionLeases } from './sessions/leases.js';
|
|
6
7
|
import { staleSessionIds } from './sessions/prune.js';
|
|
7
8
|
import { sanitizeEventText } from './events.js';
|
|
8
9
|
export class BrowserService {
|
|
9
10
|
options;
|
|
10
|
-
|
|
11
|
+
// The signed-in account's profile, which every session browses as.
|
|
12
|
+
account;
|
|
13
|
+
operations = new BrowserOperations();
|
|
14
|
+
opening = new Map();
|
|
11
15
|
opened = new Set();
|
|
12
|
-
profiles;
|
|
13
16
|
leases;
|
|
14
17
|
constructor(options) {
|
|
15
18
|
this.options = options;
|
|
16
|
-
this.
|
|
17
|
-
registry: options.registry,
|
|
18
|
-
...(options.profileDirectories ? { directories: options.profileDirectories } : {}),
|
|
19
|
-
now: () => this.now(),
|
|
20
|
-
generate: () => this.generate('profile'),
|
|
21
|
-
publish: (profileId) => { void this.publish({ type: 'profile.updated', profileId }); },
|
|
22
|
-
});
|
|
19
|
+
this.account = enrollAccount(options.registry, options.account || LOCAL_ACCOUNT, this.now());
|
|
23
20
|
this.leases = new BrowserSessionLeases(options.registry, options.clock);
|
|
24
21
|
}
|
|
25
22
|
async createSession(input = {}) {
|
|
26
|
-
const context = input.context || {};
|
|
27
|
-
await this.authorize('sessions.create', undefined, context);
|
|
28
23
|
const id = safeId(input.id || this.generate('session'));
|
|
29
|
-
|
|
30
|
-
try {
|
|
24
|
+
return this.run(id, 'sessions.create', input.context || {}, async (context) => {
|
|
31
25
|
const existing = this.findSession(id);
|
|
32
26
|
if (existing?.status === 'ready') {
|
|
33
|
-
|
|
34
|
-
await this.options.drivers[existing.backend].open({ session: existing, context });
|
|
35
|
-
this.opened.add(id);
|
|
36
|
-
}
|
|
27
|
+
await this.reopen(existing, context);
|
|
37
28
|
return this.getSession(id);
|
|
38
29
|
}
|
|
39
30
|
if (existing && ['creating', 'closing'].includes(existing.status)) {
|
|
40
31
|
throw new BrowserError('CONFLICT', `Session ${id} is ${existing.status}.`);
|
|
41
32
|
}
|
|
42
|
-
const
|
|
43
|
-
const backend = this.options.runtimeSelector.select(context);
|
|
44
|
-
const driver = this.options.drivers[backend];
|
|
33
|
+
const profileId = this.account.id;
|
|
45
34
|
const now = this.now();
|
|
46
35
|
let session = {
|
|
47
36
|
id,
|
|
48
37
|
...(context.ownerId ? { ownerId: context.ownerId } : {}),
|
|
49
|
-
profileId
|
|
50
|
-
backend,
|
|
38
|
+
profileId,
|
|
51
39
|
status: 'creating',
|
|
52
|
-
capabilities: [...driver.capabilities],
|
|
53
40
|
createdAt: now,
|
|
54
41
|
updatedAt: now,
|
|
55
42
|
lastActiveAt: now,
|
|
56
43
|
};
|
|
57
44
|
this.options.registry.putSession(session);
|
|
58
|
-
await this.publish({ type: 'session.created', sessionId: id, profileId
|
|
45
|
+
await this.publish({ type: 'session.created', sessionId: id, profileId });
|
|
59
46
|
try {
|
|
60
|
-
await driver.open({ session, context });
|
|
47
|
+
await this.options.driver.open({ session, context });
|
|
61
48
|
this.opened.add(id);
|
|
62
49
|
session = { ...session, status: 'ready', updatedAt: this.now(), lastActiveAt: this.now() };
|
|
63
50
|
this.options.registry.putSession(session);
|
|
64
|
-
await this.publish({ type: 'session.ready', sessionId: id, profileId
|
|
51
|
+
await this.publish({ type: 'session.ready', sessionId: id, profileId });
|
|
65
52
|
return session;
|
|
66
53
|
}
|
|
67
54
|
catch (error) {
|
|
@@ -69,16 +56,10 @@ export class BrowserService {
|
|
|
69
56
|
this.opened.delete(id);
|
|
70
57
|
session = { ...session, status: 'failed', error: failure.message, updatedAt: this.now() };
|
|
71
58
|
this.options.registry.putSession(session);
|
|
72
|
-
await this.publish({
|
|
73
|
-
type: 'session.failed', sessionId: id, profileId: profile.id,
|
|
74
|
-
error: sanitizeEventText(failure.message),
|
|
75
|
-
});
|
|
59
|
+
await this.publish({ type: 'session.failed', sessionId: id, profileId, error: sanitizeEventText(failure.message) });
|
|
76
60
|
throw failure;
|
|
77
61
|
}
|
|
78
|
-
}
|
|
79
|
-
finally {
|
|
80
|
-
release();
|
|
81
|
-
}
|
|
62
|
+
});
|
|
82
63
|
}
|
|
83
64
|
getSession(id) {
|
|
84
65
|
const session = this.findSession(id);
|
|
@@ -90,73 +71,81 @@ export class BrowserService {
|
|
|
90
71
|
return this.options.registry.snapshot().sessions;
|
|
91
72
|
}
|
|
92
73
|
async execute(sessionId, action, context = {}) {
|
|
93
|
-
const session = this.getSession(sessionId);
|
|
94
|
-
if (session.status !== 'ready')
|
|
95
|
-
throw new BrowserError('CONFLICT', `Session ${sessionId} is ${session.status}.`);
|
|
96
|
-
if (this.active.has(sessionId))
|
|
97
|
-
throw new BrowserError('CONFLICT', `Session ${sessionId} already has an active action.`);
|
|
98
|
-
await this.authorize(`actions.${action.type}`, sessionId, context);
|
|
99
74
|
if (action.type === 'close') {
|
|
100
|
-
await this.closeSession(sessionId,
|
|
75
|
+
await this.run(undefined, 'actions.close', context, current => this.closeSession(sessionId, current), false, sessionId);
|
|
101
76
|
return { type: 'ok' };
|
|
102
77
|
}
|
|
103
78
|
validateAction(action);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const abort = () => controller.abort(context.signal?.reason);
|
|
108
|
-
context.signal?.addEventListener('abort', abort, { once: true });
|
|
109
|
-
this.active.set(sessionId, controller);
|
|
110
|
-
const operationContext = { ...context, signal: controller.signal };
|
|
111
|
-
try {
|
|
112
|
-
const result = await this.options.drivers[session.backend].execute({ session, context: operationContext }, action);
|
|
113
|
-
this.touchSession(session, result);
|
|
79
|
+
return this.runSession(sessionId, `actions.${action.type}`, context, async (input) => {
|
|
80
|
+
const result = await this.options.driver.execute(input, action);
|
|
81
|
+
this.touchSession(input.session, result);
|
|
114
82
|
if (result.type === 'page' && result.url) {
|
|
115
|
-
await this.publish({ type: 'page.navigated', sessionId, profileId: session.profileId, origin: safeOrigin(result.url) });
|
|
83
|
+
await this.publish({ type: 'page.navigated', sessionId, profileId: input.session.profileId, origin: safeOrigin(result.url) });
|
|
116
84
|
}
|
|
117
85
|
return boundResult(result);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async streamUrl(sessionId, context = {}) {
|
|
89
|
+
return this.runSession(sessionId, 'sessions.stream', context, input => this.options.driver.streamUrl(input), false);
|
|
90
|
+
}
|
|
91
|
+
observeNavigation(sessionId, changed, context = {}) {
|
|
92
|
+
return this.runSession(sessionId, 'sessions.stream', context, async (input) => {
|
|
93
|
+
if (this.options.driver.observeNavigation)
|
|
94
|
+
return this.options.driver.observeNavigation(input, changed);
|
|
95
|
+
changed({ canGoBack: false, canGoForward: false });
|
|
96
|
+
return () => { };
|
|
97
|
+
}, false);
|
|
98
|
+
}
|
|
99
|
+
cancel(sessionId) { return this.operations.cancel(safeId(sessionId)); }
|
|
100
|
+
run(sessionId, operation, context, work, exclusive = false, resourceId = sessionId) {
|
|
101
|
+
return this.operations.run(sessionId, context, exclusive, async (current) => {
|
|
102
|
+
const release = sessionId ? this.leases.acquire(sessionId) : () => { };
|
|
103
|
+
try {
|
|
104
|
+
await this.authorize(operation, resourceId, current);
|
|
105
|
+
current.signal?.throwIfAborted();
|
|
106
|
+
return await work(current);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
throw asBrowserError(error);
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
release();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
127
115
|
}
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
116
|
+
runSession(sessionId, operation, context, work, exclusive = true) {
|
|
117
|
+
const id = safeId(sessionId);
|
|
118
|
+
return this.run(id, operation, context, async (current) => {
|
|
119
|
+
const session = this.getSession(id);
|
|
120
|
+
if (session.status !== 'ready')
|
|
121
|
+
throw new BrowserError('CONFLICT', `Session ${id} is ${session.status}.`);
|
|
122
|
+
await this.reopen(session, current);
|
|
123
|
+
return work({ session, context: current });
|
|
124
|
+
}, exclusive);
|
|
134
125
|
}
|
|
135
126
|
publish(event) {
|
|
136
127
|
return Promise.resolve(this.options.eventSink.publish({ ...event, version: 1, id: this.generate('event'), at: this.now() }));
|
|
137
128
|
}
|
|
138
129
|
async closeSession(sessionId, context = {}) {
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
this.options.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
createProfile(input) {
|
|
159
|
-
return this.profiles.create(input);
|
|
130
|
+
const id = safeId(sessionId);
|
|
131
|
+
return this.run(undefined, 'sessions.close', context, async () => this.operations.retire(id, async () => {
|
|
132
|
+
const release = this.leases.acquire(id);
|
|
133
|
+
try {
|
|
134
|
+
const session = this.getSession(id);
|
|
135
|
+
await this.beforeSessionClose(id);
|
|
136
|
+
this.opened.delete(id);
|
|
137
|
+
const closing = { ...session, status: 'closing', updatedAt: this.now() };
|
|
138
|
+
this.options.registry.putSession(closing);
|
|
139
|
+
await this.options.driver.close({ session: closing, context: {} }).catch((error) => {
|
|
140
|
+
this.options.logger.warn('Browser driver close failed.', { sessionId: id, error: asBrowserError(error).message });
|
|
141
|
+
});
|
|
142
|
+
this.options.registry.putSession({ ...closing, status: 'closed', updatedAt: this.now() });
|
|
143
|
+
await this.publish({ type: 'session.closed', sessionId: id, profileId: session.profileId });
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
release();
|
|
147
|
+
}
|
|
148
|
+
}), false, id);
|
|
160
149
|
}
|
|
161
150
|
pruneSessions(maxAgeMs = 24 * 60 * 60_000) {
|
|
162
151
|
const removed = staleSessionIds(this.listSessions(), this.options.clock.now(), maxAgeMs);
|
|
@@ -164,25 +153,37 @@ export class BrowserService {
|
|
|
164
153
|
this.options.registry.deleteSession(id);
|
|
165
154
|
return removed;
|
|
166
155
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return this.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
156
|
+
// Stops the browser behind every session and releases the registry. Ready
|
|
157
|
+
// sessions reopen on first use in the next service.
|
|
158
|
+
close() {
|
|
159
|
+
return this.operations.close(async () => {
|
|
160
|
+
try {
|
|
161
|
+
await this.beforeClose();
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
this.opened.clear();
|
|
165
|
+
try {
|
|
166
|
+
await this.options.driver.dispose();
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
this.options.registry.close?.();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
174
173
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
async beforeClose() { }
|
|
175
|
+
async beforeSessionClose(_sessionId) { }
|
|
176
|
+
// A ready session from an earlier run is attached once, even with simultaneous viewers.
|
|
177
|
+
async reopen(session, context) {
|
|
178
|
+
if (this.opened.has(session.id))
|
|
179
|
+
return;
|
|
180
|
+
let opening = this.opening.get(session.id);
|
|
181
|
+
if (!opening) {
|
|
182
|
+
opening = this.options.driver.open({ session, context }).then(() => { this.opened.add(session.id); })
|
|
183
|
+
.finally(() => this.opening.delete(session.id));
|
|
184
|
+
this.opening.set(session.id, opening);
|
|
178
185
|
}
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
pruneProfiles(maxAgeMs = 7 * 24 * 60 * 60_000) {
|
|
182
|
-
return this.profiles.prune(maxAgeMs, this.referencedProfileIds(), this.listSessions());
|
|
183
|
-
}
|
|
184
|
-
referencedProfileIds() {
|
|
185
|
-
return new Set(this.listSessions().filter((value) => !['closed', 'failed'].includes(value.status)).map((value) => value.profileId));
|
|
186
|
+
await opening;
|
|
186
187
|
}
|
|
187
188
|
touchSession(session, result) {
|
|
188
189
|
const now = this.now();
|
|
@@ -190,7 +191,6 @@ export class BrowserService {
|
|
|
190
191
|
? { ...session, url: result.url, title: result.title, updatedAt: now, lastActiveAt: now }
|
|
191
192
|
: { ...session, updatedAt: now, lastActiveAt: now };
|
|
192
193
|
this.options.registry.putSession(updated);
|
|
193
|
-
this.profiles.touch(session.profileId);
|
|
194
194
|
}
|
|
195
195
|
findSession(id) {
|
|
196
196
|
return this.options.registry.snapshot().sessions.find((session) => session.id === safeId(id));
|
package/dist/src/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BrowserRuntimeContext } from '../types.js';
|
|
2
|
+
/** Admission precedes async work; retirement cancels and drains admitted work. */
|
|
3
|
+
export declare class BrowserOperations {
|
|
4
|
+
private readonly pending;
|
|
5
|
+
private readonly retiring;
|
|
6
|
+
private stopped;
|
|
7
|
+
private closing;
|
|
8
|
+
run<T>(sessionId: string | undefined, context: BrowserRuntimeContext, exclusive: boolean, work: (context: BrowserRuntimeContext) => Promise<T>): Promise<T>;
|
|
9
|
+
cancel(sessionId: string): boolean;
|
|
10
|
+
retire(sessionId: string, dispose: () => Promise<void>): Promise<void>;
|
|
11
|
+
close(dispose: () => Promise<void>): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { BrowserError } from '../errors.js';
|
|
2
|
+
/** Admission precedes async work; retirement cancels and drains admitted work. */
|
|
3
|
+
export class BrowserOperations {
|
|
4
|
+
pending = new Set();
|
|
5
|
+
retiring = new Map();
|
|
6
|
+
stopped = false;
|
|
7
|
+
closing;
|
|
8
|
+
run(sessionId, context, exclusive, work) {
|
|
9
|
+
if (this.stopped || (sessionId && this.retiring.has(sessionId))) {
|
|
10
|
+
return Promise.reject(new BrowserError('CONFLICT', 'The browser or session is closing.'));
|
|
11
|
+
}
|
|
12
|
+
if (exclusive && [...this.pending].some(value => value.exclusive && value.sessionId === sessionId)) {
|
|
13
|
+
return Promise.reject(new BrowserError('CONFLICT', `Session ${sessionId} already has an active action.`));
|
|
14
|
+
}
|
|
15
|
+
const abort = new AbortController();
|
|
16
|
+
const signal = context.signal ? AbortSignal.any([abort.signal, context.signal]) : abort.signal;
|
|
17
|
+
const operation = { sessionId, exclusive, abort, done: Promise.resolve() };
|
|
18
|
+
this.pending.add(operation);
|
|
19
|
+
const check = () => { if (signal.aborted)
|
|
20
|
+
throw new BrowserError('ABORTED', 'Browser operation was cancelled.'); };
|
|
21
|
+
operation.done = Promise.resolve().then(async () => {
|
|
22
|
+
check();
|
|
23
|
+
const result = await work({ ...context, signal });
|
|
24
|
+
check();
|
|
25
|
+
return result;
|
|
26
|
+
}).finally(() => this.pending.delete(operation));
|
|
27
|
+
return operation.done;
|
|
28
|
+
}
|
|
29
|
+
cancel(sessionId) {
|
|
30
|
+
const operations = [...this.pending].filter(value => value.sessionId === sessionId);
|
|
31
|
+
for (const operation of operations)
|
|
32
|
+
operation.abort.abort();
|
|
33
|
+
return operations.length > 0;
|
|
34
|
+
}
|
|
35
|
+
retire(sessionId, dispose) {
|
|
36
|
+
const existing = this.retiring.get(sessionId);
|
|
37
|
+
if (existing)
|
|
38
|
+
return existing;
|
|
39
|
+
this.cancel(sessionId);
|
|
40
|
+
const pending = [...this.pending].filter(value => value.sessionId === sessionId);
|
|
41
|
+
const closing = Promise.allSettled(pending.map(value => value.done)).then(dispose)
|
|
42
|
+
.finally(() => this.retiring.delete(sessionId));
|
|
43
|
+
this.retiring.set(sessionId, closing);
|
|
44
|
+
return closing;
|
|
45
|
+
}
|
|
46
|
+
close(dispose) {
|
|
47
|
+
if (this.closing)
|
|
48
|
+
return this.closing;
|
|
49
|
+
this.stopped = true;
|
|
50
|
+
for (const operation of this.pending)
|
|
51
|
+
operation.abort.abort();
|
|
52
|
+
this.closing = Promise.allSettled([...this.pending].map(value => value.done)).then(dispose);
|
|
53
|
+
return this.closing;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/sessions/operations.ts"],"names":[],"mappings":"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"}
|
package/dist/src/testing.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import type { BrowserDriver, BrowserDriverSession } from './ports.js';
|
|
2
|
-
import type { BrowserAction, BrowserActionResult
|
|
2
|
+
import type { BrowserAction, BrowserActionResult } from './types.js';
|
|
3
3
|
export { MemoryBrowserRegistry } from './registry.js';
|
|
4
4
|
export declare class TestBrowserDriver implements BrowserDriver {
|
|
5
|
-
readonly kind: BrowserBackendKind;
|
|
6
|
-
readonly capabilities: readonly BrowserCapability[];
|
|
7
5
|
readonly handler: (action: BrowserAction) => BrowserActionResult | Promise<BrowserActionResult>;
|
|
8
6
|
readonly calls: Array<{
|
|
9
7
|
sessionId: string;
|
|
@@ -11,8 +9,14 @@ export declare class TestBrowserDriver implements BrowserDriver {
|
|
|
11
9
|
}>;
|
|
12
10
|
readonly opened: string[];
|
|
13
11
|
readonly closed: string[];
|
|
14
|
-
|
|
12
|
+
disposed: boolean;
|
|
13
|
+
constructor(handler?: (action: BrowserAction) => BrowserActionResult | Promise<BrowserActionResult>);
|
|
15
14
|
open(input: BrowserDriverSession): Promise<void>;
|
|
16
15
|
execute(input: BrowserDriverSession, action: BrowserAction): Promise<BrowserActionResult>;
|
|
17
16
|
close(input: BrowserDriverSession): Promise<void>;
|
|
17
|
+
saveState(_input: BrowserDriverSession): Promise<unknown>;
|
|
18
|
+
loadState(_input: BrowserDriverSession, _state: unknown): Promise<void>;
|
|
19
|
+
startScreencast(): Promise<() => Promise<void>>;
|
|
20
|
+
streamUrl(input: BrowserDriverSession): Promise<string>;
|
|
21
|
+
dispose(): Promise<void>;
|
|
18
22
|
}
|
package/dist/src/testing.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
export { MemoryBrowserRegistry } from './registry.js';
|
|
2
2
|
export class TestBrowserDriver {
|
|
3
|
-
kind;
|
|
4
|
-
capabilities;
|
|
5
3
|
handler;
|
|
6
4
|
calls = [];
|
|
7
5
|
opened = [];
|
|
8
6
|
closed = [];
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.capabilities = capabilities;
|
|
7
|
+
disposed = false;
|
|
8
|
+
constructor(handler = () => ({ type: 'ok' })) {
|
|
12
9
|
this.handler = handler;
|
|
13
10
|
}
|
|
14
11
|
async open(input) { this.opened.push(input.session.id); }
|
|
@@ -17,5 +14,10 @@ export class TestBrowserDriver {
|
|
|
17
14
|
return this.handler(action);
|
|
18
15
|
}
|
|
19
16
|
async close(input) { this.closed.push(input.session.id); }
|
|
17
|
+
async saveState(_input) { return { cookies: [], origins: [] }; }
|
|
18
|
+
async loadState(_input, _state) { }
|
|
19
|
+
async startScreencast() { return async () => { }; }
|
|
20
|
+
async streamUrl(input) { return `ws://127.0.0.1:0/${input.session.id}`; }
|
|
21
|
+
async dispose() { this.disposed = true; }
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=testing.js.map
|
package/dist/src/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,OAAO,iBAAiB;IAOjB;IANF,KAAK,GAAwD,EAAE,CAAC;IAChE,MAAM,GAAa,EAAE,CAAC;IACtB,MAAM,GAAa,EAAE,CAAC;IAC/B,QAAQ,GAAG,KAAK,CAAC;IAEjB,YACW,UACP,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QADf,YAAO,GAAP,OAAO,CACQ;IACvB,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,KAA2B,IAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9F,KAAK,CAAC,OAAO,CAAC,KAA2B,EAAE,MAAqB;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,KAA2B,IAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,KAAK,CAAC,SAAS,CAAC,MAA4B,IAAsB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACxG,KAAK,CAAC,SAAS,CAAC,MAA4B,EAAE,MAAe,IAAkB,CAAC;IAChF,KAAK,CAAC,eAAe,KAAmC,OAAO,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,SAAS,CAAC,KAA2B,IAAqB,OAAO,oBAAoB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChH,KAAK,CAAC,OAAO,KAAoB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;CACzD"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export type BrowserBackendKind = 'electron' | 'headless';
|
|
2
|
-
export type BrowserCapability = 'core' | 'computer-use' | 'recording' | 'auth' | 'full-page-capture' | 'ad-blocking' | 'visible-surface' | 'live-login';
|
|
3
1
|
export type BrowserSessionStatus = 'creating' | 'ready' | 'closing' | 'closed' | 'failed';
|
|
4
2
|
export type BrowserProfileKind = 'durable' | 'ephemeral';
|
|
5
3
|
export interface BrowserRuntimeContext {
|
|
@@ -20,19 +18,11 @@ export interface BrowserProfile {
|
|
|
20
18
|
updatedAt: string;
|
|
21
19
|
lastUsedAt: string;
|
|
22
20
|
}
|
|
23
|
-
export interface BrowserProfileStatus {
|
|
24
|
-
profile: BrowserProfile;
|
|
25
|
-
live: boolean;
|
|
26
|
-
referenced: boolean;
|
|
27
|
-
locked: boolean;
|
|
28
|
-
}
|
|
29
21
|
export interface BrowserSession {
|
|
30
22
|
id: string;
|
|
31
23
|
ownerId?: string;
|
|
32
24
|
profileId: string;
|
|
33
|
-
backend: BrowserBackendKind;
|
|
34
25
|
status: BrowserSessionStatus;
|
|
35
|
-
capabilities: BrowserCapability[];
|
|
36
26
|
createdAt: string;
|
|
37
27
|
updatedAt: string;
|
|
38
28
|
lastActiveAt: string;
|
|
@@ -201,19 +191,12 @@ export type BrowserEvent = {
|
|
|
201
191
|
profileId?: string;
|
|
202
192
|
} & ({
|
|
203
193
|
type: 'session.created' | 'session.ready' | 'session.closed';
|
|
204
|
-
backend: BrowserBackendKind;
|
|
205
194
|
} | {
|
|
206
195
|
type: 'session.failed';
|
|
207
196
|
error: string;
|
|
208
197
|
} | {
|
|
209
198
|
type: 'page.navigated';
|
|
210
199
|
origin: string;
|
|
211
|
-
} | {
|
|
212
|
-
type: 'page.failed';
|
|
213
|
-
origin: string;
|
|
214
|
-
errorCode: number;
|
|
215
|
-
} | {
|
|
216
|
-
type: 'profile.updated';
|
|
217
200
|
} | {
|
|
218
201
|
type: 'recording.started' | 'recording.stopped';
|
|
219
202
|
recordingId: string;
|
|
@@ -224,19 +207,6 @@ export type BrowserEvent = {
|
|
|
224
207
|
} | {
|
|
225
208
|
type: 'cookie-jar.changed';
|
|
226
209
|
versionToken: string;
|
|
227
|
-
} | {
|
|
228
|
-
type: 'surface.requested' | 'surface.bound' | 'surface.updated' | 'surface.lost';
|
|
229
|
-
surfaceId?: string;
|
|
230
|
-
} | {
|
|
231
|
-
type: 'download.updated';
|
|
232
|
-
downloadId: string;
|
|
233
|
-
state: string;
|
|
234
|
-
receivedBytes: number;
|
|
235
|
-
totalBytes: number;
|
|
236
|
-
} | {
|
|
237
|
-
type: 'permission.requested';
|
|
238
|
-
permission: string;
|
|
239
|
-
origin: string;
|
|
240
210
|
});
|
|
241
211
|
export type BrowserEventInput = BrowserEvent extends infer Event ? Event extends BrowserEvent ? Omit<Event, 'version' | 'id' | 'at'> : never : never;
|
|
242
212
|
export interface BrowserAuthBundle {
|
|
@@ -262,12 +232,3 @@ export interface BrowserLoginSession {
|
|
|
262
232
|
updatedAt: string;
|
|
263
233
|
authBundleId?: string;
|
|
264
234
|
}
|
|
265
|
-
export interface BrowserHostAdvertisement {
|
|
266
|
-
protocol: number;
|
|
267
|
-
backend: 'electron';
|
|
268
|
-
pid: number;
|
|
269
|
-
cdpUrl: string;
|
|
270
|
-
targetTypes: Array<'page' | 'webview'>;
|
|
271
|
-
createdAt?: string;
|
|
272
|
-
file?: string;
|
|
273
|
-
}
|
package/docs/ACTIONS.md
CHANGED
|
@@ -21,7 +21,3 @@ use browser-scoped CUA for canvas, WebGL, image-only, or hostile custom UI.
|
|
|
21
21
|
`cua.operation.kind` is one of `screenshot`, `click`, `double_click`, `move`,
|
|
22
22
|
`scroll`, `type`, `keypress`, or `drag`. Coordinates are CSS pixels and map
|
|
23
23
|
1:1 to returned viewport screenshots.
|
|
24
|
-
|
|
25
|
-
Backends advertise capability groups. Core semantics are never approximated
|
|
26
|
-
when a backend lacks `computer-use`, `recording`, `auth`, full-page capture,
|
|
27
|
-
visible surfaces, live login, or native ad blocking.
|