@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,66 @@
1
+ /**
2
+ * CDP Backend implementation for browser-use integration.
3
+ *
4
+ * This module provides CDPBackend, which implements BrowserBackend protocol
5
+ * using Chrome DevTools Protocol (CDP) commands.
6
+ *
7
+ * Usage with browser-use:
8
+ * import { CDPBackend, CDPTransport } from './backends/cdp-backend';
9
+ *
10
+ * // Create transport from browser-use CDP client
11
+ * const transport: CDPTransport = {
12
+ * send: async (method, params) => {
13
+ * // Call browser-use's CDP client
14
+ * return await cdpClient.send[domain][method](params, sessionId);
15
+ * }
16
+ * };
17
+ *
18
+ * const backend = new CDPBackend(transport);
19
+ *
20
+ * // Now use backend for Sentience operations
21
+ * const viewport = await backend.refreshPageInfo();
22
+ * await backend.mouseClick(100, 200);
23
+ */
24
+ import { BrowserBackend, LayoutMetrics, MouseButton, ReadyState, ViewportInfo } from './protocol';
25
+ /**
26
+ * Protocol for CDP transport layer.
27
+ *
28
+ * This abstracts the actual CDP communication, allowing different
29
+ * implementations (browser-use, Playwright CDP, raw WebSocket).
30
+ */
31
+ export interface CDPTransport {
32
+ /**
33
+ * Send a CDP command and return the result.
34
+ *
35
+ * @param method - CDP method name, e.g., "Runtime.evaluate"
36
+ * @param params - Method parameters
37
+ * @returns CDP response dict
38
+ */
39
+ send(method: string, params?: Record<string, unknown>): Promise<Record<string, unknown>>;
40
+ }
41
+ /**
42
+ * CDP-based implementation of BrowserBackend.
43
+ *
44
+ * This backend uses CDP commands to interact with the browser,
45
+ * making it compatible with browser-use's CDP client.
46
+ */
47
+ export declare class CDPBackend implements BrowserBackend {
48
+ private transport;
49
+ private cachedViewport;
50
+ private executionContextId;
51
+ constructor(transport: CDPTransport);
52
+ private getExecutionContext;
53
+ refreshPageInfo(): Promise<ViewportInfo>;
54
+ eval(expression: string): Promise<unknown>;
55
+ call(functionDeclaration: string, args?: unknown[]): Promise<unknown>;
56
+ getLayoutMetrics(): Promise<LayoutMetrics>;
57
+ screenshotPng(): Promise<string>;
58
+ mouseMove(x: number, y: number): Promise<void>;
59
+ mouseClick(x: number, y: number, button?: MouseButton, clickCount?: number): Promise<void>;
60
+ wheel(deltaY: number, x?: number, y?: number): Promise<void>;
61
+ typeText(text: string): Promise<void>;
62
+ waitReadyState(state?: ReadyState, timeoutMs?: number): Promise<void>;
63
+ getUrl(): Promise<string>;
64
+ private sleep;
65
+ }
66
+ //# sourceMappingURL=cdp-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-backend.d.ts","sourceRoot":"","sources":["../../src/backends/cdp-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElG;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,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,CAAC;CAC1F;AAED;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,kBAAkB,CAAuB;gBAErC,SAAS,EAAE,YAAY;YAIrB,mBAAmB;IA6B3B,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAqBxC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B1C,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA4DrE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAqB1C,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAShC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,UAAU,CACd,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,GAAE,WAAoB,EAC5B,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IAuBV,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrC,cAAc,CAClB,KAAK,GAAE,UAA0B,EACjC,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,IAAI,CAAC;IAyBV,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ /**
3
+ * CDP Backend implementation for browser-use integration.
4
+ *
5
+ * This module provides CDPBackend, which implements BrowserBackend protocol
6
+ * using Chrome DevTools Protocol (CDP) commands.
7
+ *
8
+ * Usage with browser-use:
9
+ * import { CDPBackend, CDPTransport } from './backends/cdp-backend';
10
+ *
11
+ * // Create transport from browser-use CDP client
12
+ * const transport: CDPTransport = {
13
+ * send: async (method, params) => {
14
+ * // Call browser-use's CDP client
15
+ * return await cdpClient.send[domain][method](params, sessionId);
16
+ * }
17
+ * };
18
+ *
19
+ * const backend = new CDPBackend(transport);
20
+ *
21
+ * // Now use backend for Sentience operations
22
+ * const viewport = await backend.refreshPageInfo();
23
+ * await backend.mouseClick(100, 200);
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CDPBackend = void 0;
27
+ /**
28
+ * CDP-based implementation of BrowserBackend.
29
+ *
30
+ * This backend uses CDP commands to interact with the browser,
31
+ * making it compatible with browser-use's CDP client.
32
+ */
33
+ class CDPBackend {
34
+ constructor(transport) {
35
+ this.cachedViewport = null;
36
+ this.executionContextId = null;
37
+ this.transport = transport;
38
+ }
39
+ async getExecutionContext() {
40
+ if (this.executionContextId !== null) {
41
+ return this.executionContextId;
42
+ }
43
+ // Enable Runtime domain if not already enabled
44
+ try {
45
+ await this.transport.send('Runtime.enable');
46
+ }
47
+ catch {
48
+ // May already be enabled
49
+ }
50
+ // Get the main frame's execution context
51
+ const result = await this.transport.send('Runtime.evaluate', {
52
+ expression: '1',
53
+ returnByValue: true,
54
+ });
55
+ // Extract context ID from the result
56
+ if ('executionContextId' in result) {
57
+ this.executionContextId = result.executionContextId;
58
+ }
59
+ else {
60
+ // Fallback: use context ID 1 (main frame)
61
+ this.executionContextId = 1;
62
+ }
63
+ return this.executionContextId;
64
+ }
65
+ async refreshPageInfo() {
66
+ const result = (await this.eval(`(() => ({
67
+ width: window.innerWidth,
68
+ height: window.innerHeight,
69
+ scrollX: window.scrollX,
70
+ scrollY: window.scrollY,
71
+ contentWidth: document.documentElement.scrollWidth,
72
+ contentHeight: document.documentElement.scrollHeight
73
+ }))()`));
74
+ this.cachedViewport = {
75
+ width: result.width || 0,
76
+ height: result.height || 0,
77
+ scrollX: result.scrollX || 0,
78
+ scrollY: result.scrollY || 0,
79
+ contentWidth: result.contentWidth,
80
+ contentHeight: result.contentHeight,
81
+ };
82
+ return this.cachedViewport;
83
+ }
84
+ async eval(expression) {
85
+ const result = await this.transport.send('Runtime.evaluate', {
86
+ expression,
87
+ returnByValue: true,
88
+ awaitPromise: true,
89
+ });
90
+ // Check for exceptions
91
+ if ('exceptionDetails' in result) {
92
+ const exc = result.exceptionDetails;
93
+ const text = exc.text || 'Unknown error';
94
+ throw new Error(`JavaScript evaluation failed: ${text}`);
95
+ }
96
+ // Extract value from result
97
+ if ('result' in result) {
98
+ const res = result.result;
99
+ if (res.type === 'undefined') {
100
+ return null;
101
+ }
102
+ return res.value;
103
+ }
104
+ return null;
105
+ }
106
+ async call(functionDeclaration, args) {
107
+ // Build call arguments
108
+ const callArgs = [];
109
+ if (args) {
110
+ for (const arg of args) {
111
+ callArgs.push({ value: arg });
112
+ }
113
+ }
114
+ // We need an object ID to call function on
115
+ // Use globalThis (window) as the target
116
+ const globalResult = await this.transport.send('Runtime.evaluate', {
117
+ expression: 'globalThis',
118
+ returnByValue: false,
119
+ });
120
+ const resultObj = globalResult.result;
121
+ const objectId = resultObj?.objectId;
122
+ if (!objectId) {
123
+ // Fallback: evaluate the function directly
124
+ if (args && args.length > 0) {
125
+ const argsJson = args
126
+ .map(a => (typeof a === 'string' ? JSON.stringify(a) : String(a)))
127
+ .join(', ');
128
+ const expression = `(${functionDeclaration})(${argsJson})`;
129
+ return await this.eval(expression);
130
+ }
131
+ else {
132
+ const expression = `(${functionDeclaration})()`;
133
+ return await this.eval(expression);
134
+ }
135
+ }
136
+ const result = await this.transport.send('Runtime.callFunctionOn', {
137
+ functionDeclaration,
138
+ objectId,
139
+ arguments: callArgs,
140
+ returnByValue: true,
141
+ awaitPromise: true,
142
+ });
143
+ // Check for exceptions
144
+ if ('exceptionDetails' in result) {
145
+ const exc = result.exceptionDetails;
146
+ const text = exc.text || 'Unknown error';
147
+ throw new Error(`JavaScript call failed: ${text}`);
148
+ }
149
+ // Extract value from result
150
+ if ('result' in result) {
151
+ const res = result.result;
152
+ if (res.type === 'undefined') {
153
+ return null;
154
+ }
155
+ return res.value;
156
+ }
157
+ return null;
158
+ }
159
+ async getLayoutMetrics() {
160
+ const result = await this.transport.send('Page.getLayoutMetrics');
161
+ // Extract metrics from result
162
+ const layoutViewport = result.layoutViewport || {};
163
+ const contentSize = result.contentSize || {};
164
+ const visualViewport = result.visualViewport || {};
165
+ return {
166
+ viewportX: visualViewport.pageX || 0,
167
+ viewportY: visualViewport.pageY || 0,
168
+ viewportWidth: visualViewport.clientWidth || layoutViewport.clientWidth || 0,
169
+ viewportHeight: visualViewport.clientHeight || layoutViewport.clientHeight || 0,
170
+ contentWidth: contentSize.width || 0,
171
+ contentHeight: contentSize.height || 0,
172
+ deviceScaleFactor: visualViewport.scale || 1.0,
173
+ };
174
+ }
175
+ async screenshotPng() {
176
+ const result = await this.transport.send('Page.captureScreenshot', {
177
+ format: 'png',
178
+ captureBeyondViewport: false,
179
+ });
180
+ return result.data || '';
181
+ }
182
+ async mouseMove(x, y) {
183
+ await this.transport.send('Input.dispatchMouseEvent', {
184
+ type: 'mouseMoved',
185
+ x,
186
+ y,
187
+ });
188
+ }
189
+ async mouseClick(x, y, button = 'left', clickCount = 1) {
190
+ // Mouse down
191
+ await this.transport.send('Input.dispatchMouseEvent', {
192
+ type: 'mousePressed',
193
+ x,
194
+ y,
195
+ button,
196
+ clickCount,
197
+ });
198
+ // Small delay between press and release
199
+ await this.sleep(50);
200
+ // Mouse up
201
+ await this.transport.send('Input.dispatchMouseEvent', {
202
+ type: 'mouseReleased',
203
+ x,
204
+ y,
205
+ button,
206
+ clickCount,
207
+ });
208
+ }
209
+ async wheel(deltaY, x, y) {
210
+ // Get viewport center if coordinates not provided
211
+ if (x === undefined || y === undefined) {
212
+ if (this.cachedViewport === null) {
213
+ await this.refreshPageInfo();
214
+ }
215
+ x = x ?? (this.cachedViewport?.width ?? 0) / 2;
216
+ y = y ?? (this.cachedViewport?.height ?? 0) / 2;
217
+ }
218
+ await this.transport.send('Input.dispatchMouseEvent', {
219
+ type: 'mouseWheel',
220
+ x,
221
+ y,
222
+ deltaX: 0,
223
+ deltaY,
224
+ });
225
+ }
226
+ async typeText(text) {
227
+ for (const char of text) {
228
+ // Key down
229
+ await this.transport.send('Input.dispatchKeyEvent', {
230
+ type: 'keyDown',
231
+ text: char,
232
+ });
233
+ // Char event (for text input)
234
+ await this.transport.send('Input.dispatchKeyEvent', {
235
+ type: 'char',
236
+ text: char,
237
+ });
238
+ // Key up
239
+ await this.transport.send('Input.dispatchKeyEvent', {
240
+ type: 'keyUp',
241
+ text: char,
242
+ });
243
+ // Small delay between characters
244
+ await this.sleep(10);
245
+ }
246
+ }
247
+ async waitReadyState(state = 'interactive', timeoutMs = 15000) {
248
+ const startTime = Date.now();
249
+ // Map state to acceptable states
250
+ const acceptableStates = state === 'complete' ? new Set(['complete']) : new Set(['interactive', 'complete']);
251
+ while (true) {
252
+ const elapsed = Date.now() - startTime;
253
+ if (elapsed >= timeoutMs) {
254
+ throw new Error(`Timed out waiting for document.readyState='${state}' after ${timeoutMs}ms`);
255
+ }
256
+ const currentState = (await this.eval('document.readyState'));
257
+ if (acceptableStates.has(currentState)) {
258
+ return;
259
+ }
260
+ // Poll every 100ms
261
+ await this.sleep(100);
262
+ }
263
+ }
264
+ async getUrl() {
265
+ const result = await this.eval('window.location.href');
266
+ return result || '';
267
+ }
268
+ sleep(ms) {
269
+ return new Promise(resolve => setTimeout(resolve, ms));
270
+ }
271
+ }
272
+ exports.CDPBackend = CDPBackend;
273
+ //# sourceMappingURL=cdp-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-backend.js","sourceRoot":"","sources":["../../src/backends/cdp-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Browser backend abstractions for Sentience SDK.
3
+ *
4
+ * This module provides backend protocols and implementations that allow
5
+ * Sentience actions (click, type, scroll) to work with different browser
6
+ * automation frameworks.
7
+ *
8
+ * Supported Backends
9
+ * ------------------
10
+ *
11
+ * **CDPBackend**
12
+ * Low-level CDP (Chrome DevTools Protocol) backend. Use this when you have
13
+ * direct access to a CDP client and session.
14
+ *
15
+ * **BrowserUseAdapter**
16
+ * High-level adapter for browser-use framework. Automatically creates a
17
+ * CDPBackend from a BrowserSession.
18
+ *
19
+ * Quick Start with browser-use
20
+ * ----------------------------
21
+ *
22
+ * import { BrowserSession, BrowserProfile } from 'browser-use';
23
+ * import { getExtensionDir } from 'sentience';
24
+ * import { BrowserUseAdapter, snapshot, click, typeText } from 'sentience/backends';
25
+ *
26
+ * // Setup browser-use with Sentience extension
27
+ * const profile = new BrowserProfile({ args: [`--load-extension=${getExtensionDir()}`] });
28
+ * const session = new BrowserSession({ browserProfile: profile });
29
+ * await session.start();
30
+ *
31
+ * // Create adapter and backend
32
+ * const adapter = new BrowserUseAdapter(session);
33
+ * const backend = await adapter.createBackend();
34
+ *
35
+ * // Take snapshot and interact with elements
36
+ * const snap = await snapshot(backend);
37
+ * const searchBox = find(snap, 'role=textbox[name*="Search"]');
38
+ * await click(backend, searchBox.bbox);
39
+ * await typeText(backend, 'Sentience AI');
40
+ *
41
+ * Snapshot Caching
42
+ * ----------------
43
+ *
44
+ * Use CachedSnapshot to reduce redundant snapshot calls in action loops:
45
+ *
46
+ * import { CachedSnapshot } from 'sentience/backends';
47
+ *
48
+ * const cache = new CachedSnapshot(backend, 2000);
49
+ *
50
+ * const snap1 = await cache.get(); // Takes fresh snapshot
51
+ * const snap2 = await cache.get(); // Returns cached if < 2s old
52
+ *
53
+ * await click(backend, element.bbox);
54
+ * cache.invalidate(); // Force refresh on next get()
55
+ *
56
+ * Error Handling
57
+ * --------------
58
+ *
59
+ * The module provides specific exceptions for common failure modes:
60
+ *
61
+ * - `ExtensionNotLoadedError`: Extension not loaded in browser launch args
62
+ * - `SnapshotError`: window.sentience.snapshot() failed
63
+ *
64
+ * import { ExtensionNotLoadedError, snapshot } from 'sentience/backends';
65
+ *
66
+ * try {
67
+ * const snap = await snapshot(backend);
68
+ * } catch (e) {
69
+ * if (e instanceof ExtensionNotLoadedError) {
70
+ * console.log(`Fix suggestion: ${e.message}`);
71
+ * }
72
+ * }
73
+ */
74
+ export { BrowserBackend, ViewportInfo, LayoutMetrics, MouseButton, ReadyState } from './protocol';
75
+ export { CDPTransport, CDPBackend } from './cdp-backend';
76
+ export { BrowserUseAdapter, BrowserUseCDPTransport } from './browser-use-adapter';
77
+ export { snapshot, CachedSnapshot, SnapshotOptions, ScreenshotOptions, SnapshotFilter, ExtensionNotLoadedError, SnapshotError, ExtensionDiagnostics, } from './snapshot';
78
+ export { click, typeText, scroll, scrollToElement, waitForStable, ClickTarget, ScrollBehavior, ScrollBlock, } from './actions';
79
+ export { SentienceContext, PredicateContext, SentienceContextState, SentienceContextOptions, TopElementSelector, BuildOptions, } from './sentience-context';
80
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AAGH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGlG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGlF,OAAO,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,eAAe,EACf,aAAa,EACb,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,GACb,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ /**
3
+ * Browser backend abstractions for Sentience SDK.
4
+ *
5
+ * This module provides backend protocols and implementations that allow
6
+ * Sentience actions (click, type, scroll) to work with different browser
7
+ * automation frameworks.
8
+ *
9
+ * Supported Backends
10
+ * ------------------
11
+ *
12
+ * **CDPBackend**
13
+ * Low-level CDP (Chrome DevTools Protocol) backend. Use this when you have
14
+ * direct access to a CDP client and session.
15
+ *
16
+ * **BrowserUseAdapter**
17
+ * High-level adapter for browser-use framework. Automatically creates a
18
+ * CDPBackend from a BrowserSession.
19
+ *
20
+ * Quick Start with browser-use
21
+ * ----------------------------
22
+ *
23
+ * import { BrowserSession, BrowserProfile } from 'browser-use';
24
+ * import { getExtensionDir } from 'sentience';
25
+ * import { BrowserUseAdapter, snapshot, click, typeText } from 'sentience/backends';
26
+ *
27
+ * // Setup browser-use with Sentience extension
28
+ * const profile = new BrowserProfile({ args: [`--load-extension=${getExtensionDir()}`] });
29
+ * const session = new BrowserSession({ browserProfile: profile });
30
+ * await session.start();
31
+ *
32
+ * // Create adapter and backend
33
+ * const adapter = new BrowserUseAdapter(session);
34
+ * const backend = await adapter.createBackend();
35
+ *
36
+ * // Take snapshot and interact with elements
37
+ * const snap = await snapshot(backend);
38
+ * const searchBox = find(snap, 'role=textbox[name*="Search"]');
39
+ * await click(backend, searchBox.bbox);
40
+ * await typeText(backend, 'Sentience AI');
41
+ *
42
+ * Snapshot Caching
43
+ * ----------------
44
+ *
45
+ * Use CachedSnapshot to reduce redundant snapshot calls in action loops:
46
+ *
47
+ * import { CachedSnapshot } from 'sentience/backends';
48
+ *
49
+ * const cache = new CachedSnapshot(backend, 2000);
50
+ *
51
+ * const snap1 = await cache.get(); // Takes fresh snapshot
52
+ * const snap2 = await cache.get(); // Returns cached if < 2s old
53
+ *
54
+ * await click(backend, element.bbox);
55
+ * cache.invalidate(); // Force refresh on next get()
56
+ *
57
+ * Error Handling
58
+ * --------------
59
+ *
60
+ * The module provides specific exceptions for common failure modes:
61
+ *
62
+ * - `ExtensionNotLoadedError`: Extension not loaded in browser launch args
63
+ * - `SnapshotError`: window.sentience.snapshot() failed
64
+ *
65
+ * import { ExtensionNotLoadedError, snapshot } from 'sentience/backends';
66
+ *
67
+ * try {
68
+ * const snap = await snapshot(backend);
69
+ * } catch (e) {
70
+ * if (e instanceof ExtensionNotLoadedError) {
71
+ * console.log(`Fix suggestion: ${e.message}`);
72
+ * }
73
+ * }
74
+ */
75
+ Object.defineProperty(exports, "__esModule", { value: true });
76
+ exports.PredicateContext = exports.SentienceContext = exports.waitForStable = exports.scrollToElement = exports.typeText = exports.click = exports.SnapshotError = exports.ExtensionNotLoadedError = exports.CachedSnapshot = exports.snapshot = exports.BrowserUseCDPTransport = exports.BrowserUseAdapter = exports.CDPBackend = void 0;
77
+ // CDP Backend
78
+ var cdp_backend_1 = require("./cdp-backend");
79
+ Object.defineProperty(exports, "CDPBackend", { enumerable: true, get: function () { return cdp_backend_1.CDPBackend; } });
80
+ // browser-use adapter
81
+ var browser_use_adapter_1 = require("./browser-use-adapter");
82
+ Object.defineProperty(exports, "BrowserUseAdapter", { enumerable: true, get: function () { return browser_use_adapter_1.BrowserUseAdapter; } });
83
+ Object.defineProperty(exports, "BrowserUseCDPTransport", { enumerable: true, get: function () { return browser_use_adapter_1.BrowserUseCDPTransport; } });
84
+ // Backend-agnostic functions
85
+ var snapshot_1 = require("./snapshot");
86
+ Object.defineProperty(exports, "snapshot", { enumerable: true, get: function () { return snapshot_1.snapshot; } });
87
+ Object.defineProperty(exports, "CachedSnapshot", { enumerable: true, get: function () { return snapshot_1.CachedSnapshot; } });
88
+ Object.defineProperty(exports, "ExtensionNotLoadedError", { enumerable: true, get: function () { return snapshot_1.ExtensionNotLoadedError; } });
89
+ Object.defineProperty(exports, "SnapshotError", { enumerable: true, get: function () { return snapshot_1.SnapshotError; } });
90
+ // Actions
91
+ var actions_1 = require("./actions");
92
+ Object.defineProperty(exports, "click", { enumerable: true, get: function () { return actions_1.click; } });
93
+ Object.defineProperty(exports, "typeText", { enumerable: true, get: function () { return actions_1.typeText; } });
94
+ Object.defineProperty(exports, "scroll", { enumerable: true, get: function () { return actions_1.scroll; } });
95
+ Object.defineProperty(exports, "scrollToElement", { enumerable: true, get: function () { return actions_1.scrollToElement; } });
96
+ Object.defineProperty(exports, "waitForStable", { enumerable: true, get: function () { return actions_1.waitForStable; } });
97
+ // SentienceContext (Token-Slasher Context Middleware)
98
+ var sentience_context_1 = require("./sentience-context");
99
+ Object.defineProperty(exports, "SentienceContext", { enumerable: true, get: function () { return sentience_context_1.SentienceContext; } });
100
+ Object.defineProperty(exports, "PredicateContext", { enumerable: true, get: function () { return sentience_context_1.PredicateContext; } });
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;;;AAKH,cAAc;AACd,6CAAyD;AAAlC,yGAAA,UAAU,OAAA;AAEjC,sBAAsB;AACtB,6DAAkF;AAAzE,wHAAA,iBAAiB,OAAA;AAAE,6HAAA,sBAAsB,OAAA;AAElD,6BAA6B;AAC7B,uCASoB;AARlB,oGAAA,QAAQ,OAAA;AACR,0GAAA,cAAc,OAAA;AAId,mHAAA,uBAAuB,OAAA;AACvB,yGAAA,aAAa,OAAA;AAIf,UAAU;AACV,qCASmB;AARjB,gGAAA,KAAK,OAAA;AACL,mGAAA,QAAQ,OAAA;AACR,iGAAA,MAAM,OAAA;AACN,0GAAA,eAAe,OAAA;AACf,wGAAA,aAAa,OAAA;AAMf,sDAAsD;AACtD,yDAO6B;AAN3B,qHAAA,gBAAgB,OAAA;AAChB,qHAAA,gBAAgB,OAAA"}