@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 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/backends/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6BrD;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,IAAI,GACJ;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAuDjE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,MAAM,GAAE,WAAoB,EAC5B,UAAU,GAAE,MAAU,EACtB,SAAS,GAAE,OAAc,EACzB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,UAAU,GAAE,OAAe,GAC1B,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,cAAc,EACvB,MAAM,GAAE,MAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,cAA0B,EACpC,KAAK,GAAE,WAAsB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,aAAa,GAAG,UAAuB,EAC9C,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,YAAY,CAAC,CAkBvB"}
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ /**
3
+ * Backend-agnostic actions for browser-use integration.
4
+ *
5
+ * These actions work with any BrowserBackend implementation,
6
+ * enabling Sentience grounding with browser-use or other frameworks.
7
+ *
8
+ * Usage with browser-use:
9
+ * import { BrowserUseAdapter } from './backends/browser-use-adapter';
10
+ * import { click, typeText, scroll } from './backends/actions';
11
+ *
12
+ * const adapter = new BrowserUseAdapter(session);
13
+ * const backend = await adapter.createBackend();
14
+ *
15
+ * // Take snapshot and click element
16
+ * const snap = await snapshot(backend);
17
+ * const element = find(snap, 'role=button[name="Submit"]');
18
+ * await click(backend, element.bbox);
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.click = click;
22
+ exports.typeText = typeText;
23
+ exports.scroll = scroll;
24
+ exports.scrollToElement = scrollToElement;
25
+ exports.waitForStable = waitForStable;
26
+ const cursor_policy_1 = require("../cursor-policy");
27
+ const cursorPosByBackend = new WeakMap();
28
+ async function humanMoveBackendIfEnabled(backend, target, cursorPolicy) {
29
+ if (!cursorPolicy || cursorPolicy.mode !== 'human')
30
+ return undefined;
31
+ const key = backend;
32
+ const prev = cursorPosByBackend.get(key);
33
+ const from = prev ? prev : { x: target.x, y: target.y };
34
+ const meta = (0, cursor_policy_1.buildHumanCursorPath)([from.x, from.y], [target.x, target.y], cursorPolicy);
35
+ const pts = meta.path || [];
36
+ const durationMs = meta.duration_ms || 0;
37
+ const perStepMs = durationMs > 0 ? durationMs / Math.max(1, pts.length) : 0;
38
+ for (const p of pts) {
39
+ await backend.mouseMove(p.x, p.y);
40
+ if (perStepMs > 0)
41
+ await sleep(perStepMs);
42
+ }
43
+ if (meta.pause_before_click_ms > 0)
44
+ await sleep(meta.pause_before_click_ms);
45
+ cursorPosByBackend.set(key, { x: target.x, y: target.y });
46
+ return meta;
47
+ }
48
+ /**
49
+ * Resolve target to (x, y) coordinates.
50
+ *
51
+ * - BBox: Returns center point
52
+ * - {x, y, width?, height?}: Returns center if width/height present, else x/y directly
53
+ * - [x, y]: Returns as-is
54
+ */
55
+ function resolveCoordinates(target) {
56
+ if (Array.isArray(target)) {
57
+ return target;
58
+ }
59
+ if ('width' in target && 'height' in target) {
60
+ // BBox or object with dimensions - compute center
61
+ const x = (target.x || 0) + (target.width || 0) / 2;
62
+ const y = (target.y || 0) + (target.height || 0) / 2;
63
+ return [x, y];
64
+ }
65
+ // Simple {x, y} object
66
+ return [target.x || 0, target.y || 0];
67
+ }
68
+ /**
69
+ * Helper to measure duration
70
+ */
71
+ function measureDuration(startTime) {
72
+ return Math.floor(Date.now() - startTime);
73
+ }
74
+ /**
75
+ * Helper to create successful ActionResult
76
+ */
77
+ function successResult(durationMs) {
78
+ return {
79
+ success: true,
80
+ duration_ms: durationMs,
81
+ outcome: 'dom_updated',
82
+ };
83
+ }
84
+ /**
85
+ * Helper to create error ActionResult
86
+ */
87
+ function errorResult(durationMs, code, reason) {
88
+ return {
89
+ success: false,
90
+ duration_ms: durationMs,
91
+ outcome: 'error',
92
+ error: { code, reason },
93
+ };
94
+ }
95
+ /**
96
+ * Click at coordinates using the backend.
97
+ *
98
+ * @param backend - BrowserBackend implementation
99
+ * @param target - Click target - BBox (clicks center), dict with x/y, or (x, y) tuple
100
+ * @param button - Mouse button to click
101
+ * @param clickCount - Number of clicks (1=single, 2=double)
102
+ * @param moveFirst - Whether to move mouse to position before clicking
103
+ * @returns ActionResult with success status
104
+ *
105
+ * @example
106
+ * // Click at coordinates
107
+ * await click(backend, [100, 200]);
108
+ *
109
+ * // Click element bbox center
110
+ * await click(backend, element.bbox);
111
+ *
112
+ * // Double-click
113
+ * await click(backend, element.bbox, 'left', 2);
114
+ */
115
+ async function click(backend, target, button = 'left', clickCount = 1, moveFirst = true, cursorPolicy) {
116
+ const startTime = Date.now();
117
+ const [x, y] = resolveCoordinates(target);
118
+ let cursorMeta;
119
+ try {
120
+ // Optional mouse move for hover effects
121
+ if (moveFirst) {
122
+ cursorMeta = await humanMoveBackendIfEnabled(backend, { x, y }, cursorPolicy);
123
+ if (!cursorMeta) {
124
+ await backend.mouseMove(x, y);
125
+ await sleep(20); // Brief pause for hover
126
+ }
127
+ }
128
+ // Perform click
129
+ await backend.mouseClick(x, y, button, clickCount);
130
+ return { ...successResult(measureDuration(startTime)), cursor: cursorMeta };
131
+ }
132
+ catch (e) {
133
+ const reason = e instanceof Error ? e.message : String(e);
134
+ return {
135
+ ...errorResult(measureDuration(startTime), 'click_failed', reason),
136
+ cursor: cursorMeta,
137
+ };
138
+ }
139
+ }
140
+ /**
141
+ * Type text, optionally clicking a target first.
142
+ *
143
+ * @param backend - BrowserBackend implementation
144
+ * @param text - Text to type
145
+ * @param target - Optional click target before typing (BBox, dict, or tuple)
146
+ * @param clearFirst - If true, select all and delete before typing
147
+ * @returns ActionResult with success status
148
+ *
149
+ * @example
150
+ * // Type into focused element
151
+ * await typeText(backend, 'Hello World');
152
+ *
153
+ * // Click input then type
154
+ * await typeText(backend, 'search query', searchBox.bbox);
155
+ *
156
+ * // Clear and type
157
+ * await typeText(backend, 'new value', input.bbox, true);
158
+ */
159
+ async function typeText(backend, text, target, clearFirst = false) {
160
+ const startTime = Date.now();
161
+ try {
162
+ // Click target if provided
163
+ if (target !== undefined) {
164
+ const [x, y] = resolveCoordinates(target);
165
+ await backend.mouseClick(x, y);
166
+ await sleep(50); // Wait for focus
167
+ }
168
+ // Clear existing content if requested
169
+ if (clearFirst) {
170
+ // Select all and delete
171
+ await backend.eval("document.execCommand('selectAll')");
172
+ await sleep(20);
173
+ }
174
+ // Type the text
175
+ await backend.typeText(text);
176
+ return successResult(measureDuration(startTime));
177
+ }
178
+ catch (e) {
179
+ const reason = e instanceof Error ? e.message : String(e);
180
+ return errorResult(measureDuration(startTime), 'type_failed', reason);
181
+ }
182
+ }
183
+ /**
184
+ * Scroll the page or element.
185
+ *
186
+ * @param backend - BrowserBackend implementation
187
+ * @param deltaY - Scroll amount (positive=down, negative=up)
188
+ * @param target - Optional position for scroll (defaults to viewport center)
189
+ * @returns ActionResult with success status
190
+ *
191
+ * @example
192
+ * // Scroll down 300px
193
+ * await scroll(backend, 300);
194
+ *
195
+ * // Scroll up 500px
196
+ * await scroll(backend, -500);
197
+ *
198
+ * // Scroll at specific position
199
+ * await scroll(backend, 200, [500, 300]);
200
+ */
201
+ async function scroll(backend, deltaY = 300, target) {
202
+ const startTime = Date.now();
203
+ try {
204
+ let x;
205
+ let y;
206
+ if (target !== undefined) {
207
+ [x, y] = resolveCoordinates(target);
208
+ }
209
+ await backend.wheel(deltaY, x, y);
210
+ // Wait for scroll to settle
211
+ await sleep(100);
212
+ return successResult(measureDuration(startTime));
213
+ }
214
+ catch (e) {
215
+ const reason = e instanceof Error ? e.message : String(e);
216
+ return errorResult(measureDuration(startTime), 'scroll_failed', reason);
217
+ }
218
+ }
219
+ /**
220
+ * Scroll element into view using JavaScript scrollIntoView.
221
+ *
222
+ * @param backend - BrowserBackend implementation
223
+ * @param elementId - Element ID from snapshot (requires sentience_registry)
224
+ * @param behavior - Scroll behavior
225
+ * @param block - Vertical alignment
226
+ * @returns ActionResult with success status
227
+ */
228
+ async function scrollToElement(backend, elementId, behavior = 'instant', block = 'center') {
229
+ const startTime = Date.now();
230
+ try {
231
+ const scrolled = await backend.eval(`
232
+ (() => {
233
+ const el = window.sentience_registry && window.sentience_registry[${elementId}];
234
+ if (el && el.scrollIntoView) {
235
+ el.scrollIntoView({
236
+ behavior: '${behavior}',
237
+ block: '${block}',
238
+ inline: 'nearest'
239
+ });
240
+ return true;
241
+ }
242
+ return false;
243
+ })()
244
+ `);
245
+ // Wait for scroll animation
246
+ const waitTime = behavior === 'smooth' ? 300 : 50;
247
+ await sleep(waitTime);
248
+ const durationMs = measureDuration(startTime);
249
+ if (scrolled) {
250
+ return successResult(durationMs);
251
+ }
252
+ else {
253
+ return errorResult(durationMs, 'scroll_failed', 'Element not found in registry');
254
+ }
255
+ }
256
+ catch (e) {
257
+ const reason = e instanceof Error ? e.message : String(e);
258
+ return errorResult(measureDuration(startTime), 'scroll_failed', reason);
259
+ }
260
+ }
261
+ /**
262
+ * Wait for page to reach stable state.
263
+ *
264
+ * @param backend - BrowserBackend implementation
265
+ * @param state - Target document.readyState
266
+ * @param timeoutMs - Maximum wait time
267
+ * @returns ActionResult with success status
268
+ */
269
+ async function waitForStable(backend, state = 'complete', timeoutMs = 10000) {
270
+ const startTime = Date.now();
271
+ try {
272
+ await backend.waitReadyState(state, timeoutMs);
273
+ return successResult(measureDuration(startTime));
274
+ }
275
+ catch (e) {
276
+ const durationMs = measureDuration(startTime);
277
+ const reason = e instanceof Error ? e.message : String(e);
278
+ // Check if it's a timeout error
279
+ if (reason.includes('Timed out')) {
280
+ return errorResult(durationMs, 'timeout', reason);
281
+ }
282
+ return errorResult(durationMs, 'wait_failed', reason);
283
+ }
284
+ }
285
+ /**
286
+ * Helper sleep function.
287
+ */
288
+ function sleep(ms) {
289
+ return new Promise(resolve => setTimeout(resolve, ms));
290
+ }
291
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/backends/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Browser-use adapter for Sentience SDK.
3
+ *
4
+ * This module provides BrowserUseAdapter which wraps browser-use's BrowserSession
5
+ * and provides a CDPBackend for Sentience operations.
6
+ *
7
+ * Usage:
8
+ * import { BrowserUseAdapter, BrowserUseCDPTransport } from './backends/browser-use-adapter';
9
+ *
10
+ * // Create adapter with browser-use session
11
+ * const adapter = new BrowserUseAdapter(session);
12
+ * const backend = await adapter.createBackend();
13
+ *
14
+ * // Use backend for Sentience operations
15
+ * const viewport = await backend.refreshPageInfo();
16
+ * await backend.mouseClick(100, 200);
17
+ */
18
+ import { CDPBackend, CDPTransport } from './cdp-backend';
19
+ /**
20
+ * CDP transport implementation for browser-use.
21
+ *
22
+ * Wraps browser-use's CDP client to provide the CDPTransport interface.
23
+ * Uses cdp-use library pattern: cdpClient.send.Domain.method(params={}, sessionId=)
24
+ */
25
+ export declare class BrowserUseCDPTransport implements CDPTransport {
26
+ private client;
27
+ private sessionId;
28
+ /**
29
+ * Initialize transport with browser-use CDP client.
30
+ *
31
+ * @param cdpClient - browser-use's CDP client (from cdpSession.cdpClient)
32
+ * @param sessionId - CDP session ID (from cdpSession.sessionId)
33
+ */
34
+ constructor(cdpClient: unknown, sessionId: string);
35
+ /**
36
+ * Send CDP command using browser-use's cdp-use client.
37
+ *
38
+ * Translates method name like "Runtime.evaluate" to
39
+ * cdpClient.send.Runtime.evaluate(params={...}, sessionId=...).
40
+ *
41
+ * @param method - CDP method name, e.g., "Runtime.evaluate"
42
+ * @param params - Method parameters
43
+ * @returns CDP response dict
44
+ */
45
+ send(method: string, params?: Record<string, unknown>): Promise<Record<string, unknown>>;
46
+ }
47
+ /**
48
+ * Adapter to use Sentience with browser-use's BrowserSession.
49
+ *
50
+ * This adapter:
51
+ * 1. Wraps browser-use's CDP client with BrowserUseCDPTransport
52
+ * 2. Creates CDPBackend for Sentience operations
53
+ * 3. Provides access to the underlying page for extension calls
54
+ *
55
+ * Example:
56
+ * import { BrowserSession, BrowserProfile } from 'browser-use';
57
+ * import { getExtensionDir } from 'sentience';
58
+ * import { BrowserUseAdapter } from './backends/browser-use-adapter';
59
+ *
60
+ * // Setup browser-use with Sentience extension
61
+ * const profile = new BrowserProfile({ args: [`--load-extension=${getExtensionDir()}`] });
62
+ * const session = new BrowserSession({ browserProfile: profile });
63
+ * await session.start();
64
+ *
65
+ * // Create adapter and backend
66
+ * const adapter = new BrowserUseAdapter(session);
67
+ * const backend = await adapter.createBackend();
68
+ *
69
+ * // Navigate (using browser-use)
70
+ * const page = await session.getCurrentPage();
71
+ * await page.goto('https://example.com');
72
+ *
73
+ * // Use backend for precise clicking
74
+ * await backend.mouseClick(100, 200);
75
+ */
76
+ export declare class BrowserUseAdapter {
77
+ private session;
78
+ private backend;
79
+ private transport;
80
+ /**
81
+ * Initialize adapter with browser-use BrowserSession.
82
+ *
83
+ * @param session - browser-use BrowserSession instance
84
+ */
85
+ constructor(session: unknown);
86
+ /**
87
+ * Get the current Playwright page from browser-use.
88
+ *
89
+ * This is needed for Sentience snapshot() which calls window.sentience.snapshot().
90
+ *
91
+ * @returns Playwright Page object
92
+ */
93
+ get page(): unknown;
94
+ /**
95
+ * Get the current Playwright page (async).
96
+ *
97
+ * @returns Playwright Page object
98
+ */
99
+ getPageAsync(): Promise<unknown>;
100
+ /**
101
+ * API key for Sentience API (for snapshot compatibility).
102
+ *
103
+ * Returns null since browser-use users pass apiKey via SnapshotOptions.
104
+ */
105
+ get apiKey(): string | null;
106
+ /**
107
+ * API URL for Sentience API (for snapshot compatibility).
108
+ *
109
+ * Returns null to use default.
110
+ */
111
+ get apiUrl(): string | null;
112
+ /**
113
+ * Create CDP backend for Sentience operations.
114
+ *
115
+ * This method:
116
+ * 1. Gets or creates a CDP session from browser-use
117
+ * 2. Creates BrowserUseCDPTransport to wrap the CDP client
118
+ * 3. Creates CDPBackend with the transport
119
+ *
120
+ * @returns CDPBackend instance ready for use
121
+ * @throws Error if CDP session cannot be created
122
+ */
123
+ createBackend(): Promise<CDPBackend>;
124
+ /**
125
+ * Get the CDP transport (creates backend if needed).
126
+ *
127
+ * @returns BrowserUseCDPTransport instance
128
+ */
129
+ getTransport(): Promise<BrowserUseCDPTransport>;
130
+ }
131
+ //# sourceMappingURL=browser-use-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-use-adapter.d.ts","sourceRoot":"","sources":["../../src/backends/browser-use-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,YAAY;IACzD,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;OAKG;gBACS,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;IAKjD;;;;;;;;;OASG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAuC/F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,SAAS,CAAuC;IAExD;;;;OAIG;gBACS,OAAO,EAAE,OAAO;IAI5B;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,OAAO,CAiBlB;IAED;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAStC;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED;;;;;;;;;;OAUG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAgC1C;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAMtD"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ /**
3
+ * Browser-use adapter for Sentience SDK.
4
+ *
5
+ * This module provides BrowserUseAdapter which wraps browser-use's BrowserSession
6
+ * and provides a CDPBackend for Sentience operations.
7
+ *
8
+ * Usage:
9
+ * import { BrowserUseAdapter, BrowserUseCDPTransport } from './backends/browser-use-adapter';
10
+ *
11
+ * // Create adapter with browser-use session
12
+ * const adapter = new BrowserUseAdapter(session);
13
+ * const backend = await adapter.createBackend();
14
+ *
15
+ * // Use backend for Sentience operations
16
+ * const viewport = await backend.refreshPageInfo();
17
+ * await backend.mouseClick(100, 200);
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.BrowserUseAdapter = exports.BrowserUseCDPTransport = void 0;
21
+ const cdp_backend_1 = require("./cdp-backend");
22
+ /**
23
+ * CDP transport implementation for browser-use.
24
+ *
25
+ * Wraps browser-use's CDP client to provide the CDPTransport interface.
26
+ * Uses cdp-use library pattern: cdpClient.send.Domain.method(params={}, sessionId=)
27
+ */
28
+ class BrowserUseCDPTransport {
29
+ /**
30
+ * Initialize transport with browser-use CDP client.
31
+ *
32
+ * @param cdpClient - browser-use's CDP client (from cdpSession.cdpClient)
33
+ * @param sessionId - CDP session ID (from cdpSession.sessionId)
34
+ */
35
+ constructor(cdpClient, sessionId) {
36
+ this.client = cdpClient;
37
+ this.sessionId = sessionId;
38
+ }
39
+ /**
40
+ * Send CDP command using browser-use's cdp-use client.
41
+ *
42
+ * Translates method name like "Runtime.evaluate" to
43
+ * cdpClient.send.Runtime.evaluate(params={...}, sessionId=...).
44
+ *
45
+ * @param method - CDP method name, e.g., "Runtime.evaluate"
46
+ * @param params - Method parameters
47
+ * @returns CDP response dict
48
+ */
49
+ async send(method, params) {
50
+ // Split method into domain and method name
51
+ // e.g., "Runtime.evaluate" -> ("Runtime", "evaluate")
52
+ const parts = method.split('.', 2);
53
+ if (parts.length !== 2) {
54
+ throw new Error(`Invalid CDP method format: ${method}`);
55
+ }
56
+ const [domainName, methodName] = parts;
57
+ // Get the domain object from cdpClient.send
58
+ const clientAny = this.client;
59
+ const send = clientAny.send;
60
+ if (!send) {
61
+ throw new Error('CDP client does not have a send property');
62
+ }
63
+ const domain = send[domainName];
64
+ if (!domain) {
65
+ throw new Error(`Unknown CDP domain: ${domainName}`);
66
+ }
67
+ // Get the method from the domain
68
+ const methodFunc = domain[methodName];
69
+ if (!methodFunc || typeof methodFunc !== 'function') {
70
+ throw new Error(`Unknown CDP method: ${method}`);
71
+ }
72
+ // Call the method with params and session_id
73
+ const result = await methodFunc({
74
+ params: params || {},
75
+ session_id: this.sessionId,
76
+ });
77
+ // cdp-use returns the result directly or null
78
+ return result ?? {};
79
+ }
80
+ }
81
+ exports.BrowserUseCDPTransport = BrowserUseCDPTransport;
82
+ /**
83
+ * Adapter to use Sentience with browser-use's BrowserSession.
84
+ *
85
+ * This adapter:
86
+ * 1. Wraps browser-use's CDP client with BrowserUseCDPTransport
87
+ * 2. Creates CDPBackend for Sentience operations
88
+ * 3. Provides access to the underlying page for extension calls
89
+ *
90
+ * Example:
91
+ * import { BrowserSession, BrowserProfile } from 'browser-use';
92
+ * import { getExtensionDir } from 'sentience';
93
+ * import { BrowserUseAdapter } from './backends/browser-use-adapter';
94
+ *
95
+ * // Setup browser-use with Sentience extension
96
+ * const profile = new BrowserProfile({ args: [`--load-extension=${getExtensionDir()}`] });
97
+ * const session = new BrowserSession({ browserProfile: profile });
98
+ * await session.start();
99
+ *
100
+ * // Create adapter and backend
101
+ * const adapter = new BrowserUseAdapter(session);
102
+ * const backend = await adapter.createBackend();
103
+ *
104
+ * // Navigate (using browser-use)
105
+ * const page = await session.getCurrentPage();
106
+ * await page.goto('https://example.com');
107
+ *
108
+ * // Use backend for precise clicking
109
+ * await backend.mouseClick(100, 200);
110
+ */
111
+ class BrowserUseAdapter {
112
+ /**
113
+ * Initialize adapter with browser-use BrowserSession.
114
+ *
115
+ * @param session - browser-use BrowserSession instance
116
+ */
117
+ constructor(session) {
118
+ this.backend = null;
119
+ this.transport = null;
120
+ this.session = session;
121
+ }
122
+ /**
123
+ * Get the current Playwright page from browser-use.
124
+ *
125
+ * This is needed for Sentience snapshot() which calls window.sentience.snapshot().
126
+ *
127
+ * @returns Playwright Page object
128
+ */
129
+ get page() {
130
+ const sessionAny = this.session;
131
+ // browser-use stores page in session
132
+ // Access pattern may vary by browser-use version
133
+ if ('page' in sessionAny) {
134
+ return sessionAny.page;
135
+ }
136
+ if ('_page' in sessionAny) {
137
+ return sessionAny._page;
138
+ }
139
+ if ('getCurrentPage' in sessionAny) {
140
+ // This is async, but we need sync access for property
141
+ // Caller should use getPageAsync() instead
142
+ throw new Error('Use await adapter.getPageAsync() to get the page');
143
+ }
144
+ throw new Error('Could not find page in browser-use session');
145
+ }
146
+ /**
147
+ * Get the current Playwright page (async).
148
+ *
149
+ * @returns Playwright Page object
150
+ */
151
+ async getPageAsync() {
152
+ const sessionAny = this.session;
153
+ if ('getCurrentPage' in sessionAny && typeof sessionAny.getCurrentPage === 'function') {
154
+ return await sessionAny.getCurrentPage();
155
+ }
156
+ return this.page;
157
+ }
158
+ /**
159
+ * API key for Sentience API (for snapshot compatibility).
160
+ *
161
+ * Returns null since browser-use users pass apiKey via SnapshotOptions.
162
+ */
163
+ get apiKey() {
164
+ return null;
165
+ }
166
+ /**
167
+ * API URL for Sentience API (for snapshot compatibility).
168
+ *
169
+ * Returns null to use default.
170
+ */
171
+ get apiUrl() {
172
+ return null;
173
+ }
174
+ /**
175
+ * Create CDP backend for Sentience operations.
176
+ *
177
+ * This method:
178
+ * 1. Gets or creates a CDP session from browser-use
179
+ * 2. Creates BrowserUseCDPTransport to wrap the CDP client
180
+ * 3. Creates CDPBackend with the transport
181
+ *
182
+ * @returns CDPBackend instance ready for use
183
+ * @throws Error if CDP session cannot be created
184
+ */
185
+ async createBackend() {
186
+ if (this.backend !== null) {
187
+ return this.backend;
188
+ }
189
+ const sessionAny = this.session;
190
+ // Get CDP session from browser-use
191
+ // browser-use uses: cdpSession = await session.getOrCreateCdpSession()
192
+ if (!('getOrCreateCdpSession' in sessionAny) ||
193
+ typeof sessionAny.getOrCreateCdpSession !== 'function') {
194
+ throw new Error('browser-use session does not have getOrCreateCdpSession method. ' +
195
+ "Make sure you're using a compatible version of browser-use.");
196
+ }
197
+ const cdpSession = (await sessionAny.getOrCreateCdpSession());
198
+ // Extract CDP client and session ID
199
+ const cdpClient = cdpSession.cdpClient;
200
+ const sessionId = cdpSession.sessionId;
201
+ // Create transport and backend
202
+ this.transport = new BrowserUseCDPTransport(cdpClient, sessionId);
203
+ this.backend = new cdp_backend_1.CDPBackend(this.transport);
204
+ return this.backend;
205
+ }
206
+ /**
207
+ * Get the CDP transport (creates backend if needed).
208
+ *
209
+ * @returns BrowserUseCDPTransport instance
210
+ */
211
+ async getTransport() {
212
+ if (this.transport === null) {
213
+ await this.createBackend();
214
+ }
215
+ return this.transport;
216
+ }
217
+ }
218
+ exports.BrowserUseAdapter = BrowserUseAdapter;
219
+ //# sourceMappingURL=browser-use-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-use-adapter.js","sourceRoot":"","sources":["../../src/backends/browser-use-adapter.ts"],"names":[],"mappings":"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"}