@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,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":";AAAA;;;;GAIG;;;AAKH;;GAEG;AACH,MAAa,MAAM;IAiBjB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YACE,KAAa,EACb,IAAe,EACf,mBAAoD;QAnCtD,iBAAiB;QACT,eAAU,GAAW,CAAC,CAAC;QACvB,gBAAW,GAAW,CAAC,CAAC;QACxB,cAAS,GAAgB,IAAI,CAAC;QAC9B,YAAO,GAAgB,IAAI,CAAC;QAC5B,gBAAW,GAAW,SAAS,CAAC;QACxC,qDAAqD;QAC7C,kBAAa,GAAW,CAAC,CAAC;QAC1B,iBAAY,GAAW,CAAC,CAAC;QACzB,cAAS,GAAY,KAAK,CAAC;QA4BjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAAiB,EAAE,IAAoB,EAAE,MAAe;QAC3D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QAEtB,qEAAqE;QACrE,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvD,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7E,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC,CAAC,mCAAmC;QACjG,CAAC;QAED,sBAAsB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAExC,MAAM,KAAK,GAAe;YACxB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,SAAS;YACf,EAAE;YACF,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI,CAAC,KAAK;YAClB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI;SACL,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtB,qDAAqD;QACrD,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAI,IAAY,CAAC,OAAO,IAAI,KAAK,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAa,EAAE,QAAiB,EAAE,MAA4B;QACzE,mBAAmB;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,MAAM,IAAI,GAAmB,EAAE,KAAK,EAAE,CAAC;QACvC,IAAI,QAAQ;YAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QACxC,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CACX,MAAc,EACd,SAAiB,EACjB,IAAY,EACZ,UAAkB,CAAC,EACnB,MAAe;QAEf,2DAA2D;QAC3D,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAmB;YAC3B,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,SAAS;YACrB,IAAI;YACJ,OAAO;SACR,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,KAAa,EAAE,MAAe;QACvC,iBAAiB;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1B,2DAA2D;QAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QAED,sDAAsD;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC;QAE/C,yDAAyD;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAEnD,6CAA6C;QAC7C,MAAM,WAAW,GACf,WAAW,KAAK,SAAS;YACzB,WAAW,KAAK,SAAS;YACzB,WAAW,KAAK,SAAS;YACzB,WAAW,KAAK,SAAS;YACvB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,MAAc,EAAE,KAAa,EAAE,UAAkB,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,YAAY,CACV,QAAa,EACb,MAAe,EACf,SAAkB,EAClB,mBAA2B,MAAM;QAEjC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,IAAI,GAAmB;gBAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,aAAa,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;gBAC7C,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC9B,CAAC;YAEF,8DAA8D;YAC9D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC9B,CAAC;YAED,+CAA+C;YAC/C,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,8DAA8D;gBAC9D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;gBAChF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;gBACpD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;gBACpD,MAAM,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;gBAEtD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE;oBAChD,MAAM,eAAe,GACnB,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;oBAChF,OAAO;wBACL,GAAG,EAAE;wBACL,gBAAgB,EAAE,eAAe;qBAClC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YAED,wCAAwC;YACxC,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;YAC1C,IAAI,aAAa,EAAE,CAAC;gBAClB,gDAAgD;gBAChD,mDAAmD;gBACnD,IAAI,gBAAwB,CAAC;gBAC7B,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChF,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC9C,gBAAgB;wBACd,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC5E,CAAC;qBAAM,CAAC;oBACN,gBAAgB,GAAG,aAAa,CAAC;gBACnC,CAAC;gBACD,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YAC5C,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;QAClE,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB;QACvB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,gDAAgD;YAChD,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,wDAAwD;YACxD,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YAClC,qCAAqC;YACrC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,oEAAoE;IACtE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,WAAoB,IAAI;QAClC,yEAAyE;QACzE,IACE,IAAI,CAAC,WAAW,KAAK,SAAS;YAC9B,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EACnE,CAAC;YACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QAED,mEAAmE;QACnE,IAAI,OAAQ,IAAI,CAAC,IAAY,CAAC,KAAK,KAAK,UAAU,IAAK,IAAI,CAAC,IAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1F,MAAO,IAAI,CAAC,IAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,sDAAsD,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACjE,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;YAChE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;SAC3D,CAAC;IACJ,CAAC;CACF;AA1XD,wBA0XC"}
@@ -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,8 @@
1
+ "use strict";
2
+ /**
3
+ * Tracing Types
4
+ *
5
+ * Schema v1 - Compatible with Python SDK
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}