@framers/agentos-ext-browser-automation 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +80 -0
  2. package/dist/BrowserService.js +9 -45
  3. package/dist/BrowserService.js.map +1 -1
  4. package/dist/attach/AttachController.d.ts +183 -0
  5. package/dist/attach/AttachController.d.ts.map +1 -0
  6. package/dist/attach/AttachController.js +286 -0
  7. package/dist/attach/AttachController.js.map +1 -0
  8. package/dist/attach/backends/jxa.d.ts +39 -0
  9. package/dist/attach/backends/jxa.d.ts.map +1 -0
  10. package/dist/attach/backends/jxa.js +155 -0
  11. package/dist/attach/backends/jxa.js.map +1 -0
  12. package/dist/attach/backends/raw-cdp.d.ts +53 -0
  13. package/dist/attach/backends/raw-cdp.d.ts.map +1 -0
  14. package/dist/attach/backends/raw-cdp.js +213 -0
  15. package/dist/attach/backends/raw-cdp.js.map +1 -0
  16. package/dist/attach/daemon/client.d.ts +64 -0
  17. package/dist/attach/daemon/client.d.ts.map +1 -0
  18. package/dist/attach/daemon/client.js +120 -0
  19. package/dist/attach/daemon/client.js.map +1 -0
  20. package/dist/attach/daemon/daemon-lock.d.ts +19 -0
  21. package/dist/attach/daemon/daemon-lock.d.ts.map +1 -0
  22. package/dist/attach/daemon/daemon-lock.js +84 -0
  23. package/dist/attach/daemon/daemon-lock.js.map +1 -0
  24. package/dist/attach/daemon/daemon-main.d.ts +17 -0
  25. package/dist/attach/daemon/daemon-main.d.ts.map +1 -0
  26. package/dist/attach/daemon/daemon-main.js +99 -0
  27. package/dist/attach/daemon/daemon-main.js.map +1 -0
  28. package/dist/attach/daemon/daemon.d.ts +52 -0
  29. package/dist/attach/daemon/daemon.d.ts.map +1 -0
  30. package/dist/attach/daemon/daemon.js +273 -0
  31. package/dist/attach/daemon/daemon.js.map +1 -0
  32. package/dist/attach/daemon/index.d.ts +12 -0
  33. package/dist/attach/daemon/index.d.ts.map +1 -0
  34. package/dist/attach/daemon/index.js +12 -0
  35. package/dist/attach/daemon/index.js.map +1 -0
  36. package/dist/attach/daemon/protocol.d.ts +69 -0
  37. package/dist/attach/daemon/protocol.d.ts.map +1 -0
  38. package/dist/attach/daemon/protocol.js +96 -0
  39. package/dist/attach/daemon/protocol.js.map +1 -0
  40. package/dist/attach/daemon/runner.d.ts +64 -0
  41. package/dist/attach/daemon/runner.d.ts.map +1 -0
  42. package/dist/attach/daemon/runner.js +57 -0
  43. package/dist/attach/daemon/runner.js.map +1 -0
  44. package/dist/attach/daemon/surface.d.ts +31 -0
  45. package/dist/attach/daemon/surface.d.ts.map +1 -0
  46. package/dist/attach/daemon/surface.js +87 -0
  47. package/dist/attach/daemon/surface.js.map +1 -0
  48. package/dist/attach/devtools-port.d.ts +37 -0
  49. package/dist/attach/devtools-port.d.ts.map +1 -0
  50. package/dist/attach/devtools-port.js +47 -0
  51. package/dist/attach/devtools-port.js.map +1 -0
  52. package/dist/attach/errors.d.ts +38 -0
  53. package/dist/attach/errors.d.ts.map +1 -0
  54. package/dist/attach/errors.js +67 -0
  55. package/dist/attach/errors.js.map +1 -0
  56. package/dist/attach/lease.d.ts +43 -0
  57. package/dist/attach/lease.d.ts.map +1 -0
  58. package/dist/attach/lease.js +87 -0
  59. package/dist/attach/lease.js.map +1 -0
  60. package/dist/attach/singleton-lock.d.ts +21 -0
  61. package/dist/attach/singleton-lock.d.ts.map +1 -0
  62. package/dist/attach/singleton-lock.js +27 -0
  63. package/dist/attach/singleton-lock.js.map +1 -0
  64. package/dist/attach/state.d.ts +31 -0
  65. package/dist/attach/state.d.ts.map +1 -0
  66. package/dist/attach/state.js +71 -0
  67. package/dist/attach/state.js.map +1 -0
  68. package/dist/attach/tools.d.ts +208 -0
  69. package/dist/attach/tools.d.ts.map +1 -0
  70. package/dist/attach/tools.js +191 -0
  71. package/dist/attach/tools.js.map +1 -0
  72. package/dist/attach/url-policy.d.ts +41 -0
  73. package/dist/attach/url-policy.d.ts.map +1 -0
  74. package/dist/attach/url-policy.js +55 -0
  75. package/dist/attach/url-policy.js.map +1 -0
  76. package/dist/attach.d.ts +18 -0
  77. package/dist/attach.d.ts.map +1 -0
  78. package/dist/attach.js +18 -0
  79. package/dist/attach.js.map +1 -0
  80. package/dist/captcha/CaptchaSolver.js +4 -7
  81. package/dist/captcha/CaptchaSolver.js.map +1 -1
  82. package/dist/captcha/ICaptchaProvider.js +1 -2
  83. package/dist/captcha/ICaptchaProvider.js.map +1 -1
  84. package/dist/index.d.ts +30 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +73 -65
  87. package/dist/index.js.map +1 -1
  88. package/dist/proxy/IProxyProvider.js +1 -2
  89. package/dist/proxy/IProxyProvider.js.map +1 -1
  90. package/dist/proxy/ProxyManager.js +7 -10
  91. package/dist/proxy/ProxyManager.js.map +1 -1
  92. package/dist/tools/ClickTool.js +17 -20
  93. package/dist/tools/ClickTool.js.map +1 -1
  94. package/dist/tools/EvaluateTool.js +16 -19
  95. package/dist/tools/EvaluateTool.js.map +1 -1
  96. package/dist/tools/ExtractTool.js +23 -26
  97. package/dist/tools/ExtractTool.js.map +1 -1
  98. package/dist/tools/FillTool.js +17 -20
  99. package/dist/tools/FillTool.js.map +1 -1
  100. package/dist/tools/NavigateTool.js +31 -34
  101. package/dist/tools/NavigateTool.js.map +1 -1
  102. package/dist/tools/PageSnapshotTool.js +13 -16
  103. package/dist/tools/PageSnapshotTool.js.map +1 -1
  104. package/dist/tools/ScreenshotTool.js +16 -19
  105. package/dist/tools/ScreenshotTool.js.map +1 -1
  106. package/dist/tools/ScrollTool.js +17 -20
  107. package/dist/tools/ScrollTool.js.map +1 -1
  108. package/dist/tools/SessionTool.js +24 -27
  109. package/dist/tools/SessionTool.js.map +1 -1
  110. package/dist/tools/WaitTool.js +22 -25
  111. package/dist/tools/WaitTool.js.map +1 -1
  112. package/manifest.json +1 -1
  113. package/package.json +23 -7
