sentienceapi 0.94.0 → 0.96.0
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/README.md +93 -57
- package/dist/agent-runtime.d.ts +28 -0
- package/dist/agent-runtime.d.ts.map +1 -1
- package/dist/agent-runtime.js +200 -19
- package/dist/agent-runtime.js.map +1 -1
- package/dist/backends/snapshot.d.ts +4 -0
- package/dist/backends/snapshot.d.ts.map +1 -1
- package/dist/backends/snapshot.js +52 -0
- package/dist/backends/snapshot.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/llm-provider.d.ts +14 -0
- package/dist/llm-provider.d.ts.map +1 -1
- package/dist/llm-provider.js +79 -0
- package/dist/llm-provider.js.map +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +91 -4
- package/dist/query.js.map +1 -1
- package/dist/snapshot.d.ts +2 -0
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +54 -4
- package/dist/snapshot.js.map +1 -1
- package/dist/types.d.ts +81 -0
- package/dist/types.d.ts.map +1 -1
- 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/verification.d.ts +8 -0
- package/dist/verification.d.ts.map +1 -1
- package/dist/verification.js +192 -4
- package/dist/verification.js.map +1 -1
- package/package.json +3 -1
- package/src/extension/content.js +35 -0
- package/src/extension/injected_api.js +99 -9
- package/src/extension/manifest.json +1 -1
- package/src/extension/pkg/sentience_core.d.ts +22 -22
- package/src/extension/pkg/sentience_core.js +192 -144
- package/src/extension/pkg/sentience_core_bg.wasm +0 -0
- package/src/extension/release.json +47 -48
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Sentience TypeScript SDK
|
|
2
2
|
|
|
3
|
-
**Semantic
|
|
3
|
+
**Semantic snapshots and Jest-style assertions for reliable AI web agents with time-travel traces**
|
|
4
4
|
|
|
5
5
|
## 📦 Installation
|
|
6
6
|
|
|
@@ -19,6 +19,72 @@ npm install
|
|
|
19
19
|
npm run build
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
+
## Jest for AI Web Agent
|
|
23
|
+
|
|
24
|
+
### Semantic snapshots and assertions that let agents act, verify, and know when they're done.
|
|
25
|
+
|
|
26
|
+
Use `AgentRuntime` to add Jest-style assertions to your agent loops. Verify browser state, check task completion, and get clear feedback on what's working:
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import {
|
|
30
|
+
SentienceBrowser,
|
|
31
|
+
AgentRuntime,
|
|
32
|
+
urlContains,
|
|
33
|
+
exists,
|
|
34
|
+
allOf,
|
|
35
|
+
isEnabled,
|
|
36
|
+
isChecked,
|
|
37
|
+
valueEquals,
|
|
38
|
+
} from 'sentienceapi';
|
|
39
|
+
import { createTracer } from 'sentienceapi';
|
|
40
|
+
import { Page } from 'playwright';
|
|
41
|
+
|
|
42
|
+
// Create browser and tracer
|
|
43
|
+
const browser = await SentienceBrowser.create({ apiKey: process.env.SENTIENCE_API_KEY });
|
|
44
|
+
const tracer = await createTracer({ runId: 'my-run', uploadTrace: false });
|
|
45
|
+
|
|
46
|
+
// Create browser adapter for AgentRuntime
|
|
47
|
+
const browserAdapter = {
|
|
48
|
+
snapshot: async (_page: Page, options?: Record<string, any>) => {
|
|
49
|
+
return await browser.snapshot(options);
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const runtime = new AgentRuntime(browserAdapter, browser.getPage(), tracer);
|
|
53
|
+
|
|
54
|
+
// Navigate and take snapshot
|
|
55
|
+
await browser.getPage().goto('https://example.com');
|
|
56
|
+
runtime.beginStep('Verify page loaded');
|
|
57
|
+
await runtime.snapshot();
|
|
58
|
+
|
|
59
|
+
// Run assertions (Jest-style)
|
|
60
|
+
runtime.assert(urlContains('example.com'), 'on_correct_domain');
|
|
61
|
+
runtime.assert(exists('role=heading'), 'has_heading');
|
|
62
|
+
runtime.assert(allOf([exists('role=button'), exists('role=link')]), 'has_interactive_elements');
|
|
63
|
+
|
|
64
|
+
// v1: state-aware assertions (when Gateway refinement is enabled)
|
|
65
|
+
runtime.assert(isEnabled('role=button'), 'button_enabled');
|
|
66
|
+
runtime.assert(isChecked("role=checkbox name~'subscribe'"), 'subscribe_checked_if_present');
|
|
67
|
+
runtime.assert(
|
|
68
|
+
valueEquals("role=textbox name~'email'", 'user@example.com'),
|
|
69
|
+
'email_value_if_present'
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
// v2: retry loop with snapshot confidence gating + exhaustion
|
|
73
|
+
const ok = await runtime
|
|
74
|
+
.check(exists('role=heading'), 'heading_eventually_visible', true)
|
|
75
|
+
.eventually({ timeoutMs: 10_000, pollMs: 250, minConfidence: 0.7, maxSnapshotAttempts: 3 });
|
|
76
|
+
console.log('eventually() result:', ok);
|
|
77
|
+
|
|
78
|
+
// Check task completion
|
|
79
|
+
if (runtime.assertDone(exists("text~'Example'"), 'task_complete')) {
|
|
80
|
+
console.log('✅ Task completed!');
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
console.log(`Task done: ${runtime.isTaskDone}`);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**See examples:** [`examples/asserts/`](examples/asserts/)
|
|
87
|
+
|
|
22
88
|
## 🚀 Quick Start: Choose Your Abstraction Level
|
|
23
89
|
|
|
24
90
|
Sentience SDK offers **4 levels of abstraction** - choose based on your needs:
|
|
@@ -142,8 +208,6 @@ await browser.close();
|
|
|
142
208
|
|
|
143
209
|
---
|
|
144
210
|
|
|
145
|
-
## 🆕 What's New (2026-01-06)
|
|
146
|
-
|
|
147
211
|
### Human-like Typing
|
|
148
212
|
|
|
149
213
|
Add realistic delays between keystrokes to mimic human typing:
|
|
@@ -275,69 +339,41 @@ console.log(`Task done: ${runtime.isTaskDone}`);
|
|
|
275
339
|
---
|
|
276
340
|
|
|
277
341
|
<details>
|
|
278
|
-
<summary><h2>💼 Real-World Example:
|
|
342
|
+
<summary><h2>💼 Real-World Example: Assertion-driven navigation</h2></summary>
|
|
279
343
|
|
|
280
|
-
This example
|
|
344
|
+
This example shows how to use **assertions + `.eventually()`** to make an agent loop resilient:
|
|
281
345
|
|
|
282
346
|
```typescript
|
|
283
|
-
import { SentienceBrowser,
|
|
347
|
+
import { SentienceBrowser, AgentRuntime, urlContains, exists } from 'sentienceapi';
|
|
348
|
+
import { createTracer } from 'sentienceapi';
|
|
284
349
|
|
|
285
350
|
async function main() {
|
|
286
|
-
const browser =
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
el.bbox.y < 600 // First row
|
|
308
|
-
);
|
|
309
|
-
|
|
310
|
-
if (products.length > 0) {
|
|
311
|
-
// Sort by position (left to right, top to bottom)
|
|
312
|
-
products.sort((a, b) => a.bbox.y - b.bbox.y || a.bbox.x - b.bbox.x);
|
|
313
|
-
const firstProduct = products[0];
|
|
314
|
-
|
|
315
|
-
console.log(`Clicking: ${firstProduct.text}`);
|
|
316
|
-
const result = await click(browser, firstProduct.id);
|
|
317
|
-
|
|
318
|
-
// Wait for product page
|
|
319
|
-
await browser.getPage().waitForLoadState('networkidle');
|
|
320
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
321
|
-
|
|
322
|
-
// Find and click "Add to Cart" button
|
|
323
|
-
const productSnap = await snapshot(browser);
|
|
324
|
-
const addToCart = find(productSnap, 'role=button text~"add to cart"');
|
|
325
|
-
|
|
326
|
-
if (addToCart) {
|
|
327
|
-
const cartResult = await click(browser, addToCart.id);
|
|
328
|
-
console.log(`Added to cart: ${cartResult.success}`);
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
} finally {
|
|
332
|
-
await browser.close();
|
|
333
|
-
}
|
|
351
|
+
const browser = await SentienceBrowser.create({ apiKey: process.env.SENTIENCE_API_KEY });
|
|
352
|
+
const tracer = await createTracer({ runId: 'verified-run', uploadTrace: false });
|
|
353
|
+
|
|
354
|
+
const adapter = {
|
|
355
|
+
snapshot: async (_page: any, options?: Record<string, any>) => {
|
|
356
|
+
return await browser.snapshot(options);
|
|
357
|
+
},
|
|
358
|
+
};
|
|
359
|
+
const runtime = new AgentRuntime(adapter as any, browser.getPage() as any, tracer);
|
|
360
|
+
|
|
361
|
+
await browser.getPage().goto('https://example.com');
|
|
362
|
+
runtime.beginStep('Verify we are on the right page');
|
|
363
|
+
|
|
364
|
+
await runtime
|
|
365
|
+
.check(urlContains('example.com'), 'on_domain', true)
|
|
366
|
+
.eventually({ timeoutMs: 10_000, pollMs: 250, minConfidence: 0.7, maxSnapshotAttempts: 3 });
|
|
367
|
+
|
|
368
|
+
runtime.assert(exists('role=heading'), 'heading_present');
|
|
369
|
+
|
|
370
|
+
await tracer.close();
|
|
371
|
+
await browser.close();
|
|
334
372
|
}
|
|
335
373
|
|
|
336
|
-
main();
|
|
374
|
+
main().catch(console.error);
|
|
337
375
|
```
|
|
338
376
|
|
|
339
|
-
**📖 See the complete tutorial:** [Amazon Shopping Guide](../docs/AMAZON_SHOPPING_GUIDE.md)
|
|
340
|
-
|
|
341
377
|
</details>
|
|
342
378
|
|
|
343
379
|
---
|
package/dist/agent-runtime.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ import { Page } from 'playwright';
|
|
|
41
41
|
import { Snapshot } from './types';
|
|
42
42
|
import { Predicate } from './verification';
|
|
43
43
|
import { Tracer } from './tracing/tracer';
|
|
44
|
+
import { LLMProvider } from './llm-provider';
|
|
44
45
|
interface BrowserLike {
|
|
45
46
|
snapshot(page: Page, options?: Record<string, any>): Promise<Snapshot>;
|
|
46
47
|
}
|
|
@@ -54,6 +55,30 @@ export interface AssertionRecord {
|
|
|
54
55
|
reason: string;
|
|
55
56
|
details: Record<string, any>;
|
|
56
57
|
}
|
|
58
|
+
export interface EventuallyOptions {
|
|
59
|
+
timeoutMs?: number;
|
|
60
|
+
pollMs?: number;
|
|
61
|
+
snapshotOptions?: Record<string, any>;
|
|
62
|
+
/** If set, `.eventually()` will treat snapshots below this confidence as failures and resnapshot. */
|
|
63
|
+
minConfidence?: number;
|
|
64
|
+
/** Max number of snapshot attempts to get above minConfidence before declaring exhaustion. */
|
|
65
|
+
maxSnapshotAttempts?: number;
|
|
66
|
+
/** Optional: vision fallback provider used after snapshot exhaustion (last resort). */
|
|
67
|
+
visionProvider?: LLMProvider;
|
|
68
|
+
/** Optional: override vision system prompt (YES/NO only). */
|
|
69
|
+
visionSystemPrompt?: string;
|
|
70
|
+
/** Optional: override vision user prompt (YES/NO only). */
|
|
71
|
+
visionUserPrompt?: string;
|
|
72
|
+
}
|
|
73
|
+
export declare class AssertionHandle {
|
|
74
|
+
private runtime;
|
|
75
|
+
private predicate;
|
|
76
|
+
private label;
|
|
77
|
+
private required;
|
|
78
|
+
constructor(runtime: AgentRuntime, predicate: Predicate, label: string, required: boolean);
|
|
79
|
+
once(): boolean;
|
|
80
|
+
eventually(options?: EventuallyOptions): Promise<boolean>;
|
|
81
|
+
}
|
|
57
82
|
/**
|
|
58
83
|
* Runtime wrapper for agent verification loops.
|
|
59
84
|
*
|
|
@@ -83,6 +108,9 @@ export declare class AgentRuntime {
|
|
|
83
108
|
/** Task completion tracking */
|
|
84
109
|
private taskDone;
|
|
85
110
|
private taskDoneLabel;
|
|
111
|
+
private static similarity;
|
|
112
|
+
_recordOutcome(outcome: ReturnType<Predicate>, label: string, required: boolean, extra: Record<string, any> | null, recordInStep: boolean): void;
|
|
113
|
+
check(predicate: Predicate, label: string, required?: boolean): AssertionHandle;
|
|
86
114
|
/**
|
|
87
115
|
* Create a new AgentRuntime.
|
|
88
116
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAiB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-runtime.js
CHANGED
|
@@ -39,8 +39,142 @@
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.AgentRuntime = void 0;
|
|
42
|
+
exports.AgentRuntime = exports.AssertionHandle = void 0;
|
|
43
43
|
const uuid_1 = require("uuid");
|
|
44
|
+
class AssertionHandle {
|
|
45
|
+
constructor(runtime, predicate, label, required) {
|
|
46
|
+
this.runtime = runtime;
|
|
47
|
+
this.predicate = predicate;
|
|
48
|
+
this.label = label;
|
|
49
|
+
this.required = required;
|
|
50
|
+
}
|
|
51
|
+
once() {
|
|
52
|
+
return this.runtime.assert(this.predicate, this.label, this.required);
|
|
53
|
+
}
|
|
54
|
+
async eventually(options = {}) {
|
|
55
|
+
const timeoutMs = options.timeoutMs ?? 10000;
|
|
56
|
+
const pollMs = options.pollMs ?? 250;
|
|
57
|
+
const snapshotOptions = options.snapshotOptions;
|
|
58
|
+
const minConfidence = options.minConfidence;
|
|
59
|
+
const maxSnapshotAttempts = options.maxSnapshotAttempts ?? 3;
|
|
60
|
+
const visionProvider = options.visionProvider;
|
|
61
|
+
const visionSystemPrompt = options.visionSystemPrompt;
|
|
62
|
+
const visionUserPrompt = options.visionUserPrompt;
|
|
63
|
+
const deadline = Date.now() + timeoutMs;
|
|
64
|
+
let attempt = 0;
|
|
65
|
+
let snapshotAttempt = 0;
|
|
66
|
+
let lastOutcome = null;
|
|
67
|
+
while (true) {
|
|
68
|
+
attempt += 1;
|
|
69
|
+
await this.runtime.snapshot(snapshotOptions);
|
|
70
|
+
snapshotAttempt += 1;
|
|
71
|
+
const diagnostics = this.runtime.lastSnapshot?.diagnostics;
|
|
72
|
+
const confidence = diagnostics?.confidence;
|
|
73
|
+
if (typeof minConfidence === 'number' &&
|
|
74
|
+
typeof confidence === 'number' &&
|
|
75
|
+
Number.isFinite(confidence) &&
|
|
76
|
+
confidence < minConfidence) {
|
|
77
|
+
lastOutcome = {
|
|
78
|
+
passed: false,
|
|
79
|
+
reason: `Snapshot confidence ${confidence.toFixed(3)} < minConfidence ${minConfidence.toFixed(3)}`,
|
|
80
|
+
details: {
|
|
81
|
+
reason_code: 'snapshot_low_confidence',
|
|
82
|
+
confidence,
|
|
83
|
+
min_confidence: minConfidence,
|
|
84
|
+
snapshot_attempt: snapshotAttempt,
|
|
85
|
+
diagnostics,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
this.runtime._recordOutcome(lastOutcome, this.label, this.required, { eventually: true, attempt, snapshot_attempt: snapshotAttempt, final: false }, false);
|
|
89
|
+
if (snapshotAttempt >= maxSnapshotAttempts) {
|
|
90
|
+
// Optional: vision fallback after snapshot exhaustion (last resort).
|
|
91
|
+
// Keeps the assertion surface invariant; only perception changes.
|
|
92
|
+
if (visionProvider && visionProvider.supportsVision?.()) {
|
|
93
|
+
try {
|
|
94
|
+
const buf = (await this.runtime.page.screenshot({ type: 'png' }));
|
|
95
|
+
const imageBase64 = Buffer.from(buf).toString('base64');
|
|
96
|
+
const sys = visionSystemPrompt ?? 'You are a strict visual verifier. Answer only YES or NO.';
|
|
97
|
+
const user = visionUserPrompt ??
|
|
98
|
+
`Given the screenshot, is the following condition satisfied?\n\n${this.label}\n\nAnswer YES or NO.`;
|
|
99
|
+
const resp = await visionProvider.generateWithImage(sys, user, imageBase64, {
|
|
100
|
+
temperature: 0.0,
|
|
101
|
+
});
|
|
102
|
+
const text = (resp.content || '').trim().toLowerCase();
|
|
103
|
+
const passed = text.startsWith('yes');
|
|
104
|
+
const finalOutcome = {
|
|
105
|
+
passed,
|
|
106
|
+
reason: passed ? 'vision_fallback_yes' : 'vision_fallback_no',
|
|
107
|
+
details: {
|
|
108
|
+
reason_code: passed ? 'vision_fallback_pass' : 'vision_fallback_fail',
|
|
109
|
+
vision_response: resp.content,
|
|
110
|
+
min_confidence: minConfidence,
|
|
111
|
+
snapshot_attempts: snapshotAttempt,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
this.runtime._recordOutcome(finalOutcome, this.label, this.required, {
|
|
115
|
+
eventually: true,
|
|
116
|
+
attempt,
|
|
117
|
+
snapshot_attempt: snapshotAttempt,
|
|
118
|
+
final: true,
|
|
119
|
+
vision_fallback: true,
|
|
120
|
+
}, true);
|
|
121
|
+
return passed;
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// fall through to snapshot_exhausted
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const finalOutcome = {
|
|
128
|
+
passed: false,
|
|
129
|
+
reason: `Snapshot exhausted after ${snapshotAttempt} attempt(s) below minConfidence ${minConfidence.toFixed(3)}`,
|
|
130
|
+
details: {
|
|
131
|
+
reason_code: 'snapshot_exhausted',
|
|
132
|
+
confidence,
|
|
133
|
+
min_confidence: minConfidence,
|
|
134
|
+
snapshot_attempts: snapshotAttempt,
|
|
135
|
+
diagnostics,
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
this.runtime._recordOutcome(finalOutcome, this.label, this.required, {
|
|
139
|
+
eventually: true,
|
|
140
|
+
attempt,
|
|
141
|
+
snapshot_attempt: snapshotAttempt,
|
|
142
|
+
final: true,
|
|
143
|
+
exhausted: true,
|
|
144
|
+
}, true);
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
if (Date.now() >= deadline) {
|
|
148
|
+
this.runtime._recordOutcome(lastOutcome, this.label, this.required, {
|
|
149
|
+
eventually: true,
|
|
150
|
+
attempt,
|
|
151
|
+
snapshot_attempt: snapshotAttempt,
|
|
152
|
+
final: true,
|
|
153
|
+
timeout: true,
|
|
154
|
+
}, true);
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
await new Promise(resolve => setTimeout(resolve, pollMs));
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
lastOutcome = this.predicate(this.runtime.ctx());
|
|
161
|
+
// Emit attempt event (not recorded in step_end)
|
|
162
|
+
this.runtime._recordOutcome(lastOutcome, this.label, this.required, { eventually: true, attempt, final: false }, false);
|
|
163
|
+
if (lastOutcome.passed) {
|
|
164
|
+
// Record final success once
|
|
165
|
+
this.runtime._recordOutcome(lastOutcome, this.label, this.required, { eventually: true, attempt, final: true }, true);
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
if (Date.now() >= deadline) {
|
|
169
|
+
// Record final failure once
|
|
170
|
+
this.runtime._recordOutcome(lastOutcome, this.label, this.required, { eventually: true, attempt, final: true, timeout: true }, true);
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
await new Promise(resolve => setTimeout(resolve, pollMs));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.AssertionHandle = AssertionHandle;
|
|
44
178
|
/**
|
|
45
179
|
* Runtime wrapper for agent verification loops.
|
|
46
180
|
*
|
|
@@ -53,6 +187,70 @@ const uuid_1 = require("uuid");
|
|
|
53
187
|
* to the tracer for Studio timeline display.
|
|
54
188
|
*/
|
|
55
189
|
class AgentRuntime {
|
|
190
|
+
static similarity(a, b) {
|
|
191
|
+
const s1 = a.toLowerCase();
|
|
192
|
+
const s2 = b.toLowerCase();
|
|
193
|
+
if (!s1 || !s2)
|
|
194
|
+
return 0;
|
|
195
|
+
if (s1 === s2)
|
|
196
|
+
return 1;
|
|
197
|
+
// Bigram overlap (cheap, robust enough for suggestions)
|
|
198
|
+
const bigrams = (s) => {
|
|
199
|
+
const out = [];
|
|
200
|
+
for (let i = 0; i < s.length - 1; i++)
|
|
201
|
+
out.push(s.slice(i, i + 2));
|
|
202
|
+
return out;
|
|
203
|
+
};
|
|
204
|
+
const a2 = bigrams(s1);
|
|
205
|
+
const b2 = bigrams(s2);
|
|
206
|
+
const setB = new Set(b2);
|
|
207
|
+
let common = 0;
|
|
208
|
+
for (const g of a2)
|
|
209
|
+
if (setB.has(g))
|
|
210
|
+
common += 1;
|
|
211
|
+
return (2 * common) / (a2.length + b2.length + 1e-9);
|
|
212
|
+
}
|
|
213
|
+
_recordOutcome(outcome, label, required, extra, recordInStep) {
|
|
214
|
+
const details = { ...(outcome.details || {}) };
|
|
215
|
+
// Failure intelligence: nearest matches for selector-driven assertions
|
|
216
|
+
if (!outcome.passed && this.lastSnapshot && typeof details.selector === 'string') {
|
|
217
|
+
const selector = details.selector;
|
|
218
|
+
const scored = [];
|
|
219
|
+
for (const el of this.lastSnapshot.elements) {
|
|
220
|
+
const hay = el.name ?? el.text ?? '';
|
|
221
|
+
if (!hay)
|
|
222
|
+
continue;
|
|
223
|
+
const score = AgentRuntime.similarity(selector, hay);
|
|
224
|
+
scored.push({ score, el });
|
|
225
|
+
}
|
|
226
|
+
scored.sort((x, y) => y.score - x.score);
|
|
227
|
+
details.nearest_matches = scored.slice(0, 3).map(({ score, el }) => ({
|
|
228
|
+
id: el.id,
|
|
229
|
+
role: el.role,
|
|
230
|
+
text: (el.text ?? '').toString().slice(0, 80),
|
|
231
|
+
name: (el.name ?? '').toString().slice(0, 80),
|
|
232
|
+
score: Math.round(score * 10000) / 10000,
|
|
233
|
+
}));
|
|
234
|
+
}
|
|
235
|
+
const record = {
|
|
236
|
+
label,
|
|
237
|
+
passed: outcome.passed,
|
|
238
|
+
required,
|
|
239
|
+
reason: outcome.reason,
|
|
240
|
+
details,
|
|
241
|
+
...(extra || {}),
|
|
242
|
+
};
|
|
243
|
+
if (recordInStep) {
|
|
244
|
+
this.assertionsThisStep.push(record);
|
|
245
|
+
}
|
|
246
|
+
this.tracer.emit('verification', {
|
|
247
|
+
kind: 'assert',
|
|
248
|
+
...record,
|
|
249
|
+
}, this.stepId || undefined);
|
|
250
|
+
}
|
|
251
|
+
check(predicate, label, required = false) {
|
|
252
|
+
return new AssertionHandle(this, predicate, label, required);
|
|
253
|
+
}
|
|
56
254
|
/**
|
|
57
255
|
* Create a new AgentRuntime.
|
|
58
256
|
*
|
|
@@ -145,24 +343,7 @@ class AgentRuntime {
|
|
|
145
343
|
*/
|
|
146
344
|
assert(predicate, label, required = false) {
|
|
147
345
|
const outcome = predicate(this.ctx());
|
|
148
|
-
|
|
149
|
-
label,
|
|
150
|
-
passed: outcome.passed,
|
|
151
|
-
required,
|
|
152
|
-
reason: outcome.reason,
|
|
153
|
-
details: outcome.details,
|
|
154
|
-
};
|
|
155
|
-
this.assertionsThisStep.push(record);
|
|
156
|
-
// Emit dedicated verification event (Option B from design doc)
|
|
157
|
-
// This makes assertions visible in Studio timeline
|
|
158
|
-
this.tracer.emit('verification', {
|
|
159
|
-
kind: 'assert',
|
|
160
|
-
passed: outcome.passed,
|
|
161
|
-
label,
|
|
162
|
-
required,
|
|
163
|
-
reason: outcome.reason,
|
|
164
|
-
details: outcome.details,
|
|
165
|
-
}, this.stepId || undefined);
|
|
346
|
+
this._recordOutcome(outcome, label, required, null, true);
|
|
166
347
|
return outcome.passed;
|
|
167
348
|
}
|
|
168
349
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,10 @@ export interface SnapshotOptions {
|
|
|
63
63
|
filter?: SnapshotFilter;
|
|
64
64
|
/** Show visual overlay on page */
|
|
65
65
|
showOverlay?: boolean;
|
|
66
|
+
/** Show visual overlay highlighting detected grids */
|
|
67
|
+
showGrid?: boolean;
|
|
68
|
+
/** Optional grid ID to show specific grid (only used if showGrid=true) */
|
|
69
|
+
gridId?: number | null;
|
|
66
70
|
/** Use server-side API (Pro/Enterprise tier) */
|
|
67
71
|
useApi?: boolean;
|
|
68
72
|
/** API key for server-side processing */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/backends/snapshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/backends/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,39 @@
|
|
|
22
22
|
* const snap2 = await cache.get(); // Returns cached if < 2s old
|
|
23
23
|
* cache.invalidate(); // Force refresh on next get()
|
|
24
24
|
*/
|
|
25
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
28
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
29
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
30
|
+
}
|
|
31
|
+
Object.defineProperty(o, k2, desc);
|
|
32
|
+
}) : (function(o, m, k, k2) {
|
|
33
|
+
if (k2 === undefined) k2 = k;
|
|
34
|
+
o[k2] = m[k];
|
|
35
|
+
}));
|
|
36
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
37
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
38
|
+
}) : function(o, v) {
|
|
39
|
+
o["default"] = v;
|
|
40
|
+
});
|
|
41
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
42
|
+
var ownKeys = function(o) {
|
|
43
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
44
|
+
var ar = [];
|
|
45
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
46
|
+
return ar;
|
|
47
|
+
};
|
|
48
|
+
return ownKeys(o);
|
|
49
|
+
};
|
|
50
|
+
return function (mod) {
|
|
51
|
+
if (mod && mod.__esModule) return mod;
|
|
52
|
+
var result = {};
|
|
53
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
54
|
+
__setModuleDefault(result, mod);
|
|
55
|
+
return result;
|
|
56
|
+
};
|
|
57
|
+
})();
|
|
25
58
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
59
|
exports.CachedSnapshot = exports.SnapshotError = exports.ExtensionNotLoadedError = void 0;
|
|
27
60
|
exports.snapshot = snapshot;
|
|
@@ -278,6 +311,25 @@ async function snapshotViaExtension(backend, options) {
|
|
|
278
311
|
`);
|
|
279
312
|
}
|
|
280
313
|
}
|
|
314
|
+
// Show grid overlay if requested
|
|
315
|
+
if (options.showGrid) {
|
|
316
|
+
const { getGridBounds } = await Promise.resolve().then(() => __importStar(require('../utils/grid-utils')));
|
|
317
|
+
// Get all grids (don't filter by gridId here - we want to show all but highlight the target)
|
|
318
|
+
const grids = getGridBounds(result, undefined);
|
|
319
|
+
if (grids.length > 0) {
|
|
320
|
+
// Pass gridId as targetGridId to highlight it in red
|
|
321
|
+
const targetGridId = options.gridId ?? null;
|
|
322
|
+
await backend.eval(`
|
|
323
|
+
(() => {
|
|
324
|
+
if (window.sentience && window.sentience.showGrid) {
|
|
325
|
+
window.sentience.showGrid(${JSON.stringify(grids)}, ${targetGridId !== null ? targetGridId : 'null'});
|
|
326
|
+
} else {
|
|
327
|
+
console.warn('[SDK] showGrid not available in extension');
|
|
328
|
+
}
|
|
329
|
+
})()
|
|
330
|
+
`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
281
333
|
return result;
|
|
282
334
|
}
|
|
283
335
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/backends/snapshot.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/backends/snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,13 +16,14 @@ export { showOverlay, clearOverlay } from './overlay';
|
|
|
16
16
|
export { findTextRect } from './textSearch';
|
|
17
17
|
export * from './types';
|
|
18
18
|
export { saveStorageState } from './utils';
|
|
19
|
+
export { getGridBounds } from './utils/grid-utils';
|
|
19
20
|
export { LLMProvider, LLMResponse, OpenAIProvider, AnthropicProvider, GLMProvider, } from './llm-provider';
|
|
20
21
|
export { SentienceAgent, AgentActResult, HistoryEntry, TokenStats } from './agent';
|
|
21
22
|
export { SentienceVisualAgent } from './visual-agent';
|
|
22
23
|
export { ConversationalAgent, ExecutionPlan, PlanStep, StepResult, ConversationEntry, ActionType, ActionParameters, } from './conversational-agent';
|
|
23
24
|
export { Tracer, TraceSink, JsonlTraceSink, TraceEvent, TraceEventData } from './tracing';
|
|
24
|
-
export { AssertOutcome, AssertContext, Predicate, urlMatches, urlContains, exists, notExists, elementCount, allOf, anyOf, custom, } from './verification';
|
|
25
|
-
export { AgentRuntime, AssertionRecord } from './agent-runtime';
|
|
25
|
+
export { AssertOutcome, AssertContext, Predicate, urlMatches, urlContains, exists, notExists, elementCount, allOf, anyOf, custom, isEnabled, isDisabled, isChecked, isUnchecked, valueEquals, valueContains, isExpanded, isCollapsed, } from './verification';
|
|
26
|
+
export { AgentRuntime, AssertionHandle, AssertionRecord, EventuallyOptions } from './agent-runtime';
|
|
26
27
|
export { OrdinalIntent, OrdinalKind, detectOrdinalIntent, selectByOrdinal, boostOrdinalElements, } from './ordinal';
|
|
27
28
|
export * as backends from './backends';
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|