browser-pilot 0.0.16 → 0.0.17

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.
@@ -1,8 +1,8 @@
1
1
  import { C as CDPClient } from './client-B5QBRgIy.cjs';
2
- import { TargetInfo } from './cdp.cjs';
2
+ import { TargetInfo as TargetInfo$1 } from './cdp.cjs';
3
3
  import { b as ConnectOptions } from './types-DeVSWhXj.cjs';
4
- import { J as Page } from './types-BflRmiDz.cjs';
5
- export { l as ActionOptions, m as ActionResult, n as ConsoleHandler, o as ConsoleMessage, p as ConsoleMessageType, q as CustomSelectConfig, D as Dialog, r as DialogHandler, s as DialogType, t as Download, E as ElementInfo, u as ElementNotFoundError, v as EmulationState, w as ErrorHandler, ai as FailureHint, F as FileInput, x as FillOptions, y as FormField, z as FormOption, G as GeolocationOptions, I as InteractiveElement, N as NavigationError, H as NetworkIdleOptions, K as PageError, L as PageSnapshot, M as SnapshotNode, O as SnapshotOptions, Q as SubmitOptions, T as TimeoutError, U as TypeOptions, V as UserAgentMetadata, W as UserAgentOptions, X as ViewportOptions, Y as WaitForOptions } from './types-BflRmiDz.cjs';
4
+ import { W as Page, $ as SnapshotNode, c as Condition, O as OutcomeStatus, M as MatchedCondition } from './types-Yuybzq53.cjs';
5
+ export { m as ActionOptions, n as ActionResult, o as ConsoleHandler, p as ConsoleMessage, q as ConsoleMessageType, r as CustomSelectConfig, D as DeltaChange, t as DeltaResult, u as Dialog, v as DialogHandler, w as DialogType, x as Download, E as ElementInfo, y as ElementNotFoundError, z as EmulationState, F as ErrorHandler, av as FailureHint, I as FileInput, J as FillOptions, K as FormField, L as FormOption, N as GeolocationOptions, Q as InteractiveElement, T as KeyValuePair, U as NavigationError, V as NetworkIdleOptions, X as PageError, Y as PageSnapshot, Z as PageState, _ as ReviewResult, a0 as SnapshotOptions, a1 as SubmitOptions, a2 as SummaryCard, a3 as TableData, a4 as TimeoutError, a5 as TypeOptions, a6 as UserAgentMetadata, a7 as UserAgentOptions, a8 as ViewportOptions, a9 as WaitForOptions, s as computeDelta, G as extractPageState, H as extractReview } from './types-Yuybzq53.cjs';
6
6
 
7
7
  /**
8
8
  * Browser class - manages CDP connection and pages
@@ -68,7 +68,7 @@ declare class Browser {
68
68
  /**
69
69
  * List all page targets in the connected browser.
70
70
  */
71
- listTargets(): Promise<TargetInfo[]>;
71
+ listTargets(): Promise<TargetInfo$1[]>;
72
72
  /**
73
73
  * Get the WebSocket URL for this browser connection
74
74
  */
