@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,130 @@
1
+ "use strict";
2
+ /**
3
+ * LLMResponseBuilder - Helper for consistent LLM response building
4
+ *
5
+ * Provides standardized response building and error handling across LLM providers
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.LLMResponseBuilder = void 0;
9
+ /**
10
+ * LLMResponseBuilder provides static methods for building and validating LLM responses
11
+ */
12
+ class LLMResponseBuilder {
13
+ /**
14
+ * Build a standardized LLMResponse from provider-specific response data
15
+ *
16
+ * @param content - Response content text
17
+ * @param modelName - Model name/identifier
18
+ * @param usage - Token usage data (provider-specific format)
19
+ * @param providerType - Provider type for usage extraction
20
+ * @returns Standardized LLMResponse
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // OpenAI format
25
+ * const response = LLMResponseBuilder.build(
26
+ * 'CLICK(1)',
27
+ * 'gpt-4o',
28
+ * { prompt_tokens: 100, completion_tokens: 20, total_tokens: 120 },
29
+ * 'openai'
30
+ * );
31
+ *
32
+ * // Anthropic format
33
+ * const response = LLMResponseBuilder.build(
34
+ * 'CLICK(1)',
35
+ * 'claude-3-5-sonnet',
36
+ * { input_tokens: 100, output_tokens: 20 },
37
+ * 'anthropic'
38
+ * );
39
+ * ```
40
+ */
41
+ static build(content, modelName, usage, providerType = 'generic') {
42
+ let promptTokens;
43
+ let completionTokens;
44
+ let totalTokens;
45
+ switch (providerType) {
46
+ case 'openai':
47
+ promptTokens = usage?.prompt_tokens;
48
+ completionTokens = usage?.completion_tokens;
49
+ totalTokens = usage?.total_tokens;
50
+ break;
51
+ case 'anthropic':
52
+ promptTokens = usage?.input_tokens;
53
+ completionTokens = usage?.output_tokens;
54
+ totalTokens = (usage?.input_tokens || 0) + (usage?.output_tokens || 0);
55
+ break;
56
+ case 'glm':
57
+ promptTokens = usage?.prompt_tokens;
58
+ completionTokens = usage?.completion_tokens;
59
+ totalTokens = usage?.total_tokens;
60
+ break;
61
+ case 'gemini':
62
+ promptTokens = usage?.promptTokenCount;
63
+ completionTokens = usage?.candidatesTokenCount;
64
+ totalTokens = usage?.totalTokenCount;
65
+ break;
66
+ case 'generic':
67
+ default:
68
+ // Try common field names
69
+ promptTokens = usage?.prompt_tokens || usage?.input_tokens || usage?.promptTokenCount;
70
+ completionTokens =
71
+ usage?.completion_tokens || usage?.output_tokens || usage?.candidatesTokenCount;
72
+ totalTokens =
73
+ usage?.total_tokens ||
74
+ usage?.totalTokenCount ||
75
+ (promptTokens || 0) + (completionTokens || 0);
76
+ break;
77
+ }
78
+ return {
79
+ content: content || '',
80
+ promptTokens,
81
+ completionTokens,
82
+ totalTokens,
83
+ modelName,
84
+ };
85
+ }
86
+ /**
87
+ * Validate that an LLMResponse has required fields
88
+ *
89
+ * @param response - LLMResponse to validate
90
+ * @returns True if valid, false otherwise
91
+ */
92
+ static validate(response) {
93
+ if (!response || typeof response.content !== 'string') {
94
+ return false;
95
+ }
96
+ if (response.modelName && typeof response.modelName !== 'string') {
97
+ return false;
98
+ }
99
+ // Token counts are optional but should be numbers if present
100
+ if (response.promptTokens !== undefined && typeof response.promptTokens !== 'number') {
101
+ return false;
102
+ }
103
+ if (response.completionTokens !== undefined && typeof response.completionTokens !== 'number') {
104
+ return false;
105
+ }
106
+ if (response.totalTokens !== undefined && typeof response.totalTokens !== 'number') {
107
+ return false;
108
+ }
109
+ return true;
110
+ }
111
+ /**
112
+ * Create an error response
113
+ *
114
+ * @param error - Error message or Error object
115
+ * @param modelName - Optional model name
116
+ * @returns LLMResponse with error content
117
+ */
118
+ static createErrorResponse(error, modelName) {
119
+ const errorMessage = error instanceof Error ? error.message : error;
120
+ return {
121
+ content: `Error: ${errorMessage}`,
122
+ modelName: modelName || 'unknown',
123
+ promptTokens: 0,
124
+ completionTokens: 0,
125
+ totalTokens: 0,
126
+ };
127
+ }
128
+ }
129
+ exports.LLMResponseBuilder = LLMResponseBuilder;
130
+ //# sourceMappingURL=llm-response-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-response-builder.js","sourceRoot":"","sources":["../../src/utils/llm-response-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Utility functions for working with QuerySelector
3
+ */
4
+ import { QuerySelector } from '../types';
5
+ /**
6
+ * Convert a QuerySelector to a string representation for error messages
7
+ *
8
+ * @param selector - QuerySelector (string or object)
9
+ * @returns String representation
10
+ */
11
+ export declare function selectorToString(selector: QuerySelector): string;
12
+ //# sourceMappingURL=selector-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-utils.d.ts","sourceRoot":"","sources":["../../src/utils/selector-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgBhE"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Utility functions for working with QuerySelector
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.selectorToString = selectorToString;
7
+ /**
8
+ * Convert a QuerySelector to a string representation for error messages
9
+ *
10
+ * @param selector - QuerySelector (string or object)
11
+ * @returns String representation
12
+ */
13
+ function selectorToString(selector) {
14
+ if (typeof selector === 'string') {
15
+ return selector;
16
+ }
17
+ // Convert QuerySelectorObject to string representation
18
+ const obj = selector;
19
+ const parts = [];
20
+ if (obj.role)
21
+ parts.push(`role=${obj.role}`);
22
+ if (obj.text)
23
+ parts.push(`text="${obj.text}"`);
24
+ if (obj.name)
25
+ parts.push(`name="${obj.name}"`);
26
+ if (obj.clickable !== undefined)
27
+ parts.push(`clickable=${obj.clickable}`);
28
+ if (obj.isPrimary !== undefined)
29
+ parts.push(`isPrimary=${obj.isPrimary}`);
30
+ return parts.length > 0 ? parts.join(' ') : JSON.stringify(obj);
31
+ }
32
+ //# sourceMappingURL=selector-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-utils.js","sourceRoot":"","sources":["../../src/utils/selector-utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAUH,4CAgBC;AAtBD;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,QAAuB;IACtD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,uDAAuD;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC;IACrB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,GAAG,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/C,IAAI,GAAG,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/C,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAE1E,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * SnapshotEventBuilder - Helper for building snapshot trace events
3
+ *
4
+ * Extracted from SentienceAgent to reduce complexity
5
+ */
6
+ import { Snapshot } from '../types';
7
+ import { TraceEventData } from '../tracing/types';
8
+ /**
9
+ * SnapshotEventBuilder provides static methods for building snapshot trace events
10
+ */
11
+ export declare class SnapshotEventBuilder {
12
+ /**
13
+ * Build snapshot trace event data from snapshot
14
+ *
15
+ * @param snap - Snapshot to build event from
16
+ * @param stepId - Optional step ID
17
+ * @returns Trace event data for snapshot
18
+ */
19
+ static buildSnapshotEventData(snap: Snapshot, stepId?: string): TraceEventData;
20
+ /**
21
+ * Extract base64 string from screenshot data URL
22
+ *
23
+ * @param screenshot - Screenshot data URL or base64 string
24
+ * @returns Base64 string without data URL prefix
25
+ */
26
+ private static extractScreenshotBase64;
27
+ }
28
+ //# sourceMappingURL=snapshot-event-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-event-builder.d.ts","sourceRoot":"","sources":["../../src/utils/snapshot-event-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAEhE;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc;IA2D9E;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAOvC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /**
3
+ * SnapshotEventBuilder - Helper for building snapshot trace events
4
+ *
5
+ * Extracted from SentienceAgent to reduce complexity
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SnapshotEventBuilder = void 0;
9
+ /**
10
+ * SnapshotEventBuilder provides static methods for building snapshot trace events
11
+ */
12
+ class SnapshotEventBuilder {
13
+ /**
14
+ * Build snapshot trace event data from snapshot
15
+ *
16
+ * @param snap - Snapshot to build event from
17
+ * @param stepId - Optional step ID
18
+ * @returns Trace event data for snapshot
19
+ */
20
+ static buildSnapshotEventData(snap, stepId) {
21
+ // Normalize importance values to importance_score (0-1 range) per snapshot
22
+ const importanceValues = snap.elements.map(el => el.importance);
23
+ const minImportance = importanceValues.length > 0 ? Math.min(...importanceValues) : 0;
24
+ const maxImportance = importanceValues.length > 0 ? Math.max(...importanceValues) : 0;
25
+ const importanceRange = maxImportance - minImportance;
26
+ // Include ALL elements with full data for DOM tree display
27
+ const elements = snap.elements.map(el => {
28
+ // Compute normalized importance_score
29
+ let importanceScore;
30
+ if (importanceRange > 0) {
31
+ importanceScore = (el.importance - minImportance) / importanceRange;
32
+ }
33
+ else {
34
+ // If all elements have same importance, set to 0.5
35
+ importanceScore = 0.5;
36
+ }
37
+ return {
38
+ id: el.id,
39
+ role: el.role,
40
+ text: el.text,
41
+ bbox: el.bbox,
42
+ importance: el.importance,
43
+ importance_score: importanceScore,
44
+ visual_cues: el.visual_cues,
45
+ in_viewport: el.in_viewport,
46
+ is_occluded: el.is_occluded,
47
+ z_index: el.z_index,
48
+ fused_rank_index: el.fused_rank_index,
49
+ heuristic_index: el.heuristic_index,
50
+ ml_probability: el.ml_probability,
51
+ ml_score: el.ml_score,
52
+ diff_status: el.diff_status,
53
+ };
54
+ });
55
+ const snapshotData = {
56
+ url: snap.url,
57
+ element_count: snap.elements.length,
58
+ timestamp: snap.timestamp,
59
+ elements,
60
+ };
61
+ if (stepId) {
62
+ snapshotData.step_id = stepId;
63
+ }
64
+ // Always include screenshot in trace event for studio viewer compatibility
65
+ if (snap.screenshot) {
66
+ snapshotData.screenshot_base64 = this.extractScreenshotBase64(snap.screenshot);
67
+ if (snap.screenshot_format) {
68
+ snapshotData.screenshot_format = snap.screenshot_format;
69
+ }
70
+ }
71
+ return snapshotData;
72
+ }
73
+ /**
74
+ * Extract base64 string from screenshot data URL
75
+ *
76
+ * @param screenshot - Screenshot data URL or base64 string
77
+ * @returns Base64 string without data URL prefix
78
+ */
79
+ static extractScreenshotBase64(screenshot) {
80
+ if (screenshot.startsWith('data:image')) {
81
+ // Format: "data:image/jpeg;base64,{base64_string}"
82
+ return screenshot.includes(',') ? screenshot.split(',', 2)[1] : screenshot;
83
+ }
84
+ return screenshot;
85
+ }
86
+ }
87
+ exports.SnapshotEventBuilder = SnapshotEventBuilder;
88
+ //# sourceMappingURL=snapshot-event-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-event-builder.js","sourceRoot":"","sources":["../../src/utils/snapshot-event-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * SnapshotProcessor - Helper for processing snapshots in agent
3
+ *
4
+ * Extracted from SentienceAgent to reduce complexity
5
+ */
6
+ import { Snapshot } from '../types';
7
+ export interface ProcessedSnapshot {
8
+ original: Snapshot;
9
+ withDiff: Snapshot;
10
+ filtered: Snapshot;
11
+ }
12
+ /**
13
+ * SnapshotProcessor provides static methods for processing snapshots
14
+ */
15
+ export declare class SnapshotProcessor {
16
+ /**
17
+ * Process a snapshot: compute diff status, filter elements
18
+ *
19
+ * @param snap - Original snapshot
20
+ * @param previousSnapshot - Previous snapshot for diff computation
21
+ * @param goal - Goal/task description for filtering
22
+ * @param snapshotLimit - Maximum elements to include
23
+ * @returns Processed snapshot with diff status and filtered elements
24
+ */
25
+ static process(snap: Snapshot, previousSnapshot: Snapshot | undefined, goal: string, snapshotLimit: number): ProcessedSnapshot;
26
+ }
27
+ //# sourceMappingURL=snapshot-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-processor.d.ts","sourceRoot":"","sources":["../../src/utils/snapshot-processor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CACZ,IAAI,EAAE,QAAQ,EACd,gBAAgB,EAAE,QAAQ,GAAG,SAAS,EACtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,iBAAiB;CAyBrB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * SnapshotProcessor - Helper for processing snapshots in agent
4
+ *
5
+ * Extracted from SentienceAgent to reduce complexity
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SnapshotProcessor = void 0;
9
+ const snapshot_diff_1 = require("../snapshot-diff");
10
+ const element_filter_1 = require("./element-filter");
11
+ /**
12
+ * SnapshotProcessor provides static methods for processing snapshots
13
+ */
14
+ class SnapshotProcessor {
15
+ /**
16
+ * Process a snapshot: compute diff status, filter elements
17
+ *
18
+ * @param snap - Original snapshot
19
+ * @param previousSnapshot - Previous snapshot for diff computation
20
+ * @param goal - Goal/task description for filtering
21
+ * @param snapshotLimit - Maximum elements to include
22
+ * @returns Processed snapshot with diff status and filtered elements
23
+ */
24
+ static process(snap, previousSnapshot, goal, snapshotLimit) {
25
+ // Compute diff_status by comparing with previous snapshot
26
+ const elementsWithDiff = snapshot_diff_1.SnapshotDiff.computeDiffStatus(snap, previousSnapshot);
27
+ // Create snapshot with diff_status populated
28
+ const snapWithDiff = {
29
+ ...snap,
30
+ elements: elementsWithDiff,
31
+ };
32
+ // Apply element filtering based on goal using ElementFilter
33
+ const filteredElements = element_filter_1.ElementFilter.filterByGoal(snapWithDiff, goal, snapshotLimit);
34
+ // Create filtered snapshot
35
+ const filteredSnap = {
36
+ ...snapWithDiff,
37
+ elements: filteredElements,
38
+ };
39
+ return {
40
+ original: snap,
41
+ withDiff: snapWithDiff,
42
+ filtered: filteredSnap,
43
+ };
44
+ }
45
+ }
46
+ exports.SnapshotProcessor = SnapshotProcessor;
47
+ //# sourceMappingURL=snapshot-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-processor.js","sourceRoot":"","sources":["../../src/utils/snapshot-processor.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,oDAAgD;AAChD,qDAAiD;AAQjD;;GAEG;AACH,MAAa,iBAAiB;IAC5B;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CACZ,IAAc,EACd,gBAAsC,EACtC,IAAY,EACZ,aAAqB;QAErB,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,4BAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAEhF,6CAA6C;QAC7C,MAAM,YAAY,GAAa;YAC7B,GAAG,IAAI;YACP,QAAQ,EAAE,gBAAgB;SAC3B,CAAC;QAEF,4DAA4D;QAC5D,MAAM,gBAAgB,GAAG,8BAAa,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAEvF,2BAA2B;QAC3B,MAAM,YAAY,GAAa;YAC7B,GAAG,YAAY;YACf,QAAQ,EAAE,gBAAgB;SAC3B,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,YAAY;SACvB,CAAC;IACJ,CAAC;CACF;AAxCD,8CAwCC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * TraceEventBuilder - Common trace event building patterns
3
+ *
4
+ * This utility class extracts common trace event building logic to reduce duplication
5
+ * and ensure consistency across different parts of the codebase.
6
+ */
7
+ import { TraceEventData } from '../tracing/types';
8
+ import { Snapshot } from '../types';
9
+ import { AgentActResult } from '../agent';
10
+ import { LLMResponse } from '../llm-provider';
11
+ /**
12
+ * TraceEventBuilder provides static methods for building trace events
13
+ */
14
+ export declare class TraceEventBuilder {
15
+ /**
16
+ * Compute SHA256 hash of text
17
+ *
18
+ * @param text - Text to hash
19
+ * @returns SHA256 hash as hex string
20
+ *
21
+ * @private
22
+ */
23
+ private static computeHash;
24
+ /**
25
+ * Build snapshot digest from snapshot data
26
+ *
27
+ * @param snapshot - Snapshot to compute digest for
28
+ * @returns Digest string in format "sha256:..."
29
+ */
30
+ static buildSnapshotDigest(snapshot: Snapshot): string;
31
+ /**
32
+ * Build LLM usage data from LLM response
33
+ *
34
+ * @param llmResponse - LLM response object
35
+ * @returns LLM usage data for trace event
36
+ */
37
+ static buildLLMData(llmResponse: LLMResponse): TraceEventData['llm'];
38
+ /**
39
+ * Build execution data from action result
40
+ *
41
+ * @param result - Agent action result
42
+ * @param snapshot - Snapshot used for the action
43
+ * @returns Execution data for trace event
44
+ */
45
+ static buildExecutionData(result: AgentActResult, snapshot: Snapshot): TraceEventData['exec'];
46
+ /**
47
+ * Build verify data from action result
48
+ *
49
+ * @param result - Agent action result
50
+ * @param snapshot - Snapshot used for the action
51
+ * @returns Verify data for trace event
52
+ */
53
+ static buildVerifyData(result: AgentActResult, snapshot: Snapshot): TraceEventData['verify'];
54
+ /**
55
+ * Build complete step_end event data
56
+ *
57
+ * @param params - Parameters for building step_end event
58
+ * @returns Complete step_end event data
59
+ */
60
+ static buildStepEndData(params: {
61
+ stepId: string;
62
+ stepIndex: number;
63
+ goal: string;
64
+ attempt: number;
65
+ preUrl: string;
66
+ postUrl: string | null;
67
+ postSnapshotDigest?: string;
68
+ snapshot: Snapshot;
69
+ llmResponse: LLMResponse;
70
+ result: AgentActResult;
71
+ }): TraceEventData;
72
+ /**
73
+ * Build step_end event data for AgentRuntime (verification loop).
74
+ */
75
+ static buildRuntimeStepEndData(params: {
76
+ stepId: string;
77
+ stepIndex: number;
78
+ goal: string;
79
+ attempt: number;
80
+ preUrl: string;
81
+ postUrl: string;
82
+ preSnapshotDigest?: string;
83
+ postSnapshotDigest?: string;
84
+ execData: TraceEventData['exec'];
85
+ verifyData: TraceEventData['verify'];
86
+ assertions?: NonNullable<TraceEventData['verify']>['signals']['assertions'];
87
+ taskDone?: boolean;
88
+ taskDoneLabel?: string;
89
+ }): TraceEventData;
90
+ /**
91
+ * Build snapshot event data
92
+ *
93
+ * @param snapshot - Snapshot to build event data for
94
+ * @param goal - Optional goal/task description
95
+ * @returns Snapshot event data
96
+ */
97
+ static buildSnapshotData(snapshot: Snapshot, goal?: string): TraceEventData;
98
+ /**
99
+ * Build partial step_end event data for failed steps
100
+ *
101
+ * This is used when a step fails after collecting some data (snapshot, LLM response, etc.)
102
+ * but before completing execution. It ensures diff_status and other fields are preserved
103
+ * in traces even when the agent run fails.
104
+ *
105
+ * @param params - Parameters for building partial step_end event
106
+ * @returns Partial step_end event data
107
+ */
108
+ static buildPartialStepEndData(params: {
109
+ stepId: string;
110
+ stepIndex: number;
111
+ goal: string;
112
+ attempt: number;
113
+ preUrl: string | null;
114
+ postUrl: string | null;
115
+ postSnapshotDigest?: string;
116
+ snapshot?: Snapshot | null;
117
+ llmResponse?: LLMResponse | null;
118
+ error: string;
119
+ durationMs: number;
120
+ }): TraceEventData;
121
+ }
122
+ //# sourceMappingURL=trace-event-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-event-builder.d.ts","sourceRoot":"","sources":["../../src/utils/trace-event-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAW,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAKtD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;IAgBpE;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;IA+C7F;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAmC5F;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,WAAW,EAAE,WAAW,CAAC;QACzB,MAAM,EAAE,cAAc,CAAC;KACxB,GAAG,cAAc;IA2ElB;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE;QACrC,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACjC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrC,UAAU,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;QAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,cAAc;IAmDlB;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc;IAqC3E;;;;;;;;;OASG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE;QACrC,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;QAC3B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,cAAc;CA+FnB"}