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.
Files changed (45) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +2 -1
  3. package/dist/agent.js.map +1 -1
  4. package/dist/browser.d.ts +18 -1
  5. package/dist/browser.d.ts.map +1 -1
  6. package/dist/browser.js +23 -1
  7. package/dist/browser.js.map +1 -1
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/tracing/tracer-factory.d.ts +13 -0
  13. package/dist/tracing/tracer-factory.d.ts.map +1 -1
  14. package/dist/tracing/tracer-factory.js +14 -2
  15. package/dist/tracing/tracer-factory.js.map +1 -1
  16. package/dist/tracing/tracer.d.ts +18 -1
  17. package/dist/tracing/tracer.d.ts.map +1 -1
  18. package/dist/tracing/tracer.js +23 -1
  19. package/dist/tracing/tracer.js.map +1 -1
  20. package/dist/tracing/types.d.ts +1 -0
  21. package/dist/tracing/types.d.ts.map +1 -1
  22. package/dist/utils/element-filter.d.ts.map +1 -1
  23. package/dist/utils/element-filter.js +7 -3
  24. package/dist/utils/element-filter.js.map +1 -1
  25. package/dist/utils/llm-interaction-handler.d.ts +3 -1
  26. package/dist/utils/llm-interaction-handler.d.ts.map +1 -1
  27. package/dist/utils/llm-interaction-handler.js +89 -18
  28. package/dist/utils/llm-interaction-handler.js.map +1 -1
  29. package/dist/utils/trace-event-builder.d.ts.map +1 -1
  30. package/dist/utils/trace-event-builder.js +34 -0
  31. package/dist/utils/trace-event-builder.js.map +1 -1
  32. package/dist/visual-agent.d.ts +115 -0
  33. package/dist/visual-agent.d.ts.map +1 -0
  34. package/dist/visual-agent.js +747 -0
  35. package/dist/visual-agent.js.map +1 -0
  36. package/package.json +1 -1
  37. package/src/extension/background.js +56 -185
  38. package/src/extension/content.js +117 -289
  39. package/src/extension/injected_api.js +799 -1374
  40. package/src/extension/manifest.json +1 -1
  41. package/src/extension/pkg/README.md +136 -19
  42. package/src/extension/pkg/sentience_core.js +190 -396
  43. package/src/extension/pkg/sentience_core_bg.wasm +0 -0
  44. package/src/extension/release.json +47 -47
  45. 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
- const elements = [...snapshot.elements];
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 snapshot.elements) {
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
- let elements = [...snapshot.elements];
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":"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"}
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;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IA0BnD;;;;;;OAMG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA2CtE;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM;CAG7C"}
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
- const text = el.text || '';
40
- const textPreview = text.length > 50 ? text.substring(0, 50) + '...' : text;
41
- lines.push(`[${el.id}] <${el.role}> "${textPreview}"${cuesStr} ` +
42
- `@ (${Math.floor(el.bbox.x)},${Math.floor(el.bbox.y)}) (Imp:${el.importance})`);
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
- Format your response as a single action command on one line.
64
- Example: CLICK(42) or TYPE(5, "search query") or PRESS("Enter")`;
65
- const userPrompt = `Goal: ${goal}
90
+ GOAL: ${goal}
66
91
 
67
- Current page elements:
92
+ VISIBLE ELEMENTS (sorted by importance):
68
93
  ${domContext}
69
94
 
70
- What action should I take next? Respond with only the action command (e.g., CLICK(42)).`;
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":"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"}
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;IA4BlB;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc;CAoC5E"}
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":";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,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;aAChC;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;AAjOD,8CAiOC"}
1
+ {"version":3,"file":"trace-event-builder.js","sourceRoot":"","sources":["../../src/utils/trace-event-builder.ts"],"names":[],"mappings":"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"}
@@ -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"}