@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.
Files changed (302) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +252 -0
  3. package/dist/actions.d.ts +185 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +1120 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/agent-runtime.d.ts +352 -0
  8. package/dist/agent-runtime.d.ts.map +1 -0
  9. package/dist/agent-runtime.js +1170 -0
  10. package/dist/agent-runtime.js.map +1 -0
  11. package/dist/agent.d.ts +164 -0
  12. package/dist/agent.d.ts.map +1 -0
  13. package/dist/agent.js +408 -0
  14. package/dist/agent.js.map +1 -0
  15. package/dist/asserts/expect.d.ts +159 -0
  16. package/dist/asserts/expect.d.ts.map +1 -0
  17. package/dist/asserts/expect.js +547 -0
  18. package/dist/asserts/expect.js.map +1 -0
  19. package/dist/asserts/index.d.ts +58 -0
  20. package/dist/asserts/index.d.ts.map +1 -0
  21. package/dist/asserts/index.js +70 -0
  22. package/dist/asserts/index.js.map +1 -0
  23. package/dist/asserts/query.d.ts +199 -0
  24. package/dist/asserts/query.d.ts.map +1 -0
  25. package/dist/asserts/query.js +288 -0
  26. package/dist/asserts/query.js.map +1 -0
  27. package/dist/backends/actions.d.ts +119 -0
  28. package/dist/backends/actions.d.ts.map +1 -0
  29. package/dist/backends/actions.js +291 -0
  30. package/dist/backends/actions.js.map +1 -0
  31. package/dist/backends/browser-use-adapter.d.ts +131 -0
  32. package/dist/backends/browser-use-adapter.d.ts.map +1 -0
  33. package/dist/backends/browser-use-adapter.js +219 -0
  34. package/dist/backends/browser-use-adapter.js.map +1 -0
  35. package/dist/backends/cdp-backend.d.ts +66 -0
  36. package/dist/backends/cdp-backend.d.ts.map +1 -0
  37. package/dist/backends/cdp-backend.js +273 -0
  38. package/dist/backends/cdp-backend.js.map +1 -0
  39. package/dist/backends/index.d.ts +80 -0
  40. package/dist/backends/index.d.ts.map +1 -0
  41. package/dist/backends/index.js +101 -0
  42. package/dist/backends/index.js.map +1 -0
  43. package/dist/backends/protocol.d.ts +156 -0
  44. package/dist/backends/protocol.d.ts.map +1 -0
  45. package/dist/backends/protocol.js +16 -0
  46. package/dist/backends/protocol.js.map +1 -0
  47. package/dist/backends/sentience-context.d.ts +143 -0
  48. package/dist/backends/sentience-context.d.ts.map +1 -0
  49. package/dist/backends/sentience-context.js +359 -0
  50. package/dist/backends/sentience-context.js.map +1 -0
  51. package/dist/backends/snapshot.d.ts +188 -0
  52. package/dist/backends/snapshot.d.ts.map +1 -0
  53. package/dist/backends/snapshot.js +360 -0
  54. package/dist/backends/snapshot.js.map +1 -0
  55. package/dist/browser.d.ts +154 -0
  56. package/dist/browser.d.ts.map +1 -0
  57. package/dist/browser.js +920 -0
  58. package/dist/browser.js.map +1 -0
  59. package/dist/canonicalization.d.ts +126 -0
  60. package/dist/canonicalization.d.ts.map +1 -0
  61. package/dist/canonicalization.js +161 -0
  62. package/dist/canonicalization.js.map +1 -0
  63. package/dist/captcha/strategies.d.ts +12 -0
  64. package/dist/captcha/strategies.d.ts.map +1 -0
  65. package/dist/captcha/strategies.js +43 -0
  66. package/dist/captcha/strategies.js.map +1 -0
  67. package/dist/captcha/types.d.ts +45 -0
  68. package/dist/captcha/types.d.ts.map +1 -0
  69. package/dist/captcha/types.js +12 -0
  70. package/dist/captcha/types.js.map +1 -0
  71. package/dist/cli.d.ts +5 -0
  72. package/dist/cli.d.ts.map +1 -0
  73. package/dist/cli.js +422 -0
  74. package/dist/cli.js.map +1 -0
  75. package/dist/conversational-agent.d.ts +123 -0
  76. package/dist/conversational-agent.d.ts.map +1 -0
  77. package/dist/conversational-agent.js +341 -0
  78. package/dist/conversational-agent.js.map +1 -0
  79. package/dist/cursor-policy.d.ts +41 -0
  80. package/dist/cursor-policy.d.ts.map +1 -0
  81. package/dist/cursor-policy.js +81 -0
  82. package/dist/cursor-policy.js.map +1 -0
  83. package/dist/debugger.d.ts +28 -0
  84. package/dist/debugger.d.ts.map +1 -0
  85. package/dist/debugger.js +107 -0
  86. package/dist/debugger.js.map +1 -0
  87. package/dist/expect.d.ts +16 -0
  88. package/dist/expect.d.ts.map +1 -0
  89. package/dist/expect.js +67 -0
  90. package/dist/expect.js.map +1 -0
  91. package/dist/failure-artifacts.d.ts +95 -0
  92. package/dist/failure-artifacts.d.ts.map +1 -0
  93. package/dist/failure-artifacts.js +805 -0
  94. package/dist/failure-artifacts.js.map +1 -0
  95. package/dist/generator.d.ts +16 -0
  96. package/dist/generator.d.ts.map +1 -0
  97. package/dist/generator.js +205 -0
  98. package/dist/generator.js.map +1 -0
  99. package/dist/index.d.ts +37 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +160 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/inspector.d.ts +13 -0
  104. package/dist/inspector.d.ts.map +1 -0
  105. package/dist/inspector.js +153 -0
  106. package/dist/inspector.js.map +1 -0
  107. package/dist/llm-provider.d.ts +144 -0
  108. package/dist/llm-provider.d.ts.map +1 -0
  109. package/dist/llm-provider.js +460 -0
  110. package/dist/llm-provider.js.map +1 -0
  111. package/dist/ordinal.d.ts +90 -0
  112. package/dist/ordinal.d.ts.map +1 -0
  113. package/dist/ordinal.js +249 -0
  114. package/dist/ordinal.js.map +1 -0
  115. package/dist/overlay.d.ts +63 -0
  116. package/dist/overlay.d.ts.map +1 -0
  117. package/dist/overlay.js +102 -0
  118. package/dist/overlay.js.map +1 -0
  119. package/dist/protocols/browser-protocol.d.ts +79 -0
  120. package/dist/protocols/browser-protocol.d.ts.map +1 -0
  121. package/dist/protocols/browser-protocol.js +9 -0
  122. package/dist/protocols/browser-protocol.js.map +1 -0
  123. package/dist/query.d.ts +66 -0
  124. package/dist/query.d.ts.map +1 -0
  125. package/dist/query.js +482 -0
  126. package/dist/query.js.map +1 -0
  127. package/dist/read.d.ts +47 -0
  128. package/dist/read.d.ts.map +1 -0
  129. package/dist/read.js +128 -0
  130. package/dist/read.js.map +1 -0
  131. package/dist/recorder.d.ts +44 -0
  132. package/dist/recorder.d.ts.map +1 -0
  133. package/dist/recorder.js +262 -0
  134. package/dist/recorder.js.map +1 -0
  135. package/dist/runtime-agent.d.ts +72 -0
  136. package/dist/runtime-agent.d.ts.map +1 -0
  137. package/dist/runtime-agent.js +357 -0
  138. package/dist/runtime-agent.js.map +1 -0
  139. package/dist/screenshot.d.ts +17 -0
  140. package/dist/screenshot.d.ts.map +1 -0
  141. package/dist/screenshot.js +40 -0
  142. package/dist/screenshot.js.map +1 -0
  143. package/dist/snapshot-diff.d.ts +23 -0
  144. package/dist/snapshot-diff.d.ts.map +1 -0
  145. package/dist/snapshot-diff.js +119 -0
  146. package/dist/snapshot-diff.js.map +1 -0
  147. package/dist/snapshot.d.ts +47 -0
  148. package/dist/snapshot.d.ts.map +1 -0
  149. package/dist/snapshot.js +358 -0
  150. package/dist/snapshot.js.map +1 -0
  151. package/dist/textSearch.d.ts +64 -0
  152. package/dist/textSearch.d.ts.map +1 -0
  153. package/dist/textSearch.js +113 -0
  154. package/dist/textSearch.js.map +1 -0
  155. package/dist/tools/context.d.ts +18 -0
  156. package/dist/tools/context.d.ts.map +1 -0
  157. package/dist/tools/context.js +40 -0
  158. package/dist/tools/context.js.map +1 -0
  159. package/dist/tools/defaults.d.ts +5 -0
  160. package/dist/tools/defaults.d.ts.map +1 -0
  161. package/dist/tools/defaults.js +368 -0
  162. package/dist/tools/defaults.js.map +1 -0
  163. package/dist/tools/filesystem.d.ts +12 -0
  164. package/dist/tools/filesystem.d.ts.map +1 -0
  165. package/dist/tools/filesystem.js +137 -0
  166. package/dist/tools/filesystem.js.map +1 -0
  167. package/dist/tools/index.d.ts +5 -0
  168. package/dist/tools/index.d.ts.map +1 -0
  169. package/dist/tools/index.js +15 -0
  170. package/dist/tools/index.js.map +1 -0
  171. package/dist/tools/registry.d.ts +38 -0
  172. package/dist/tools/registry.d.ts.map +1 -0
  173. package/dist/tools/registry.js +100 -0
  174. package/dist/tools/registry.js.map +1 -0
  175. package/dist/tracing/cloud-sink.d.ts +189 -0
  176. package/dist/tracing/cloud-sink.d.ts.map +1 -0
  177. package/dist/tracing/cloud-sink.js +1067 -0
  178. package/dist/tracing/cloud-sink.js.map +1 -0
  179. package/dist/tracing/index-schema.d.ts +231 -0
  180. package/dist/tracing/index-schema.d.ts.map +1 -0
  181. package/dist/tracing/index-schema.js +235 -0
  182. package/dist/tracing/index-schema.js.map +1 -0
  183. package/dist/tracing/index.d.ts +12 -0
  184. package/dist/tracing/index.d.ts.map +1 -0
  185. package/dist/tracing/index.js +28 -0
  186. package/dist/tracing/index.js.map +1 -0
  187. package/dist/tracing/indexer.d.ts +20 -0
  188. package/dist/tracing/indexer.d.ts.map +1 -0
  189. package/dist/tracing/indexer.js +347 -0
  190. package/dist/tracing/indexer.js.map +1 -0
  191. package/dist/tracing/jsonl-sink.d.ts +51 -0
  192. package/dist/tracing/jsonl-sink.d.ts.map +1 -0
  193. package/dist/tracing/jsonl-sink.js +329 -0
  194. package/dist/tracing/jsonl-sink.js.map +1 -0
  195. package/dist/tracing/sink.d.ts +25 -0
  196. package/dist/tracing/sink.d.ts.map +1 -0
  197. package/dist/tracing/sink.js +15 -0
  198. package/dist/tracing/sink.js.map +1 -0
  199. package/dist/tracing/tracer-factory.d.ts +102 -0
  200. package/dist/tracing/tracer-factory.d.ts.map +1 -0
  201. package/dist/tracing/tracer-factory.js +375 -0
  202. package/dist/tracing/tracer-factory.js.map +1 -0
  203. package/dist/tracing/tracer.d.ts +140 -0
  204. package/dist/tracing/tracer.d.ts.map +1 -0
  205. package/dist/tracing/tracer.js +336 -0
  206. package/dist/tracing/tracer.js.map +1 -0
  207. package/dist/tracing/types.d.ts +203 -0
  208. package/dist/tracing/types.d.ts.map +1 -0
  209. package/dist/tracing/types.js +8 -0
  210. package/dist/tracing/types.js.map +1 -0
  211. package/dist/types.d.ts +422 -0
  212. package/dist/types.d.ts.map +1 -0
  213. package/dist/types.js +6 -0
  214. package/dist/types.js.map +1 -0
  215. package/dist/utils/action-executor.d.ts +25 -0
  216. package/dist/utils/action-executor.d.ts.map +1 -0
  217. package/dist/utils/action-executor.js +121 -0
  218. package/dist/utils/action-executor.js.map +1 -0
  219. package/dist/utils/browser-evaluator.d.ts +76 -0
  220. package/dist/utils/browser-evaluator.d.ts.map +1 -0
  221. package/dist/utils/browser-evaluator.js +130 -0
  222. package/dist/utils/browser-evaluator.js.map +1 -0
  223. package/dist/utils/browser.d.ts +30 -0
  224. package/dist/utils/browser.d.ts.map +1 -0
  225. package/dist/utils/browser.js +75 -0
  226. package/dist/utils/browser.js.map +1 -0
  227. package/dist/utils/element-filter.d.ts +76 -0
  228. package/dist/utils/element-filter.d.ts.map +1 -0
  229. package/dist/utils/element-filter.js +195 -0
  230. package/dist/utils/element-filter.js.map +1 -0
  231. package/dist/utils/grid-utils.d.ts +37 -0
  232. package/dist/utils/grid-utils.d.ts.map +1 -0
  233. package/dist/utils/grid-utils.js +283 -0
  234. package/dist/utils/grid-utils.js.map +1 -0
  235. package/dist/utils/llm-interaction-handler.d.ts +41 -0
  236. package/dist/utils/llm-interaction-handler.d.ts.map +1 -0
  237. package/dist/utils/llm-interaction-handler.js +171 -0
  238. package/dist/utils/llm-interaction-handler.js.map +1 -0
  239. package/dist/utils/llm-response-builder.d.ts +56 -0
  240. package/dist/utils/llm-response-builder.d.ts.map +1 -0
  241. package/dist/utils/llm-response-builder.js +130 -0
  242. package/dist/utils/llm-response-builder.js.map +1 -0
  243. package/dist/utils/selector-utils.d.ts +12 -0
  244. package/dist/utils/selector-utils.d.ts.map +1 -0
  245. package/dist/utils/selector-utils.js +32 -0
  246. package/dist/utils/selector-utils.js.map +1 -0
  247. package/dist/utils/snapshot-event-builder.d.ts +28 -0
  248. package/dist/utils/snapshot-event-builder.d.ts.map +1 -0
  249. package/dist/utils/snapshot-event-builder.js +88 -0
  250. package/dist/utils/snapshot-event-builder.js.map +1 -0
  251. package/dist/utils/snapshot-processor.d.ts +27 -0
  252. package/dist/utils/snapshot-processor.d.ts.map +1 -0
  253. package/dist/utils/snapshot-processor.js +47 -0
  254. package/dist/utils/snapshot-processor.js.map +1 -0
  255. package/dist/utils/trace-event-builder.d.ts +122 -0
  256. package/dist/utils/trace-event-builder.d.ts.map +1 -0
  257. package/dist/utils/trace-event-builder.js +365 -0
  258. package/dist/utils/trace-event-builder.js.map +1 -0
  259. package/dist/utils/trace-file-manager.d.ts +70 -0
  260. package/dist/utils/trace-file-manager.d.ts.map +1 -0
  261. package/dist/utils/trace-file-manager.js +194 -0
  262. package/dist/utils/trace-file-manager.js.map +1 -0
  263. package/dist/utils/zod.d.ts +5 -0
  264. package/dist/utils/zod.d.ts.map +1 -0
  265. package/dist/utils/zod.js +80 -0
  266. package/dist/utils/zod.js.map +1 -0
  267. package/dist/utils.d.ts +8 -0
  268. package/dist/utils.d.ts.map +1 -0
  269. package/dist/utils.js +13 -0
  270. package/dist/utils.js.map +1 -0
  271. package/dist/verification.d.ts +194 -0
  272. package/dist/verification.d.ts.map +1 -0
  273. package/dist/verification.js +530 -0
  274. package/dist/verification.js.map +1 -0
  275. package/dist/vision-executor.d.ts +18 -0
  276. package/dist/vision-executor.d.ts.map +1 -0
  277. package/dist/vision-executor.js +60 -0
  278. package/dist/vision-executor.js.map +1 -0
  279. package/dist/visual-agent.d.ts +120 -0
  280. package/dist/visual-agent.d.ts.map +1 -0
  281. package/dist/visual-agent.js +796 -0
  282. package/dist/visual-agent.js.map +1 -0
  283. package/dist/wait.d.ts +35 -0
  284. package/dist/wait.d.ts.map +1 -0
  285. package/dist/wait.js +76 -0
  286. package/dist/wait.js.map +1 -0
  287. package/package.json +94 -0
  288. package/spec/README.md +72 -0
  289. package/spec/SNAPSHOT_V1.md +208 -0
  290. package/spec/sdk-types.md +259 -0
  291. package/spec/snapshot.schema.json +148 -0
  292. package/src/extension/background.js +104 -0
  293. package/src/extension/content.js +162 -0
  294. package/src/extension/injected_api.js +1399 -0
  295. package/src/extension/manifest.json +36 -0
  296. package/src/extension/pkg/README.md +1340 -0
  297. package/src/extension/pkg/package.json +15 -0
  298. package/src/extension/pkg/sentience_core.d.ts +51 -0
  299. package/src/extension/pkg/sentience_core.js +371 -0
  300. package/src/extension/pkg/sentience_core_bg.wasm +0 -0
  301. package/src/extension/pkg/sentience_core_bg.wasm.d.ts +10 -0
  302. 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"}