@@ -104,4 +104,228 @@ declare class Browser {
104
104
  */
105
105
  declare function connect(options: BrowserOptions): Promise<Browser>;
106
106
 
107
- export { Browser, type BrowserOptions, Page, type PageOptions, connect };
107
+ /**
108
+ * Custom combobox interaction — handles searchable dropdowns, listboxes
109
+ */
110
+
111
+ interface ComboboxConfig {
112
+ /** Trigger element (the combobox button/input) */
113
+ trigger: string | string[];
114
+ /** Listbox/options container that appears after opening */
115
+ listbox?: string | string[];
116
+ /** Individual option selector pattern */
117
+ optionSelector?: string;
118
+ /** Text to search/filter by */
119
+ searchText?: string;
120
+ /** Value to select (matched against option text) */
121
+ value: string;
122
+ /** Match mode for option text */
123
+ match?: 'exact' | 'contains' | 'startsWith';
124
+ /** Timeout for each sub-step */
125
+ timeout?: number;
126
+ }
127
+ interface ComboboxResult {
128
+ /** Whether the selection succeeded */
129
+ success: boolean;
130
+ /** Which stage failed, if any */
131
+ failedAt?: 'open' | 'search' | 'select' | 'verify';
132
+ /** The option text that was selected */
133
+ selectedText?: string;
134
+ /** Error message */
135
+ error?: string;
136
+ }
137
+ /**
138
+ * Interact with a custom combobox: open -> optionally search -> select -> verify.
139
+ */
140
+ declare function chooseOption(page: Page, config: ComboboxConfig): Promise<ComboboxResult>;
141
+
142
+ /**
143
+ * Semantic fingerprints for stable element identity across rerenders.
144
+ *
145
+ * A fingerprint captures the logical identity of an interactive element
146
+ * (role, name, section context, stable attributes) so that a stale ref
147
+ * can be recovered cheaply after a lightweight DOM rerender.
148
+ */
149
+
150
+ interface SemanticFingerprint {
151
+ /** Accessibility role */
152
+ role: string;
153
+ /** Accessible name */
154
+ name: string;
155
+ /** Control value shape (type, not actual value) */
156
+ valueShape: string;
157
+ /** Associated label text */
158
+ label: string;
159
+ /** Stable attributes (id, name, type) extracted from properties */
160
+ stableAttrs: Record<string, string>;
161
+ /** Nearest heading ancestor */
162
+ nearestHeading: string;
163
+ /** Position among same-role siblings */
164
+ siblingIndex: number;
165
+ /** Section path: heading trail from root */
166
+ sectionPath: string[];
167
+ }
168
+ /**
169
+ * Create a semantic fingerprint for a snapshot node.
170
+ */
171
+ declare function createFingerprint(node: SnapshotNode, context: {
172
+ headingTrail: string[];
173
+ siblingIndex: number;
174
+ nearestHeading: string;
175
+ }): SemanticFingerprint;
176
+ /**
177
+ * Compute a string key from a fingerprint for fast map-based matching.
178
+ */
179
+ declare function fingerprintKey(fp: SemanticFingerprint): string;
180
+ /**
181
+ * Score how similar two fingerprints are (0–1, higher = more similar).
182
+ * Returns 0 immediately if the roles differ.
183
+ */
184
+ declare function fingerprintSimilarity(a: SemanticFingerprint, b: SemanticFingerprint): number;
185
+ /**
186
+ * Build a fingerprint map for all interactive nodes in a snapshot tree.
187
+ * Keys are the node refs (e.g. "e1").
188
+ */
189
+ declare function buildFingerprintMap(nodes: SnapshotNode[]): Map<string, SemanticFingerprint>;
190
+ /**
191
+ * Attempt to recover a stale ref by matching its fingerprint against
192
+ * the current snapshot's fingerprints.
193
+ *
194
+ * Returns the new ref and confidence score, or `null` when no
195
+ * unambiguous match above the threshold exists.
196
+ */
197
+ declare function recoverStaleRef(staleFingerprint: SemanticFingerprint, currentFingerprints: Map<string, SemanticFingerprint>, threshold?: number): {
198
+ ref: string;
199
+ confidence: number;
200
+ } | null;
201
+
202
+ /**
203
+ * Overlay-aware targeting — detect and prioritize visible overlays
204
+ */
205
+
206
+ interface OverlayInfo {
207
+ /** Whether an overlay/modal is currently visible */
208
+ hasOverlay: boolean;
209
+ /** Selector of the detected overlay */
210
+ overlaySelector?: string;
211
+ /** Text content of the overlay (truncated) */
212
+ overlayText?: string;
213
+ }
214
+ /**
215
+ * Detect if a modal/overlay is currently covering the page.
216
+ * Uses common overlay patterns: role="dialog", fixed/absolute positioning with backdrop.
217
+ */
218
+ declare function detectOverlay(page: Page): Promise<OverlayInfo>;
219
+
220
+ /**
221
+ * Safe submit — submit with verification and outcome classification
222
+ */
223
+
224
+ interface SubmitAndVerifyOptions {
225
+ /** Form selector to submit */
226
+ selector: string | string[];
227
+ /** Submit method */
228
+ method?: 'enter' | 'click' | 'enter+click';
229
+ /** Conditions that indicate success (any match) */
230
+ expectAny?: Condition[];
231
+ /** Conditions that all must match for success */
232
+ expectAll?: Condition[];
233
+ /** Conditions that indicate failure */
234
+ failIf?: Condition[];
235
+ /** Whether this is a dangerous/irreversible action */
236
+ dangerous?: boolean;
237
+ /** Timeout for the entire operation */
238
+ timeout?: number;
239
+ /** Whether to wait for navigation after submit */
240
+ waitForNavigation?: boolean | 'auto';
241
+ }
242
+ interface SubmitAndVerifyResult {
243
+ /** Whether submit was mechanically successful */
244
+ submitted: boolean;
245
+ /** Outcome classification */
246
+ outcomeStatus: OutcomeStatus;
247
+ /** Condition evaluation details */
248
+ matchedConditions: MatchedCondition[];
249
+ /** Whether safe to retry */
250
+ retrySafe: boolean;
251
+ /** Total time taken */
252
+ durationMs: number;
253
+ /** Error if submit failed mechanically */
254
+ error?: string;
255
+ }
256
+ /**
257
+ * Submit a form and verify the outcome using conditions.
258
+ * Never auto-retries — returns the outcome for the caller to decide.
259
+ */
260
+ declare function submitAndVerify(page: Page, options: SubmitAndVerifyOptions): Promise<SubmitAndVerifyResult>;
261
+
262
+ /**
263
+ * Target pinning — fingerprint and recover browser targets
264
+ */
265
+ interface TargetFingerprint {
266
+ /** URL at time of pinning */
267
+ url: string;
268
+ /** Page title at time of pinning */
269
+ title: string;
270
+ /** Original target ID */
271
+ originalTargetId: string;
272
+ /** Timestamp when pinned */
273
+ pinnedAt: number;
274
+ }
275
+ interface PinRecoveryResult {
276
+ /** Recovered target ID */
277
+ targetId: string;
278
+ /** How recovery was achieved */
279
+ method: 'exact' | 'url_match' | 'title_match' | 'best_guess';
280
+ /** Confidence 0-1 */
281
+ confidence: number;
282
+ }
283
+ interface TargetInfo {
284
+ targetId: string;
285
+ type: string;
286
+ url: string;
287
+ title: string;
288
+ attached: boolean;
289
+ }
290
+ /**
291
+ * Create a fingerprint for the current target
292
+ */
293
+ declare function createTargetFingerprint(targetId: string, url: string, title: string): TargetFingerprint;
294
+ /**
295
+ * Recover a pinned target from available targets.
296
+ * Returns null if no suitable candidate found.
297
+ */
298
+ declare function recoverPinnedTarget(pin: TargetFingerprint, targets: TargetInfo[], threshold?: number): PinRecoveryResult | null;
299
+
300
+ /**
301
+ * File upload helper — wraps CDP setInputFiles with verification
302
+ */
303
+
304
+ interface UploadConfig {
305
+ /** File input selector */
306
+ selector: string | string[];
307
+ /** File paths to upload */
308
+ files: string[];
309
+ /** Timeout */
310
+ timeout?: number;
311
+ }
312
+ interface UploadResult {
313
+ /** Whether files were accepted by the input */
314
+ accepted: boolean;
315
+ /** Number of files set */
316
+ fileCount: number;
317
+ /** File names */
318
+ fileNames: string[];
319
+ /** Whether files appear in visible UI (best-effort check) */
320
+ visibleInUI?: boolean;
321
+ /** Validation error text if any */
322
+ validationError?: string;
323
+ /** Error if upload failed */
324
+ error?: string;
325
+ }
326
+ /**
327
+ * Upload files to a file input and verify acceptance.
328
+ */
329
+ declare function uploadFiles(page: Page, config: UploadConfig): Promise<UploadResult>;
330
+
331
+ export { Browser, type BrowserOptions, type ComboboxConfig, type ComboboxResult, type OverlayInfo, Page, type PageOptions, type PinRecoveryResult, type SemanticFingerprint, SnapshotNode, type SubmitAndVerifyOptions, type SubmitAndVerifyResult, type TargetFingerprint, type UploadConfig, type UploadResult, buildFingerprintMap, chooseOption, connect, createFingerprint, createTargetFingerprint, detectOverlay, fingerprintKey, fingerprintSimilarity, recoverPinnedTarget, recoverStaleRef, submitAndVerify, uploadFiles };
package/dist/browser.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { C as CDPClient } from './client-B5QBRgIy.js';
2
- import { TargetInfo } from './cdp.js';
2
+ import { TargetInfo as TargetInfo$1 } from './cdp.js';
3
3
  import { b as ConnectOptions } from './types-DeVSWhXj.js';
4
- import { J as Page } from './types-BzM-IfsL.js';
5
- export { l as ActionOptions, m as ActionResult, n as ConsoleHandler, o as ConsoleMessage, p as ConsoleMessageType, q as CustomSelectConfig, D as Dialog, r as DialogHandler, s as DialogType, t as Download, E as ElementInfo, u as ElementNotFoundError, v as EmulationState, w as ErrorHandler, ai as FailureHint, F as FileInput, x as FillOptions, y as FormField, z as FormOption, G as GeolocationOptions, I as InteractiveElement, N as NavigationError, H as NetworkIdleOptions, K as PageError, L as PageSnapshot, M as SnapshotNode, O as SnapshotOptions, Q as SubmitOptions, T as TimeoutError, U as TypeOptions, V as UserAgentMetadata, W as UserAgentOptions, X as ViewportOptions, Y as WaitForOptions } from './types-BzM-IfsL.js';
4
+ import { W as Page, $ as SnapshotNode, c as Condition, O as OutcomeStatus, M as MatchedCondition } from './types-B_v62K7C.js';
5
+ export { m as ActionOptions, n as ActionResult, o as ConsoleHandler, p as ConsoleMessage, q as ConsoleMessageType, r as CustomSelectConfig, D as DeltaChange, t as DeltaResult, u as Dialog, v as DialogHandler, w as DialogType, x as Download, E as ElementInfo, y as ElementNotFoundError, z as EmulationState, F as ErrorHandler, av as FailureHint, I as FileInput, J as FillOptions, K as FormField, L as FormOption, N as GeolocationOptions, Q as InteractiveElement, T as KeyValuePair, U as NavigationError, V as NetworkIdleOptions, X as PageError, Y as PageSnapshot, Z as PageState, _ as ReviewResult, a0 as SnapshotOptions, a1 as SubmitOptions, a2 as SummaryCard, a3 as TableData, a4 as TimeoutError, a5 as TypeOptions, a6 as UserAgentMetadata, a7 as UserAgentOptions, a8 as ViewportOptions, a9 as WaitForOptions, s as computeDelta, G as extractPageState, H as extractReview } from './types-B_v62K7C.js';
6
6
 
7
7
  /**
8
8
  * Browser class - manages CDP connection and pages
@@ -68,7 +68,7 @@ declare class Browser {
68
68
  /**
69
69
  * List all page targets in the connected browser.
70
70
  */
71
- listTargets(): Promise<TargetInfo[]>;
71
+ listTargets(): Promise<TargetInfo$1[]>;
72
72
  /**
73
73
  * Get the WebSocket URL for this browser connection
74
74
  */
@@ -104,4 +104,228 @@ declare class Browser {
104
104
  */
105
105
  declare function connect(options: BrowserOptions): Promise<Browser>;
106
106
 
107
- export { Browser, type BrowserOptions, Page, type PageOptions, connect };
107
+ /**
108
+ * Custom combobox interaction — handles searchable dropdowns, listboxes
109
+ */
110
+
111
+ interface ComboboxConfig {
112
+ /** Trigger element (the combobox button/input) */
113
+ trigger: string | string[];
114
+ /** Listbox/options container that appears after opening */
115
+ listbox?: string | string[];
116
+ /** Individual option selector pattern */
117
+ optionSelector?: string;
118
+ /** Text to search/filter by */
119
+ searchText?: string;
120
+ /** Value to select (matched against option text) */
121
+ value: string;
122
+ /** Match mode for option text */
123
+ match?: 'exact' | 'contains' | 'startsWith';
124
+ /** Timeout for each sub-step */
125
+ timeout?: number;
126
+ }
127
+ interface ComboboxResult {
128
+ /** Whether the selection succeeded */
129
+ success: boolean;
130
+ /** Which stage failed, if any */
131
+ failedAt?: 'open' | 'search' | 'select' | 'verify';
132
+ /** The option text that was selected */
133
+ selectedText?: string;
134
+ /** Error message */
135
+ error?: string;
136
+ }
137
+ /**
138
+ * Interact with a custom combobox: open -> optionally search -> select -> verify.
139
+ */
140
+ declare function chooseOption(page: Page, config: ComboboxConfig): Promise<ComboboxResult>;
141
+
142
+ /**
143
+ * Semantic fingerprints for stable element identity across rerenders.
144
+ *
145
+ * A fingerprint captures the logical identity of an interactive element
146
+ * (role, name, section context, stable attributes) so that a stale ref
147
+ * can be recovered cheaply after a lightweight DOM rerender.
148
+ */
149
+
150
+ interface SemanticFingerprint {
151
+ /** Accessibility role */
152
+ role: string;
153
+ /** Accessible name */
154
+ name: string;
155
+ /** Control value shape (type, not actual value) */
156
+ valueShape: string;
157
+ /** Associated label text */
158
+ label: string;
159
+ /** Stable attributes (id, name, type) extracted from properties */
160
+ stableAttrs: Record<string, string>;
161
+ /** Nearest heading ancestor */
162
+ nearestHeading: string;
163
+ /** Position among same-role siblings */
164
+ siblingIndex: number;
165
+ /** Section path: heading trail from root */
166
+ sectionPath: string[];
167
+ }
168
+ /**
169
+ * Create a semantic fingerprint for a snapshot node.
170
+ */
171
+ declare function createFingerprint(node: SnapshotNode, context: {
172
+ headingTrail: string[];
173
+ siblingIndex: number;
174
+ nearestHeading: string;
175
+ }): SemanticFingerprint;
176
+ /**
177
+ * Compute a string key from a fingerprint for fast map-based matching.
178
+ */
179
+ declare function fingerprintKey(fp: SemanticFingerprint): string;
180
+ /**
181
+ * Score how similar two fingerprints are (0–1, higher = more similar).
182
+ * Returns 0 immediately if the roles differ.
183
+ */
184
+ declare function fingerprintSimilarity(a: SemanticFingerprint, b: SemanticFingerprint): number;
185
+ /**
186
+ * Build a fingerprint map for all interactive nodes in a snapshot tree.
187
+ * Keys are the node refs (e.g. "e1").
188
+ */
189
+ declare function buildFingerprintMap(nodes: SnapshotNode[]): Map<string, SemanticFingerprint>;
190
+ /**
191
+ * Attempt to recover a stale ref by matching its fingerprint against
192
+ * the current snapshot's fingerprints.
193
+ *
194
+ * Returns the new ref and confidence score, or `null` when no
195
+ * unambiguous match above the threshold exists.
196
+ */
197
+ declare function recoverStaleRef(staleFingerprint: SemanticFingerprint, currentFingerprints: Map<string, SemanticFingerprint>, threshold?: number): {
198
+ ref: string;
199
+ confidence: number;
200
+ } | null;
201
+
202
+ /**
203
+ * Overlay-aware targeting — detect and prioritize visible overlays
204
+ */
205
+
206
+ interface OverlayInfo {
207
+ /** Whether an overlay/modal is currently visible */
208
+ hasOverlay: boolean;
209
+ /** Selector of the detected overlay */
210
+ overlaySelector?: string;
211
+ /** Text content of the overlay (truncated) */
212
+ overlayText?: string;
213
+ }
214
+ /**
215
+ * Detect if a modal/overlay is currently covering the page.
216
+ * Uses common overlay patterns: role="dialog", fixed/absolute positioning with backdrop.
217
+ */
218
+ declare function detectOverlay(page: Page): Promise<OverlayInfo>;
219
+
220
+ /**
221
+ * Safe submit — submit with verification and outcome classification
222
+ */
223
+
224
+ interface SubmitAndVerifyOptions {
225
+ /** Form selector to submit */
226
+ selector: string | string[];
227
+ /** Submit method */
228
+ method?: 'enter' | 'click' | 'enter+click';
229
+ /** Conditions that indicate success (any match) */
230
+ expectAny?: Condition[];
231
+ /** Conditions that all must match for success */
232
+ expectAll?: Condition[];
233
+ /** Conditions that indicate failure */
234
+ failIf?: Condition[];
235
+ /** Whether this is a dangerous/irreversible action */
236
+ dangerous?: boolean;
237
+ /** Timeout for the entire operation */
238
+ timeout?: number;
239
+ /** Whether to wait for navigation after submit */
240
+ waitForNavigation?: boolean | 'auto';
241
+ }
242
+ interface SubmitAndVerifyResult {
243
+ /** Whether submit was mechanically successful */
244
+ submitted: boolean;
245
+ /** Outcome classification */
246
+ outcomeStatus: OutcomeStatus;
247
+ /** Condition evaluation details */
248
+ matchedConditions: MatchedCondition[];
249
+ /** Whether safe to retry */
250
+ retrySafe: boolean;
251
+ /** Total time taken */
252
+ durationMs: number;
253
+ /** Error if submit failed mechanically */
254
+ error?: string;
255
+ }
256
+ /**
257
+ * Submit a form and verify the outcome using conditions.
258
+ * Never auto-retries — returns the outcome for the caller to decide.
259
+ */
260
+ declare function submitAndVerify(page: Page, options: SubmitAndVerifyOptions): Promise<SubmitAndVerifyResult>;
261
+
262
+ /**
263
+ * Target pinning — fingerprint and recover browser targets
264
+ */
265
+ interface TargetFingerprint {
266
+ /** URL at time of pinning */
267
+ url: string;
268
+ /** Page title at time of pinning */
269
+ title: string;
270
+ /** Original target ID */
271
+ originalTargetId: string;
272
+ /** Timestamp when pinned */
273
+ pinnedAt: number;
274
+ }
275
+ interface PinRecoveryResult {
276
+ /** Recovered target ID */
277
+ targetId: string;
278
+ /** How recovery was achieved */
279
+ method: 'exact' | 'url_match' | 'title_match' | 'best_guess';
280
+ /** Confidence 0-1 */
281
+ confidence: number;
282
+ }
283
+ interface TargetInfo {
284
+ targetId: string;
285
+ type: string;
286
+ url: string;
287
+ title: string;
288
+ attached: boolean;
289
+ }
290
+ /**
291
+ * Create a fingerprint for the current target
292
+ */
293
+ declare function createTargetFingerprint(targetId: string, url: string, title: string): TargetFingerprint;
294
+ /**
295
+ * Recover a pinned target from available targets.
296
+ * Returns null if no suitable candidate found.
297
+ */
298
+ declare function recoverPinnedTarget(pin: TargetFingerprint, targets: TargetInfo[], threshold?: number): PinRecoveryResult | null;
299
+
300
+ /**
301
+ * File upload helper — wraps CDP setInputFiles with verification
302
+ */
303
+
304
+ interface UploadConfig {
305
+ /** File input selector */
306
+ selector: string | string[];
307
+ /** File paths to upload */
308
+ files: string[];
309
+ /** Timeout */
310
+ timeout?: number;
311
+ }
312
+ interface UploadResult {
313
+ /** Whether files were accepted by the input */
314
+ accepted: boolean;
315
+ /** Number of files set */
316
+ fileCount: number;
317
+ /** File names */
318
+ fileNames: string[];
319
+ /** Whether files appear in visible UI (best-effort check) */
320
+ visibleInUI?: boolean;
321
+ /** Validation error text if any */
322
+ validationError?: string;
323
+ /** Error if upload failed */
324
+ error?: string;
325
+ }
326
+ /**
327
+ * Upload files to a file input and verify acceptance.
328
+ */
329
+ declare function uploadFiles(page: Page, config: UploadConfig): Promise<UploadResult>;
330
+
331
+ export { Browser, type BrowserOptions, type ComboboxConfig, type ComboboxResult, type OverlayInfo, Page, type PageOptions, type PinRecoveryResult, type SemanticFingerprint, SnapshotNode, type SubmitAndVerifyOptions, type SubmitAndVerifyResult, type TargetFingerprint, type UploadConfig, type UploadResult, buildFingerprintMap, chooseOption, connect, createFingerprint, createTargetFingerprint, detectOverlay, fingerprintKey, fingerprintSimilarity, recoverPinnedTarget, recoverStaleRef, submitAndVerify, uploadFiles };
package/dist/browser.mjs CHANGED
@@ -1,21 +1,53 @@
1
1
  import {
2
2
  Browser,
3
3
  Page,
4
- connect
5
- } from "./chunk-NNEHWWHL.mjs";
4
+ buildFingerprintMap,
5
+ computeDelta,
6
+ connect,
7
+ createFingerprint,
8
+ createTargetFingerprint,
9
+ detectOverlay,
10
+ extractPageState,
11
+ extractReview,
12
+ fingerprintKey,
13
+ fingerprintSimilarity,
14
+ recoverPinnedTarget,
15
+ recoverStaleRef,
16
+ submitAndVerify
17
+ } from "./chunk-FEEGNSHB.mjs";
6
18
  import "./chunk-EZNZ72VA.mjs";
7
19
  import "./chunk-BVZALQT4.mjs";
8
20
  import {
9
21
  ElementNotFoundError,
10
22
  NavigationError,
11
23
  TimeoutError
12
- } from "./chunk-V3VLBQAM.mjs";
24
+ } from "./chunk-ZDODXEBD.mjs";
13
25
  import "./chunk-JXAUPHZM.mjs";
26
+ import {
27
+ chooseOption
28
+ } from "./chunk-MIJ7UIKB.mjs";
29
+ import {
30
+ uploadFiles
31
+ } from "./chunk-OIHU7OFY.mjs";
14
32
  export {
15
33
  Browser,
16
34
  ElementNotFoundError,
17
35
  NavigationError,
18
36
  Page,
19
37
  TimeoutError,
20
- connect
38
+ buildFingerprintMap,
39
+ chooseOption,
40
+ computeDelta,
41
+ connect,
42
+ createFingerprint,
43
+ createTargetFingerprint,
44
+ detectOverlay,
45
+ extractPageState,
46
+ extractReview,
47
+ fingerprintKey,
48
+ fingerprintSimilarity,
49
+ recoverPinnedTarget,
50
+ recoverStaleRef,
51
+ submitAndVerify,
52
+ uploadFiles
21
53
  };