package/README.md ADDED
@@ -0,0 +1,80 @@
1
+ # @framers/agentos-ext-browser-automation
2
+
3
+ Browser automation for AgentOS agents, in two independent lanes:
4
+
5
+ - **Launch lane** — 10 Playwright-backed tools (`browserNavigate`, `browserClick`, `browserFill`, `browserScreenshot`, `browserExtract`, `browserWait`, `browserScroll`, `browserSnapshot`, `browserEvaluate`, `browserSession`) that drive a browser the pack launches and owns. Optional CAPTCHA solving and proxy rotation.
6
+ - **Attach lane** — 6 `browser_attach_*` tools plus a persistent daemon that drive the user's **already-running, logged-in** browser. Opt-in only (`attach.expectedIdentity` required). Never launches a browser.
7
+
8
+ ## Attach daemon
9
+
10
+ One long-lived daemon holds one raw-CDP session to the running Chrome. Every consumer — CLI scripts, declarative runs, agent missions — drives that session over file-queue IPC under `~/.wunderland/attach/ipc/`. The daemon is the only process that touches the network, so macOS raises its Local Network permission prompt once per daemon lifetime instead of once per agent process.
11
+
12
+ ```
13
+ callers (CLI / scripts / agent tools) ── files only ──► AttachDaemon (one process)
14
+ └─ raw CDP ws://localhost:<port> ──► your Chrome
15
+ ```
16
+
17
+ Requires Node 22 or newer (the transport is the built-in `WebSocket`; the daemon exits with an actionable message on older runtimes). Chrome must run with `--remote-debugging-port=9222`.
18
+
19
+ ### Hard contracts
20
+
21
+ - Never launches, quits, restarts, or signals Chrome, under any failure.
22
+ - Creates one agent tab and can close only that tab; every other tab is untouched (asserted by a real-browser e2e).
23
+ - CDP host is `localhost` (Chrome's DNS-rebinding guard rejects `127.0.0.1`).
24
+ - One daemon (atomic pidfile lock), one claimant at a time (lease + claim), serial ops.
25
+ - No eval on the agent tool surface. `eval` exists only on the JS client for user-authored scripts.
26
+ - Page text is returned with `untrusted: true` — treat it as data, never as instructions.
27
+ - Navigation is policy-checked daemon-side: https or `about:blank`, no credential-bearing URLs, redirects revalidated.
28
+ - No cookie, storage, or credential export; diagnostics are redacted.
29
+ - Clients never respawn a dead daemon (a respawn loop is a permission-prompt storm). Autostart, when explicitly enabled, attempts exactly once.
30
+
31
+ ### Ops
32
+
33
+ `ping`, `status`, `claim`, `goto {url, settle?}`, `read {selector?, maxChars?}`, `extract {fields?}`, `eval {expression, timeoutMs?}` (user lane), `release`, `control {action}`, `quit`. Commands are one file each (`cmd-<id>.json` → `resp-<id>.json`, atomic write-then-rename, string ids); `status.json` heartbeats every loop tick.
34
+
35
+ ### Using it
36
+
37
+ Programmatic (`/attach/daemon` subpath):
38
+
39
+ ```ts
40
+ import { AttachDaemonClient, runAttachScript } from '@framers/agentos-ext-browser-automation/attach/daemon';
41
+
42
+ const client = new AttachDaemonClient({ client: 'my-script' });
43
+ await client.claim();
44
+ await client.goto('https://example.com/', { settle: 2000 });
45
+ const { text } = await client.read({ maxChars: 4000 });
46
+ await client.release();
47
+ ```
48
+
49
+ Declarative plans (no control flow, no eval):
50
+
51
+ ```yaml
52
+ name: crawl
53
+ claim: { ttlMs: 600000 }
54
+ steps:
55
+ - { op: goto, url: "https://example.com/list", settle: 2500 }
56
+ - { op: read, out: listing }
57
+ - { op: extract, fields: { items: "ul li" }, out: items }
58
+ ```
59
+
60
+ From the wunderland CLI: `wunderland attach start | status | stop | run <file.mjs|file.yaml|file.json>`. Agent missions reach the same held session by enabling the attach tools with `transport: 'cdp'` (`WUNDERLAND_ATTACH_TRANSPORT=cdp`).
61
+
62
+ ### Environment
63
+
64
+ | Variable | Meaning |
65
+ |---|---|
66
+ | `WUNDERLAND_ATTACH_IDENTITY` | Required. Profile identity the daemon must verify before claiming (e.g. your account email; matched against the identity-probe tab's title/url metadata). |
67
+ | `WUNDERLAND_ATTACH_TRANSPORT` | `jxa` (in-process, macOS AppleScript) or `cdp` (daemon-routed). |
68
+ | `WUNDERLAND_ATTACH_PROFILE_ROOT` | Chrome profile root holding `DevToolsActivePort`. |
69
+ | `WUNDERLAND_ATTACH_PROBE_URL` | Identity-probe URL substring (default `mail.google.com`). |
70
+ | `WUNDERLAND_ATTACH_HOSTS` | Comma-separated https host allowlist for navigation. |
71
+ | `WUNDERLAND_ATTACH_LEASE` | Lease file path override. |
72
+ | `WUNDERLAND_ATTACH_IPC_DIR` | IPC directory override (default `~/.wunderland/attach/ipc`). |
73
+ | `WUNDERLAND_ATTACH_PID_FILE` | Daemon pidfile override (default `~/.wunderland/attach/daemon.pid`). |
74
+ | `WUNDERLAND_ATTACH_AUTOSTART` | `1`/`true`: allow one autostart attempt when the daemon is down. |
75
+ | `WUNDERLAND_ATTACH_DRYRUN` | `1`/`true`: simulate navigation/reads without touching the browser. |
76
+ | `WUNDERLAND_ATTACH_DEADLINE_MS` | Per-operation deadline (default 45000). |
77
+
78
+ ## License
79
+
80
+ Apache-2.0
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  // @ts-nocheck
3
2
  /**
4
3
  * @fileoverview Singleton browser manager wrapping Playwright.
@@ -6,54 +5,20 @@
6
5
  * Provides persistent browser context, session storage,
7
6
  * auto-screenshot on errors, and page feedback capture.
8
7
  */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || (function () {
26
- var ownKeys = function(o) {
27
- ownKeys = Object.getOwnPropertyNames || function (o) {
28
- var ar = [];
29
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
- return ar;
31
- };
32
- return ownKeys(o);
33
- };
34
- return function (mod) {
35
- if (mod && mod.__esModule) return mod;
36
- var result = {};
37
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
- __setModuleDefault(result, mod);
39
- return result;
40
- };
41
- })();
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.BrowserService = void 0;
44
8
  // ---------------------------------------------------------------------------
45
9
  // BrowserService
46
10
  // ---------------------------------------------------------------------------
47
- class BrowserService {
11
+ export class BrowserService {
12
+ browser = null;
13
+ context = null;
14
+ page = null;
15
+ config;
16
+ consoleLogs = [];
17
+ initialized = false;
48
18
  constructor(config = {}) {
49
- this.browser = null;
50
- this.context = null;
51
- this.page = null;
52
- this.consoleLogs = [];
53
- this.initialized = false;
54
19
  this.config = {
55
20
  headless: true,
56
- timeout: 30000,
21
+ timeout: 30_000,
57
22
  viewport: { width: 1280, height: 720 },
58
23
  ...config,
59
24
  };
@@ -62,7 +27,7 @@ class BrowserService {
62
27
  async initialize() {
63
28
  if (this.initialized)
64
29
  return;
65
- const { chromium } = await Promise.resolve().then(() => __importStar(require('playwright')));
30
+ const { chromium } = await import('playwright');
66
31
  if (this.config.userDataDir) {
67
32
  this.context = await chromium.launchPersistentContext(this.config.userDataDir, {
68
33
  headless: this.config.headless,
@@ -328,5 +293,4 @@ class BrowserService {
328
293
  return this.page;
329
294
  }
330
295
  }
331
- exports.BrowserService = BrowserService;
332
296
  //# sourceMappingURL=BrowserService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserService.js","sourceRoot":"","sources":["../src/BrowserService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserService.js","sourceRoot":"","sources":["../src/BrowserService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @fileoverview AttachController — the one object allowed to touch an attached
3
+ * (user-owned, already-running) browser.
4
+ *
5
+ * Non-negotiable contract, enforced here rather than by convention:
6
+ *
7
+ * 1. ATTACH-ONLY. The controller can never launch a browser. When the target
8
+ * is missing or fails identity verification it ABORTS with a structured
9
+ * error — it must not "helpfully" spawn Chrome (Codex spec review F9).
10
+ * 2. NON-DESTRUCTIVE DETACH. `detach()` tears down only OUR transport
11
+ * connection. The backend interface deliberately has no close/quit surface,
12
+ * so no code path can call `Browser.close()`/`Page.close()` on the user's
13
+ * browser (Codex F10 — wunderland's `BrowserSession.disconnect()` calls
14
+ * `browser.close()` and is exactly the hazard this replaces).
15
+ * 3. MARKER-TAB BOUND. Every operation targets the single agent tab the
16
+ * controller claimed; other tabs/windows are out of reach by construction.
17
+ * 4. LEASED. All operations require the cross-process lease nonce acquired at
18
+ * `claim()` (F3), and run under the no-replay state machine with deadlines
19
+ * (F14) plus the deny-by-default URL policy (F12).
20
+ *
21
+ * @module browser-automation/attach/AttachController
22
+ */
23
+ import { type StructuredAttachError } from './errors.js';
24
+ import { type UrlPolicyOptions } from './url-policy.js';
25
+ /**
26
+ * Transport backend contract. INTENTIONALLY has no `closeBrowser`/`closeTab`
27
+ * surface: the strongest guarantee that a detach can never destroy user state
28
+ * is that the API cannot express it.
29
+ */
30
+ export interface AttachBackend {
31
+ /** Transport id for status/reporting. */
32
+ readonly kind: 'cdp' | 'jxa';
33
+ /** Open the transport (e.g. CDP socket). Must NOT create or focus tabs. */
34
+ connect(): Promise<void>;
35
+ /** Close ONLY our transport connection. Must not touch browser state. */
36
+ disconnectTransport(): Promise<void>;
37
+ /** Claim (or create) the marker agent tab; returns an opaque tab handle. */
38
+ claimAgentTab(): Promise<string>;
39
+ /** Read a lightweight identity probe: current profile evidence (e.g. a known tab title). */
40
+ probeIdentity(): Promise<string>;
41
+ /** Navigate the agent tab. Returns the URL actually landed on. */
42
+ gotoTab(tab: string, url: string): Promise<string>;
43
+ /** Read innerText (optionally scoped by selector) from the agent tab. */
44
+ readTab(tab: string, selector?: string, maxChars?: number): Promise<string>;
45
+ /**
46
+ * OPTIONAL: evaluate an expression in the agent tab (returnByValue).
47
+ * Absent on backends without a safe eval primitive; callers surface
48
+ * `UNSUPPORTED_OP` when missing. Never exposed on the agent tool surface.
49
+ */
50
+ evalInTab?(tab: string, expression: string, timeoutMs?: number): Promise<unknown>;
51
+ }
52
+ /**
53
+ * What `createAttachTools` needs: satisfied in-process by {@link AttachController}
54
+ * (jxa transport) and over IPC by the daemon proxy surface (cdp transport).
55
+ * Deliberately NO eval and NO extract — the agent tool surface stays no-eval.
56
+ */
57
+ export interface AttachSurface {
58
+ status(): unknown;
59
+ claim(): Promise<unknown>;
60
+ goto(url: string): Promise<string>;
61
+ read(selector?: string, maxChars?: number): Promise<string>;
62
+ detach(): Promise<void>;
63
+ pause(): void;
64
+ resume(): void;
65
+ setDryRun(on: boolean): void;
66
+ }
67
+ /**
68
+ * Human-in-the-loop navigation decision. Called before every `goto` (after the
69
+ * URL clears the deny-by-default policy). Return `false`/`{ approved: false }`
70
+ * to block the navigation with a `POLICY_BLOCKED` result. Async so a caller can
71
+ * prompt a real operator.
72
+ */
73
+ export type NavigationApprover = (url: string) => boolean | {
74
+ approved: boolean;
75
+ reason?: string;
76
+ } | Promise<boolean | {
77
+ approved: boolean;
78
+ reason?: string;
79
+ }>;
80
+ /** Controller configuration. */
81
+ export interface AttachControllerOptions {
82
+ backend: AttachBackend;
83
+ /** Lease file path (one per machine/user). */
84
+ leaseFile: string;
85
+ /**
86
+ * Expected profile identity substring (e.g. the account email). Claim ABORTS
87
+ * with PROFILE_MISMATCH when the probe does not contain it. Required: an
88
+ * attach client must never guess which profile it is driving (F9).
89
+ */
90
+ expectedIdentity: string;
91
+ /** URL policy options (host allowlist etc.). */
92
+ urlPolicy?: UrlPolicyOptions;
93
+ /** Per-operation deadline in ms (default 45s). */
94
+ deadlineMs?: number;
95
+ /**
96
+ * Dry-run: navigation and reads are validated and reported but NOT performed
97
+ * against the browser. Lets a mission preview its plan (or run in CI) without
98
+ * touching the live session.
99
+ */
100
+ dryRun?: boolean;
101
+ /**
102
+ * HITL gate on navigation. Runs after the URL policy passes; a denial blocks
103
+ * the goto. Use to require operator approval for each page an assistant opens.
104
+ */
105
+ onNavigate?: NavigationApprover;
106
+ }
107
+ /** Status snapshot returned by {@link AttachController.status}. */
108
+ export interface AttachStatus {
109
+ transport: 'cdp' | 'jxa' | 'none';
110
+ state: string;
111
+ leaseHeld: boolean;
112
+ agentTab?: string;
113
+ lastError?: StructuredAttachError;
114
+ /** Session paused — operations are refused until resume(). */
115
+ paused: boolean;
116
+ /** Dry-run mode — navigation/reads are simulated, not performed. */
117
+ dryRun: boolean;
118
+ /** Count of navigations performed this session. */
119
+ navigations: number;
120
+ /** Last URL the agent tab navigated to. */
121
+ lastUrl?: string;
122
+ }
123
+ /**
124
+ * Orchestrates one attach session end to end. One controller instance = one
125
+ * lease = one agent tab.
126
+ */
127
+ export declare class AttachController {
128
+ private readonly backend;
129
+ private readonly opts;
130
+ private readonly machine;
131
+ private lease?;
132
+ private tab?;
133
+ private lastError?;
134
+ private paused;
135
+ private dryRun;
136
+ private navigations;
137
+ private lastUrl?;
138
+ constructor(opts: AttachControllerOptions);
139
+ private get deadline();
140
+ /** Non-throwing status snapshot. */
141
+ status(): AttachStatus;
142
+ /** Pause the session — navigation/read refuse until {@link resume}. */
143
+ pause(): void;
144
+ /** Resume a paused session. */
145
+ resume(): void;
146
+ /** Toggle dry-run at runtime (simulate navigation/reads, don't perform them). */
147
+ setDryRun(on: boolean): void;
148
+ /**
149
+ * Acquire the lease, open the transport, verify profile identity, and claim
150
+ * the marker agent tab. Aborts (never launches) on any verification failure.
151
+ */
152
+ claim(): Promise<AttachStatus>;
153
+ /** Navigate the agent tab (policy-checked, HITL-gated, redirect-revalidated). */
154
+ goto(url: string): Promise<string>;
155
+ /** Read text from the agent tab (size-capped by the backend). */
156
+ read(selector?: string, maxChars?: number): Promise<string>;
157
+ /** Fixed, parameterized extraction expression: the selector map is data, never code. */
158
+ private static extractExpression;
159
+ /** The backend's optional eval primitive, or a structured refusal. */
160
+ private requireEval;
161
+ /**
162
+ * Structured extraction over a fixed, parameterized expression: for each
163
+ * `name: cssSelector` pair, trimmed textContent lists; with no fields, a
164
+ * default page summary (url/title/heading/links/text). No caller-supplied
165
+ * code ever reaches the page — selectors are data.
166
+ */
167
+ extract(fields?: Record<string, string>): Promise<unknown>;
168
+ /**
169
+ * Arbitrary page evaluation. USER LANE ONLY: reachable through the daemon
170
+ * protocol's `eval` op and the JS client; no agent tool maps to it and the
171
+ * tool-facing surface has no eval member.
172
+ */
173
+ evaluate(expression: string, timeoutMs?: number): Promise<unknown>;
174
+ /**
175
+ * Release the session: park is the CALLER's responsibility (navigate to
176
+ * about:blank first if desired), then this closes only our transport and
177
+ * releases the lease. There is no code path to close browser/tabs.
178
+ */
179
+ detach(): Promise<void>;
180
+ private requireReady;
181
+ private safeReleaseOnFailure;
182
+ }
183
+ //# sourceMappingURL=AttachController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachController.d.ts","sourceRoot":"","sources":["../../src/attach/AttachController.ts"],"names":[],"mappings":"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"}