@predicatelabs/sdk 0.99.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +24 -0
- package/README.md +252 -0
- package/dist/actions.d.ts +185 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +1120 -0
- package/dist/actions.js.map +1 -0
- package/dist/agent-runtime.d.ts +352 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/agent-runtime.js +1170 -0
- package/dist/agent-runtime.js.map +1 -0
- package/dist/agent.d.ts +164 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +408 -0
- package/dist/agent.js.map +1 -0
- package/dist/asserts/expect.d.ts +159 -0
- package/dist/asserts/expect.d.ts.map +1 -0
- package/dist/asserts/expect.js +547 -0
- package/dist/asserts/expect.js.map +1 -0
- package/dist/asserts/index.d.ts +58 -0
- package/dist/asserts/index.d.ts.map +1 -0
- package/dist/asserts/index.js +70 -0
- package/dist/asserts/index.js.map +1 -0
- package/dist/asserts/query.d.ts +199 -0
- package/dist/asserts/query.d.ts.map +1 -0
- package/dist/asserts/query.js +288 -0
- package/dist/asserts/query.js.map +1 -0
- package/dist/backends/actions.d.ts +119 -0
- package/dist/backends/actions.d.ts.map +1 -0
- package/dist/backends/actions.js +291 -0
- package/dist/backends/actions.js.map +1 -0
- package/dist/backends/browser-use-adapter.d.ts +131 -0
- package/dist/backends/browser-use-adapter.d.ts.map +1 -0
- package/dist/backends/browser-use-adapter.js +219 -0
- package/dist/backends/browser-use-adapter.js.map +1 -0
- package/dist/backends/cdp-backend.d.ts +66 -0
- package/dist/backends/cdp-backend.d.ts.map +1 -0
- package/dist/backends/cdp-backend.js +273 -0
- package/dist/backends/cdp-backend.js.map +1 -0
- package/dist/backends/index.d.ts +80 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +101 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/protocol.d.ts +156 -0
- package/dist/backends/protocol.d.ts.map +1 -0
- package/dist/backends/protocol.js +16 -0
- package/dist/backends/protocol.js.map +1 -0
- package/dist/backends/sentience-context.d.ts +143 -0
- package/dist/backends/sentience-context.d.ts.map +1 -0
- package/dist/backends/sentience-context.js +359 -0
- package/dist/backends/sentience-context.js.map +1 -0
- package/dist/backends/snapshot.d.ts +188 -0
- package/dist/backends/snapshot.d.ts.map +1 -0
- package/dist/backends/snapshot.js +360 -0
- package/dist/backends/snapshot.js.map +1 -0
- package/dist/browser.d.ts +154 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +920 -0
- package/dist/browser.js.map +1 -0
- package/dist/canonicalization.d.ts +126 -0
- package/dist/canonicalization.d.ts.map +1 -0
- package/dist/canonicalization.js +161 -0
- package/dist/canonicalization.js.map +1 -0
- package/dist/captcha/strategies.d.ts +12 -0
- package/dist/captcha/strategies.d.ts.map +1 -0
- package/dist/captcha/strategies.js +43 -0
- package/dist/captcha/strategies.js.map +1 -0
- package/dist/captcha/types.d.ts +45 -0
- package/dist/captcha/types.d.ts.map +1 -0
- package/dist/captcha/types.js +12 -0
- package/dist/captcha/types.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +422 -0
- package/dist/cli.js.map +1 -0
- package/dist/conversational-agent.d.ts +123 -0
- package/dist/conversational-agent.d.ts.map +1 -0
- package/dist/conversational-agent.js +341 -0
- package/dist/conversational-agent.js.map +1 -0
- package/dist/cursor-policy.d.ts +41 -0
- package/dist/cursor-policy.d.ts.map +1 -0
- package/dist/cursor-policy.js +81 -0
- package/dist/cursor-policy.js.map +1 -0
- package/dist/debugger.d.ts +28 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/debugger.js +107 -0
- package/dist/debugger.js.map +1 -0
- package/dist/expect.d.ts +16 -0
- package/dist/expect.d.ts.map +1 -0
- package/dist/expect.js +67 -0
- package/dist/expect.js.map +1 -0
- package/dist/failure-artifacts.d.ts +95 -0
- package/dist/failure-artifacts.d.ts.map +1 -0
- package/dist/failure-artifacts.js +805 -0
- package/dist/failure-artifacts.js.map +1 -0
- package/dist/generator.d.ts +16 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +205 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +160 -0
- package/dist/index.js.map +1 -0
- package/dist/inspector.d.ts +13 -0
- package/dist/inspector.d.ts.map +1 -0
- package/dist/inspector.js +153 -0
- package/dist/inspector.js.map +1 -0
- package/dist/llm-provider.d.ts +144 -0
- package/dist/llm-provider.d.ts.map +1 -0
- package/dist/llm-provider.js +460 -0
- package/dist/llm-provider.js.map +1 -0
- package/dist/ordinal.d.ts +90 -0
- package/dist/ordinal.d.ts.map +1 -0
- package/dist/ordinal.js +249 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/overlay.d.ts +63 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +102 -0
- package/dist/overlay.js.map +1 -0
- package/dist/protocols/browser-protocol.d.ts +79 -0
- package/dist/protocols/browser-protocol.d.ts.map +1 -0
- package/dist/protocols/browser-protocol.js +9 -0
- package/dist/protocols/browser-protocol.js.map +1 -0
- package/dist/query.d.ts +66 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +482 -0
- package/dist/query.js.map +1 -0
- package/dist/read.d.ts +47 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +128 -0
- package/dist/read.js.map +1 -0
- package/dist/recorder.d.ts +44 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/recorder.js +262 -0
- package/dist/recorder.js.map +1 -0
- package/dist/runtime-agent.d.ts +72 -0
- package/dist/runtime-agent.d.ts.map +1 -0
- package/dist/runtime-agent.js +357 -0
- package/dist/runtime-agent.js.map +1 -0
- package/dist/screenshot.d.ts +17 -0
- package/dist/screenshot.d.ts.map +1 -0
- package/dist/screenshot.js +40 -0
- package/dist/screenshot.js.map +1 -0
- package/dist/snapshot-diff.d.ts +23 -0
- package/dist/snapshot-diff.d.ts.map +1 -0
- package/dist/snapshot-diff.js +119 -0
- package/dist/snapshot-diff.js.map +1 -0
- package/dist/snapshot.d.ts +47 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +358 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/textSearch.d.ts +64 -0
- package/dist/textSearch.d.ts.map +1 -0
- package/dist/textSearch.js +113 -0
- package/dist/textSearch.js.map +1 -0
- package/dist/tools/context.d.ts +18 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +40 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/defaults.d.ts +5 -0
- package/dist/tools/defaults.d.ts.map +1 -0
- package/dist/tools/defaults.js +368 -0
- package/dist/tools/defaults.js.map +1 -0
- package/dist/tools/filesystem.d.ts +12 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +137 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +38 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +100 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tracing/cloud-sink.d.ts +189 -0
- package/dist/tracing/cloud-sink.d.ts.map +1 -0
- package/dist/tracing/cloud-sink.js +1067 -0
- package/dist/tracing/cloud-sink.js.map +1 -0
- package/dist/tracing/index-schema.d.ts +231 -0
- package/dist/tracing/index-schema.d.ts.map +1 -0
- package/dist/tracing/index-schema.js +235 -0
- package/dist/tracing/index-schema.js.map +1 -0
- package/dist/tracing/index.d.ts +12 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +28 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/indexer.d.ts +20 -0
- package/dist/tracing/indexer.d.ts.map +1 -0
- package/dist/tracing/indexer.js +347 -0
- package/dist/tracing/indexer.js.map +1 -0
- package/dist/tracing/jsonl-sink.d.ts +51 -0
- package/dist/tracing/jsonl-sink.d.ts.map +1 -0
- package/dist/tracing/jsonl-sink.js +329 -0
- package/dist/tracing/jsonl-sink.js.map +1 -0
- package/dist/tracing/sink.d.ts +25 -0
- package/dist/tracing/sink.d.ts.map +1 -0
- package/dist/tracing/sink.js +15 -0
- package/dist/tracing/sink.js.map +1 -0
- package/dist/tracing/tracer-factory.d.ts +102 -0
- package/dist/tracing/tracer-factory.d.ts.map +1 -0
- package/dist/tracing/tracer-factory.js +375 -0
- package/dist/tracing/tracer-factory.js.map +1 -0
- package/dist/tracing/tracer.d.ts +140 -0
- package/dist/tracing/tracer.d.ts.map +1 -0
- package/dist/tracing/tracer.js +336 -0
- package/dist/tracing/tracer.js.map +1 -0
- package/dist/tracing/types.d.ts +203 -0
- package/dist/tracing/types.d.ts.map +1 -0
- package/dist/tracing/types.js +8 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/types.d.ts +422 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/action-executor.d.ts +25 -0
- package/dist/utils/action-executor.d.ts.map +1 -0
- package/dist/utils/action-executor.js +121 -0
- package/dist/utils/action-executor.js.map +1 -0
- package/dist/utils/browser-evaluator.d.ts +76 -0
- package/dist/utils/browser-evaluator.d.ts.map +1 -0
- package/dist/utils/browser-evaluator.js +130 -0
- package/dist/utils/browser-evaluator.js.map +1 -0
- package/dist/utils/browser.d.ts +30 -0
- package/dist/utils/browser.d.ts.map +1 -0
- package/dist/utils/browser.js +75 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/element-filter.d.ts +76 -0
- package/dist/utils/element-filter.d.ts.map +1 -0
- package/dist/utils/element-filter.js +195 -0
- package/dist/utils/element-filter.js.map +1 -0
- package/dist/utils/grid-utils.d.ts +37 -0
- package/dist/utils/grid-utils.d.ts.map +1 -0
- package/dist/utils/grid-utils.js +283 -0
- package/dist/utils/grid-utils.js.map +1 -0
- package/dist/utils/llm-interaction-handler.d.ts +41 -0
- package/dist/utils/llm-interaction-handler.d.ts.map +1 -0
- package/dist/utils/llm-interaction-handler.js +171 -0
- package/dist/utils/llm-interaction-handler.js.map +1 -0
- package/dist/utils/llm-response-builder.d.ts +56 -0
- package/dist/utils/llm-response-builder.d.ts.map +1 -0
- package/dist/utils/llm-response-builder.js +130 -0
- package/dist/utils/llm-response-builder.js.map +1 -0
- package/dist/utils/selector-utils.d.ts +12 -0
- package/dist/utils/selector-utils.d.ts.map +1 -0
- package/dist/utils/selector-utils.js +32 -0
- package/dist/utils/selector-utils.js.map +1 -0
- package/dist/utils/snapshot-event-builder.d.ts +28 -0
- package/dist/utils/snapshot-event-builder.d.ts.map +1 -0
- package/dist/utils/snapshot-event-builder.js +88 -0
- package/dist/utils/snapshot-event-builder.js.map +1 -0
- package/dist/utils/snapshot-processor.d.ts +27 -0
- package/dist/utils/snapshot-processor.d.ts.map +1 -0
- package/dist/utils/snapshot-processor.js +47 -0
- package/dist/utils/snapshot-processor.js.map +1 -0
- package/dist/utils/trace-event-builder.d.ts +122 -0
- package/dist/utils/trace-event-builder.d.ts.map +1 -0
- package/dist/utils/trace-event-builder.js +365 -0
- package/dist/utils/trace-event-builder.js.map +1 -0
- package/dist/utils/trace-file-manager.d.ts +70 -0
- package/dist/utils/trace-file-manager.d.ts.map +1 -0
- package/dist/utils/trace-file-manager.js +194 -0
- package/dist/utils/trace-file-manager.js.map +1 -0
- package/dist/utils/zod.d.ts +5 -0
- package/dist/utils/zod.d.ts.map +1 -0
- package/dist/utils/zod.js +80 -0
- package/dist/utils/zod.js.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/dist/verification.d.ts +194 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +530 -0
- package/dist/verification.js.map +1 -0
- package/dist/vision-executor.d.ts +18 -0
- package/dist/vision-executor.d.ts.map +1 -0
- package/dist/vision-executor.js +60 -0
- package/dist/vision-executor.js.map +1 -0
- package/dist/visual-agent.d.ts +120 -0
- package/dist/visual-agent.d.ts.map +1 -0
- package/dist/visual-agent.js +796 -0
- package/dist/visual-agent.js.map +1 -0
- package/dist/wait.d.ts +35 -0
- package/dist/wait.d.ts.map +1 -0
- package/dist/wait.js +76 -0
- package/dist/wait.js.map +1 -0
- package/package.json +94 -0
- package/spec/README.md +72 -0
- package/spec/SNAPSHOT_V1.md +208 -0
- package/spec/sdk-types.md +259 -0
- package/spec/snapshot.schema.json +148 -0
- package/src/extension/background.js +104 -0
- package/src/extension/content.js +162 -0
- package/src/extension/injected_api.js +1399 -0
- package/src/extension/manifest.json +36 -0
- package/src/extension/pkg/README.md +1340 -0
- package/src/extension/pkg/package.json +15 -0
- package/src/extension/pkg/sentience_core.d.ts +51 -0
- package/src/extension/pkg/sentience_core.js +371 -0
- package/src/extension/pkg/sentience_core_bg.wasm +0 -0
- package/src/extension/pkg/sentience_core_bg.wasm.d.ts +10 -0
- package/src/extension/release.json +116 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tracer Class
|
|
4
|
+
*
|
|
5
|
+
* High-level API for emitting trace events with automatic sequencing and timestamps
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.Tracer = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* Tracer provides a high-level API for recording agent execution traces
|
|
11
|
+
*/
|
|
12
|
+
class Tracer {
|
|
13
|
+
/**
|
|
14
|
+
* Create a new Tracer
|
|
15
|
+
* @param runId - Unique run identifier (UUID)
|
|
16
|
+
* @param sink - TraceSink implementation (e.g., JsonlTraceSink)
|
|
17
|
+
* @param screenshotProcessor - Optional function to process screenshots before emission.
|
|
18
|
+
* Takes base64 string, returns processed base64 string.
|
|
19
|
+
* Useful for PII redaction or custom image processing.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // Basic usage
|
|
23
|
+
* const sink = new JsonlTraceSink('trace.jsonl');
|
|
24
|
+
* const tracer = new Tracer('run-123', sink);
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* // With screenshot processor for PII redaction
|
|
28
|
+
* const redactPII = (screenshot: string): string => {
|
|
29
|
+
* // Your custom redaction logic
|
|
30
|
+
* return redactedScreenshot;
|
|
31
|
+
* };
|
|
32
|
+
* const tracer = new Tracer('run-123', sink, redactPII);
|
|
33
|
+
*/
|
|
34
|
+
constructor(runId, sink, screenshotProcessor) {
|
|
35
|
+
// Stats tracking
|
|
36
|
+
this.totalSteps = 0;
|
|
37
|
+
this.totalEvents = 0;
|
|
38
|
+
this.startedAt = null;
|
|
39
|
+
this.endedAt = null;
|
|
40
|
+
this.finalStatus = 'unknown';
|
|
41
|
+
// Track step outcomes for automatic status inference
|
|
42
|
+
this.stepSuccesses = 0;
|
|
43
|
+
this.stepFailures = 0;
|
|
44
|
+
this.hasErrors = false;
|
|
45
|
+
this.runId = runId;
|
|
46
|
+
this.sink = sink;
|
|
47
|
+
this.seq = 0;
|
|
48
|
+
this.screenshotProcessor = screenshotProcessor;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Emit a trace event
|
|
52
|
+
* @param eventType - Type of event (e.g., 'run_start', 'snapshot')
|
|
53
|
+
* @param data - Event-specific payload
|
|
54
|
+
* @param stepId - Optional step UUID
|
|
55
|
+
*/
|
|
56
|
+
emit(eventType, data, stepId) {
|
|
57
|
+
this.seq += 1;
|
|
58
|
+
this.totalEvents += 1;
|
|
59
|
+
// Apply screenshot processor if configured and screenshot is present
|
|
60
|
+
if (this.screenshotProcessor && data.screenshot_base64) {
|
|
61
|
+
const processedScreenshot = this.screenshotProcessor(data.screenshot_base64);
|
|
62
|
+
data = { ...data, screenshot_base64: processedScreenshot }; // Don't modify the original object
|
|
63
|
+
}
|
|
64
|
+
// Generate timestamps
|
|
65
|
+
const tsMs = Date.now();
|
|
66
|
+
const ts = new Date(tsMs).toISOString();
|
|
67
|
+
const event = {
|
|
68
|
+
v: 1,
|
|
69
|
+
type: eventType,
|
|
70
|
+
ts,
|
|
71
|
+
ts_ms: tsMs,
|
|
72
|
+
run_id: this.runId,
|
|
73
|
+
seq: this.seq,
|
|
74
|
+
data,
|
|
75
|
+
};
|
|
76
|
+
if (stepId) {
|
|
77
|
+
event.step_id = stepId;
|
|
78
|
+
}
|
|
79
|
+
this.sink.emit(event);
|
|
80
|
+
// Track step outcomes for automatic status inference
|
|
81
|
+
if (eventType === 'step_end') {
|
|
82
|
+
const success = data.success || false;
|
|
83
|
+
if (success) {
|
|
84
|
+
this.stepSuccesses += 1;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.stepFailures += 1;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else if (eventType === 'error') {
|
|
91
|
+
this.hasErrors = true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Emit run_start event
|
|
96
|
+
* @param agent - Agent type (e.g., 'SentienceAgent')
|
|
97
|
+
* @param llmModel - Optional LLM model name
|
|
98
|
+
* @param config - Optional configuration
|
|
99
|
+
*/
|
|
100
|
+
emitRunStart(agent, llmModel, config) {
|
|
101
|
+
// Track start time
|
|
102
|
+
this.startedAt = new Date();
|
|
103
|
+
const data = { agent };
|
|
104
|
+
if (llmModel)
|
|
105
|
+
data.llm_model = llmModel;
|
|
106
|
+
if (config)
|
|
107
|
+
data.config = config;
|
|
108
|
+
this.emit('run_start', data);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Emit step_start event
|
|
112
|
+
* @param stepId - Step UUID
|
|
113
|
+
* @param stepIndex - Step number (1-indexed)
|
|
114
|
+
* @param goal - Goal description
|
|
115
|
+
* @param attempt - Retry attempt number (0 = first try)
|
|
116
|
+
* @param preUrl - Optional URL before step execution
|
|
117
|
+
*/
|
|
118
|
+
emitStepStart(stepId, stepIndex, goal, attempt = 0, preUrl) {
|
|
119
|
+
// Track step count (only count first attempt of each step)
|
|
120
|
+
if (attempt === 0) {
|
|
121
|
+
this.totalSteps = Math.max(this.totalSteps, stepIndex);
|
|
122
|
+
}
|
|
123
|
+
const data = {
|
|
124
|
+
step_id: stepId,
|
|
125
|
+
step_index: stepIndex,
|
|
126
|
+
goal,
|
|
127
|
+
attempt,
|
|
128
|
+
};
|
|
129
|
+
if (preUrl) {
|
|
130
|
+
data.url = preUrl;
|
|
131
|
+
}
|
|
132
|
+
this.emit('step_start', data, stepId);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Emit run_end event
|
|
136
|
+
* @param steps - Total number of steps executed
|
|
137
|
+
* @param status - Optional final status ("success", "failure", "partial", "unknown")
|
|
138
|
+
* If not provided, infers from tracked outcomes or uses this.finalStatus
|
|
139
|
+
*/
|
|
140
|
+
emitRunEnd(steps, status) {
|
|
141
|
+
// Track end time
|
|
142
|
+
this.endedAt = new Date();
|
|
143
|
+
// Auto-infer status if not provided and not explicitly set
|
|
144
|
+
if (status === undefined && this.finalStatus === 'unknown') {
|
|
145
|
+
this._inferFinalStatus();
|
|
146
|
+
}
|
|
147
|
+
// Use provided status or fallback to this.finalStatus
|
|
148
|
+
const finalStatus = status || this.finalStatus;
|
|
149
|
+
// Ensure totalSteps is at least the provided steps value
|
|
150
|
+
this.totalSteps = Math.max(this.totalSteps, steps);
|
|
151
|
+
// Ensure finalStatus is a valid status value
|
|
152
|
+
const validStatus = finalStatus === 'success' ||
|
|
153
|
+
finalStatus === 'failure' ||
|
|
154
|
+
finalStatus === 'partial' ||
|
|
155
|
+
finalStatus === 'unknown'
|
|
156
|
+
? finalStatus
|
|
157
|
+
: 'unknown';
|
|
158
|
+
this.emit('run_end', { steps, status: validStatus });
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Emit error event
|
|
162
|
+
* @param stepId - Step UUID where error occurred
|
|
163
|
+
* @param error - Error message
|
|
164
|
+
* @param attempt - Retry attempt number
|
|
165
|
+
*/
|
|
166
|
+
emitError(stepId, error, attempt = 0) {
|
|
167
|
+
this.emit('error', { step_id: stepId, error, attempt }, stepId);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Emit snapshot event with screenshot for Studio visualization.
|
|
171
|
+
*
|
|
172
|
+
* This method builds and emits a 'snapshot' trace event that includes:
|
|
173
|
+
* - Page URL and element data
|
|
174
|
+
* - Screenshot (if present in snapshot)
|
|
175
|
+
* - Step correlation info
|
|
176
|
+
*
|
|
177
|
+
* Use this when you want screenshots to appear in the Sentience Studio timeline.
|
|
178
|
+
*
|
|
179
|
+
* @param snapshot - Snapshot object (must have 'screenshot' property for images)
|
|
180
|
+
* @param stepId - Step UUID (for correlating snapshot with a step)
|
|
181
|
+
* @param stepIndex - Step index (0-based) for Studio timeline ordering
|
|
182
|
+
* @param screenshotFormat - Format of screenshot ("jpeg" or "png", default: "jpeg")
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* // After taking a snapshot with AgentRuntime
|
|
186
|
+
* const snapshot = await runtime.snapshot();
|
|
187
|
+
* tracer.emitSnapshot(snapshot, runtime.getStepId(), runtime.getStepIndex());
|
|
188
|
+
*
|
|
189
|
+
* // Or use auto-emit (default in AgentRuntime.snapshot())
|
|
190
|
+
* const snapshot = await runtime.snapshot(); // Auto-emits snapshot event
|
|
191
|
+
*/
|
|
192
|
+
emitSnapshot(snapshot, stepId, stepIndex, screenshotFormat = 'jpeg') {
|
|
193
|
+
if (!snapshot) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
// Build the snapshot event data
|
|
198
|
+
const data = {
|
|
199
|
+
url: snapshot.url,
|
|
200
|
+
element_count: snapshot.elements?.length || 0,
|
|
201
|
+
timestamp: snapshot.timestamp,
|
|
202
|
+
};
|
|
203
|
+
// Include step_index if provided (required for UUID step_ids)
|
|
204
|
+
if (stepIndex !== undefined) {
|
|
205
|
+
data.step_index = stepIndex;
|
|
206
|
+
}
|
|
207
|
+
// Include elements data (simplified for trace)
|
|
208
|
+
if (snapshot.elements && snapshot.elements.length > 0) {
|
|
209
|
+
// Normalize importance values to importance_score (0-1 range)
|
|
210
|
+
const importanceValues = snapshot.elements.map((el) => el.importance || 0);
|
|
211
|
+
const minImportance = Math.min(...importanceValues);
|
|
212
|
+
const maxImportance = Math.max(...importanceValues);
|
|
213
|
+
const importanceRange = maxImportance - minImportance;
|
|
214
|
+
data.elements = snapshot.elements.map((el) => {
|
|
215
|
+
const importanceScore = importanceRange > 0 ? (el.importance - minImportance) / importanceRange : 0.5;
|
|
216
|
+
return {
|
|
217
|
+
...el,
|
|
218
|
+
importance_score: importanceScore,
|
|
219
|
+
};
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
// Extract and add screenshot if present
|
|
223
|
+
const screenshotRaw = snapshot.screenshot;
|
|
224
|
+
if (screenshotRaw) {
|
|
225
|
+
// Extract base64 string from data URL if needed
|
|
226
|
+
// Format: "data:image/jpeg;base64,{base64_string}"
|
|
227
|
+
let screenshotBase64;
|
|
228
|
+
if (typeof screenshotRaw === 'string' && screenshotRaw.startsWith('data:image')) {
|
|
229
|
+
const commaIndex = screenshotRaw.indexOf(',');
|
|
230
|
+
screenshotBase64 =
|
|
231
|
+
commaIndex !== -1 ? screenshotRaw.slice(commaIndex + 1) : screenshotRaw;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
screenshotBase64 = screenshotRaw;
|
|
235
|
+
}
|
|
236
|
+
data.screenshot_base64 = screenshotBase64;
|
|
237
|
+
data.screenshot_format = screenshotFormat;
|
|
238
|
+
}
|
|
239
|
+
this.emit('snapshot', data, stepId);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
// Best-effort: don't let trace emission errors break the caller
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Automatically infer finalStatus from tracked step outcomes if not explicitly set.
|
|
247
|
+
* This is called automatically in close() if finalStatus is still "unknown".
|
|
248
|
+
*/
|
|
249
|
+
_inferFinalStatus() {
|
|
250
|
+
if (this.finalStatus !== 'unknown') {
|
|
251
|
+
// Status already set explicitly, don't override
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
// Infer from tracked outcomes
|
|
255
|
+
if (this.hasErrors) {
|
|
256
|
+
// Has errors - check if there were successful steps too
|
|
257
|
+
if (this.stepSuccesses > 0) {
|
|
258
|
+
this.finalStatus = 'partial';
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
this.finalStatus = 'failure';
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else if (this.stepSuccesses > 0) {
|
|
265
|
+
// Has successful steps and no errors
|
|
266
|
+
this.finalStatus = 'success';
|
|
267
|
+
}
|
|
268
|
+
// Otherwise stays "unknown" (no steps executed or no clear outcome)
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Close the underlying sink (flush buffered data)
|
|
272
|
+
* @param blocking - If false, upload happens in background (default: true). Only applies to CloudTraceSink.
|
|
273
|
+
*/
|
|
274
|
+
async close(blocking = true) {
|
|
275
|
+
// Auto-infer finalStatus if not explicitly set and we have step outcomes
|
|
276
|
+
if (this.finalStatus === 'unknown' &&
|
|
277
|
+
(this.stepSuccesses > 0 || this.stepFailures > 0 || this.hasErrors)) {
|
|
278
|
+
this._inferFinalStatus();
|
|
279
|
+
}
|
|
280
|
+
// Check if sink has a close method that accepts blocking parameter
|
|
281
|
+
if (typeof this.sink.close === 'function' && this.sink.close.length > 0) {
|
|
282
|
+
await this.sink.close(blocking);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
await this.sink.close();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get run ID
|
|
290
|
+
*/
|
|
291
|
+
getRunId() {
|
|
292
|
+
return this.runId;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get current sequence number
|
|
296
|
+
*/
|
|
297
|
+
getSeq() {
|
|
298
|
+
return this.seq;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Get sink type (for debugging)
|
|
302
|
+
*/
|
|
303
|
+
getSinkType() {
|
|
304
|
+
return this.sink.getSinkType();
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Set the final status of the trace run
|
|
308
|
+
* @param status - Final status ("success", "failure", "partial", "unknown")
|
|
309
|
+
*/
|
|
310
|
+
setFinalStatus(status) {
|
|
311
|
+
if (!['success', 'failure', 'partial', 'unknown'].includes(status)) {
|
|
312
|
+
throw new Error(`Invalid status: ${status}. Must be one of: success, failure, partial, unknown`);
|
|
313
|
+
}
|
|
314
|
+
this.finalStatus = status;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Get execution statistics for trace completion
|
|
318
|
+
* @returns Dictionary with stats fields for /v1/traces/complete
|
|
319
|
+
*/
|
|
320
|
+
getStats() {
|
|
321
|
+
let durationMs = null;
|
|
322
|
+
if (this.startedAt && this.endedAt) {
|
|
323
|
+
durationMs = this.endedAt.getTime() - this.startedAt.getTime();
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
total_steps: this.totalSteps,
|
|
327
|
+
total_events: this.totalEvents,
|
|
328
|
+
duration_ms: durationMs,
|
|
329
|
+
final_status: this.finalStatus,
|
|
330
|
+
started_at: this.startedAt ? this.startedAt.toISOString() : null,
|
|
331
|
+
ended_at: this.endedAt ? this.endedAt.toISOString() : null,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
exports.Tracer = Tracer;
|
|
336
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracing Types
|
|
3
|
+
*
|
|
4
|
+
* Schema v1 - Compatible with Python SDK
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* TraceStats represents execution statistics extracted from a trace
|
|
8
|
+
*/
|
|
9
|
+
export interface TraceStats {
|
|
10
|
+
total_steps: number;
|
|
11
|
+
total_events: number;
|
|
12
|
+
duration_ms: number | null;
|
|
13
|
+
final_status: 'success' | 'failure' | 'partial' | 'unknown';
|
|
14
|
+
started_at: string | null;
|
|
15
|
+
ended_at: string | null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Visual cues structure (matches Element.visual_cues)
|
|
19
|
+
*/
|
|
20
|
+
export interface TraceVisualCues {
|
|
21
|
+
is_primary: boolean;
|
|
22
|
+
background_color_name: string | null;
|
|
23
|
+
is_clickable: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Element data structure for snapshot events
|
|
27
|
+
*/
|
|
28
|
+
export interface TraceElement {
|
|
29
|
+
id: number;
|
|
30
|
+
bbox: {
|
|
31
|
+
x: number;
|
|
32
|
+
y: number;
|
|
33
|
+
width: number;
|
|
34
|
+
height: number;
|
|
35
|
+
};
|
|
36
|
+
role: string;
|
|
37
|
+
text?: string | null;
|
|
38
|
+
importance?: number;
|
|
39
|
+
importance_score?: number;
|
|
40
|
+
visual_cues?: TraceVisualCues;
|
|
41
|
+
in_viewport?: boolean;
|
|
42
|
+
is_occluded?: boolean;
|
|
43
|
+
z_index?: number;
|
|
44
|
+
fused_rank_index?: number;
|
|
45
|
+
heuristic_index?: number;
|
|
46
|
+
ml_probability?: number;
|
|
47
|
+
ml_score?: number;
|
|
48
|
+
diff_status?: 'ADDED' | 'REMOVED' | 'MODIFIED' | 'MOVED';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Pre/post snapshot info for step_end events
|
|
52
|
+
*/
|
|
53
|
+
export interface SnapshotInfo {
|
|
54
|
+
url?: string;
|
|
55
|
+
snapshot_digest?: string;
|
|
56
|
+
elements?: TraceElement[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* LLM usage data for step_end events
|
|
60
|
+
*/
|
|
61
|
+
export interface LLMUsageData {
|
|
62
|
+
model?: string;
|
|
63
|
+
prompt_tokens?: number;
|
|
64
|
+
completion_tokens?: number;
|
|
65
|
+
total_tokens?: number;
|
|
66
|
+
response_text?: string;
|
|
67
|
+
response_hash?: string;
|
|
68
|
+
usage?: {
|
|
69
|
+
prompt_tokens: number;
|
|
70
|
+
completion_tokens: number;
|
|
71
|
+
total_tokens: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Execution data for step_end events
|
|
76
|
+
*/
|
|
77
|
+
export interface ExecutionData {
|
|
78
|
+
success: boolean;
|
|
79
|
+
action?: string;
|
|
80
|
+
outcome?: string;
|
|
81
|
+
duration_ms?: number;
|
|
82
|
+
element_id?: number;
|
|
83
|
+
bounding_box?: {
|
|
84
|
+
x: number;
|
|
85
|
+
y: number;
|
|
86
|
+
width: number;
|
|
87
|
+
height: number;
|
|
88
|
+
};
|
|
89
|
+
text?: string;
|
|
90
|
+
key?: string;
|
|
91
|
+
error?: string;
|
|
92
|
+
/** Optional action metadata (e.g., human-like cursor movement path) */
|
|
93
|
+
cursor?: Record<string, any>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Element found info for verify signals
|
|
97
|
+
*/
|
|
98
|
+
export interface ElementFound {
|
|
99
|
+
label: string;
|
|
100
|
+
bounding_box: {
|
|
101
|
+
x: number;
|
|
102
|
+
y: number;
|
|
103
|
+
width: number;
|
|
104
|
+
height: number;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Assertion result for verification events
|
|
109
|
+
*/
|
|
110
|
+
export interface AssertionResult {
|
|
111
|
+
label: string;
|
|
112
|
+
passed: boolean;
|
|
113
|
+
required?: boolean;
|
|
114
|
+
reason?: string;
|
|
115
|
+
details?: Record<string, unknown>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Verify signals for step_end events
|
|
119
|
+
*/
|
|
120
|
+
export interface VerifySignals {
|
|
121
|
+
url_changed?: boolean;
|
|
122
|
+
error?: string;
|
|
123
|
+
elements_found?: ElementFound[];
|
|
124
|
+
assertions?: AssertionResult[];
|
|
125
|
+
task_done?: boolean;
|
|
126
|
+
task_done_label?: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Verify data for step_end events
|
|
130
|
+
*/
|
|
131
|
+
export interface VerifyData {
|
|
132
|
+
passed: boolean;
|
|
133
|
+
signals: VerifySignals;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* TraceEventData contains fields for event payloads
|
|
137
|
+
* All fields are optional since different event types use different subsets
|
|
138
|
+
*/
|
|
139
|
+
export interface TraceEventData {
|
|
140
|
+
goal?: string;
|
|
141
|
+
step_index?: number;
|
|
142
|
+
attempt?: number;
|
|
143
|
+
step_id?: string;
|
|
144
|
+
url?: string;
|
|
145
|
+
element_count?: number;
|
|
146
|
+
timestamp?: string;
|
|
147
|
+
elements?: TraceElement[];
|
|
148
|
+
screenshot_base64?: string;
|
|
149
|
+
screenshot_format?: string;
|
|
150
|
+
model?: string;
|
|
151
|
+
prompt_tokens?: number;
|
|
152
|
+
completion_tokens?: number;
|
|
153
|
+
total_tokens?: number;
|
|
154
|
+
response_text?: string;
|
|
155
|
+
action_type?: string;
|
|
156
|
+
action?: string;
|
|
157
|
+
element_id?: number;
|
|
158
|
+
text?: string;
|
|
159
|
+
key?: string;
|
|
160
|
+
success?: boolean;
|
|
161
|
+
/** Optional action metadata (e.g., human-like cursor movement path) */
|
|
162
|
+
cursor?: Record<string, any>;
|
|
163
|
+
error?: string;
|
|
164
|
+
agent?: string;
|
|
165
|
+
llm_model?: string;
|
|
166
|
+
config?: Record<string, unknown>;
|
|
167
|
+
steps?: number;
|
|
168
|
+
status?: 'success' | 'failure' | 'partial' | 'unknown';
|
|
169
|
+
v?: number;
|
|
170
|
+
pre?: SnapshotInfo;
|
|
171
|
+
llm?: LLMUsageData;
|
|
172
|
+
exec?: ExecutionData;
|
|
173
|
+
post?: SnapshotInfo;
|
|
174
|
+
verify?: VerifyData;
|
|
175
|
+
kind?: 'assert' | 'task_done' | 'captcha';
|
|
176
|
+
label?: string;
|
|
177
|
+
passed?: boolean;
|
|
178
|
+
required?: boolean;
|
|
179
|
+
reason?: string;
|
|
180
|
+
details?: Record<string, unknown>;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* TraceEvent represents a single event in an agent execution trace
|
|
184
|
+
*/
|
|
185
|
+
export interface TraceEvent {
|
|
186
|
+
/** Schema version (always 1 for now) */
|
|
187
|
+
v: number;
|
|
188
|
+
/** Event type (e.g., 'run_start', 'snapshot', 'action') */
|
|
189
|
+
type: string;
|
|
190
|
+
/** ISO 8601 timestamp */
|
|
191
|
+
ts: string;
|
|
192
|
+
/** Run UUID */
|
|
193
|
+
run_id: string;
|
|
194
|
+
/** Sequence number (monotonically increasing) */
|
|
195
|
+
seq: number;
|
|
196
|
+
/** Event-specific payload */
|
|
197
|
+
data: TraceEventData;
|
|
198
|
+
/** Optional step UUID (for step-scoped events) */
|
|
199
|
+
step_id?: string;
|
|
200
|
+
/** Optional Unix timestamp in milliseconds */
|
|
201
|
+
ts_ms?: number;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|