@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":"sentience-context.js","sourceRoot":"","sources":["../../src/backends/sentience-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Backend-agnostic snapshot for browser-use integration.
3
+ *
4
+ * Takes Sentience snapshots using BrowserBackend protocol,
5
+ * enabling element grounding with browser-use or other frameworks.
6
+ *
7
+ * Usage with browser-use:
8
+ * import { BrowserUseAdapter } from './backends/browser-use-adapter';
9
+ * import { snapshot, CachedSnapshot } from './backends/snapshot';
10
+ *
11
+ * const adapter = new BrowserUseAdapter(session);
12
+ * const backend = await adapter.createBackend();
13
+ *
14
+ * // Take snapshot
15
+ * const snap = await snapshot(backend);
16
+ * console.log(`Found ${snap.elements.length} elements`);
17
+ *
18
+ * // With caching (reuse if fresh)
19
+ * const cache = new CachedSnapshot(backend, 2000);
20
+ * const snap1 = await cache.get(); // Fresh snapshot
21
+ * const snap2 = await cache.get(); // Returns cached if < 2s old
22
+ * cache.invalidate(); // Force refresh on next get()
23
+ */
24
+ import type { Snapshot } from '../types';
25
+ import type { BrowserBackend } from './protocol';
26
+ /**
27
+ * Error thrown when Sentience extension is not loaded.
28
+ */
29
+ export declare class ExtensionNotLoadedError extends Error {
30
+ timeoutMs?: number | undefined;
31
+ diagnostics?: ExtensionDiagnostics | undefined;
32
+ constructor(message: string, timeoutMs?: number | undefined, diagnostics?: ExtensionDiagnostics | undefined);
33
+ static fromTimeout(timeoutMs: number, diagnostics?: ExtensionDiagnostics): ExtensionNotLoadedError;
34
+ }
35
+ /**
36
+ * Error thrown when snapshot operation fails.
37
+ */
38
+ export declare class SnapshotError extends Error {
39
+ url?: string | undefined;
40
+ constructor(message: string, url?: string | undefined);
41
+ static fromNullResult(url?: string): SnapshotError;
42
+ }
43
+ /**
44
+ * Extension diagnostics for debugging.
45
+ */
46
+ export interface ExtensionDiagnostics {
47
+ sentienceDefined?: boolean;
48
+ sentienceSnapshot?: boolean;
49
+ url?: string;
50
+ extensionId?: string | null;
51
+ hasContentScript?: boolean;
52
+ error?: string;
53
+ }
54
+ /**
55
+ * Options for snapshot operations.
56
+ */
57
+ export interface SnapshotOptions {
58
+ /** Maximum number of elements to return (default: 50) */
59
+ limit?: number;
60
+ /** Whether to capture screenshot (default: false) */
61
+ screenshot?: boolean | ScreenshotOptions;
62
+ /** Filter options for elements */
63
+ filter?: SnapshotFilter;
64
+ /** Show visual overlay on page */
65
+ showOverlay?: boolean;
66
+ /** Show visual overlay highlighting detected grids */
67
+ showGrid?: boolean;
68
+ /** Optional grid ID to show specific grid (only used if showGrid=true) */
69
+ gridId?: number | null;
70
+ /** Use server-side API (Pro/Enterprise tier) */
71
+ useApi?: boolean;
72
+ /** Gateway snapshot timeout (milliseconds) */
73
+ gatewayTimeoutMs?: number;
74
+ /** Canonical API key for server-side processing */
75
+ predicateApiKey?: string;
76
+ /** Backward-compatible API key alias */
77
+ sentienceApiKey?: string;
78
+ /** Goal/task description for ordinal support and gateway reranking */
79
+ goal?: string;
80
+ }
81
+ /**
82
+ * Screenshot options.
83
+ */
84
+ export interface ScreenshotOptions {
85
+ format?: 'png' | 'jpeg';
86
+ quality?: number;
87
+ }
88
+ /**
89
+ * Filter options for snapshot.
90
+ */
91
+ export interface SnapshotFilter {
92
+ clickable?: boolean;
93
+ visible?: boolean;
94
+ inViewport?: boolean;
95
+ }
96
+ /**
97
+ * Snapshot cache with staleness detection.
98
+ *
99
+ * Caches snapshots and returns cached version if still fresh.
100
+ * Useful for reducing redundant snapshot calls in action loops.
101
+ *
102
+ * Usage:
103
+ * const cache = new CachedSnapshot(backend, 2000);
104
+ *
105
+ * // First call takes fresh snapshot
106
+ * const snap1 = await cache.get();
107
+ *
108
+ * // Second call returns cached if < 2s old
109
+ * const snap2 = await cache.get();
110
+ *
111
+ * // Invalidate after actions that change DOM
112
+ * await click(backend, element.bbox);
113
+ * cache.invalidate();
114
+ *
115
+ * // Next get() will take fresh snapshot
116
+ * const snap3 = await cache.get();
117
+ */
118
+ export declare class CachedSnapshot {
119
+ private backend;
120
+ private maxAgeMs;
121
+ private defaultOptions?;
122
+ private cached;
123
+ private cachedAt;
124
+ private cachedUrl;
125
+ /**
126
+ * Initialize cached snapshot.
127
+ *
128
+ * @param backend - BrowserBackend implementation
129
+ * @param maxAgeMs - Maximum cache age in milliseconds (default: 2000)
130
+ * @param options - Default snapshot options
131
+ */
132
+ constructor(backend: BrowserBackend, maxAgeMs?: number, options?: SnapshotOptions);
133
+ /**
134
+ * Get snapshot, using cache if fresh.
135
+ *
136
+ * @param options - Override default options for this call
137
+ * @param forceRefresh - If true, always take fresh snapshot
138
+ * @returns Snapshot (cached or fresh)
139
+ */
140
+ get(options?: SnapshotOptions, forceRefresh?: boolean): Promise<Snapshot>;
141
+ /**
142
+ * Invalidate cache, forcing refresh on next get().
143
+ *
144
+ * Call this after actions that modify the DOM.
145
+ */
146
+ invalidate(): void;
147
+ /**
148
+ * Check if cache is stale and needs refresh.
149
+ */
150
+ private isStale;
151
+ /**
152
+ * Check if a cached snapshot exists.
153
+ */
154
+ get isCached(): boolean;
155
+ /**
156
+ * Get age of cached snapshot in milliseconds.
157
+ */
158
+ get ageMs(): number;
159
+ }
160
+ /**
161
+ * Take a Sentience snapshot using the backend protocol.
162
+ *
163
+ * Requires:
164
+ * - Sentience extension loaded in browser (via --load-extension)
165
+ * - Extension injected window.sentience API
166
+ *
167
+ * @param backend - BrowserBackend implementation (CDPBackend, PlaywrightBackend, etc.)
168
+ * @param options - Snapshot options (limit, filter, screenshot, etc.)
169
+ * @returns Snapshot with elements, viewport, and optional screenshot
170
+ *
171
+ * @example
172
+ * import { BrowserUseAdapter } from './backends/browser-use-adapter';
173
+ * import { snapshot } from './backends/snapshot';
174
+ *
175
+ * const adapter = new BrowserUseAdapter(session);
176
+ * const backend = await adapter.createBackend();
177
+ *
178
+ * // Basic snapshot (uses local extension)
179
+ * const snap = await snapshot(backend);
180
+ *
181
+ * // With options
182
+ * const snap = await snapshot(backend, {
183
+ * limit: 100,
184
+ * screenshot: true
185
+ * });
186
+ */
187
+ export declare function snapshot(backend: BrowserBackend, options?: SnapshotOptions): Promise<Snapshot>;
188
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/backends/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+ /**
3
+ * Backend-agnostic snapshot for browser-use integration.
4
+ *
5
+ * Takes Sentience snapshots using BrowserBackend protocol,
6
+ * enabling element grounding with browser-use or other frameworks.
7
+ *
8
+ * Usage with browser-use:
9
+ * import { BrowserUseAdapter } from './backends/browser-use-adapter';
10
+ * import { snapshot, CachedSnapshot } from './backends/snapshot';
11
+ *
12
+ * const adapter = new BrowserUseAdapter(session);
13
+ * const backend = await adapter.createBackend();
14
+ *
15
+ * // Take snapshot
16
+ * const snap = await snapshot(backend);
17
+ * console.log(`Found ${snap.elements.length} elements`);
18
+ *
19
+ * // With caching (reuse if fresh)
20
+ * const cache = new CachedSnapshot(backend, 2000);
21
+ * const snap1 = await cache.get(); // Fresh snapshot
22
+ * const snap2 = await cache.get(); // Returns cached if < 2s old
23
+ * cache.invalidate(); // Force refresh on next get()
24
+ */
25
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ var desc = Object.getOwnPropertyDescriptor(m, k);
28
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
29
+ desc = { enumerable: true, get: function() { return m[k]; } };
30
+ }
31
+ Object.defineProperty(o, k2, desc);
32
+ }) : (function(o, m, k, k2) {
33
+ if (k2 === undefined) k2 = k;
34
+ o[k2] = m[k];
35
+ }));
36
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
37
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
38
+ }) : function(o, v) {
39
+ o["default"] = v;
40
+ });
41
+ var __importStar = (this && this.__importStar) || (function () {
42
+ var ownKeys = function(o) {
43
+ ownKeys = Object.getOwnPropertyNames || function (o) {
44
+ var ar = [];
45
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
46
+ return ar;
47
+ };
48
+ return ownKeys(o);
49
+ };
50
+ return function (mod) {
51
+ if (mod && mod.__esModule) return mod;
52
+ var result = {};
53
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
54
+ __setModuleDefault(result, mod);
55
+ return result;
56
+ };
57
+ })();
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.CachedSnapshot = exports.SnapshotError = exports.ExtensionNotLoadedError = void 0;
60
+ exports.snapshot = snapshot;
61
+ /**
62
+ * Error thrown when Sentience extension is not loaded.
63
+ */
64
+ class ExtensionNotLoadedError extends Error {
65
+ constructor(message, timeoutMs, diagnostics) {
66
+ super(message);
67
+ this.timeoutMs = timeoutMs;
68
+ this.diagnostics = diagnostics;
69
+ this.name = 'ExtensionNotLoadedError';
70
+ }
71
+ static fromTimeout(timeoutMs, diagnostics) {
72
+ let message = `Sentience extension not loaded after ${timeoutMs}ms. `;
73
+ message += 'Make sure to launch browser with --load-extension=<path-to-sentience-extension>';
74
+ if (diagnostics) {
75
+ message += `\n\nDiagnostics:\n${JSON.stringify(diagnostics, null, 2)}`;
76
+ }
77
+ return new ExtensionNotLoadedError(message, timeoutMs, diagnostics);
78
+ }
79
+ }
80
+ exports.ExtensionNotLoadedError = ExtensionNotLoadedError;
81
+ /**
82
+ * Error thrown when snapshot operation fails.
83
+ */
84
+ class SnapshotError extends Error {
85
+ constructor(message, url) {
86
+ super(message);
87
+ this.url = url;
88
+ this.name = 'SnapshotError';
89
+ }
90
+ static fromNullResult(url) {
91
+ let message = 'window.sentience.snapshot() returned null.';
92
+ if (url) {
93
+ message += ` URL: ${url}`;
94
+ }
95
+ return new SnapshotError(message, url);
96
+ }
97
+ }
98
+ exports.SnapshotError = SnapshotError;
99
+ /**
100
+ * Snapshot cache with staleness detection.
101
+ *
102
+ * Caches snapshots and returns cached version if still fresh.
103
+ * Useful for reducing redundant snapshot calls in action loops.
104
+ *
105
+ * Usage:
106
+ * const cache = new CachedSnapshot(backend, 2000);
107
+ *
108
+ * // First call takes fresh snapshot
109
+ * const snap1 = await cache.get();
110
+ *
111
+ * // Second call returns cached if < 2s old
112
+ * const snap2 = await cache.get();
113
+ *
114
+ * // Invalidate after actions that change DOM
115
+ * await click(backend, element.bbox);
116
+ * cache.invalidate();
117
+ *
118
+ * // Next get() will take fresh snapshot
119
+ * const snap3 = await cache.get();
120
+ */
121
+ class CachedSnapshot {
122
+ /**
123
+ * Initialize cached snapshot.
124
+ *
125
+ * @param backend - BrowserBackend implementation
126
+ * @param maxAgeMs - Maximum cache age in milliseconds (default: 2000)
127
+ * @param options - Default snapshot options
128
+ */
129
+ constructor(backend, maxAgeMs = 2000, options) {
130
+ this.cached = null;
131
+ this.cachedAt = 0;
132
+ this.cachedUrl = null;
133
+ this.backend = backend;
134
+ this.maxAgeMs = maxAgeMs;
135
+ this.defaultOptions = options;
136
+ }
137
+ /**
138
+ * Get snapshot, using cache if fresh.
139
+ *
140
+ * @param options - Override default options for this call
141
+ * @param forceRefresh - If true, always take fresh snapshot
142
+ * @returns Snapshot (cached or fresh)
143
+ */
144
+ async get(options, forceRefresh = false) {
145
+ // Check if we need to refresh
146
+ if (forceRefresh || this.isStale()) {
147
+ this.cached = await snapshot(this.backend, options || this.defaultOptions);
148
+ this.cachedAt = Date.now();
149
+ this.cachedUrl = this.cached.url;
150
+ }
151
+ return this.cached;
152
+ }
153
+ /**
154
+ * Invalidate cache, forcing refresh on next get().
155
+ *
156
+ * Call this after actions that modify the DOM.
157
+ */
158
+ invalidate() {
159
+ this.cached = null;
160
+ this.cachedAt = 0;
161
+ this.cachedUrl = null;
162
+ }
163
+ /**
164
+ * Check if cache is stale and needs refresh.
165
+ */
166
+ isStale() {
167
+ if (this.cached === null) {
168
+ return true;
169
+ }
170
+ // Check age
171
+ const ageMs = Date.now() - this.cachedAt;
172
+ if (ageMs > this.maxAgeMs) {
173
+ return true;
174
+ }
175
+ return false;
176
+ }
177
+ /**
178
+ * Check if a cached snapshot exists.
179
+ */
180
+ get isCached() {
181
+ return this.cached !== null;
182
+ }
183
+ /**
184
+ * Get age of cached snapshot in milliseconds.
185
+ */
186
+ get ageMs() {
187
+ if (this.cached === null) {
188
+ return Infinity;
189
+ }
190
+ return Date.now() - this.cachedAt;
191
+ }
192
+ }
193
+ exports.CachedSnapshot = CachedSnapshot;
194
+ /**
195
+ * Take a Sentience snapshot using the backend protocol.
196
+ *
197
+ * Requires:
198
+ * - Sentience extension loaded in browser (via --load-extension)
199
+ * - Extension injected window.sentience API
200
+ *
201
+ * @param backend - BrowserBackend implementation (CDPBackend, PlaywrightBackend, etc.)
202
+ * @param options - Snapshot options (limit, filter, screenshot, etc.)
203
+ * @returns Snapshot with elements, viewport, and optional screenshot
204
+ *
205
+ * @example
206
+ * import { BrowserUseAdapter } from './backends/browser-use-adapter';
207
+ * import { snapshot } from './backends/snapshot';
208
+ *
209
+ * const adapter = new BrowserUseAdapter(session);
210
+ * const backend = await adapter.createBackend();
211
+ *
212
+ * // Basic snapshot (uses local extension)
213
+ * const snap = await snapshot(backend);
214
+ *
215
+ * // With options
216
+ * const snap = await snapshot(backend, {
217
+ * limit: 100,
218
+ * screenshot: true
219
+ * });
220
+ */
221
+ async function snapshot(backend, options) {
222
+ const opts = options || {};
223
+ // Use local extension (Free tier)
224
+ return await snapshotViaExtension(backend, opts);
225
+ }
226
+ /**
227
+ * Wait for Sentience extension to inject window.sentience API.
228
+ *
229
+ * @param backend - BrowserBackend implementation
230
+ * @param timeoutMs - Maximum wait time
231
+ * @throws ExtensionNotLoadedError if extension not injected within timeout
232
+ */
233
+ async function waitForExtension(backend, timeoutMs = 5000) {
234
+ const startTime = Date.now();
235
+ let pollCount = 0;
236
+ while (true) {
237
+ const elapsed = Date.now() - startTime;
238
+ pollCount++;
239
+ if (elapsed >= timeoutMs) {
240
+ // Gather diagnostics
241
+ let diagnostics;
242
+ try {
243
+ const diagDict = (await backend.eval(`
244
+ (() => ({
245
+ sentienceDefined: typeof window.sentience !== 'undefined',
246
+ sentienceSnapshot: typeof window.sentience?.snapshot === 'function',
247
+ url: window.location.href,
248
+ extensionId: document.documentElement.dataset.sentienceExtensionId || null,
249
+ hasContentScript: !!document.documentElement.dataset.sentienceExtensionId
250
+ }))()
251
+ `));
252
+ diagnostics = diagDict;
253
+ }
254
+ catch (e) {
255
+ diagnostics = {
256
+ error: `Could not gather diagnostics: ${e instanceof Error ? e.message : String(e)}`,
257
+ };
258
+ }
259
+ throw ExtensionNotLoadedError.fromTimeout(timeoutMs, diagnostics);
260
+ }
261
+ // Check if extension is ready
262
+ try {
263
+ const ready = await backend.eval("typeof window.sentience !== 'undefined' && " +
264
+ "typeof window.sentience.snapshot === 'function'");
265
+ if (ready) {
266
+ return;
267
+ }
268
+ }
269
+ catch {
270
+ // Keep polling
271
+ }
272
+ await sleep(100);
273
+ }
274
+ }
275
+ /**
276
+ * Take snapshot using local extension (Free tier).
277
+ */
278
+ async function snapshotViaExtension(backend, options) {
279
+ // Wait for extension injection
280
+ await waitForExtension(backend, 5000);
281
+ // Build options dict for extension API
282
+ const extOptions = buildExtensionOptions(options);
283
+ // Call extension's snapshot function
284
+ const result = (await backend.eval(`
285
+ (() => {
286
+ const options = ${JSON.stringify(extOptions)};
287
+ return window.sentience.snapshot(options);
288
+ })()
289
+ `));
290
+ if (result === null) {
291
+ // Try to get URL for better error message
292
+ let url;
293
+ try {
294
+ url = (await backend.eval('window.location.href'));
295
+ }
296
+ catch {
297
+ // Ignore
298
+ }
299
+ throw SnapshotError.fromNullResult(url);
300
+ }
301
+ // Show overlay if requested
302
+ if (options.showOverlay) {
303
+ const rawElements = result.raw_elements;
304
+ if (rawElements) {
305
+ await backend.eval(`
306
+ (() => {
307
+ if (window.sentience && window.sentience.showOverlay) {
308
+ window.sentience.showOverlay(${JSON.stringify(rawElements)}, null);
309
+ }
310
+ })()
311
+ `);
312
+ }
313
+ }
314
+ // Show grid overlay if requested
315
+ if (options.showGrid) {
316
+ const { getGridBounds } = await Promise.resolve().then(() => __importStar(require('../utils/grid-utils')));
317
+ // Get all grids (don't filter by gridId here - we want to show all but highlight the target)
318
+ const grids = getGridBounds(result, undefined);
319
+ if (grids.length > 0) {
320
+ // Pass gridId as targetGridId to highlight it in red
321
+ const targetGridId = options.gridId ?? null;
322
+ await backend.eval(`
323
+ (() => {
324
+ if (window.sentience && window.sentience.showGrid) {
325
+ window.sentience.showGrid(${JSON.stringify(grids)}, ${targetGridId !== null ? targetGridId : 'null'});
326
+ } else {
327
+ console.warn('[SDK] showGrid not available in extension');
328
+ }
329
+ })()
330
+ `);
331
+ }
332
+ }
333
+ return result;
334
+ }
335
+ /**
336
+ * Build options dict for extension API call.
337
+ */
338
+ function buildExtensionOptions(options) {
339
+ const extOptions = {};
340
+ // Screenshot config
341
+ if (options.screenshot !== false && options.screenshot !== undefined) {
342
+ extOptions.screenshot = options.screenshot;
343
+ }
344
+ // Limit (only if not default)
345
+ if (options.limit !== undefined && options.limit !== 50) {
346
+ extOptions.limit = options.limit;
347
+ }
348
+ // Filter
349
+ if (options.filter !== undefined) {
350
+ extOptions.filter = options.filter;
351
+ }
352
+ return extOptions;
353
+ }
354
+ /**
355
+ * Helper sleep function.
356
+ */
357
+ function sleep(ms) {
358
+ return new Promise(resolve => setTimeout(resolve, ms));
359
+ }
360
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/backends/snapshot.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqPH,4BAQC;AAxPD;;GAEG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YACE,OAAe,EACR,SAAkB,EAClB,WAAkC;QAEzC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,cAAS,GAAT,SAAS,CAAS;QAClB,gBAAW,GAAX,WAAW,CAAuB;QAGzC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,SAAiB,EACjB,WAAkC;QAElC,IAAI,OAAO,GAAG,wCAAwC,SAAS,MAAM,CAAC;QACtE,OAAO,IAAI,iFAAiF,CAAC;QAE7F,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,IAAI,qBAAqB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;CACF;AAvBD,0DAuBC;AAED;;GAEG;AACH,MAAa,aAAc,SAAQ,KAAK;IACtC,YACE,OAAe,EACR,GAAY;QAEnB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,QAAG,GAAH,GAAG,CAAS;QAGnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAY;QAChC,IAAI,OAAO,GAAG,4CAA4C,CAAC;QAC3D,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,IAAI,SAAS,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;CACF;AAhBD,sCAgBC;AA2DD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,cAAc;IAQzB;;;;;;OAMG;IACH,YAAY,OAAuB,EAAE,WAAmB,IAAI,EAAE,OAAyB;QAX/E,WAAM,GAAoB,IAAI,CAAC;QAC/B,aAAQ,GAAW,CAAC,CAAC;QACrB,cAAS,GAAkB,IAAI,CAAC;QAUtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAC,OAAyB,EAAE,eAAwB,KAAK;QAChE,8BAA8B;QAC9B,IAAI,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,CAAC,MAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,OAAO;QACb,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,YAAY;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpC,CAAC;CACF;AAnFD,wCAmFC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACI,KAAK,UAAU,QAAQ,CAC5B,OAAuB,EACvB,OAAyB;IAEzB,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC;IAE3B,kCAAkC;IAClC,OAAO,MAAM,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAuB,EAAE,YAAoB,IAAI;IAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,SAAS,EAAE,CAAC;QAEZ,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACzB,qBAAqB;YACrB,IAAI,WAA6C,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC;;;;;;;;SAQpC,CAAC,CAAyB,CAAC;gBAC5B,WAAW,GAAG,QAAQ,CAAC;YACzB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,WAAW,GAAG;oBACZ,KAAK,EAAE,iCAAiC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;iBACrF,CAAC;YACJ,CAAC;YAED,MAAM,uBAAuB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpE,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAC9B,6CAA6C;gBAC3C,iDAAiD,CACpD,CAAC;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;QAED,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CACjC,OAAuB,EACvB,OAAwB;IAExB,+BAA+B;IAC/B,MAAM,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEtC,uCAAuC;IACvC,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAElD,qCAAqC;IACrC,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC;;wBAEb,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;;GAG/C,CAAC,CAAoB,CAAC;IAEvB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,0CAA0C;QAC1C,IAAI,GAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAW,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,WAAW,GAAI,MAA6C,CAAC,YAAY,CAAC;QAChF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,IAAI,CAAC;;;2CAGkB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;OAG/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;QAC9D,6FAA6F;QAC7F,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,qDAAqD;YACrD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;YAC5C,MAAM,OAAO,CAAC,IAAI,CAAC;;;wCAGe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;;;;;OAKxG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAwB;IACrD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,oBAAoB;IACpB,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrE,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC7C,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;QACxD,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,SAAS;IACT,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}