@predicatelabs/sdk 0.99.9
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/LICENSE +24 -0
- package/README.md +252 -0
- package/dist/actions.d.ts +185 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +1120 -0
- package/dist/actions.js.map +1 -0
- package/dist/agent-runtime.d.ts +352 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/agent-runtime.js +1170 -0
- package/dist/agent-runtime.js.map +1 -0
- package/dist/agent.d.ts +164 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +408 -0
- package/dist/agent.js.map +1 -0
- package/dist/asserts/expect.d.ts +159 -0
- package/dist/asserts/expect.d.ts.map +1 -0
- package/dist/asserts/expect.js +547 -0
- package/dist/asserts/expect.js.map +1 -0
- package/dist/asserts/index.d.ts +58 -0
- package/dist/asserts/index.d.ts.map +1 -0
- package/dist/asserts/index.js +70 -0
- package/dist/asserts/index.js.map +1 -0
- package/dist/asserts/query.d.ts +199 -0
- package/dist/asserts/query.d.ts.map +1 -0
- package/dist/asserts/query.js +288 -0
- package/dist/asserts/query.js.map +1 -0
- package/dist/backends/actions.d.ts +119 -0
- package/dist/backends/actions.d.ts.map +1 -0
- package/dist/backends/actions.js +291 -0
- package/dist/backends/actions.js.map +1 -0
- package/dist/backends/browser-use-adapter.d.ts +131 -0
- package/dist/backends/browser-use-adapter.d.ts.map +1 -0
- package/dist/backends/browser-use-adapter.js +219 -0
- package/dist/backends/browser-use-adapter.js.map +1 -0
- package/dist/backends/cdp-backend.d.ts +66 -0
- package/dist/backends/cdp-backend.d.ts.map +1 -0
- package/dist/backends/cdp-backend.js +273 -0
- package/dist/backends/cdp-backend.js.map +1 -0
- package/dist/backends/index.d.ts +80 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +101 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/protocol.d.ts +156 -0
- package/dist/backends/protocol.d.ts.map +1 -0
- package/dist/backends/protocol.js +16 -0
- package/dist/backends/protocol.js.map +1 -0
- package/dist/backends/sentience-context.d.ts +143 -0
- package/dist/backends/sentience-context.d.ts.map +1 -0
- package/dist/backends/sentience-context.js +359 -0
- package/dist/backends/sentience-context.js.map +1 -0
- package/dist/backends/snapshot.d.ts +188 -0
- package/dist/backends/snapshot.d.ts.map +1 -0
- package/dist/backends/snapshot.js +360 -0
- package/dist/backends/snapshot.js.map +1 -0
- package/dist/browser.d.ts +154 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +920 -0
- package/dist/browser.js.map +1 -0
- package/dist/canonicalization.d.ts +126 -0
- package/dist/canonicalization.d.ts.map +1 -0
- package/dist/canonicalization.js +161 -0
- package/dist/canonicalization.js.map +1 -0
- package/dist/captcha/strategies.d.ts +12 -0
- package/dist/captcha/strategies.d.ts.map +1 -0
- package/dist/captcha/strategies.js +43 -0
- package/dist/captcha/strategies.js.map +1 -0
- package/dist/captcha/types.d.ts +45 -0
- package/dist/captcha/types.d.ts.map +1 -0
- package/dist/captcha/types.js +12 -0
- package/dist/captcha/types.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +422 -0
- package/dist/cli.js.map +1 -0
- package/dist/conversational-agent.d.ts +123 -0
- package/dist/conversational-agent.d.ts.map +1 -0
- package/dist/conversational-agent.js +341 -0
- package/dist/conversational-agent.js.map +1 -0
- package/dist/cursor-policy.d.ts +41 -0
- package/dist/cursor-policy.d.ts.map +1 -0
- package/dist/cursor-policy.js +81 -0
- package/dist/cursor-policy.js.map +1 -0
- package/dist/debugger.d.ts +28 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/debugger.js +107 -0
- package/dist/debugger.js.map +1 -0
- package/dist/expect.d.ts +16 -0
- package/dist/expect.d.ts.map +1 -0
- package/dist/expect.js +67 -0
- package/dist/expect.js.map +1 -0
- package/dist/failure-artifacts.d.ts +95 -0
- package/dist/failure-artifacts.d.ts.map +1 -0
- package/dist/failure-artifacts.js +805 -0
- package/dist/failure-artifacts.js.map +1 -0
- package/dist/generator.d.ts +16 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +205 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +160 -0
- package/dist/index.js.map +1 -0
- package/dist/inspector.d.ts +13 -0
- package/dist/inspector.d.ts.map +1 -0
- package/dist/inspector.js +153 -0
- package/dist/inspector.js.map +1 -0
- package/dist/llm-provider.d.ts +144 -0
- package/dist/llm-provider.d.ts.map +1 -0
- package/dist/llm-provider.js +460 -0
- package/dist/llm-provider.js.map +1 -0
- package/dist/ordinal.d.ts +90 -0
- package/dist/ordinal.d.ts.map +1 -0
- package/dist/ordinal.js +249 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/overlay.d.ts +63 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +102 -0
- package/dist/overlay.js.map +1 -0
- package/dist/protocols/browser-protocol.d.ts +79 -0
- package/dist/protocols/browser-protocol.d.ts.map +1 -0
- package/dist/protocols/browser-protocol.js +9 -0
- package/dist/protocols/browser-protocol.js.map +1 -0
- package/dist/query.d.ts +66 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +482 -0
- package/dist/query.js.map +1 -0
- package/dist/read.d.ts +47 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +128 -0
- package/dist/read.js.map +1 -0
- package/dist/recorder.d.ts +44 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/recorder.js +262 -0
- package/dist/recorder.js.map +1 -0
- package/dist/runtime-agent.d.ts +72 -0
- package/dist/runtime-agent.d.ts.map +1 -0
- package/dist/runtime-agent.js +357 -0
- package/dist/runtime-agent.js.map +1 -0
- package/dist/screenshot.d.ts +17 -0
- package/dist/screenshot.d.ts.map +1 -0
- package/dist/screenshot.js +40 -0
- package/dist/screenshot.js.map +1 -0
- package/dist/snapshot-diff.d.ts +23 -0
- package/dist/snapshot-diff.d.ts.map +1 -0
- package/dist/snapshot-diff.js +119 -0
- package/dist/snapshot-diff.js.map +1 -0
- package/dist/snapshot.d.ts +47 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +358 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/textSearch.d.ts +64 -0
- package/dist/textSearch.d.ts.map +1 -0
- package/dist/textSearch.js +113 -0
- package/dist/textSearch.js.map +1 -0
- package/dist/tools/context.d.ts +18 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +40 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/defaults.d.ts +5 -0
- package/dist/tools/defaults.d.ts.map +1 -0
- package/dist/tools/defaults.js +368 -0
- package/dist/tools/defaults.js.map +1 -0
- package/dist/tools/filesystem.d.ts +12 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +137 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +38 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +100 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tracing/cloud-sink.d.ts +189 -0
- package/dist/tracing/cloud-sink.d.ts.map +1 -0
- package/dist/tracing/cloud-sink.js +1067 -0
- package/dist/tracing/cloud-sink.js.map +1 -0
- package/dist/tracing/index-schema.d.ts +231 -0
- package/dist/tracing/index-schema.d.ts.map +1 -0
- package/dist/tracing/index-schema.js +235 -0
- package/dist/tracing/index-schema.js.map +1 -0
- package/dist/tracing/index.d.ts +12 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +28 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/indexer.d.ts +20 -0
- package/dist/tracing/indexer.d.ts.map +1 -0
- package/dist/tracing/indexer.js +347 -0
- package/dist/tracing/indexer.js.map +1 -0
- package/dist/tracing/jsonl-sink.d.ts +51 -0
- package/dist/tracing/jsonl-sink.d.ts.map +1 -0
- package/dist/tracing/jsonl-sink.js +329 -0
- package/dist/tracing/jsonl-sink.js.map +1 -0
- package/dist/tracing/sink.d.ts +25 -0
- package/dist/tracing/sink.d.ts.map +1 -0
- package/dist/tracing/sink.js +15 -0
- package/dist/tracing/sink.js.map +1 -0
- package/dist/tracing/tracer-factory.d.ts +102 -0
- package/dist/tracing/tracer-factory.d.ts.map +1 -0
- package/dist/tracing/tracer-factory.js +375 -0
- package/dist/tracing/tracer-factory.js.map +1 -0
- package/dist/tracing/tracer.d.ts +140 -0
- package/dist/tracing/tracer.d.ts.map +1 -0
- package/dist/tracing/tracer.js +336 -0
- package/dist/tracing/tracer.js.map +1 -0
- package/dist/tracing/types.d.ts +203 -0
- package/dist/tracing/types.d.ts.map +1 -0
- package/dist/tracing/types.js +8 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/types.d.ts +422 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/action-executor.d.ts +25 -0
- package/dist/utils/action-executor.d.ts.map +1 -0
- package/dist/utils/action-executor.js +121 -0
- package/dist/utils/action-executor.js.map +1 -0
- package/dist/utils/browser-evaluator.d.ts +76 -0
- package/dist/utils/browser-evaluator.d.ts.map +1 -0
- package/dist/utils/browser-evaluator.js +130 -0
- package/dist/utils/browser-evaluator.js.map +1 -0
- package/dist/utils/browser.d.ts +30 -0
- package/dist/utils/browser.d.ts.map +1 -0
- package/dist/utils/browser.js +75 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/element-filter.d.ts +76 -0
- package/dist/utils/element-filter.d.ts.map +1 -0
- package/dist/utils/element-filter.js +195 -0
- package/dist/utils/element-filter.js.map +1 -0
- package/dist/utils/grid-utils.d.ts +37 -0
- package/dist/utils/grid-utils.d.ts.map +1 -0
- package/dist/utils/grid-utils.js +283 -0
- package/dist/utils/grid-utils.js.map +1 -0
- package/dist/utils/llm-interaction-handler.d.ts +41 -0
- package/dist/utils/llm-interaction-handler.d.ts.map +1 -0
- package/dist/utils/llm-interaction-handler.js +171 -0
- package/dist/utils/llm-interaction-handler.js.map +1 -0
- package/dist/utils/llm-response-builder.d.ts +56 -0
- package/dist/utils/llm-response-builder.d.ts.map +1 -0
- package/dist/utils/llm-response-builder.js +130 -0
- package/dist/utils/llm-response-builder.js.map +1 -0
- package/dist/utils/selector-utils.d.ts +12 -0
- package/dist/utils/selector-utils.d.ts.map +1 -0
- package/dist/utils/selector-utils.js +32 -0
- package/dist/utils/selector-utils.js.map +1 -0
- package/dist/utils/snapshot-event-builder.d.ts +28 -0
- package/dist/utils/snapshot-event-builder.d.ts.map +1 -0
- package/dist/utils/snapshot-event-builder.js +88 -0
- package/dist/utils/snapshot-event-builder.js.map +1 -0
- package/dist/utils/snapshot-processor.d.ts +27 -0
- package/dist/utils/snapshot-processor.d.ts.map +1 -0
- package/dist/utils/snapshot-processor.js +47 -0
- package/dist/utils/snapshot-processor.js.map +1 -0
- package/dist/utils/trace-event-builder.d.ts +122 -0
- package/dist/utils/trace-event-builder.d.ts.map +1 -0
- package/dist/utils/trace-event-builder.js +365 -0
- package/dist/utils/trace-event-builder.js.map +1 -0
- package/dist/utils/trace-file-manager.d.ts +70 -0
- package/dist/utils/trace-file-manager.d.ts.map +1 -0
- package/dist/utils/trace-file-manager.js +194 -0
- package/dist/utils/trace-file-manager.js.map +1 -0
- package/dist/utils/zod.d.ts +5 -0
- package/dist/utils/zod.d.ts.map +1 -0
- package/dist/utils/zod.js +80 -0
- package/dist/utils/zod.js.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/dist/verification.d.ts +194 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +530 -0
- package/dist/verification.js.map +1 -0
- package/dist/vision-executor.d.ts +18 -0
- package/dist/vision-executor.d.ts.map +1 -0
- package/dist/vision-executor.js +60 -0
- package/dist/vision-executor.js.map +1 -0
- package/dist/visual-agent.d.ts +120 -0
- package/dist/visual-agent.d.ts.map +1 -0
- package/dist/visual-agent.js +796 -0
- package/dist/visual-agent.js.map +1 -0
- package/dist/wait.d.ts +35 -0
- package/dist/wait.d.ts.map +1 -0
- package/dist/wait.js +76 -0
- package/dist/wait.js.map +1 -0
- package/package.json +94 -0
- package/spec/README.md +72 -0
- package/spec/SNAPSHOT_V1.md +208 -0
- package/spec/sdk-types.md +259 -0
- package/spec/snapshot.schema.json +148 -0
- package/src/extension/background.js +104 -0
- package/src/extension/content.js +162 -0
- package/src/extension/injected_api.js +1399 -0
- package/src/extension/manifest.json +36 -0
- package/src/extension/pkg/README.md +1340 -0
- package/src/extension/pkg/package.json +15 -0
- package/src/extension/pkg/sentience_core.d.ts +51 -0
- package/src/extension/pkg/sentience_core.js +371 -0
- package/src/extension/pkg/sentience_core_bg.wasm +0 -0
- package/src/extension/pkg/sentience_core_bg.wasm.d.ts +10 -0
- package/src/extension/release.json +116 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript type definitions - matches spec/sdk-types.md
|
|
3
|
+
*/
|
|
4
|
+
export interface BBox {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
}
|
|
10
|
+
export interface Viewport {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
}
|
|
14
|
+
export interface VisualCues {
|
|
15
|
+
is_primary: boolean;
|
|
16
|
+
background_color_name: string | null;
|
|
17
|
+
fallback_background_color_name?: string | null;
|
|
18
|
+
is_clickable: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface Element {
|
|
21
|
+
id: number;
|
|
22
|
+
role: string;
|
|
23
|
+
text: string | null;
|
|
24
|
+
importance: number;
|
|
25
|
+
bbox: BBox;
|
|
26
|
+
visual_cues: VisualCues;
|
|
27
|
+
in_viewport: boolean;
|
|
28
|
+
is_occluded: boolean;
|
|
29
|
+
z_index: number;
|
|
30
|
+
fused_rank_index?: number;
|
|
31
|
+
heuristic_index?: number;
|
|
32
|
+
ml_probability?: number;
|
|
33
|
+
ml_score?: number;
|
|
34
|
+
diff_status?: 'ADDED' | 'REMOVED' | 'MODIFIED' | 'MOVED';
|
|
35
|
+
center_x?: number;
|
|
36
|
+
center_y?: number;
|
|
37
|
+
doc_y?: number;
|
|
38
|
+
group_key?: string;
|
|
39
|
+
group_index?: number;
|
|
40
|
+
href?: string;
|
|
41
|
+
/** Nearby static text (best-effort, usually only for top-ranked elements) */
|
|
42
|
+
nearby_text?: string | null;
|
|
43
|
+
/** Best-effort accessible name/label for controls (distinct from visible text) */
|
|
44
|
+
name?: string | null;
|
|
45
|
+
/** Current value for inputs/textarea/select (PII-aware: may be omitted/redacted) */
|
|
46
|
+
value?: string | null;
|
|
47
|
+
/** Input type (e.g., "text", "email", "password") */
|
|
48
|
+
input_type?: string | null;
|
|
49
|
+
/** Whether value was redacted for privacy */
|
|
50
|
+
value_redacted?: boolean | null;
|
|
51
|
+
/** Normalized boolean states (best-effort) */
|
|
52
|
+
checked?: boolean | null;
|
|
53
|
+
disabled?: boolean | null;
|
|
54
|
+
expanded?: boolean | null;
|
|
55
|
+
/** Raw ARIA state strings (tri-state / debugging) */
|
|
56
|
+
aria_checked?: string | null;
|
|
57
|
+
aria_disabled?: string | null;
|
|
58
|
+
aria_expanded?: string | null;
|
|
59
|
+
in_dominant_group?: boolean;
|
|
60
|
+
layout?: LayoutHints;
|
|
61
|
+
}
|
|
62
|
+
export interface GridPosition {
|
|
63
|
+
/** 0-based row index */
|
|
64
|
+
row_index: number;
|
|
65
|
+
/** 0-based column index */
|
|
66
|
+
col_index: number;
|
|
67
|
+
/** ID of the row cluster (for distinguishing separate grids) */
|
|
68
|
+
cluster_id: number;
|
|
69
|
+
}
|
|
70
|
+
export interface LayoutHints {
|
|
71
|
+
/** Grid ID (maps to GridInfo.grid_id) - distinguishes multiple grids on same page */
|
|
72
|
+
/** Per feedback: Add grid_id to distinguish main feed + sidebar lists + nav links */
|
|
73
|
+
grid_id?: number | null;
|
|
74
|
+
/** Grid position within the grid (row_index, col_index) */
|
|
75
|
+
grid_pos?: GridPosition | null;
|
|
76
|
+
/** Inferred parent index in the original elements slice */
|
|
77
|
+
parent_index?: number | null;
|
|
78
|
+
/** Indices of children elements (optional to avoid payload bloat - container elements can have hundreds) */
|
|
79
|
+
/** Per feedback: Make optional/capped to prevent serializing large arrays */
|
|
80
|
+
children_indices?: number[] | null;
|
|
81
|
+
/** Confidence score for grid position assignment (0.0-1.0) */
|
|
82
|
+
grid_confidence: number;
|
|
83
|
+
/** Confidence score for parent-child containment (0.0-1.0) */
|
|
84
|
+
parent_confidence: number;
|
|
85
|
+
/** Optional: Page region (header/nav/main/aside/footer) - killer signal for ordinality + dominant group */
|
|
86
|
+
/** Per feedback: Optional but very useful for region detection */
|
|
87
|
+
region?: 'header' | 'nav' | 'main' | 'aside' | 'footer' | null;
|
|
88
|
+
/** Confidence score for region assignment (0.0-1.0) */
|
|
89
|
+
region_confidence: number;
|
|
90
|
+
}
|
|
91
|
+
export interface GridInfo {
|
|
92
|
+
/** The grid ID (matches grid_id in LayoutHints) */
|
|
93
|
+
grid_id: number;
|
|
94
|
+
/** Bounding box: x, y, width, height (document coordinates) */
|
|
95
|
+
bbox: BBox;
|
|
96
|
+
/** Number of rows in the grid */
|
|
97
|
+
row_count: number;
|
|
98
|
+
/** Number of columns in the grid */
|
|
99
|
+
col_count: number;
|
|
100
|
+
/** Total number of items in the grid */
|
|
101
|
+
item_count: number;
|
|
102
|
+
/** Confidence score (currently 1.0) */
|
|
103
|
+
confidence: number;
|
|
104
|
+
/** Optional inferred label (e.g., "product_grid", "search_results", "navigation") - best-effort heuristic, may be null */
|
|
105
|
+
label?: string | null;
|
|
106
|
+
/** Whether this grid is the dominant group (main content area) */
|
|
107
|
+
is_dominant?: boolean;
|
|
108
|
+
/** Z-index of this grid (max among elements in this grid) */
|
|
109
|
+
z_index?: number;
|
|
110
|
+
/** Global max z-index across ALL grids (for comparison) */
|
|
111
|
+
z_index_max?: number;
|
|
112
|
+
/** Whether this grid blocks interaction with content behind it */
|
|
113
|
+
blocks_interaction?: boolean;
|
|
114
|
+
/** Ratio of grid area to viewport area (0.0-1.0) */
|
|
115
|
+
viewport_coverage?: number;
|
|
116
|
+
}
|
|
117
|
+
export interface MlRerankTags {
|
|
118
|
+
repeated: boolean;
|
|
119
|
+
sponsored_ish: boolean;
|
|
120
|
+
non_sponsored: boolean;
|
|
121
|
+
pos: boolean;
|
|
122
|
+
occ: boolean;
|
|
123
|
+
vocc: boolean;
|
|
124
|
+
short: boolean;
|
|
125
|
+
action_ish: boolean;
|
|
126
|
+
nav_ish: boolean;
|
|
127
|
+
}
|
|
128
|
+
export interface MlRerankInfo {
|
|
129
|
+
enabled: boolean;
|
|
130
|
+
applied: boolean;
|
|
131
|
+
reason?: string | null;
|
|
132
|
+
candidate_count?: number | null;
|
|
133
|
+
top_probability?: number | null;
|
|
134
|
+
min_confidence?: number | null;
|
|
135
|
+
is_high_confidence?: boolean | null;
|
|
136
|
+
tags?: MlRerankTags | null;
|
|
137
|
+
error?: string | null;
|
|
138
|
+
}
|
|
139
|
+
export interface Snapshot {
|
|
140
|
+
status: 'success' | 'error';
|
|
141
|
+
timestamp?: string;
|
|
142
|
+
url: string;
|
|
143
|
+
viewport?: Viewport;
|
|
144
|
+
elements: Element[];
|
|
145
|
+
screenshot?: string;
|
|
146
|
+
screenshot_format?: 'png' | 'jpeg';
|
|
147
|
+
error?: string;
|
|
148
|
+
requires_license?: boolean;
|
|
149
|
+
dominant_group_key?: string;
|
|
150
|
+
diagnostics?: SnapshotDiagnostics;
|
|
151
|
+
/** True if a modal/overlay grid was detected */
|
|
152
|
+
modal_detected?: boolean;
|
|
153
|
+
/** Array of GridInfo for detected modal grids */
|
|
154
|
+
modal_grids?: GridInfo[];
|
|
155
|
+
/** ML rerank metadata (optional) */
|
|
156
|
+
ml_rerank?: MlRerankInfo;
|
|
157
|
+
}
|
|
158
|
+
export interface StepHookContext {
|
|
159
|
+
stepId: string;
|
|
160
|
+
stepIndex: number;
|
|
161
|
+
goal: string;
|
|
162
|
+
attempt: number;
|
|
163
|
+
url?: string | null;
|
|
164
|
+
success?: boolean;
|
|
165
|
+
outcome?: string | null;
|
|
166
|
+
error?: string | null;
|
|
167
|
+
}
|
|
168
|
+
export interface SnapshotDiagnosticsMetrics {
|
|
169
|
+
ready_state?: string | null;
|
|
170
|
+
quiet_ms?: number | null;
|
|
171
|
+
node_count?: number | null;
|
|
172
|
+
interactive_count?: number | null;
|
|
173
|
+
raw_elements_count?: number | null;
|
|
174
|
+
}
|
|
175
|
+
export interface CaptchaEvidence {
|
|
176
|
+
text_hits: string[];
|
|
177
|
+
selector_hits: string[];
|
|
178
|
+
iframe_src_hits: string[];
|
|
179
|
+
url_hits: string[];
|
|
180
|
+
}
|
|
181
|
+
export interface CaptchaDiagnostics {
|
|
182
|
+
detected: boolean;
|
|
183
|
+
provider_hint?: 'recaptcha' | 'hcaptcha' | 'turnstile' | 'arkose' | 'awswaf' | 'unknown' | null;
|
|
184
|
+
confidence: number;
|
|
185
|
+
evidence: CaptchaEvidence;
|
|
186
|
+
}
|
|
187
|
+
export interface SnapshotDiagnostics {
|
|
188
|
+
confidence?: number | null;
|
|
189
|
+
reasons?: string[];
|
|
190
|
+
metrics?: SnapshotDiagnosticsMetrics;
|
|
191
|
+
captcha?: CaptchaDiagnostics;
|
|
192
|
+
/** P1-01: forward-compatible vision recommendation signal (optional) */
|
|
193
|
+
requires_vision?: boolean | null;
|
|
194
|
+
requires_vision_reason?: string | null;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Metadata for a stored screenshot.
|
|
198
|
+
* Used by CloudTraceSink to track screenshots before upload.
|
|
199
|
+
*/
|
|
200
|
+
export interface ScreenshotMetadata {
|
|
201
|
+
sequence: number;
|
|
202
|
+
format: 'png' | 'jpeg';
|
|
203
|
+
sizeBytes: number;
|
|
204
|
+
stepId: string | null;
|
|
205
|
+
filepath: string;
|
|
206
|
+
}
|
|
207
|
+
export interface ActionResult {
|
|
208
|
+
success: boolean;
|
|
209
|
+
duration_ms: number;
|
|
210
|
+
outcome?: 'navigated' | 'dom_updated' | 'no_change' | 'error';
|
|
211
|
+
url_changed?: boolean;
|
|
212
|
+
snapshot_after?: Snapshot;
|
|
213
|
+
/** Optional: action metadata (e.g., human-like cursor movement path) */
|
|
214
|
+
cursor?: Record<string, any>;
|
|
215
|
+
error?: {
|
|
216
|
+
code: string;
|
|
217
|
+
reason: string;
|
|
218
|
+
recovery_hint?: string;
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
export interface TabInfo {
|
|
222
|
+
tab_id: string;
|
|
223
|
+
url?: string | null;
|
|
224
|
+
title?: string | null;
|
|
225
|
+
is_active: boolean;
|
|
226
|
+
}
|
|
227
|
+
export interface TabListResult {
|
|
228
|
+
ok: boolean;
|
|
229
|
+
tabs: TabInfo[];
|
|
230
|
+
error?: string | null;
|
|
231
|
+
}
|
|
232
|
+
export interface TabOperationResult {
|
|
233
|
+
ok: boolean;
|
|
234
|
+
tab?: TabInfo | null;
|
|
235
|
+
error?: string | null;
|
|
236
|
+
}
|
|
237
|
+
export interface BackendCapabilities {
|
|
238
|
+
tabs: boolean;
|
|
239
|
+
evaluate_js: boolean;
|
|
240
|
+
downloads: boolean;
|
|
241
|
+
filesystem_tools: boolean;
|
|
242
|
+
keyboard: boolean;
|
|
243
|
+
permissions: boolean;
|
|
244
|
+
}
|
|
245
|
+
export interface EvaluateJsRequest {
|
|
246
|
+
code: string;
|
|
247
|
+
max_output_chars?: number;
|
|
248
|
+
truncate?: boolean;
|
|
249
|
+
}
|
|
250
|
+
export interface EvaluateJsResult {
|
|
251
|
+
ok: boolean;
|
|
252
|
+
value?: any;
|
|
253
|
+
text?: string | null;
|
|
254
|
+
truncated?: boolean;
|
|
255
|
+
error?: string | null;
|
|
256
|
+
}
|
|
257
|
+
export interface WaitResult {
|
|
258
|
+
found: boolean;
|
|
259
|
+
element?: Element;
|
|
260
|
+
duration_ms: number;
|
|
261
|
+
timeout: boolean;
|
|
262
|
+
}
|
|
263
|
+
export interface ExtractResult {
|
|
264
|
+
ok: boolean;
|
|
265
|
+
data?: any;
|
|
266
|
+
raw?: string | null;
|
|
267
|
+
error?: string | null;
|
|
268
|
+
}
|
|
269
|
+
export interface QuerySelectorObject {
|
|
270
|
+
role?: string;
|
|
271
|
+
text?: string;
|
|
272
|
+
name?: string;
|
|
273
|
+
value?: string;
|
|
274
|
+
checked?: boolean;
|
|
275
|
+
disabled?: boolean;
|
|
276
|
+
expanded?: boolean;
|
|
277
|
+
clickable?: boolean;
|
|
278
|
+
isPrimary?: boolean;
|
|
279
|
+
importance?: number | {
|
|
280
|
+
min?: number;
|
|
281
|
+
max?: number;
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
export type QuerySelector = string | QuerySelectorObject;
|
|
285
|
+
/**
|
|
286
|
+
* Cookie definition for storage state injection.
|
|
287
|
+
* Matches Playwright's cookie format for storage_state.
|
|
288
|
+
*/
|
|
289
|
+
export interface Cookie {
|
|
290
|
+
name: string;
|
|
291
|
+
value: string;
|
|
292
|
+
domain: string;
|
|
293
|
+
path?: string;
|
|
294
|
+
expires?: number;
|
|
295
|
+
httpOnly?: boolean;
|
|
296
|
+
secure?: boolean;
|
|
297
|
+
sameSite?: 'Strict' | 'Lax' | 'None';
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* LocalStorage item for a specific origin.
|
|
301
|
+
* Playwright stores localStorage as an array of {name, value} objects.
|
|
302
|
+
*/
|
|
303
|
+
export interface LocalStorageItem {
|
|
304
|
+
name: string;
|
|
305
|
+
value: string;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Storage state for a specific origin (localStorage).
|
|
309
|
+
* Represents localStorage data for a single domain.
|
|
310
|
+
*/
|
|
311
|
+
export interface OriginStorage {
|
|
312
|
+
origin: string;
|
|
313
|
+
localStorage: LocalStorageItem[];
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Complete browser storage state (cookies + localStorage).
|
|
317
|
+
* This is the format used by Playwright's storage_state() method.
|
|
318
|
+
* Can be saved to/loaded from JSON files for session injection.
|
|
319
|
+
*/
|
|
320
|
+
export interface StorageState {
|
|
321
|
+
cookies: Cookie[];
|
|
322
|
+
origins: OriginStorage[];
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Rectangle coordinates for text occurrence.
|
|
326
|
+
* Includes both absolute (page) and viewport-relative coordinates.
|
|
327
|
+
*/
|
|
328
|
+
export interface TextRect {
|
|
329
|
+
/** Absolute X coordinate (page coordinate with scroll offset) */
|
|
330
|
+
x: number;
|
|
331
|
+
/** Absolute Y coordinate (page coordinate with scroll offset) */
|
|
332
|
+
y: number;
|
|
333
|
+
/** Rectangle width in pixels */
|
|
334
|
+
width: number;
|
|
335
|
+
/** Rectangle height in pixels */
|
|
336
|
+
height: number;
|
|
337
|
+
/** Absolute left position (same as x) */
|
|
338
|
+
left: number;
|
|
339
|
+
/** Absolute top position (same as y) */
|
|
340
|
+
top: number;
|
|
341
|
+
/** Absolute right position (x + width) */
|
|
342
|
+
right: number;
|
|
343
|
+
/** Absolute bottom position (y + height) */
|
|
344
|
+
bottom: number;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Viewport-relative rectangle coordinates (without scroll offset)
|
|
348
|
+
*/
|
|
349
|
+
export interface ViewportRect {
|
|
350
|
+
/** Viewport-relative X coordinate */
|
|
351
|
+
x: number;
|
|
352
|
+
/** Viewport-relative Y coordinate */
|
|
353
|
+
y: number;
|
|
354
|
+
/** Rectangle width in pixels */
|
|
355
|
+
width: number;
|
|
356
|
+
/** Rectangle height in pixels */
|
|
357
|
+
height: number;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Context text surrounding a match
|
|
361
|
+
*/
|
|
362
|
+
export interface TextContext {
|
|
363
|
+
/** Text before the match (up to 20 chars) */
|
|
364
|
+
before: string;
|
|
365
|
+
/** Text after the match (up to 20 chars) */
|
|
366
|
+
after: string;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* A single text match with its rectangle and context
|
|
370
|
+
*/
|
|
371
|
+
export interface TextMatch {
|
|
372
|
+
/** The matched text */
|
|
373
|
+
text: string;
|
|
374
|
+
/** Absolute rectangle coordinates (with scroll offset) */
|
|
375
|
+
rect: TextRect;
|
|
376
|
+
/** Viewport-relative rectangle (without scroll offset) */
|
|
377
|
+
viewport_rect: ViewportRect;
|
|
378
|
+
/** Surrounding text context */
|
|
379
|
+
context: TextContext;
|
|
380
|
+
/** Whether the match is currently visible in viewport */
|
|
381
|
+
in_viewport: boolean;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Result of findTextRect operation.
|
|
385
|
+
* Returns all occurrences of text on the page with their exact pixel coordinates.
|
|
386
|
+
*/
|
|
387
|
+
export interface TextRectSearchResult {
|
|
388
|
+
status: 'success' | 'error';
|
|
389
|
+
/** The search text that was queried */
|
|
390
|
+
query?: string;
|
|
391
|
+
/** Whether search was case-sensitive */
|
|
392
|
+
case_sensitive?: boolean;
|
|
393
|
+
/** Whether whole-word matching was used */
|
|
394
|
+
whole_word?: boolean;
|
|
395
|
+
/** Number of matches found */
|
|
396
|
+
matches?: number;
|
|
397
|
+
/** List of text matches with coordinates */
|
|
398
|
+
results?: TextMatch[];
|
|
399
|
+
/** Current viewport dimensions */
|
|
400
|
+
viewport?: Viewport & {
|
|
401
|
+
scroll_x: number;
|
|
402
|
+
scroll_y: number;
|
|
403
|
+
};
|
|
404
|
+
/** Error message if status is 'error' */
|
|
405
|
+
error?: string;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Options for findTextRect operation
|
|
409
|
+
*/
|
|
410
|
+
export interface FindTextRectOptions {
|
|
411
|
+
/** Text to search for (required) */
|
|
412
|
+
text: string;
|
|
413
|
+
/** Container element to search within (default: document.body) */
|
|
414
|
+
containerElement?: Element;
|
|
415
|
+
/** Case-sensitive search (default: false) */
|
|
416
|
+
caseSensitive?: boolean;
|
|
417
|
+
/** Match whole words only (default: false) */
|
|
418
|
+
wholeWord?: boolean;
|
|
419
|
+
/** Maximum number of results to return (default: 10) */
|
|
420
|
+
maxResults?: number;
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ActionExecutor - Executes actions and handles retries
|
|
3
|
+
*
|
|
4
|
+
* Extracted from SentienceAgent to improve separation of concerns
|
|
5
|
+
*/
|
|
6
|
+
import { IBrowser } from '../protocols/browser-protocol';
|
|
7
|
+
import { Snapshot } from '../types';
|
|
8
|
+
import { AgentActResult } from '../agent';
|
|
9
|
+
/**
|
|
10
|
+
* ActionExecutor handles action parsing and execution
|
|
11
|
+
*/
|
|
12
|
+
export declare class ActionExecutor {
|
|
13
|
+
private browser;
|
|
14
|
+
private verbose;
|
|
15
|
+
constructor(browser: IBrowser, verbose?: boolean);
|
|
16
|
+
/**
|
|
17
|
+
* Execute an action string (e.g., "CLICK(42)", "TYPE(5, \"text\")")
|
|
18
|
+
*
|
|
19
|
+
* @param actionStr - Action string to parse and execute
|
|
20
|
+
* @param snap - Current snapshot for element lookup
|
|
21
|
+
* @returns Action result
|
|
22
|
+
*/
|
|
23
|
+
executeAction(actionStr: string, snap: Snapshot): Promise<AgentActResult>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=action-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-executor.d.ts","sourceRoot":"","sources":["../../src/utils/action-executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;gBADP,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE,OAAc;IAGjC;;;;;;OAMG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;CA+GhF"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ActionExecutor - Executes actions and handles retries
|
|
4
|
+
*
|
|
5
|
+
* Extracted from SentienceAgent to improve separation of concerns
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ActionExecutor = void 0;
|
|
9
|
+
const actions_1 = require("../actions");
|
|
10
|
+
/**
|
|
11
|
+
* ActionExecutor handles action parsing and execution
|
|
12
|
+
*/
|
|
13
|
+
class ActionExecutor {
|
|
14
|
+
constructor(browser, verbose = true) {
|
|
15
|
+
this.browser = browser;
|
|
16
|
+
this.verbose = verbose;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Execute an action string (e.g., "CLICK(42)", "TYPE(5, \"text\")")
|
|
20
|
+
*
|
|
21
|
+
* @param actionStr - Action string to parse and execute
|
|
22
|
+
* @param snap - Current snapshot for element lookup
|
|
23
|
+
* @returns Action result
|
|
24
|
+
*/
|
|
25
|
+
async executeAction(actionStr, snap) {
|
|
26
|
+
// Parse action string
|
|
27
|
+
const actionMatch = actionStr.match(/^(\w+)\((.*)\)$/);
|
|
28
|
+
if (!actionMatch) {
|
|
29
|
+
throw new Error(`Unknown action format: ${actionStr}\n` +
|
|
30
|
+
`Expected: CLICK(id), TYPE(id, "text"), PRESS("key"), or FINISH()`);
|
|
31
|
+
}
|
|
32
|
+
const [, action, argsStr] = actionMatch;
|
|
33
|
+
const actionUpper = action.toUpperCase();
|
|
34
|
+
if (actionUpper === 'FINISH') {
|
|
35
|
+
return {
|
|
36
|
+
success: true,
|
|
37
|
+
action: 'finish',
|
|
38
|
+
outcome: 'Task completed',
|
|
39
|
+
durationMs: 0,
|
|
40
|
+
attempt: 0,
|
|
41
|
+
goal: '',
|
|
42
|
+
urlChanged: false,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (actionUpper === 'CLICK') {
|
|
46
|
+
const elementId = parseInt(argsStr.trim(), 10);
|
|
47
|
+
if (isNaN(elementId)) {
|
|
48
|
+
throw new Error(`Invalid element ID in CLICK action: ${argsStr}`);
|
|
49
|
+
}
|
|
50
|
+
// Verify element exists
|
|
51
|
+
const element = snap.elements.find(el => el.id === elementId);
|
|
52
|
+
if (!element) {
|
|
53
|
+
throw new Error(`Element ${elementId} not found in snapshot`);
|
|
54
|
+
}
|
|
55
|
+
const result = await (0, actions_1.click)(this.browser, elementId);
|
|
56
|
+
return {
|
|
57
|
+
success: result.success,
|
|
58
|
+
action: 'click',
|
|
59
|
+
elementId,
|
|
60
|
+
cursor: result.cursor,
|
|
61
|
+
outcome: result.outcome || (result.success ? 'Clicked successfully' : 'Click failed'),
|
|
62
|
+
durationMs: result.duration_ms,
|
|
63
|
+
attempt: 0,
|
|
64
|
+
goal: '',
|
|
65
|
+
urlChanged: result.url_changed || false,
|
|
66
|
+
error: result.error?.reason,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (actionUpper === 'TYPE') {
|
|
70
|
+
// Parse TYPE(id, "text") - support both single and double quotes, and flexible whitespace
|
|
71
|
+
const typeMatch = argsStr.match(/^(\d+)\s*,\s*["']([^"']+)["']$/);
|
|
72
|
+
if (!typeMatch) {
|
|
73
|
+
throw new Error(`Invalid TYPE format. Expected: TYPE(id, "text")`);
|
|
74
|
+
}
|
|
75
|
+
const [, elementIdStr, text] = typeMatch;
|
|
76
|
+
const elementId = parseInt(elementIdStr, 10);
|
|
77
|
+
// Verify element exists
|
|
78
|
+
const element = snap.elements.find(el => el.id === elementId);
|
|
79
|
+
if (!element) {
|
|
80
|
+
throw new Error(`Element ${elementId} not found in snapshot`);
|
|
81
|
+
}
|
|
82
|
+
const result = await (0, actions_1.typeText)(this.browser, elementId, text);
|
|
83
|
+
return {
|
|
84
|
+
success: result.success,
|
|
85
|
+
action: 'type',
|
|
86
|
+
elementId,
|
|
87
|
+
text,
|
|
88
|
+
outcome: result.outcome || (result.success ? 'Typed successfully' : 'Type failed'),
|
|
89
|
+
durationMs: result.duration_ms,
|
|
90
|
+
attempt: 0,
|
|
91
|
+
goal: '',
|
|
92
|
+
urlChanged: result.url_changed || false,
|
|
93
|
+
error: result.error?.reason,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (actionUpper === 'PRESS') {
|
|
97
|
+
// Parse PRESS("key") - support both single and double quotes
|
|
98
|
+
const keyMatch = argsStr.match(/^["']([^"']+)["']$/);
|
|
99
|
+
if (!keyMatch) {
|
|
100
|
+
throw new Error(`Invalid PRESS format. Expected: PRESS("key")`);
|
|
101
|
+
}
|
|
102
|
+
const [, key] = keyMatch;
|
|
103
|
+
const result = await (0, actions_1.press)(this.browser, key);
|
|
104
|
+
return {
|
|
105
|
+
success: result.success,
|
|
106
|
+
action: 'press',
|
|
107
|
+
key,
|
|
108
|
+
outcome: result.outcome || (result.success ? 'Key pressed successfully' : 'Press failed'),
|
|
109
|
+
durationMs: result.duration_ms,
|
|
110
|
+
attempt: 0,
|
|
111
|
+
goal: '',
|
|
112
|
+
urlChanged: result.url_changed || false,
|
|
113
|
+
error: result.error?.reason,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
throw new Error(`Unknown action: ${actionUpper}\n` +
|
|
117
|
+
`Expected: CLICK(id), TYPE(id, "text"), PRESS("key"), or FINISH()`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.ActionExecutor = ActionExecutor;
|
|
121
|
+
//# sourceMappingURL=action-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-executor.js","sourceRoot":"","sources":["../../src/utils/action-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrowserEvaluator - Common browser evaluation patterns with standardized error handling
|
|
3
|
+
*
|
|
4
|
+
* This utility class extracts common page.evaluate() patterns to reduce code duplication
|
|
5
|
+
* and provide consistent error handling across snapshot, actions, wait, and read modules.
|
|
6
|
+
*/
|
|
7
|
+
import { Page } from 'playwright';
|
|
8
|
+
export interface EvaluationOptions {
|
|
9
|
+
timeout?: number;
|
|
10
|
+
retries?: number;
|
|
11
|
+
onError?: (error: Error) => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* BrowserEvaluator provides static methods for common browser evaluation patterns
|
|
15
|
+
*/
|
|
16
|
+
export declare class BrowserEvaluator {
|
|
17
|
+
/**
|
|
18
|
+
* Execute a browser evaluation script with standardized error handling
|
|
19
|
+
*
|
|
20
|
+
* @param page - Playwright Page instance
|
|
21
|
+
* @param script - Function to execute in browser context
|
|
22
|
+
* @param args - Arguments to pass to the script
|
|
23
|
+
* @param options - Evaluation options (timeout, retries, error handler)
|
|
24
|
+
* @returns Promise resolving to the evaluation result
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const result = await BrowserEvaluator.evaluate(
|
|
29
|
+
* page,
|
|
30
|
+
* (opts) => (window as any).sentience.snapshot(opts),
|
|
31
|
+
* { limit: 50 }
|
|
32
|
+
* );
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
static evaluate<T>(page: Page, script: (args: any) => T | Promise<T>, args?: any, options?: EvaluationOptions): Promise<T>;
|
|
36
|
+
/**
|
|
37
|
+
* Execute a browser evaluation with navigation-aware error handling
|
|
38
|
+
* Navigation may destroy the context, so we handle that gracefully
|
|
39
|
+
*
|
|
40
|
+
* @param page - Playwright Page instance
|
|
41
|
+
* @param script - Function to execute in browser context
|
|
42
|
+
* @param args - Arguments to pass to the script
|
|
43
|
+
* @param fallbackValue - Value to return if evaluation fails due to navigation
|
|
44
|
+
* @returns Promise resolving to the evaluation result or fallback value
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const success = await BrowserEvaluator.evaluateWithNavigationFallback(
|
|
49
|
+
* page,
|
|
50
|
+
* (id) => (window as any).sentience.click(id),
|
|
51
|
+
* elementId,
|
|
52
|
+
* true // Assume success if navigation destroyed context
|
|
53
|
+
* );
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
static evaluateWithNavigationFallback<T>(page: Page, script: (args: any) => T | Promise<T>, args?: any, fallbackValue?: T): Promise<T>;
|
|
57
|
+
/**
|
|
58
|
+
* Wait for a condition in the browser context with timeout
|
|
59
|
+
*
|
|
60
|
+
* @param page - Playwright Page instance
|
|
61
|
+
* @param condition - Function that returns a truthy value when condition is met
|
|
62
|
+
* @param timeout - Maximum time to wait in milliseconds
|
|
63
|
+
* @returns Promise resolving when condition is met
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* await BrowserEvaluator.waitForCondition(
|
|
68
|
+
* page,
|
|
69
|
+
* () => typeof (window as any).sentience !== 'undefined',
|
|
70
|
+
* 5000
|
|
71
|
+
* );
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
static waitForCondition(page: Page, condition: () => boolean | Promise<boolean>, timeout?: number): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=browser-evaluator.d.ts.map
|