sentienceapi 0.92.0 → 0.92.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +2 -1
- package/dist/agent.js.map +1 -1
- package/dist/browser.d.ts +18 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +23 -1
- package/dist/browser.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/tracing/tracer-factory.d.ts +13 -0
- package/dist/tracing/tracer-factory.d.ts.map +1 -1
- package/dist/tracing/tracer-factory.js +14 -2
- package/dist/tracing/tracer-factory.js.map +1 -1
- package/dist/tracing/tracer.d.ts +18 -1
- package/dist/tracing/tracer.d.ts.map +1 -1
- package/dist/tracing/tracer.js +23 -1
- package/dist/tracing/tracer.js.map +1 -1
- package/dist/tracing/types.d.ts +1 -0
- package/dist/tracing/types.d.ts.map +1 -1
- package/dist/utils/element-filter.d.ts.map +1 -1
- package/dist/utils/element-filter.js +7 -3
- package/dist/utils/element-filter.js.map +1 -1
- package/dist/utils/llm-interaction-handler.d.ts +3 -1
- package/dist/utils/llm-interaction-handler.d.ts.map +1 -1
- package/dist/utils/llm-interaction-handler.js +89 -18
- package/dist/utils/llm-interaction-handler.js.map +1 -1
- package/dist/utils/trace-event-builder.d.ts.map +1 -1
- package/dist/utils/trace-event-builder.js +34 -0
- package/dist/utils/trace-event-builder.js.map +1 -1
- package/dist/visual-agent.d.ts +115 -0
- package/dist/visual-agent.d.ts.map +1 -0
- package/dist/visual-agent.js +747 -0
- package/dist/visual-agent.js.map +1 -0
- package/package.json +1 -1
- package/src/extension/background.js +56 -185
- package/src/extension/content.js +117 -289
- package/src/extension/injected_api.js +799 -1374
- package/src/extension/manifest.json +1 -1
- package/src/extension/pkg/README.md +136 -19
- package/src/extension/pkg/sentience_core.js +190 -396
- package/src/extension/pkg/sentience_core_bg.wasm +0 -0
- package/src/extension/release.json +47 -47
- package/src/extension/test-content.js +0 -4
|
@@ -24,7 +24,8 @@ class ElementFilter {
|
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
26
|
static filterByImportance(snapshot, maxElements = 50) {
|
|
27
|
-
|
|
27
|
+
// Filter out REMOVED elements - they're not actionable and shouldn't be in LLM context
|
|
28
|
+
const elements = snapshot.elements.filter(el => el.diff_status !== 'REMOVED');
|
|
28
29
|
// Sort by importance (descending)
|
|
29
30
|
elements.sort((a, b) => b.importance - a.importance);
|
|
30
31
|
// Return top N elements
|
|
@@ -48,11 +49,13 @@ class ElementFilter {
|
|
|
48
49
|
if (!goal) {
|
|
49
50
|
return this.filterByImportance(snapshot, maxElements);
|
|
50
51
|
}
|
|
52
|
+
// Filter out REMOVED elements - they're not actionable and shouldn't be in LLM context
|
|
53
|
+
const elements = snapshot.elements.filter(el => el.diff_status !== 'REMOVED');
|
|
51
54
|
const goalLower = goal.toLowerCase();
|
|
52
55
|
const keywords = this.extractKeywords(goalLower);
|
|
53
56
|
// Score elements based on keyword matches
|
|
54
57
|
const scoredElements = [];
|
|
55
|
-
for (const element of
|
|
58
|
+
for (const element of elements) {
|
|
56
59
|
let score = element.importance; // Start with base importance
|
|
57
60
|
// Boost score for keyword matches in text
|
|
58
61
|
if (element.text) {
|
|
@@ -95,7 +98,8 @@ class ElementFilter {
|
|
|
95
98
|
* ```
|
|
96
99
|
*/
|
|
97
100
|
static filter(snapshot, options = {}) {
|
|
98
|
-
|
|
101
|
+
// Filter out REMOVED elements - they're not actionable and shouldn't be in LLM context
|
|
102
|
+
let elements = snapshot.elements.filter(el => el.diff_status !== 'REMOVED');
|
|
99
103
|
// Apply filters
|
|
100
104
|
if (options.minImportance !== undefined) {
|
|
101
105
|
elements = elements.filter(el => el.importance >= options.minImportance);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-filter.js","sourceRoot":"","sources":["../../src/utils/element-filter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAYH;;GAEG;AACH,MAAa,aAAa;IACxB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAkB,EAAE,cAAsB,EAAE;QACpE,MAAM,QAAQ,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"element-filter.js","sourceRoot":"","sources":["../../src/utils/element-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,10 @@ export declare class LLMInteractionHandler {
|
|
|
15
15
|
/**
|
|
16
16
|
* Build context string from snapshot for LLM prompt
|
|
17
17
|
*
|
|
18
|
+
* Format: [ID] <role> "text" {cues} @ (x,y) size:WxH importance:score [status]
|
|
19
|
+
*
|
|
18
20
|
* @param snap - Snapshot containing elements
|
|
19
|
-
* @param goal - Goal/task description
|
|
21
|
+
* @param goal - Goal/task description (unused but kept for API consistency)
|
|
20
22
|
* @returns Formatted context string
|
|
21
23
|
*/
|
|
22
24
|
buildContext(snap: Snapshot, _goal: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-interaction-handler.d.ts","sourceRoot":"","sources":["../../src/utils/llm-interaction-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC;;GAEG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;gBADP,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,OAAc;IAGjC
|
|
1
|
+
{"version":3,"file":"llm-interaction-handler.d.ts","sourceRoot":"","sources":["../../src/utils/llm-interaction-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC;;GAEG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;gBADP,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,OAAc;IAGjC;;;;;;;;OAQG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IA4DnD;;;;;;OAMG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgFtE;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM;CAG7C"}
|
|
@@ -18,13 +18,19 @@ class LLMInteractionHandler {
|
|
|
18
18
|
/**
|
|
19
19
|
* Build context string from snapshot for LLM prompt
|
|
20
20
|
*
|
|
21
|
+
* Format: [ID] <role> "text" {cues} @ (x,y) size:WxH importance:score [status]
|
|
22
|
+
*
|
|
21
23
|
* @param snap - Snapshot containing elements
|
|
22
|
-
* @param goal - Goal/task description
|
|
24
|
+
* @param goal - Goal/task description (unused but kept for API consistency)
|
|
23
25
|
* @returns Formatted context string
|
|
24
26
|
*/
|
|
25
27
|
buildContext(snap, _goal) {
|
|
26
28
|
const lines = [];
|
|
27
29
|
for (const el of snap.elements) {
|
|
30
|
+
// Skip REMOVED elements - they're not actionable and shouldn't be in LLM context
|
|
31
|
+
if (el.diff_status === 'REMOVED') {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
28
34
|
// Extract visual cues
|
|
29
35
|
const cues = [];
|
|
30
36
|
if (el.visual_cues.is_primary)
|
|
@@ -34,12 +40,40 @@ class LLMInteractionHandler {
|
|
|
34
40
|
if (el.visual_cues.background_color_name) {
|
|
35
41
|
cues.push(`color:${el.visual_cues.background_color_name}`);
|
|
36
42
|
}
|
|
37
|
-
// Format element line
|
|
43
|
+
// Format element line with improved readability
|
|
38
44
|
const cuesStr = cues.length > 0 ? ` {${cues.join(',')}}` : '';
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
// Better text handling - show truncation indicator
|
|
46
|
+
let textPreview = '';
|
|
47
|
+
if (el.text) {
|
|
48
|
+
if (el.text.length > 50) {
|
|
49
|
+
textPreview = `"${el.text.substring(0, 50)}..."`;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
textPreview = `"${el.text}"`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Build position and size info
|
|
56
|
+
const x = Math.floor(el.bbox.x);
|
|
57
|
+
const y = Math.floor(el.bbox.y);
|
|
58
|
+
const width = Math.floor(el.bbox.width);
|
|
59
|
+
const height = Math.floor(el.bbox.height);
|
|
60
|
+
const positionStr = `@ (${x},${y})`;
|
|
61
|
+
const sizeStr = `size:${width}x${height}`;
|
|
62
|
+
// Build status indicators (only include if relevant)
|
|
63
|
+
const statusParts = [];
|
|
64
|
+
if (!el.in_viewport) {
|
|
65
|
+
statusParts.push('not_in_viewport');
|
|
66
|
+
}
|
|
67
|
+
if (el.is_occluded) {
|
|
68
|
+
statusParts.push('occluded');
|
|
69
|
+
}
|
|
70
|
+
if (el.diff_status) {
|
|
71
|
+
statusParts.push(`diff:${el.diff_status}`);
|
|
72
|
+
}
|
|
73
|
+
const statusStr = statusParts.length > 0 ? ` [${statusParts.join(',')}]` : '';
|
|
74
|
+
// Format: [ID] <role> "text" {cues} @ (x,y) size:WxH importance:score [status]
|
|
75
|
+
lines.push(`[${el.id}] <${el.role}> ${textPreview}${cuesStr} ` +
|
|
76
|
+
`${positionStr} ${sizeStr} importance:${el.importance}${statusStr}`);
|
|
43
77
|
}
|
|
44
78
|
return lines.join('\n');
|
|
45
79
|
}
|
|
@@ -52,22 +86,59 @@ class LLMInteractionHandler {
|
|
|
52
86
|
*/
|
|
53
87
|
async queryLLM(domContext, goal) {
|
|
54
88
|
const systemPrompt = `You are an AI web automation agent.
|
|
55
|
-
Your job is to analyze the current page state and decide the next action to take.
|
|
56
|
-
|
|
57
|
-
Available actions:
|
|
58
|
-
- CLICK(id) - Click element with ID
|
|
59
|
-
- TYPE(id, "text") - Type text into element with ID
|
|
60
|
-
- PRESS("key") - Press keyboard key (e.g., "Enter", "Escape", "Tab")
|
|
61
|
-
- FINISH() - Task is complete
|
|
62
89
|
|
|
63
|
-
|
|
64
|
-
Example: CLICK(42) or TYPE(5, "search query") or PRESS("Enter")`;
|
|
65
|
-
const userPrompt = `Goal: ${goal}
|
|
90
|
+
GOAL: ${goal}
|
|
66
91
|
|
|
67
|
-
|
|
92
|
+
VISIBLE ELEMENTS (sorted by importance):
|
|
68
93
|
${domContext}
|
|
69
94
|
|
|
70
|
-
|
|
95
|
+
VISUAL CUES EXPLAINED:
|
|
96
|
+
After the text, you may see visual cues in curly braces like {CLICKABLE} or {PRIMARY,CLICKABLE,color:white}:
|
|
97
|
+
- PRIMARY: Main call-to-action element on the page
|
|
98
|
+
- CLICKABLE: Element is clickable/interactive
|
|
99
|
+
- color:X: Background color name (e.g., color:white, color:blue)
|
|
100
|
+
Multiple cues are comma-separated inside the braces: {CLICKABLE,color:white}
|
|
101
|
+
|
|
102
|
+
ELEMENT FORMAT EXPLAINED:
|
|
103
|
+
Each element line follows this format:
|
|
104
|
+
[ID] <role> "text" {cues} @ (x,y) size:WxH importance:score [status]
|
|
105
|
+
|
|
106
|
+
Example: [346] <button> "Computer Accessories" {CLICKABLE,color:white} @ (664,100) size:150x40 importance:811
|
|
107
|
+
|
|
108
|
+
Breaking down each part:
|
|
109
|
+
- [ID]: The number in brackets is the element ID - use this EXACT number in CLICK/TYPE commands
|
|
110
|
+
Example: If you see [346], use CLICK(346) or TYPE(346, "text")
|
|
111
|
+
- <role>: Element type (button, link, textbox, etc.)
|
|
112
|
+
- "text": Visible text content (truncated with "..." if long)
|
|
113
|
+
- {cues}: Optional visual cues in curly braces (e.g., {CLICKABLE}, {PRIMARY,CLICKABLE}, {CLICKABLE,color:white})
|
|
114
|
+
If no cues, this part is omitted entirely
|
|
115
|
+
- @ (x,y): Element position in pixels from top-left corner
|
|
116
|
+
- size:WxH: Element dimensions (width x height in pixels)
|
|
117
|
+
- importance: Score indicating element relevance (higher = more important)
|
|
118
|
+
- [status]: Optional status flags in brackets (not_in_viewport, occluded, diff:ADDED/MODIFIED/etc)
|
|
119
|
+
|
|
120
|
+
CRITICAL RESPONSE FORMAT:
|
|
121
|
+
You MUST respond with ONLY ONE of these exact action formats:
|
|
122
|
+
- CLICK(id) - Click element by ID (use the number from [ID] brackets)
|
|
123
|
+
- TYPE(id, "text") - Type text into element (use the number from [ID] brackets)
|
|
124
|
+
- PRESS("key") - Press keyboard key (Enter, Escape, Tab, ArrowDown, etc)
|
|
125
|
+
- FINISH() - Task complete
|
|
126
|
+
|
|
127
|
+
DO NOT include any explanation, reasoning, or natural language.
|
|
128
|
+
DO NOT use markdown formatting or code blocks.
|
|
129
|
+
DO NOT say "The next step is..." or anything similar.
|
|
130
|
+
|
|
131
|
+
CORRECT Examples (matching element IDs from the list above):
|
|
132
|
+
If element is [346] <button> "Click me" → respond: CLICK(346)
|
|
133
|
+
If element is [15] <textbox> "Search" → respond: TYPE(15, "magic mouse")
|
|
134
|
+
PRESS("Enter")
|
|
135
|
+
FINISH()
|
|
136
|
+
|
|
137
|
+
INCORRECT Examples (DO NOT DO THIS):
|
|
138
|
+
"The next step is to click..."
|
|
139
|
+
"I will type..."
|
|
140
|
+
\`\`\`CLICK(42)\`\`\``;
|
|
141
|
+
const userPrompt = 'Return the single action command:';
|
|
71
142
|
try {
|
|
72
143
|
const response = await this.llm.generate(systemPrompt, userPrompt, {
|
|
73
144
|
temperature: 0.0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-interaction-handler.js","sourceRoot":"","sources":["../../src/utils/llm-interaction-handler.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,iEAA4D;AAE5D;;GAEG;AACH,MAAa,qBAAqB;IAChC,YACU,GAAgB,EAChB,UAAmB,IAAI;QADvB,QAAG,GAAH,GAAG,CAAa;QAChB,YAAO,GAAP,OAAO,CAAgB;IAC9B,CAAC;IAEJ
|
|
1
|
+
{"version":3,"file":"llm-interaction-handler.js","sourceRoot":"","sources":["../../src/utils/llm-interaction-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-event-builder.d.ts","sourceRoot":"","sources":["../../src/utils/trace-event-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAW,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAKtD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;IAgBpE;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IA2C7F;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAmC5F;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC;QACnB,WAAW,EAAE,WAAW,CAAC;QACzB,MAAM,EAAE,cAAc,CAAC;KACxB,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"trace-event-builder.d.ts","sourceRoot":"","sources":["../../src/utils/trace-event-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAW,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAKtD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;IAgBpE;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IA2C7F;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAmC5F;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC;QACnB,WAAW,EAAE,WAAW,CAAC;QACzB,MAAM,EAAE,cAAc,CAAC;KACxB,GAAG,cAAc;IAgElB;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc;CAoC5E"}
|
|
@@ -144,6 +144,39 @@ class TraceEventBuilder {
|
|
|
144
144
|
const llmData = this.buildLLMData(llmResponse);
|
|
145
145
|
const execData = this.buildExecutionData(result, snapshot);
|
|
146
146
|
const verifyData = this.buildVerifyData(result, snapshot);
|
|
147
|
+
// Build elements data for pre field (include diff_status from snapshot)
|
|
148
|
+
// Normalize importance values to importance_score (0-1 range) per snapshot
|
|
149
|
+
const importanceValues = snapshot.elements.map(el => el.importance);
|
|
150
|
+
const minImportance = importanceValues.length > 0 ? Math.min(...importanceValues) : 0;
|
|
151
|
+
const maxImportance = importanceValues.length > 0 ? Math.max(...importanceValues) : 0;
|
|
152
|
+
const importanceRange = maxImportance - minImportance;
|
|
153
|
+
const preElements = snapshot.elements.map(el => {
|
|
154
|
+
// Compute normalized importance_score
|
|
155
|
+
let importanceScore;
|
|
156
|
+
if (importanceRange > 0) {
|
|
157
|
+
importanceScore = (el.importance - minImportance) / importanceRange;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
importanceScore = 0.5;
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
id: el.id,
|
|
164
|
+
role: el.role,
|
|
165
|
+
text: el.text,
|
|
166
|
+
bbox: el.bbox,
|
|
167
|
+
importance: el.importance,
|
|
168
|
+
importance_score: importanceScore,
|
|
169
|
+
visual_cues: el.visual_cues,
|
|
170
|
+
in_viewport: el.in_viewport,
|
|
171
|
+
is_occluded: el.is_occluded,
|
|
172
|
+
z_index: el.z_index,
|
|
173
|
+
rerank_index: el.rerank_index,
|
|
174
|
+
heuristic_index: el.heuristic_index,
|
|
175
|
+
ml_probability: el.ml_probability,
|
|
176
|
+
ml_score: el.ml_score,
|
|
177
|
+
diff_status: el.diff_status,
|
|
178
|
+
};
|
|
179
|
+
});
|
|
147
180
|
return {
|
|
148
181
|
v: 1,
|
|
149
182
|
step_id: stepId,
|
|
@@ -153,6 +186,7 @@ class TraceEventBuilder {
|
|
|
153
186
|
pre: {
|
|
154
187
|
url: preUrl,
|
|
155
188
|
snapshot_digest: snapshotDigest,
|
|
189
|
+
elements: preElements, // Add elements array with diff_status
|
|
156
190
|
},
|
|
157
191
|
llm: llmData,
|
|
158
192
|
exec: execData,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-event-builder.js","sourceRoot":"","sources":["../../src/utils/trace-event-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"trace-event-builder.js","sourceRoot":"","sources":["../../src/utils/trace-event-builder.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAMH,mCAAoC;AAEpC;;GAEG;AACH,MAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACK,MAAM,CAAC,WAAW,CAAC,IAAY;QACrC,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAkB;QAC3C,MAAM,WAAW,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACjE,OAAO,UAAU,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,WAAwB;QAC1C,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC;QACzC,MAAM,YAAY,GAAG,UAAU,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QAEhE,OAAO;YACL,KAAK,EAAE,WAAW,CAAC,SAAS;YAC5B,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,YAAY;YAC3B,KAAK,EAAE;gBACL,aAAa,EAAE,WAAW,CAAC,YAAY,IAAI,CAAC;gBAC5C,iBAAiB,EAAE,WAAW,CAAC,gBAAgB,IAAI,CAAC;gBACpD,YAAY,EAAE,WAAW,CAAC,WAAW,IAAI,CAAC;aAC3C;SACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAsB,EAAE,QAAkB;QAClE,MAAM,QAAQ,GAA2B;YACvC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;YAClC,OAAO,EACL,MAAM,CAAC,OAAO;gBACd,CAAC,MAAM,CAAC,OAAO;oBACb,CAAC,CAAC,UAAU,MAAM,CAAC,MAAM,IAAI,SAAS,wBAAwB;oBAC9D,CAAC,CAAC,UAAU,MAAM,CAAC,MAAM,IAAI,SAAS,SAAS,CAAC;YACpD,WAAW,EAAE,MAAM,CAAC,UAAU;SAC/B,CAAC;QAEF,2BAA2B;QAC3B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;YAEvC,oCAAoC;YACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;YACvE,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,YAAY,GAAG;oBACtB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;oBACzB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAC5B,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAChC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,MAAsB,EAAE,QAAkB;QAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;QAExF,MAAM,aAAa,GAA6B;YAC9C,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE;gBACP,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;aACxC;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7C,CAAC;QAED,mDAAmD;QACnD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;YACvE,IAAI,OAAO,EAAE,CAAC;gBACZ,aAAa,CAAC,OAAO,CAAC,cAAc,GAAG;oBACrC;wBACE,KAAK,EAAE,WAAW,MAAM,CAAC,SAAS,EAAE;wBACpC,YAAY,EAAE;4BACZ,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;4BACjB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;4BACjB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;4BACzB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;yBAC5B;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAUvB;QACC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GACxF,MAAM,CAAC;QAET,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE1D,wEAAwE;QACxE,2EAA2E;QAC3E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;QAEtD,MAAM,WAAW,GAAmB,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC7D,sCAAsC;YACtC,IAAI,eAAuB,CAAC;YAC5B,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBACxB,eAAe,GAAG,CAAC,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,eAAe,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,eAAe,GAAG,GAAG,CAAC;YACxB,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,gBAAgB,EAAE,eAAe;gBACjC,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,eAAe,EAAE,EAAE,CAAC,eAAe;gBACnC,cAAc,EAAE,EAAE,CAAC,cAAc;gBACjC,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,WAAW,EAAE,EAAE,CAAC,WAAW;aAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,CAAC,EAAE,CAAC;YACJ,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE;gBACH,GAAG,EAAE,MAAM;gBACX,eAAe,EAAE,cAAc;gBAC/B,QAAQ,EAAE,WAAW,EAAE,sCAAsC;aAC9D;YACD,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE;gBACJ,GAAG,EAAE,OAAO,IAAI,SAAS;aAC1B;YACD,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAkB,EAAE,IAAa;QACxD,MAAM,IAAI,GAAmB;YAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YACvC,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC;QAEF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,oFAAoF;QACpF,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CACjD,CAAC,EAAW,EAAgB,EAAE,CAAC,CAAC;gBAC9B,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,SAAS;gBAC1B,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,IAAI,EAAE;oBACJ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;oBACZ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;oBACZ,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK;oBACpB,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;iBACvB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAAC;YAC7C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,IAAI,KAAK,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArQD,8CAqQC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visual Agent - Uses labeled screenshots with vision-capable LLMs
|
|
3
|
+
*
|
|
4
|
+
* This agent extends SentienceAgent to use visual prompts:
|
|
5
|
+
* 1. Takes snapshot with screenshot enabled
|
|
6
|
+
* 2. Draws bounding boxes and labels element IDs on the screenshot
|
|
7
|
+
* 3. Uses anti-collision algorithm to position labels (4 sides + 4 corners)
|
|
8
|
+
* 4. Sends labeled screenshot to vision-capable LLM
|
|
9
|
+
* 5. Extracts element ID from LLM response
|
|
10
|
+
* 6. Clicks the element using click()
|
|
11
|
+
*
|
|
12
|
+
* Dependencies:
|
|
13
|
+
* - sharp: Required for image processing
|
|
14
|
+
* Install with: npm install sharp
|
|
15
|
+
* - canvas: Required for drawing on images
|
|
16
|
+
* Install with: npm install canvas
|
|
17
|
+
* - Vision-capable LLM: Requires an LLM provider that supports vision (e.g., GPT-4o, Claude 3)
|
|
18
|
+
*/
|
|
19
|
+
import { SentienceBrowser } from './browser';
|
|
20
|
+
import { SnapshotOptions } from './snapshot';
|
|
21
|
+
import { LLMProvider } from './llm-provider';
|
|
22
|
+
import { Tracer } from './tracing/tracer';
|
|
23
|
+
import { SentienceAgent, AgentActResult } from './agent';
|
|
24
|
+
/**
|
|
25
|
+
* Visual agent that uses labeled screenshots with vision-capable LLMs.
|
|
26
|
+
*
|
|
27
|
+
* Extends SentienceAgent to override act() method with visual prompting.
|
|
28
|
+
*
|
|
29
|
+
* Requirements:
|
|
30
|
+
* - sharp: Required for image processing
|
|
31
|
+
* Install with: npm install sharp
|
|
32
|
+
* - canvas: Required for drawing on images
|
|
33
|
+
* Install with: npm install canvas
|
|
34
|
+
* - Vision-capable LLM: Requires an LLM provider that supports vision (e.g., GPT-4o, Claude 3)
|
|
35
|
+
*/
|
|
36
|
+
export declare class SentienceVisualAgent extends SentienceAgent {
|
|
37
|
+
/**
|
|
38
|
+
* Initialize Visual Agent
|
|
39
|
+
*
|
|
40
|
+
* @param browser - SentienceBrowser instance
|
|
41
|
+
* @param llm - LLM provider (must support vision, e.g., GPT-4o, Claude 3)
|
|
42
|
+
* @param snapshotLimit - Default maximum elements to include
|
|
43
|
+
* @param verbose - Print execution logs
|
|
44
|
+
* @param tracer - Optional Tracer instance
|
|
45
|
+
* @param showOverlay - Show green bbox overlay in browser
|
|
46
|
+
*/
|
|
47
|
+
constructor(browser: SentienceBrowser, llm: LLMProvider, snapshotLimit?: number, verbose?: boolean, tracer?: Tracer, showOverlay?: boolean);
|
|
48
|
+
/**
|
|
49
|
+
* Decode base64 screenshot data URL to image buffer
|
|
50
|
+
*
|
|
51
|
+
* @param screenshotDataUrl - Base64-encoded data URL (e.g., "data:image/png;base64,...")
|
|
52
|
+
* @returns Image buffer
|
|
53
|
+
*/
|
|
54
|
+
private decodeScreenshot;
|
|
55
|
+
/**
|
|
56
|
+
* Find best position for label using anti-collision algorithm.
|
|
57
|
+
*
|
|
58
|
+
* Tries 8 positions: 4 sides (top, bottom, left, right) + 4 corners.
|
|
59
|
+
* Returns the first position that doesn't collide with existing labels.
|
|
60
|
+
*
|
|
61
|
+
* @param elementBbox - Element bounding box {x, y, width, height}
|
|
62
|
+
* @param existingLabels - List of existing label bounding boxes
|
|
63
|
+
* @param imageWidth - Image width in pixels
|
|
64
|
+
* @param imageHeight - Image height in pixels
|
|
65
|
+
* @param labelWidth - Label width in pixels
|
|
66
|
+
* @param labelHeight - Label height in pixels
|
|
67
|
+
* @returns (x, y) position for label
|
|
68
|
+
*/
|
|
69
|
+
private findLabelPosition;
|
|
70
|
+
/**
|
|
71
|
+
* Draw labeled screenshot with bounding boxes and element IDs.
|
|
72
|
+
*
|
|
73
|
+
* @param snapshot - Snapshot with screenshot data
|
|
74
|
+
* @param elements - List of elements to label
|
|
75
|
+
* @returns Image buffer with labels drawn
|
|
76
|
+
*/
|
|
77
|
+
private drawLabeledScreenshot;
|
|
78
|
+
/**
|
|
79
|
+
* Encode image buffer to base64 data URL with size optimization.
|
|
80
|
+
*
|
|
81
|
+
* Vision LLM APIs typically have size limits (e.g., 20MB for OpenAI).
|
|
82
|
+
* This function automatically compresses images if they're too large.
|
|
83
|
+
*
|
|
84
|
+
* @param imageBuffer - Image buffer
|
|
85
|
+
* @param format - Image format ('PNG' or 'JPEG')
|
|
86
|
+
* @param maxSizeMb - Maximum size in MB before compression (default: 20MB)
|
|
87
|
+
* @returns Base64-encoded data URL
|
|
88
|
+
*/
|
|
89
|
+
private encodeImageToBase64;
|
|
90
|
+
/**
|
|
91
|
+
* Query LLM with vision (labeled screenshot).
|
|
92
|
+
*
|
|
93
|
+
* @param imageDataUrl - Base64-encoded image data URL
|
|
94
|
+
* @param goal - User's goal/task
|
|
95
|
+
* @returns LLMResponse with element ID
|
|
96
|
+
*/
|
|
97
|
+
private queryLLMWithVision;
|
|
98
|
+
/**
|
|
99
|
+
* Extract element ID integer from LLM response.
|
|
100
|
+
*
|
|
101
|
+
* @param llmResponse - LLM response text
|
|
102
|
+
* @returns Element ID as integer, or undefined if not found
|
|
103
|
+
*/
|
|
104
|
+
private extractElementId;
|
|
105
|
+
/**
|
|
106
|
+
* Override act() method to use visual prompting with full tracing support.
|
|
107
|
+
*
|
|
108
|
+
* @param goal - User's goal/task
|
|
109
|
+
* @param maxRetries - Maximum retry attempts
|
|
110
|
+
* @param snapshotOptions - Optional snapshot options (screenshot will be enabled)
|
|
111
|
+
* @returns AgentActResult
|
|
112
|
+
*/
|
|
113
|
+
act(goal: string, _maxRetries?: number, snapshotOptions?: SnapshotOptions): Promise<AgentActResult>;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=visual-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-agent.d.ts","sourceRoot":"","sources":["../src/visual-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM1C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA6BzD;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IACtD;;;;;;;;;OASG;gBAED,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,WAAW,EAChB,aAAa,GAAE,MAAW,EAC1B,OAAO,GAAE,OAAc,EACvB,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,GAAE,OAAe;IAc9B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,iBAAiB;IAyEzB;;;;;;OAMG;YACW,qBAAqB;IA4InC;;;;;;;;;;OAUG;YACW,mBAAmB;IA6CjC;;;;;;OAMG;YACW,kBAAkB;IAyDhC;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAqFxB;;;;;;;OAOG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,MAAU,EACvB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,cAAc,CAAC;CA0R3B"}
|