sentienceapi 0.90.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/LICENSE.md +43 -0
  2. package/README.md +946 -0
  3. package/dist/actions.d.ts +54 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +349 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/agent.d.ts +157 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +437 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/browser.d.ts +46 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +622 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +5 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/conversational-agent.d.ts +123 -0
  20. package/dist/conversational-agent.d.ts.map +1 -0
  21. package/dist/conversational-agent.js +327 -0
  22. package/dist/conversational-agent.js.map +1 -0
  23. package/dist/expect.d.ts +16 -0
  24. package/dist/expect.d.ts.map +1 -0
  25. package/dist/expect.js +66 -0
  26. package/dist/expect.js.map +1 -0
  27. package/dist/generator.d.ts +16 -0
  28. package/dist/generator.d.ts.map +1 -0
  29. package/dist/generator.js +205 -0
  30. package/dist/generator.js.map +1 -0
  31. package/dist/index.d.ts +21 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +70 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/inspector.d.ts +13 -0
  36. package/dist/inspector.d.ts.map +1 -0
  37. package/dist/inspector.js +147 -0
  38. package/dist/inspector.js.map +1 -0
  39. package/dist/llm-provider.d.ts +60 -0
  40. package/dist/llm-provider.d.ts.map +1 -0
  41. package/dist/llm-provider.js +106 -0
  42. package/dist/llm-provider.js.map +1 -0
  43. package/dist/query.d.ts +8 -0
  44. package/dist/query.d.ts.map +1 -0
  45. package/dist/query.js +337 -0
  46. package/dist/query.js.map +1 -0
  47. package/dist/read.d.ts +40 -0
  48. package/dist/read.d.ts.map +1 -0
  49. package/dist/read.js +86 -0
  50. package/dist/read.js.map +1 -0
  51. package/dist/recorder.d.ts +44 -0
  52. package/dist/recorder.d.ts.map +1 -0
  53. package/dist/recorder.js +256 -0
  54. package/dist/recorder.js.map +1 -0
  55. package/dist/screenshot.d.ts +17 -0
  56. package/dist/screenshot.d.ts.map +1 -0
  57. package/dist/screenshot.js +37 -0
  58. package/dist/screenshot.js.map +1 -0
  59. package/dist/snapshot.d.ts +23 -0
  60. package/dist/snapshot.d.ts.map +1 -0
  61. package/dist/snapshot.js +187 -0
  62. package/dist/snapshot.js.map +1 -0
  63. package/dist/tracing/cloud-sink.d.ts +74 -0
  64. package/dist/tracing/cloud-sink.d.ts.map +1 -0
  65. package/dist/tracing/cloud-sink.js +262 -0
  66. package/dist/tracing/cloud-sink.js.map +1 -0
  67. package/dist/tracing/index.d.ts +12 -0
  68. package/dist/tracing/index.d.ts.map +1 -0
  69. package/dist/tracing/index.js +28 -0
  70. package/dist/tracing/index.js.map +1 -0
  71. package/dist/tracing/jsonl-sink.d.ts +41 -0
  72. package/dist/tracing/jsonl-sink.d.ts.map +1 -0
  73. package/dist/tracing/jsonl-sink.js +168 -0
  74. package/dist/tracing/jsonl-sink.js.map +1 -0
  75. package/dist/tracing/sink.d.ts +24 -0
  76. package/dist/tracing/sink.d.ts.map +1 -0
  77. package/dist/tracing/sink.js +15 -0
  78. package/dist/tracing/sink.js.map +1 -0
  79. package/dist/tracing/tracer-factory.d.ts +57 -0
  80. package/dist/tracing/tracer-factory.d.ts.map +1 -0
  81. package/dist/tracing/tracer-factory.js +274 -0
  82. package/dist/tracing/tracer-factory.js.map +1 -0
  83. package/dist/tracing/tracer.d.ts +74 -0
  84. package/dist/tracing/tracer.d.ts.map +1 -0
  85. package/dist/tracing/tracer.js +131 -0
  86. package/dist/tracing/tracer.js.map +1 -0
  87. package/dist/tracing/types.d.ts +63 -0
  88. package/dist/tracing/types.d.ts.map +1 -0
  89. package/dist/tracing/types.js +8 -0
  90. package/dist/tracing/types.js.map +1 -0
  91. package/dist/types.d.ts +110 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +6 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils.d.ts +29 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +74 -0
  98. package/dist/utils.js.map +1 -0
  99. package/dist/wait.d.ts +20 -0
  100. package/dist/wait.d.ts.map +1 -0
  101. package/dist/wait.js +63 -0
  102. package/dist/wait.js.map +1 -0
  103. package/package.json +72 -0
  104. package/spec/README.md +72 -0
  105. package/spec/SNAPSHOT_V1.md +208 -0
  106. package/spec/sdk-types.md +259 -0
  107. package/spec/snapshot.schema.json +148 -0
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Actions v1 - click, type, press
3
+ */
4
+ import { SentienceBrowser } from './browser';
5
+ import { ActionResult, BBox } from './types';
6
+ export interface ClickRect {
7
+ x: number;
8
+ y: number;
9
+ w?: number;
10
+ width?: number;
11
+ h?: number;
12
+ height?: number;
13
+ }
14
+ export declare function click(browser: SentienceBrowser, elementId: number, useMouse?: boolean, takeSnapshot?: boolean): Promise<ActionResult>;
15
+ export declare function typeText(browser: SentienceBrowser, elementId: number, text: string, takeSnapshot?: boolean): Promise<ActionResult>;
16
+ export declare function press(browser: SentienceBrowser, key: string, takeSnapshot?: boolean): Promise<ActionResult>;
17
+ /**
18
+ * Click at the center of a rectangle using Playwright's native mouse simulation.
19
+ * This uses a hybrid approach: calculates center coordinates and uses mouse.click()
20
+ * for realistic event simulation (triggers hover, focus, mousedown, mouseup).
21
+ *
22
+ * @param browser - SentienceBrowser instance
23
+ * @param rect - Rectangle with x, y, w (or width), h (or height) keys, or BBox object
24
+ * @param highlight - Whether to show a red border highlight when clicking (default: true)
25
+ * @param highlightDuration - How long to show the highlight in seconds (default: 2.0)
26
+ * @param takeSnapshot - Whether to take snapshot after action
27
+ * @returns ActionResult
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // Click using rect object
32
+ * await clickRect(browser, { x: 100, y: 200, w: 50, h: 30 });
33
+ *
34
+ * // Click using BBox from element
35
+ * const snap = await snapshot(browser);
36
+ * const element = find(snap, "role=button");
37
+ * if (element) {
38
+ * await clickRect(browser, {
39
+ * x: element.bbox.x,
40
+ * y: element.bbox.y,
41
+ * w: element.bbox.width,
42
+ * h: element.bbox.height
43
+ * });
44
+ * }
45
+ *
46
+ * // Without highlight
47
+ * await clickRect(browser, { x: 100, y: 200, w: 50, h: 30 }, false);
48
+ *
49
+ * // Custom highlight duration
50
+ * await clickRect(browser, { x: 100, y: 200, w: 50, h: 30 }, true, 3.0);
51
+ * ```
52
+ */
53
+ export declare function clickRect(browser: SentienceBrowser, rect: ClickRect | BBox, highlight?: boolean, highlightDuration?: number, takeSnapshot?: boolean): Promise<ActionResult>;
54
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAY,IAAI,EAAE,MAAM,SAAS,CAAC;AAGvD,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4DD,wBAAsB,KAAK,CACzB,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,OAAc,EACxB,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CAyGvB;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CA6CvB;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CA6BvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,SAAS,GAAE,OAAc,EACzB,iBAAiB,GAAE,MAAY,EAC/B,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,YAAY,CAAC,CA2FvB"}
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ /**
3
+ * Actions v1 - click, type, press
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.click = click;
7
+ exports.typeText = typeText;
8
+ exports.press = press;
9
+ exports.clickRect = clickRect;
10
+ const snapshot_1 = require("./snapshot");
11
+ /**
12
+ * Highlight a rectangle with a red border overlay
13
+ */
14
+ async function highlightRect(browser, rect, durationSec = 2.0) {
15
+ const page = browser.getPage();
16
+ const highlightId = `sentience_highlight_${Date.now()}`;
17
+ // Combine all arguments into a single object for Playwright
18
+ const args = {
19
+ rect: {
20
+ x: rect.x,
21
+ y: rect.y,
22
+ w: rect.w || rect.width || 0,
23
+ h: rect.h || rect.height || 0,
24
+ },
25
+ highlightId,
26
+ durationSec,
27
+ };
28
+ await page.evaluate((args) => {
29
+ const { rect, highlightId, durationSec } = args;
30
+ // Create overlay div
31
+ const overlay = document.createElement('div');
32
+ overlay.id = highlightId;
33
+ overlay.style.position = 'fixed';
34
+ overlay.style.left = `${rect.x}px`;
35
+ overlay.style.top = `${rect.y}px`;
36
+ overlay.style.width = `${rect.w}px`;
37
+ overlay.style.height = `${rect.h}px`;
38
+ overlay.style.border = '3px solid red';
39
+ overlay.style.borderRadius = '2px';
40
+ overlay.style.boxSizing = 'border-box';
41
+ overlay.style.pointerEvents = 'none';
42
+ overlay.style.zIndex = '999999';
43
+ overlay.style.backgroundColor = 'rgba(255, 0, 0, 0.1)';
44
+ overlay.style.transition = 'opacity 0.3s ease-out';
45
+ document.body.appendChild(overlay);
46
+ // Remove after duration
47
+ setTimeout(() => {
48
+ overlay.style.opacity = '0';
49
+ setTimeout(() => {
50
+ if (overlay.parentNode) {
51
+ overlay.parentNode.removeChild(overlay);
52
+ }
53
+ }, 300); // Wait for fade-out transition
54
+ }, durationSec * 1000);
55
+ }, args);
56
+ }
57
+ async function click(browser, elementId, useMouse = true, takeSnapshot = false) {
58
+ const page = browser.getPage();
59
+ const startTime = Date.now();
60
+ const urlBefore = page.url();
61
+ let success;
62
+ if (useMouse) {
63
+ // Hybrid approach: Get element bbox from snapshot, calculate center, use mouse.click()
64
+ try {
65
+ const snap = await (0, snapshot_1.snapshot)(browser);
66
+ const element = snap.elements.find((el) => el.id === elementId);
67
+ if (element) {
68
+ // Calculate center of element bbox
69
+ const centerX = element.bbox.x + element.bbox.width / 2;
70
+ const centerY = element.bbox.y + element.bbox.height / 2;
71
+ // Use Playwright's native mouse click for realistic simulation
72
+ await page.mouse.click(centerX, centerY);
73
+ success = true;
74
+ }
75
+ else {
76
+ // Fallback to JS click if element not found in snapshot
77
+ try {
78
+ success = await page.evaluate((id) => {
79
+ return window.sentience.click(id);
80
+ }, elementId);
81
+ }
82
+ catch (error) {
83
+ // Navigation might have destroyed context, assume success if URL changed
84
+ success = true;
85
+ }
86
+ }
87
+ }
88
+ catch (error) {
89
+ // Fallback to JS click on error
90
+ try {
91
+ success = await page.evaluate((id) => {
92
+ return window.sentience.click(id);
93
+ }, elementId);
94
+ }
95
+ catch (evalError) {
96
+ // Navigation might have destroyed context, assume success
97
+ success = true;
98
+ }
99
+ }
100
+ }
101
+ else {
102
+ // Legacy JS-based click
103
+ try {
104
+ success = await page.evaluate((id) => {
105
+ return window.sentience.click(id);
106
+ }, elementId);
107
+ }
108
+ catch (error) {
109
+ // Navigation might have destroyed context, assume success
110
+ success = true;
111
+ }
112
+ }
113
+ // Wait a bit for navigation/DOM updates
114
+ try {
115
+ await page.waitForTimeout(500);
116
+ }
117
+ catch (error) {
118
+ // Navigation might have happened, context destroyed
119
+ }
120
+ const durationMs = Date.now() - startTime;
121
+ // Check if URL changed (handle navigation gracefully)
122
+ let urlAfter;
123
+ let urlChanged;
124
+ try {
125
+ urlAfter = page.url();
126
+ urlChanged = urlBefore !== urlAfter;
127
+ }
128
+ catch (error) {
129
+ // Context destroyed due to navigation - assume URL changed
130
+ urlAfter = urlBefore;
131
+ urlChanged = true;
132
+ }
133
+ // Determine outcome
134
+ let outcome;
135
+ if (urlChanged) {
136
+ outcome = 'navigated';
137
+ }
138
+ else if (success) {
139
+ outcome = 'dom_updated';
140
+ }
141
+ else {
142
+ outcome = 'error';
143
+ }
144
+ // Optional snapshot after
145
+ let snapshotAfter;
146
+ if (takeSnapshot) {
147
+ try {
148
+ snapshotAfter = await (0, snapshot_1.snapshot)(browser);
149
+ }
150
+ catch (error) {
151
+ // Navigation might have destroyed context
152
+ }
153
+ }
154
+ return {
155
+ success,
156
+ duration_ms: durationMs,
157
+ outcome,
158
+ url_changed: urlChanged,
159
+ snapshot_after: snapshotAfter,
160
+ error: success
161
+ ? undefined
162
+ : { code: 'click_failed', reason: 'Element not found or not clickable' },
163
+ };
164
+ }
165
+ async function typeText(browser, elementId, text, takeSnapshot = false) {
166
+ const page = browser.getPage();
167
+ const startTime = Date.now();
168
+ const urlBefore = page.url();
169
+ // Focus element first
170
+ const focused = await page.evaluate((id) => {
171
+ const el = window.sentience_registry[id];
172
+ if (el) {
173
+ el.focus();
174
+ return true;
175
+ }
176
+ return false;
177
+ }, elementId);
178
+ if (!focused) {
179
+ return {
180
+ success: false,
181
+ duration_ms: Date.now() - startTime,
182
+ outcome: 'error',
183
+ error: { code: 'focus_failed', reason: 'Element not found' },
184
+ };
185
+ }
186
+ // Type using Playwright keyboard
187
+ await page.keyboard.type(text);
188
+ const durationMs = Date.now() - startTime;
189
+ const urlAfter = page.url();
190
+ const urlChanged = urlBefore !== urlAfter;
191
+ const outcome = urlChanged ? 'navigated' : 'dom_updated';
192
+ let snapshotAfter;
193
+ if (takeSnapshot) {
194
+ snapshotAfter = await (0, snapshot_1.snapshot)(browser);
195
+ }
196
+ return {
197
+ success: true,
198
+ duration_ms: durationMs,
199
+ outcome,
200
+ url_changed: urlChanged,
201
+ snapshot_after: snapshotAfter,
202
+ };
203
+ }
204
+ async function press(browser, key, takeSnapshot = false) {
205
+ const page = browser.getPage();
206
+ const startTime = Date.now();
207
+ const urlBefore = page.url();
208
+ // Press key using Playwright
209
+ await page.keyboard.press(key);
210
+ // Wait a bit for navigation/DOM updates
211
+ await page.waitForTimeout(500);
212
+ const durationMs = Date.now() - startTime;
213
+ const urlAfter = page.url();
214
+ const urlChanged = urlBefore !== urlAfter;
215
+ const outcome = urlChanged ? 'navigated' : 'dom_updated';
216
+ let snapshotAfter;
217
+ if (takeSnapshot) {
218
+ snapshotAfter = await (0, snapshot_1.snapshot)(browser);
219
+ }
220
+ return {
221
+ success: true,
222
+ duration_ms: durationMs,
223
+ outcome,
224
+ url_changed: urlChanged,
225
+ snapshot_after: snapshotAfter,
226
+ };
227
+ }
228
+ /**
229
+ * Click at the center of a rectangle using Playwright's native mouse simulation.
230
+ * This uses a hybrid approach: calculates center coordinates and uses mouse.click()
231
+ * for realistic event simulation (triggers hover, focus, mousedown, mouseup).
232
+ *
233
+ * @param browser - SentienceBrowser instance
234
+ * @param rect - Rectangle with x, y, w (or width), h (or height) keys, or BBox object
235
+ * @param highlight - Whether to show a red border highlight when clicking (default: true)
236
+ * @param highlightDuration - How long to show the highlight in seconds (default: 2.0)
237
+ * @param takeSnapshot - Whether to take snapshot after action
238
+ * @returns ActionResult
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * // Click using rect object
243
+ * await clickRect(browser, { x: 100, y: 200, w: 50, h: 30 });
244
+ *
245
+ * // Click using BBox from element
246
+ * const snap = await snapshot(browser);
247
+ * const element = find(snap, "role=button");
248
+ * if (element) {
249
+ * await clickRect(browser, {
250
+ * x: element.bbox.x,
251
+ * y: element.bbox.y,
252
+ * w: element.bbox.width,
253
+ * h: element.bbox.height
254
+ * });
255
+ * }
256
+ *
257
+ * // Without highlight
258
+ * await clickRect(browser, { x: 100, y: 200, w: 50, h: 30 }, false);
259
+ *
260
+ * // Custom highlight duration
261
+ * await clickRect(browser, { x: 100, y: 200, w: 50, h: 30 }, true, 3.0);
262
+ * ```
263
+ */
264
+ async function clickRect(browser, rect, highlight = true, highlightDuration = 2.0, takeSnapshot = false) {
265
+ const page = browser.getPage();
266
+ const startTime = Date.now();
267
+ const urlBefore = page.url();
268
+ // Handle BBox object or ClickRect dict
269
+ let x, y, w, h;
270
+ if ('width' in rect && 'height' in rect && !('w' in rect) && !('h' in rect)) {
271
+ // BBox object (width and height are required in BBox)
272
+ const bbox = rect;
273
+ x = bbox.x;
274
+ y = bbox.y;
275
+ w = bbox.width;
276
+ h = bbox.height;
277
+ }
278
+ else {
279
+ // ClickRect dict
280
+ const clickRect = rect;
281
+ x = clickRect.x;
282
+ y = clickRect.y;
283
+ w = clickRect.w || clickRect.width || 0;
284
+ h = clickRect.h || clickRect.height || 0;
285
+ }
286
+ if (w <= 0 || h <= 0) {
287
+ return {
288
+ success: false,
289
+ duration_ms: 0,
290
+ outcome: 'error',
291
+ error: {
292
+ code: 'invalid_rect',
293
+ reason: 'Rectangle width and height must be positive',
294
+ },
295
+ };
296
+ }
297
+ // Calculate center of rectangle
298
+ const centerX = x + w / 2;
299
+ const centerY = y + h / 2;
300
+ // Show highlight before clicking (if enabled)
301
+ if (highlight) {
302
+ await highlightRect(browser, { x, y, w, h }, highlightDuration);
303
+ // Small delay to ensure highlight is visible
304
+ await page.waitForTimeout(50);
305
+ }
306
+ // Use Playwright's native mouse click for realistic simulation
307
+ let success;
308
+ let errorMsg;
309
+ try {
310
+ await page.mouse.click(centerX, centerY);
311
+ success = true;
312
+ }
313
+ catch (error) {
314
+ success = false;
315
+ errorMsg = error instanceof Error ? error.message : String(error);
316
+ }
317
+ // Wait a bit for navigation/DOM updates
318
+ await page.waitForTimeout(500);
319
+ const durationMs = Date.now() - startTime;
320
+ const urlAfter = page.url();
321
+ const urlChanged = urlBefore !== urlAfter;
322
+ // Determine outcome
323
+ let outcome;
324
+ if (urlChanged) {
325
+ outcome = 'navigated';
326
+ }
327
+ else if (success) {
328
+ outcome = 'dom_updated';
329
+ }
330
+ else {
331
+ outcome = 'error';
332
+ }
333
+ // Optional snapshot after
334
+ let snapshotAfter;
335
+ if (takeSnapshot) {
336
+ snapshotAfter = await (0, snapshot_1.snapshot)(browser);
337
+ }
338
+ return {
339
+ success,
340
+ duration_ms: durationMs,
341
+ outcome,
342
+ url_changed: urlChanged,
343
+ snapshot_after: snapshotAfter,
344
+ error: success
345
+ ? undefined
346
+ : { code: 'click_failed', reason: errorMsg || 'Click failed' },
347
+ };
348
+ }
349
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Sentience Agent: High-level automation agent using LLM + SDK
3
+ * Implements observe-think-act loop for natural language commands
4
+ */
5
+ import { SentienceBrowser } from './browser';
6
+ import { SnapshotOptions } from './snapshot';
7
+ import { LLMProvider } from './llm-provider';
8
+ import { Tracer } from './tracing/tracer';
9
+ /**
10
+ * Execution result from agent.act()
11
+ */
12
+ export interface AgentActResult {
13
+ success: boolean;
14
+ action?: string;
15
+ elementId?: number;
16
+ text?: string;
17
+ key?: string;
18
+ outcome?: string;
19
+ urlChanged?: boolean;
20
+ durationMs: number;
21
+ attempt: number;
22
+ goal: string;
23
+ error?: string;
24
+ message?: string;
25
+ }
26
+ /**
27
+ * History entry for executed action
28
+ */
29
+ export interface HistoryEntry {
30
+ goal: string;
31
+ action: string;
32
+ result: AgentActResult;
33
+ success: boolean;
34
+ attempt: number;
35
+ durationMs: number;
36
+ }
37
+ /**
38
+ * Token usage statistics
39
+ */
40
+ export interface TokenStats {
41
+ totalPromptTokens: number;
42
+ totalCompletionTokens: number;
43
+ totalTokens: number;
44
+ byAction: Array<{
45
+ goal: string;
46
+ promptTokens?: number;
47
+ completionTokens?: number;
48
+ totalTokens?: number;
49
+ model?: string;
50
+ }>;
51
+ }
52
+ /**
53
+ * High-level agent that combines Sentience SDK with any LLM provider.
54
+ *
55
+ * Uses observe-think-act loop to execute natural language commands:
56
+ * 1. OBSERVE: Get snapshot of current page state
57
+ * 2. THINK: Query LLM to decide next action
58
+ * 3. ACT: Execute action using SDK
59
+ *
60
+ * Example:
61
+ * ```typescript
62
+ * import { SentienceBrowser, SentienceAgent, OpenAIProvider } from 'sentience-ts';
63
+ *
64
+ * const browser = await SentienceBrowser.create({ apiKey: 'sentience_key' });
65
+ * const llm = new OpenAIProvider('openai_key', 'gpt-4o');
66
+ * const agent = new SentienceAgent(browser, llm);
67
+ *
68
+ * await browser.getPage().goto('https://google.com');
69
+ * await agent.act('Click the search box');
70
+ * await agent.act("Type 'magic mouse' into the search field");
71
+ * await agent.act('Press Enter key');
72
+ * ```
73
+ */
74
+ export declare class SentienceAgent {
75
+ private browser;
76
+ private llm;
77
+ private snapshotLimit;
78
+ private verbose;
79
+ private tracer?;
80
+ private stepCount;
81
+ private history;
82
+ private tokenUsage;
83
+ /**
84
+ * Initialize Sentience Agent
85
+ * @param browser - SentienceBrowser instance
86
+ * @param llm - LLM provider (OpenAIProvider, AnthropicProvider, etc.)
87
+ * @param snapshotLimit - Maximum elements to include in context (default: 50)
88
+ * @param verbose - Print execution logs (default: true)
89
+ * @param tracer - Optional tracer for recording execution (default: undefined)
90
+ */
91
+ constructor(browser: SentienceBrowser, llm: LLMProvider, snapshotLimit?: number, verbose?: boolean, tracer?: Tracer);
92
+ /**
93
+ * Execute a high-level goal using observe → think → act loop
94
+ * @param goal - Natural language instruction (e.g., "Click the Sign In button")
95
+ * @param maxRetries - Number of retries on failure (default: 2)
96
+ * @param snapshotOptions - Optional snapshot parameters (limit, filter, etc.)
97
+ * @returns Result dict with status, action_taken, reasoning, and execution data
98
+ *
99
+ * Example:
100
+ * ```typescript
101
+ * const result = await agent.act('Click the search box');
102
+ * console.log(result);
103
+ * // { success: true, action: 'click', elementId: 42, ... }
104
+ * ```
105
+ */
106
+ act(goal: string, maxRetries?: number, snapshotOptions?: SnapshotOptions): Promise<AgentActResult>;
107
+ /**
108
+ * Filter elements from snapshot based on goal context.
109
+ * Applies goal-based keyword matching to boost relevant elements and filters out irrelevant ones.
110
+ */
111
+ private filterElements;
112
+ /**
113
+ * Extract meaningful keywords from goal text
114
+ */
115
+ private extractKeywords;
116
+ /**
117
+ * Convert snapshot elements to token-efficient prompt string
118
+ * Format: [ID] <role> "text" {cues} @ (x,y) (Imp:score)
119
+ * Note: elements are already filtered by filterElements() in act()
120
+ */
121
+ private buildContext;
122
+ /**
123
+ * Query LLM with standardized prompt template
124
+ */
125
+ private queryLLM;
126
+ /**
127
+ * Parse action string and execute SDK call
128
+ */
129
+ private executeAction;
130
+ /**
131
+ * Track token usage for analytics
132
+ */
133
+ private trackTokens;
134
+ /**
135
+ * Get token usage statistics
136
+ * @returns Dictionary with token usage breakdown
137
+ */
138
+ getTokenStats(): TokenStats;
139
+ /**
140
+ * Get execution history
141
+ * @returns List of all actions taken with results
142
+ */
143
+ getHistory(): HistoryEntry[];
144
+ /**
145
+ * Clear execution history and reset token counters
146
+ */
147
+ clearHistory(): void;
148
+ /**
149
+ * Close the tracer and flush events to disk
150
+ */
151
+ closeTracer(): Promise<void>;
152
+ /**
153
+ * Get the tracer instance (if any)
154
+ */
155
+ getTracer(): Tracer | undefined;
156
+ }
157
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,UAAU,CAAa;IAE/B;;;;;;;OAOG;gBAED,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,WAAW,EAChB,aAAa,GAAE,MAAW,EAC1B,OAAO,GAAE,OAAc,EACvB,MAAM,CAAC,EAAE,MAAM;IAiBjB;;;;;;;;;;;;;OAaG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAU,EACtB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,cAAc,CAAC;IAmJ1B;;;OAGG;IACH,OAAO,CAAC,cAAc;IA+CtB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA0BpB;;OAEG;YACW,QAAQ;IAkCtB;;OAEG;YACW,aAAa;IAsE3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;;OAGG;IACH,aAAa,IAAI,UAAU;IAI3B;;;OAGG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;OAEG;IACH,YAAY,IAAI,IAAI;IAWpB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,SAAS;CAGhC"}