@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,347 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Trace indexing for fast timeline rendering and step drill-down.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.buildTraceIndex = buildTraceIndex;
|
|
40
|
+
exports.writeTraceIndex = writeTraceIndex;
|
|
41
|
+
exports.readStepEvents = readStepEvents;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const crypto = __importStar(require("crypto"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const canonicalization_1 = require("../canonicalization");
|
|
46
|
+
const index_schema_1 = require("./index-schema");
|
|
47
|
+
/**
|
|
48
|
+
* Compute stable digest of snapshot for diffing
|
|
49
|
+
*/
|
|
50
|
+
function computeSnapshotDigest(snapshotData) {
|
|
51
|
+
const url = snapshotData.url || '';
|
|
52
|
+
const viewport = snapshotData.viewport || {};
|
|
53
|
+
const elements = snapshotData.elements || [];
|
|
54
|
+
// Canonicalize elements using shared helper
|
|
55
|
+
const canonicalElements = elements.map((elem) => (0, canonicalization_1.canonicalizeElement)(elem));
|
|
56
|
+
// Sort by element id for determinism
|
|
57
|
+
canonicalElements.sort((a, b) => (a.id || 0) - (b.id || 0));
|
|
58
|
+
// Build canonical object
|
|
59
|
+
const canonical = {
|
|
60
|
+
url,
|
|
61
|
+
viewport: {
|
|
62
|
+
width: viewport.width || 0,
|
|
63
|
+
height: viewport.height || 0,
|
|
64
|
+
},
|
|
65
|
+
elements: canonicalElements,
|
|
66
|
+
};
|
|
67
|
+
// Hash
|
|
68
|
+
const canonicalJson = JSON.stringify(canonical);
|
|
69
|
+
const hash = crypto.createHash('sha256').update(canonicalJson, 'utf8').digest('hex');
|
|
70
|
+
return `sha256:${hash}`;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Compute digest of action args for privacy + determinism
|
|
74
|
+
*/
|
|
75
|
+
function computeActionDigest(actionData) {
|
|
76
|
+
const actionType = actionData.type || '';
|
|
77
|
+
const targetId = actionData.target_element_id;
|
|
78
|
+
const canonical = {
|
|
79
|
+
type: actionType,
|
|
80
|
+
target_element_id: targetId,
|
|
81
|
+
};
|
|
82
|
+
// Type-specific canonicalization
|
|
83
|
+
if (actionType === 'TYPE') {
|
|
84
|
+
const text = actionData.text || '';
|
|
85
|
+
canonical.text_len = text.length;
|
|
86
|
+
canonical.text_sha256 = crypto.createHash('sha256').update(text, 'utf8').digest('hex');
|
|
87
|
+
}
|
|
88
|
+
else if (actionType === 'PRESS') {
|
|
89
|
+
canonical.key = actionData.key || '';
|
|
90
|
+
}
|
|
91
|
+
// CLICK has no extra args
|
|
92
|
+
// Hash
|
|
93
|
+
const canonicalJson = JSON.stringify(canonical);
|
|
94
|
+
const hash = crypto.createHash('sha256').update(canonicalJson, 'utf8').digest('hex');
|
|
95
|
+
return `sha256:${hash}`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Compute SHA256 hash of entire file
|
|
99
|
+
*/
|
|
100
|
+
function computeFileSha256(filePath) {
|
|
101
|
+
const hash = crypto.createHash('sha256');
|
|
102
|
+
const data = fs.readFileSync(filePath);
|
|
103
|
+
hash.update(data);
|
|
104
|
+
return hash.digest('hex');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Build trace index from JSONL file in single streaming pass
|
|
108
|
+
*/
|
|
109
|
+
function buildTraceIndex(tracePath) {
|
|
110
|
+
if (!fs.existsSync(tracePath)) {
|
|
111
|
+
throw new Error(`Trace file not found: ${tracePath}`);
|
|
112
|
+
}
|
|
113
|
+
// Extract run_id from filename
|
|
114
|
+
const runId = path.basename(tracePath, '.jsonl');
|
|
115
|
+
// Initialize summary
|
|
116
|
+
let firstTs = '';
|
|
117
|
+
let lastTs = '';
|
|
118
|
+
let eventCount = 0;
|
|
119
|
+
let errorCount = 0;
|
|
120
|
+
let finalUrl = null;
|
|
121
|
+
let runEndStatus = null; // Track status from run_end event
|
|
122
|
+
let agentName = null; // Extract from run_start event
|
|
123
|
+
let lineCount = 0; // Track total line count
|
|
124
|
+
const stepsById = new Map();
|
|
125
|
+
const stepOrder = [];
|
|
126
|
+
// Stream through file, tracking byte offsets and line numbers
|
|
127
|
+
const fileBuffer = fs.readFileSync(tracePath);
|
|
128
|
+
let byteOffset = 0;
|
|
129
|
+
const lines = fileBuffer.toString('utf-8').split('\n');
|
|
130
|
+
let lineNumber = 0; // Track line number for each event
|
|
131
|
+
for (const line of lines) {
|
|
132
|
+
lineNumber++;
|
|
133
|
+
lineCount++;
|
|
134
|
+
const lineBytes = Buffer.byteLength(line + '\n', 'utf-8');
|
|
135
|
+
if (!line.trim()) {
|
|
136
|
+
byteOffset += lineBytes;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
let event;
|
|
140
|
+
try {
|
|
141
|
+
event = JSON.parse(line);
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
// Skip malformed lines
|
|
145
|
+
byteOffset += lineBytes;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
// Extract event metadata
|
|
149
|
+
const eventType = event.type || '';
|
|
150
|
+
const ts = event.ts || event.timestamp || '';
|
|
151
|
+
const stepId = event.step_id || 'step-0';
|
|
152
|
+
const data = event.data || {};
|
|
153
|
+
// Update summary
|
|
154
|
+
eventCount++;
|
|
155
|
+
if (!firstTs) {
|
|
156
|
+
firstTs = ts;
|
|
157
|
+
}
|
|
158
|
+
lastTs = ts;
|
|
159
|
+
if (eventType === 'error') {
|
|
160
|
+
errorCount++;
|
|
161
|
+
}
|
|
162
|
+
// Extract agent_name from run_start event
|
|
163
|
+
if (eventType === 'run_start') {
|
|
164
|
+
agentName = data.agent || null;
|
|
165
|
+
}
|
|
166
|
+
// Initialize step if first time seeing this step_id
|
|
167
|
+
if (!stepsById.has(stepId)) {
|
|
168
|
+
stepOrder.push(stepId);
|
|
169
|
+
stepsById.set(stepId, new index_schema_1.StepIndex(stepOrder.length, stepId, null, 'failure', // Default to failure (will be updated by step_end event)
|
|
170
|
+
ts, ts, byteOffset, byteOffset + lineBytes, lineNumber, // Track line number
|
|
171
|
+
null, null, new index_schema_1.SnapshotInfo(), new index_schema_1.SnapshotInfo(), new index_schema_1.ActionInfo(), new index_schema_1.StepCounters()));
|
|
172
|
+
}
|
|
173
|
+
const step = stepsById.get(stepId);
|
|
174
|
+
// Update step metadata
|
|
175
|
+
step.ts_end = ts;
|
|
176
|
+
step.offset_end = byteOffset + lineBytes;
|
|
177
|
+
step.line_number = lineNumber; // Update line number on each event
|
|
178
|
+
step.counters.events++;
|
|
179
|
+
// Handle specific event types
|
|
180
|
+
if (eventType === 'step_start') {
|
|
181
|
+
step.goal = data.goal;
|
|
182
|
+
step.url_before = data.pre_url;
|
|
183
|
+
}
|
|
184
|
+
else if (eventType === 'snapshot' || eventType === 'snapshot_taken') {
|
|
185
|
+
// Handle both "snapshot" (current) and "snapshot_taken" (schema) for backward compatibility
|
|
186
|
+
const snapshotId = data.snapshot_id;
|
|
187
|
+
const url = data.url;
|
|
188
|
+
const digest = computeSnapshotDigest(data);
|
|
189
|
+
// First snapshot = before, last snapshot = after
|
|
190
|
+
if (!step.snapshot_before.snapshot_id) {
|
|
191
|
+
step.snapshot_before = new index_schema_1.SnapshotInfo(snapshotId, digest, url);
|
|
192
|
+
step.url_before = step.url_before || url;
|
|
193
|
+
}
|
|
194
|
+
step.snapshot_after = new index_schema_1.SnapshotInfo(snapshotId, digest, url);
|
|
195
|
+
step.url_after = url;
|
|
196
|
+
step.counters.snapshots++;
|
|
197
|
+
finalUrl = url;
|
|
198
|
+
}
|
|
199
|
+
else if (eventType === 'action' || eventType === 'action_executed') {
|
|
200
|
+
// Handle both "action" (current) and "action_executed" (schema) for backward compatibility
|
|
201
|
+
step.action = new index_schema_1.ActionInfo(data.type, data.target_element_id, computeActionDigest(data), data.success !== false);
|
|
202
|
+
step.counters.actions++;
|
|
203
|
+
}
|
|
204
|
+
else if (eventType === 'llm_response' || eventType === 'llm_called') {
|
|
205
|
+
// Handle both "llm_response" (current) and "llm_called" (schema) for backward compatibility
|
|
206
|
+
step.counters.llm_calls++;
|
|
207
|
+
}
|
|
208
|
+
else if (eventType === 'error') {
|
|
209
|
+
step.status = 'failure';
|
|
210
|
+
}
|
|
211
|
+
else if (eventType === 'step_end') {
|
|
212
|
+
// Determine status from step_end event data
|
|
213
|
+
// Frontend expects: success, failure, or partial
|
|
214
|
+
// Logic: success = exec.success && verify.passed
|
|
215
|
+
// partial = exec.success && !verify.passed
|
|
216
|
+
// failure = !exec.success
|
|
217
|
+
const execData = data.exec || {};
|
|
218
|
+
const verifyData = data.verify || {};
|
|
219
|
+
const execSuccess = execData.success === true;
|
|
220
|
+
const verifyPassed = verifyData.passed === true;
|
|
221
|
+
if (execSuccess && verifyPassed) {
|
|
222
|
+
step.status = 'success';
|
|
223
|
+
}
|
|
224
|
+
else if (execSuccess && !verifyPassed) {
|
|
225
|
+
step.status = 'partial';
|
|
226
|
+
}
|
|
227
|
+
else if (!execSuccess) {
|
|
228
|
+
step.status = 'failure';
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
// Fallback: if step_end exists but no exec/verify data, default to failure
|
|
232
|
+
step.status = 'failure';
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else if (eventType === 'run_end') {
|
|
236
|
+
// Extract status from run_end event (will be used for summary)
|
|
237
|
+
runEndStatus = data.status;
|
|
238
|
+
// Validate status value
|
|
239
|
+
if (runEndStatus && !['success', 'failure', 'partial', 'unknown'].includes(runEndStatus)) {
|
|
240
|
+
runEndStatus = null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
byteOffset += lineBytes;
|
|
244
|
+
}
|
|
245
|
+
// Use run_end status if available, otherwise infer from step statuses
|
|
246
|
+
let summaryStatus = null;
|
|
247
|
+
if (runEndStatus) {
|
|
248
|
+
summaryStatus = runEndStatus;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
const stepStatuses = Array.from(stepsById.values()).map(s => s.status);
|
|
252
|
+
if (stepStatuses.length > 0) {
|
|
253
|
+
// Infer overall status from step statuses
|
|
254
|
+
if (stepStatuses.every(s => s === 'success')) {
|
|
255
|
+
summaryStatus = 'success';
|
|
256
|
+
}
|
|
257
|
+
else if (stepStatuses.some(s => s === 'failure')) {
|
|
258
|
+
// If any failure and no successes, it's failure; otherwise partial
|
|
259
|
+
if (stepStatuses.some(s => s === 'success')) {
|
|
260
|
+
summaryStatus = 'partial';
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
summaryStatus = 'failure';
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
else if (stepStatuses.some(s => s === 'partial')) {
|
|
267
|
+
summaryStatus = 'partial';
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
summaryStatus = 'failure'; // Default to failure instead of unknown
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
summaryStatus = 'failure'; // Default to failure instead of unknown
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// Calculate duration
|
|
278
|
+
let durationMs = null;
|
|
279
|
+
if (firstTs && lastTs) {
|
|
280
|
+
const start = new Date(firstTs);
|
|
281
|
+
const end = new Date(lastTs);
|
|
282
|
+
durationMs = end.getTime() - start.getTime();
|
|
283
|
+
}
|
|
284
|
+
// Aggregate counters
|
|
285
|
+
const snapshotCount = Array.from(stepsById.values()).reduce((sum, s) => sum + s.counters.snapshots, 0);
|
|
286
|
+
const actionCount = Array.from(stepsById.values()).reduce((sum, s) => sum + s.counters.actions, 0);
|
|
287
|
+
const counters = {
|
|
288
|
+
snapshot_count: snapshotCount,
|
|
289
|
+
action_count: actionCount,
|
|
290
|
+
error_count: errorCount,
|
|
291
|
+
};
|
|
292
|
+
// Build summary
|
|
293
|
+
const summary = new index_schema_1.TraceSummary(firstTs, lastTs, eventCount, stepsById.size, errorCount, finalUrl, summaryStatus, agentName, durationMs, counters);
|
|
294
|
+
// Build steps list in order
|
|
295
|
+
const stepsList = stepOrder.map(sid => stepsById.get(sid));
|
|
296
|
+
// Build trace file info
|
|
297
|
+
const traceFile = new index_schema_1.TraceFileInfo(tracePath, fs.statSync(tracePath).size, computeFileSha256(tracePath), lineCount);
|
|
298
|
+
// Build final index
|
|
299
|
+
const index = new index_schema_1.TraceIndex(1, runId, new Date().toISOString(), traceFile, summary, stepsList);
|
|
300
|
+
return index;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Build index and write to file
|
|
304
|
+
* @param tracePath - Path to trace JSONL file
|
|
305
|
+
* @param indexPath - Optional custom path for index file
|
|
306
|
+
* @param frontendFormat - If true, write in frontend-compatible format (default: false)
|
|
307
|
+
*/
|
|
308
|
+
function writeTraceIndex(tracePath, indexPath, frontendFormat = false) {
|
|
309
|
+
if (!indexPath) {
|
|
310
|
+
indexPath = tracePath.replace(/\.jsonl$/, '.index.json');
|
|
311
|
+
}
|
|
312
|
+
const index = buildTraceIndex(tracePath);
|
|
313
|
+
if (frontendFormat) {
|
|
314
|
+
fs.writeFileSync(indexPath, JSON.stringify(index.toSentienceStudioJSON(), null, 2));
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
fs.writeFileSync(indexPath, JSON.stringify(index.toJSON(), null, 2));
|
|
318
|
+
}
|
|
319
|
+
return indexPath;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Read events for a specific step using byte offsets from index
|
|
323
|
+
*/
|
|
324
|
+
function readStepEvents(tracePath, offsetStart, offsetEnd) {
|
|
325
|
+
const events = [];
|
|
326
|
+
const fd = fs.openSync(tracePath, 'r');
|
|
327
|
+
const bytesToRead = offsetEnd - offsetStart;
|
|
328
|
+
const buffer = Buffer.alloc(bytesToRead);
|
|
329
|
+
fs.readSync(fd, buffer, 0, bytesToRead, offsetStart);
|
|
330
|
+
fs.closeSync(fd);
|
|
331
|
+
// Parse lines
|
|
332
|
+
const chunk = buffer.toString('utf-8');
|
|
333
|
+
const lines = chunk.split('\n');
|
|
334
|
+
for (const line of lines) {
|
|
335
|
+
if (!line.trim())
|
|
336
|
+
continue;
|
|
337
|
+
try {
|
|
338
|
+
const event = JSON.parse(line);
|
|
339
|
+
events.push(event);
|
|
340
|
+
}
|
|
341
|
+
catch (e) {
|
|
342
|
+
// Skip malformed lines
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return events;
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/tracing/indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONL Trace Sink
|
|
3
|
+
*
|
|
4
|
+
* Writes trace events to a local JSONL (JSON Lines) file
|
|
5
|
+
*/
|
|
6
|
+
import { TraceSink } from './sink';
|
|
7
|
+
import { TraceEvent, TraceStats } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* JsonlTraceSink writes trace events to a JSONL file (one JSON object per line)
|
|
10
|
+
*/
|
|
11
|
+
export declare class JsonlTraceSink extends TraceSink {
|
|
12
|
+
private path;
|
|
13
|
+
private writeStream;
|
|
14
|
+
private closed;
|
|
15
|
+
/**
|
|
16
|
+
* Create a new JSONL trace sink
|
|
17
|
+
* @param filePath - Path to the JSONL file (will be created if doesn't exist)
|
|
18
|
+
*/
|
|
19
|
+
constructor(filePath: string);
|
|
20
|
+
/**
|
|
21
|
+
* Emit a trace event (write as JSON line)
|
|
22
|
+
* @param event - Trace event to emit
|
|
23
|
+
*/
|
|
24
|
+
emit(event: TraceEvent): void;
|
|
25
|
+
/**
|
|
26
|
+
* Close the sink and flush buffered data
|
|
27
|
+
*/
|
|
28
|
+
close(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Generate trace index file (automatic on close)
|
|
31
|
+
*/
|
|
32
|
+
private generateIndex;
|
|
33
|
+
/**
|
|
34
|
+
* Get sink type identifier
|
|
35
|
+
*/
|
|
36
|
+
getSinkType(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Get file path
|
|
39
|
+
*/
|
|
40
|
+
getPath(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Check if sink is closed
|
|
43
|
+
*/
|
|
44
|
+
isClosed(): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Extract execution statistics from trace file (for local traces).
|
|
47
|
+
* @returns Trace statistics
|
|
48
|
+
*/
|
|
49
|
+
getStats(): TraceStats;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=jsonl-sink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-sink.d.ts","sourceRoot":"","sources":["../../src/tracing/jsonl-sink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,MAAM,CAAkB;IAEhC;;;OAGG;gBACS,QAAQ,EAAE,MAAM;IAiC5B;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAqC7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACH,QAAQ,IAAI,UAAU;CAwHvB"}
|