@monoes/monobrowse 1.0.2 → 1.0.3

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 (272) hide show
  1. package/dist/src/__tests__/output.test.d.ts +2 -0
  2. package/dist/src/__tests__/output.test.d.ts.map +1 -0
  3. package/dist/src/__tests__/output.test.js +54 -0
  4. package/dist/src/__tests__/output.test.js.map +1 -0
  5. package/dist/src/__tests__/ref-cache.test.d.ts +2 -0
  6. package/dist/src/__tests__/ref-cache.test.d.ts.map +1 -0
  7. package/dist/src/__tests__/ref-cache.test.js +109 -0
  8. package/dist/src/__tests__/ref-cache.test.js.map +1 -0
  9. package/dist/src/browser/action-builder/analyzer.d.ts +0 -0
  10. package/dist/src/browser/action-builder/analyzer.d.ts.map +0 -0
  11. package/dist/src/browser/action-builder/analyzer.js +0 -0
  12. package/dist/src/browser/action-builder/analyzer.js.map +0 -0
  13. package/dist/src/browser/action-builder/types.d.ts +0 -0
  14. package/dist/src/browser/action-builder/types.d.ts.map +0 -0
  15. package/dist/src/browser/action-builder/types.js +0 -0
  16. package/dist/src/browser/action-builder/types.js.map +0 -0
  17. package/dist/src/browser/actions.d.ts +0 -0
  18. package/dist/src/browser/actions.d.ts.map +0 -0
  19. package/dist/src/browser/actions.js +0 -0
  20. package/dist/src/browser/actions.js.map +0 -0
  21. package/dist/src/browser/adapters/gemini.d.ts +0 -0
  22. package/dist/src/browser/adapters/gemini.d.ts.map +0 -0
  23. package/dist/src/browser/adapters/gemini.js +0 -0
  24. package/dist/src/browser/adapters/gemini.js.map +0 -0
  25. package/dist/src/browser/adapters/google.d.ts +0 -0
  26. package/dist/src/browser/adapters/google.d.ts.map +0 -0
  27. package/dist/src/browser/adapters/google.js +0 -0
  28. package/dist/src/browser/adapters/google.js.map +0 -0
  29. package/dist/src/browser/adapters/index.d.ts +0 -0
  30. package/dist/src/browser/adapters/index.d.ts.map +0 -0
  31. package/dist/src/browser/adapters/index.js +0 -0
  32. package/dist/src/browser/adapters/index.js.map +0 -0
  33. package/dist/src/browser/adapters/instagram.d.ts +0 -0
  34. package/dist/src/browser/adapters/instagram.d.ts.map +0 -0
  35. package/dist/src/browser/adapters/instagram.js +0 -0
  36. package/dist/src/browser/adapters/instagram.js.map +0 -0
  37. package/dist/src/browser/adapters/linkedin.d.ts +0 -0
  38. package/dist/src/browser/adapters/linkedin.d.ts.map +0 -0
  39. package/dist/src/browser/adapters/linkedin.js +0 -0
  40. package/dist/src/browser/adapters/linkedin.js.map +0 -0
  41. package/dist/src/browser/adapters/microsoft.d.ts +0 -0
  42. package/dist/src/browser/adapters/microsoft.d.ts.map +0 -0
  43. package/dist/src/browser/adapters/microsoft.js +0 -0
  44. package/dist/src/browser/adapters/microsoft.js.map +0 -0
  45. package/dist/src/browser/adapters/x.d.ts +0 -0
  46. package/dist/src/browser/adapters/x.d.ts.map +0 -0
  47. package/dist/src/browser/adapters/x.js +0 -0
  48. package/dist/src/browser/adapters/x.js.map +0 -0
  49. package/dist/src/browser/batch.d.ts +0 -0
  50. package/dist/src/browser/batch.d.ts.map +0 -0
  51. package/dist/src/browser/batch.js +0 -0
  52. package/dist/src/browser/batch.js.map +0 -0
  53. package/dist/src/browser/browser.d.ts +0 -0
  54. package/dist/src/browser/browser.d.ts.map +0 -0
  55. package/dist/src/browser/browser.js +0 -0
  56. package/dist/src/browser/browser.js.map +0 -0
  57. package/dist/src/browser/cdp.d.ts +0 -0
  58. package/dist/src/browser/cdp.d.ts.map +0 -0
  59. package/dist/src/browser/cdp.js +0 -0
  60. package/dist/src/browser/cdp.js.map +0 -0
  61. package/dist/src/browser/console-log.d.ts +0 -0
  62. package/dist/src/browser/console-log.d.ts.map +0 -0
  63. package/dist/src/browser/console-log.js +0 -0
  64. package/dist/src/browser/console-log.js.map +0 -0
  65. package/dist/src/browser/dashboard/api-types.d.ts +0 -0
  66. package/dist/src/browser/dashboard/api-types.d.ts.map +0 -0
  67. package/dist/src/browser/dashboard/api-types.js +0 -0
  68. package/dist/src/browser/dashboard/api-types.js.map +0 -0
  69. package/dist/src/browser/dashboard/server.d.ts +0 -0
  70. package/dist/src/browser/dashboard/server.d.ts.map +0 -0
  71. package/dist/src/browser/dashboard/server.js +0 -0
  72. package/dist/src/browser/dashboard/server.js.map +0 -0
  73. package/dist/src/browser/dashboard/ui.html +0 -0
  74. package/dist/src/browser/dialog.d.ts +0 -0
  75. package/dist/src/browser/dialog.d.ts.map +0 -0
  76. package/dist/src/browser/dialog.js +0 -0
  77. package/dist/src/browser/dialog.js.map +0 -0
  78. package/dist/src/browser/emulation.d.ts +0 -0
  79. package/dist/src/browser/emulation.d.ts.map +0 -0
  80. package/dist/src/browser/emulation.js +0 -0
  81. package/dist/src/browser/emulation.js.map +0 -0
  82. package/dist/src/browser/find.d.ts +0 -0
  83. package/dist/src/browser/find.d.ts.map +0 -0
  84. package/dist/src/browser/find.js +0 -0
  85. package/dist/src/browser/find.js.map +0 -0
  86. package/dist/src/browser/har.d.ts +0 -0
  87. package/dist/src/browser/har.d.ts.map +0 -0
  88. package/dist/src/browser/har.js +0 -0
  89. package/dist/src/browser/har.js.map +0 -0
  90. package/dist/src/browser/index.d.ts +1 -0
  91. package/dist/src/browser/index.d.ts.map +1 -1
  92. package/dist/src/browser/index.js +1 -0
  93. package/dist/src/browser/index.js.map +1 -1
  94. package/dist/src/browser/network.d.ts +0 -0
  95. package/dist/src/browser/network.d.ts.map +0 -0
  96. package/dist/src/browser/network.js +0 -0
  97. package/dist/src/browser/network.js.map +0 -0
  98. package/dist/src/browser/pdf.d.ts +0 -0
  99. package/dist/src/browser/pdf.d.ts.map +0 -0
  100. package/dist/src/browser/pdf.js +0 -0
  101. package/dist/src/browser/pdf.js.map +0 -0
  102. package/dist/src/browser/profiler.d.ts +0 -0
  103. package/dist/src/browser/profiler.d.ts.map +0 -0
  104. package/dist/src/browser/profiler.js +0 -0
  105. package/dist/src/browser/profiler.js.map +0 -0
  106. package/dist/src/browser/record.d.ts +0 -0
  107. package/dist/src/browser/record.d.ts.map +0 -0
  108. package/dist/src/browser/record.js +0 -0
  109. package/dist/src/browser/record.js.map +0 -0
  110. package/dist/src/browser/ref-cache.d.ts +21 -0
  111. package/dist/src/browser/ref-cache.d.ts.map +1 -0
  112. package/dist/src/browser/ref-cache.js +70 -0
  113. package/dist/src/browser/ref-cache.js.map +1 -0
  114. package/dist/src/browser/screenshot.d.ts +0 -0
  115. package/dist/src/browser/screenshot.d.ts.map +0 -0
  116. package/dist/src/browser/screenshot.js +0 -0
  117. package/dist/src/browser/screenshot.js.map +0 -0
  118. package/dist/src/browser/session.d.ts +0 -0
  119. package/dist/src/browser/session.d.ts.map +0 -0
  120. package/dist/src/browser/session.js +0 -0
  121. package/dist/src/browser/session.js.map +0 -0
  122. package/dist/src/browser/snapshot.d.ts +0 -0
  123. package/dist/src/browser/snapshot.d.ts.map +0 -0
  124. package/dist/src/browser/snapshot.js +0 -0
  125. package/dist/src/browser/snapshot.js.map +0 -0
  126. package/dist/src/browser/storage.d.ts +0 -0
  127. package/dist/src/browser/storage.d.ts.map +0 -0
  128. package/dist/src/browser/storage.js +0 -0
  129. package/dist/src/browser/storage.js.map +0 -0
  130. package/dist/src/browser/tabs.d.ts +1 -1
  131. package/dist/src/browser/tabs.d.ts.map +1 -1
  132. package/dist/src/browser/tabs.js +20 -4
  133. package/dist/src/browser/tabs.js.map +1 -1
  134. package/dist/src/browser/trace.d.ts +0 -0
  135. package/dist/src/browser/trace.d.ts.map +0 -0
  136. package/dist/src/browser/trace.js +0 -0
  137. package/dist/src/browser/trace.js.map +0 -0
  138. package/dist/src/browser/types.d.ts +0 -0
  139. package/dist/src/browser/types.d.ts.map +0 -0
  140. package/dist/src/browser/types.js +0 -0
  141. package/dist/src/browser/types.js.map +0 -0
  142. package/dist/src/browser/vitals.d.ts +0 -0
  143. package/dist/src/browser/vitals.d.ts.map +0 -0
  144. package/dist/src/browser/vitals.js +0 -0
  145. package/dist/src/browser/vitals.js.map +0 -0
  146. package/dist/src/browser/wait.d.ts +0 -0
  147. package/dist/src/browser/wait.d.ts.map +0 -0
  148. package/dist/src/browser/wait.js +0 -0
  149. package/dist/src/browser/wait.js.map +0 -0
  150. package/dist/src/cli/action.d.ts +0 -0
  151. package/dist/src/cli/action.d.ts.map +1 -1
  152. package/dist/src/cli/action.js +87 -2
  153. package/dist/src/cli/action.js.map +1 -1
  154. package/dist/src/cli/commands.d.ts +0 -0
  155. package/dist/src/cli/commands.d.ts.map +1 -1
  156. package/dist/src/cli/commands.js +32 -3
  157. package/dist/src/cli/commands.js.map +1 -1
  158. package/dist/src/cli/output.d.ts +0 -0
  159. package/dist/src/cli/output.d.ts.map +0 -0
  160. package/dist/src/cli/output.js +0 -0
  161. package/dist/src/cli/output.js.map +0 -0
  162. package/dist/src/cli/platform.d.ts +0 -0
  163. package/dist/src/cli/platform.d.ts.map +0 -0
  164. package/dist/src/cli/platform.js +0 -0
  165. package/dist/src/cli/platform.js.map +0 -0
  166. package/dist/src/cli/types.d.ts +0 -0
  167. package/dist/src/cli/types.d.ts.map +0 -0
  168. package/dist/src/cli/types.js +0 -0
  169. package/dist/src/cli/types.js.map +0 -0
  170. package/dist/src/cli.d.ts +0 -0
  171. package/dist/src/cli.d.ts.map +0 -0
  172. package/dist/src/cli.js.map +0 -0
  173. package/dist/src/index.d.ts +0 -0
  174. package/dist/src/index.d.ts.map +0 -0
  175. package/dist/src/index.js +0 -0
  176. package/dist/src/index.js.map +0 -0
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +1 -1
  179. package/src/__tests__/output.test.ts +62 -0
  180. package/src/__tests__/ref-cache.test.ts +134 -0
  181. package/src/browser/action-builder/analyzer.ts +0 -0
  182. package/src/browser/action-builder/types.ts +0 -0
  183. package/src/browser/actions.ts +0 -0
  184. package/src/browser/adapters/gemini.ts +0 -0
  185. package/src/browser/adapters/google.ts +0 -0
  186. package/src/browser/adapters/index.ts +0 -0
  187. package/src/browser/adapters/instagram.ts +0 -0
  188. package/src/browser/adapters/linkedin.ts +0 -0
  189. package/src/browser/adapters/microsoft.ts +0 -0
  190. package/src/browser/adapters/x.ts +0 -0
  191. package/src/browser/batch.ts +0 -0
  192. package/src/browser/browser.ts +0 -0
  193. package/src/browser/cdp.ts +0 -0
  194. package/src/browser/console-log.ts +0 -0
  195. package/src/browser/dashboard/api-types.ts +0 -0
  196. package/src/browser/dashboard/server.ts +0 -0
  197. package/src/browser/dashboard/ui.html +0 -0
  198. package/src/browser/dialog.ts +0 -0
  199. package/src/browser/emulation.ts +0 -0
  200. package/src/browser/find.ts +0 -0
  201. package/src/browser/har.ts +0 -0
  202. package/src/browser/index.ts +1 -0
  203. package/src/browser/network.ts +0 -0
  204. package/src/browser/pdf.ts +0 -0
  205. package/src/browser/profiler.ts +0 -0
  206. package/src/browser/record.ts +0 -0
  207. package/src/browser/ref-cache.ts +90 -0
  208. package/src/browser/screenshot.ts +0 -0
  209. package/src/browser/session.ts +0 -0
  210. package/src/browser/snapshot.ts +0 -0
  211. package/src/browser/storage.ts +0 -0
  212. package/src/browser/tabs.ts +36 -7
  213. package/src/browser/trace.ts +0 -0
  214. package/src/browser/types.ts +0 -0
  215. package/src/browser/vitals.ts +0 -0
  216. package/src/browser/wait.ts +0 -0
  217. package/src/cli/action.ts +85 -3
  218. package/src/cli/commands.ts +35 -3
  219. package/src/cli/output.ts +0 -0
  220. package/src/cli/platform.ts +0 -0
  221. package/src/cli/types.ts +0 -0
  222. package/src/cli.ts +0 -0
  223. package/src/index.ts +0 -0
  224. package/dist/package.json +0 -71
  225. package/dist/src/browser/playbook/browser-handlers.d.ts +0 -3
  226. package/dist/src/browser/playbook/browser-handlers.d.ts.map +0 -1
  227. package/dist/src/browser/playbook/browser-handlers.js +0 -377
  228. package/dist/src/browser/playbook/browser-handlers.js.map +0 -1
  229. package/dist/src/browser/playbook/builtin-handlers.d.ts +0 -3
  230. package/dist/src/browser/playbook/builtin-handlers.d.ts.map +0 -1
  231. package/dist/src/browser/playbook/builtin-handlers.js +0 -364
  232. package/dist/src/browser/playbook/builtin-handlers.js.map +0 -1
  233. package/dist/src/browser/playbook/index.d.ts +0 -3
  234. package/dist/src/browser/playbook/index.d.ts.map +0 -1
  235. package/dist/src/browser/playbook/index.js +0 -3
  236. package/dist/src/browser/playbook/index.js.map +0 -1
  237. package/dist/src/browser/playbook/store.d.ts +0 -8
  238. package/dist/src/browser/playbook/store.d.ts.map +0 -1
  239. package/dist/src/browser/playbook/store.js +0 -87
  240. package/dist/src/browser/playbook/store.js.map +0 -1
  241. package/dist/src/browser/workflow/builtin-handlers.d.ts +0 -3
  242. package/dist/src/browser/workflow/builtin-handlers.d.ts.map +0 -1
  243. package/dist/src/browser/workflow/builtin-handlers.js +0 -343
  244. package/dist/src/browser/workflow/builtin-handlers.js.map +0 -1
  245. package/dist/src/browser/workflow/engine.d.ts +0 -10
  246. package/dist/src/browser/workflow/engine.d.ts.map +0 -1
  247. package/dist/src/browser/workflow/engine.js +0 -174
  248. package/dist/src/browser/workflow/engine.js.map +0 -1
  249. package/dist/src/browser/workflow/expression.d.ts +0 -4
  250. package/dist/src/browser/workflow/expression.d.ts.map +0 -1
  251. package/dist/src/browser/workflow/expression.js +0 -89
  252. package/dist/src/browser/workflow/expression.js.map +0 -1
  253. package/dist/src/browser/workflow/index.d.ts +0 -6
  254. package/dist/src/browser/workflow/index.d.ts.map +0 -1
  255. package/dist/src/browser/workflow/index.js +0 -6
  256. package/dist/src/browser/workflow/index.js.map +0 -1
  257. package/dist/src/browser/workflow/store.d.ts +0 -8
  258. package/dist/src/browser/workflow/store.d.ts.map +0 -1
  259. package/dist/src/browser/workflow/store.js +0 -87
  260. package/dist/src/browser/workflow/store.js.map +0 -1
  261. package/dist/src/browser/workflow/types.d.ts +0 -62
  262. package/dist/src/browser/workflow/types.d.ts.map +0 -1
  263. package/dist/src/browser/workflow/types.js +0 -2
  264. package/dist/src/browser/workflow/types.js.map +0 -1
  265. package/dist/src/cli/playbook.d.ts +0 -3
  266. package/dist/src/cli/playbook.d.ts.map +0 -1
  267. package/dist/src/cli/playbook.js +0 -265
  268. package/dist/src/cli/playbook.js.map +0 -1
  269. package/dist/src/cli/workflow.d.ts +0 -2
  270. package/dist/src/cli/workflow.d.ts.map +0 -1
  271. package/dist/src/cli/workflow.js +0 -3
  272. package/dist/src/cli/workflow.js.map +0 -1
@@ -1,377 +0,0 @@
1
- // createBrowserHandlers — CDP-backed NodeHandler implementations for @monoes/monoplaybook.
2
- //
3
- // browser.open — connect to Chrome CDP and open a URL
4
- // browser.navigate — navigate the current tab to a URL
5
- // browser.click — click an element (selector | role | text | label | placeholder)
6
- // browser.type — type text into an element (keystroke-by-keystroke)
7
- // browser.fill — set an input value directly (faster than type)
8
- // browser.select — pick an <option> by value or visible text
9
- // browser.check — check or uncheck a checkbox / radio
10
- // browser.hover — hover over an element
11
- // browser.press — press a key or combo (e.g. "Enter", "Ctrl+A")
12
- // browser.scroll — scroll up/down/left/right by pixel amount
13
- // browser.wait — wait for selector | url | load | networkidle | duration
14
- // browser.extract — pull text, attribute, html, all_text, url, or title into item.data
15
- // browser.snapshot — capture an accessibility tree snapshot
16
- // browser.screenshot — take a screenshot (saves to file or returns base64)
17
- // browser.evaluate — run arbitrary JS; result goes into item.data
18
- // browser.close — drop the cached CDP connection (does not kill Chrome)
19
- import { connectToTarget, openUrl, waitForLoad, getCurrentUrl, getCurrentTitle, } from '../browser.js';
20
- import { clickElement, fillElement, typeText, pressKey, pressKeyCombo, scrollElement, hoverElement, selectOption, checkElement, evaluateJs, } from '../actions.js';
21
- import { findBySelector, findByRole, findByText, findByLabel, findByPlaceholder, } from '../find.js';
22
- import { waitFor } from '../wait.js';
23
- import { captureSnapshot } from '../snapshot.js';
24
- import { captureScreenshot } from '../screenshot.js';
25
- import { mkdir } from 'node:fs/promises';
26
- import { dirname, resolve } from 'node:path';
27
- const connectionCache = new Map();
28
- async function getConnection(port) {
29
- if (connectionCache.has(port)) {
30
- const cached = connectionCache.get(port);
31
- try {
32
- // Lightweight liveness check — if the CDP connection has dropped, this throws
33
- await cached.client.send('Runtime.evaluate', { expression: '1', returnByValue: true }, cached.sessionId);
34
- return cached;
35
- }
36
- catch {
37
- // Stale connection — evict and reconnect below
38
- connectionCache.delete(port);
39
- }
40
- }
41
- const { client, sessionId } = await connectToTarget(port);
42
- const conn = { client, sessionId, refs: new Map() };
43
- connectionCache.set(port, conn);
44
- return conn;
45
- }
46
- function releaseConnection(port) {
47
- connectionCache.delete(port);
48
- }
49
- function safeResolvePath(rawPath) {
50
- const cwd = process.cwd();
51
- const abs = resolve(cwd, rawPath);
52
- if (abs !== cwd && !abs.startsWith(cwd + '/')) {
53
- throw new Error(`Path traversal blocked: "${rawPath}" resolves outside working directory`);
54
- }
55
- return abs;
56
- }
57
- // ---------------------------------------------------------------------------
58
- // Element resolution — locator types: selector | role | text | label | placeholder
59
- // ---------------------------------------------------------------------------
60
- async function findElement(conn, config) {
61
- const locator = config['locator'] ?? 'selector';
62
- const value = config['value'];
63
- if (!value)
64
- throw new Error(`browser handler requires config.value (the element locator)`);
65
- const { client, sessionId, refs } = conn;
66
- const opts = {
67
- exact: config['exact'],
68
- nth: config['nth'],
69
- };
70
- let ref = null;
71
- switch (locator) {
72
- case 'selector':
73
- ref = await findBySelector(client, sessionId, refs, value);
74
- break;
75
- case 'role':
76
- ref = await findByRole(client, sessionId, refs, value, opts);
77
- break;
78
- case 'text':
79
- ref = await findByText(client, sessionId, refs, value, opts);
80
- break;
81
- case 'label':
82
- ref = await findByLabel(client, sessionId, refs, value, opts);
83
- break;
84
- case 'placeholder':
85
- ref = await findByPlaceholder(client, sessionId, refs, value, opts);
86
- break;
87
- default: throw new Error(`Unknown locator "${locator}". Use: selector|role|text|label|placeholder`);
88
- }
89
- if (!ref)
90
- throw new Error(`Element not found: ${locator}="${value}"`);
91
- return ref;
92
- }
93
- // Modifier bitmask used by CDP (matches DevTools protocol)
94
- function modifierBits(modifiers) {
95
- let bits = 0;
96
- for (const m of modifiers) {
97
- switch (m.toLowerCase()) {
98
- case 'alt':
99
- bits |= 1;
100
- break;
101
- case 'ctrl':
102
- case 'control':
103
- bits |= 2;
104
- break;
105
- case 'meta':
106
- case 'cmd':
107
- bits |= 4;
108
- break;
109
- case 'shift':
110
- bits |= 8;
111
- break;
112
- }
113
- }
114
- return bits;
115
- }
116
- // ---------------------------------------------------------------------------
117
- // Handlers
118
- // ---------------------------------------------------------------------------
119
- export function createBrowserHandlers() {
120
- const h = new Map();
121
- // ── browser.open ──────────────────────────────────────────────────────────
122
- h.set('browser.open', async (items, config) => {
123
- const port = config['port'] ?? 9222;
124
- const url = config['url'];
125
- if (!url)
126
- throw new Error('browser.open requires config.url');
127
- const timeout = config['timeoutMs'] ?? 30000;
128
- const condition = config['waitUntil'] ?? 'load';
129
- const conn = await getConnection(port);
130
- await openUrl(conn.client, conn.sessionId, url);
131
- await waitForLoad(conn.client, conn.sessionId, condition, timeout);
132
- const currentUrl = await getCurrentUrl(conn.client, conn.sessionId);
133
- const title = await getCurrentTitle(conn.client, conn.sessionId);
134
- return items.map(item => ({ ...item, data: { ...item.data, url: currentUrl, title, port } }));
135
- });
136
- // ── browser.navigate ──────────────────────────────────────────────────────
137
- h.set('browser.navigate', async (items, config) => {
138
- const port = config['port'] ?? 9222;
139
- const url = config['url'];
140
- if (!url)
141
- throw new Error('browser.navigate requires config.url');
142
- const timeout = config['timeoutMs'] ?? 30000;
143
- const condition = config['waitUntil'] ?? 'load';
144
- const conn = await getConnection(port);
145
- await openUrl(conn.client, conn.sessionId, url);
146
- await waitForLoad(conn.client, conn.sessionId, condition, timeout);
147
- const currentUrl = await getCurrentUrl(conn.client, conn.sessionId);
148
- const title = await getCurrentTitle(conn.client, conn.sessionId);
149
- return items.map(item => ({ ...item, data: { ...item.data, url: currentUrl, title } }));
150
- });
151
- // ── browser.click ─────────────────────────────────────────────────────────
152
- h.set('browser.click', async (items, config) => {
153
- const port = config['port'] ?? 9222;
154
- const conn = await getConnection(port);
155
- const ref = await findElement(conn, config);
156
- await clickElement(conn.client, conn.sessionId, ref);
157
- return items;
158
- });
159
- // ── browser.type ──────────────────────────────────────────────────────────
160
- h.set('browser.type', async (items, config) => {
161
- const port = config['port'] ?? 9222;
162
- const text = config['text'];
163
- if (text === undefined)
164
- throw new Error('browser.type requires config.text');
165
- const conn = await getConnection(port);
166
- const ref = await findElement(conn, config);
167
- if (config['clear'] !== false) {
168
- await fillElement(conn.client, conn.sessionId, ref, '');
169
- }
170
- await typeText(conn.client, conn.sessionId, text);
171
- return items;
172
- });
173
- // ── browser.fill ──────────────────────────────────────────────────────────
174
- h.set('browser.fill', async (items, config) => {
175
- const port = config['port'] ?? 9222;
176
- const text = config['text'] ?? '';
177
- const conn = await getConnection(port);
178
- const ref = await findElement(conn, config);
179
- await fillElement(conn.client, conn.sessionId, ref, text);
180
- return items;
181
- });
182
- // ── browser.select ────────────────────────────────────────────────────────
183
- h.set('browser.select', async (items, config) => {
184
- const port = config['port'] ?? 9222;
185
- const option = config['option'];
186
- if (!option)
187
- throw new Error('browser.select requires config.option');
188
- const conn = await getConnection(port);
189
- const ref = await findElement(conn, config);
190
- await selectOption(conn.client, conn.sessionId, ref, option);
191
- return items;
192
- });
193
- // ── browser.check ─────────────────────────────────────────────────────────
194
- h.set('browser.check', async (items, config) => {
195
- const port = config['port'] ?? 9222;
196
- const checked = config['checked'] ?? true;
197
- const conn = await getConnection(port);
198
- const ref = await findElement(conn, config);
199
- await checkElement(conn.client, conn.sessionId, ref, checked);
200
- return items;
201
- });
202
- // ── browser.hover ─────────────────────────────────────────────────────────
203
- h.set('browser.hover', async (items, config) => {
204
- const port = config['port'] ?? 9222;
205
- const conn = await getConnection(port);
206
- const ref = await findElement(conn, config);
207
- await hoverElement(conn.client, conn.sessionId, ref);
208
- return items;
209
- });
210
- // ── browser.press ─────────────────────────────────────────────────────────
211
- // Config: port, key — e.g. "Enter", "Tab", "Escape", "Ctrl+A", "Shift+Tab"
212
- h.set('browser.press', async (items, config) => {
213
- const port = config['port'] ?? 9222;
214
- const key = config['key'];
215
- if (!key)
216
- throw new Error('browser.press requires config.key');
217
- const conn = await getConnection(port);
218
- if (key.includes('+')) {
219
- const parts = key.split('+').map(k => k.trim());
220
- const mainKey = parts[parts.length - 1];
221
- const bits = modifierBits(parts.slice(0, -1));
222
- // Delegate to pressKeyCombo which uses resolveKey() for correct code/key mapping
223
- // (avoids KeyENTER-style bugs from naive Key${mainKey.toUpperCase()} construction)
224
- await pressKeyCombo(conn.client, conn.sessionId, mainKey, bits);
225
- }
226
- else {
227
- await pressKey(conn.client, conn.sessionId, key);
228
- }
229
- return items;
230
- });
231
- // ── browser.scroll ────────────────────────────────────────────────────────
232
- // Config: port, direction (up|down|left|right, default "down"), amount (px, default 300),
233
- // locator + value (optional — scroll a specific element)
234
- h.set('browser.scroll', async (items, config) => {
235
- const port = config['port'] ?? 9222;
236
- const direction = config['direction'] ?? 'down';
237
- const amount = config['amount'] ?? 300;
238
- const conn = await getConnection(port);
239
- const hasLocator = !!(config['value']);
240
- if (hasLocator) {
241
- const ref = await findElement(conn, config);
242
- await scrollElement(conn.client, conn.sessionId, direction, amount, ref);
243
- }
244
- else {
245
- await scrollElement(conn.client, conn.sessionId, direction, amount);
246
- }
247
- return items;
248
- });
249
- // ── browser.wait ──────────────────────────────────────────────────────────
250
- // Config: port, for (selector|url|load|networkidle|duration), value, timeoutMs
251
- h.set('browser.wait', async (items, config) => {
252
- const port = config['port'] ?? 9222;
253
- const conn = await getConnection(port);
254
- const waitKind = config['for'] ?? 'duration';
255
- const timeout = config['timeoutMs'] ?? 30000;
256
- const value = config['value'];
257
- switch (waitKind) {
258
- case 'duration':
259
- await new Promise(res => setTimeout(res, value ?? 1000));
260
- break;
261
- case 'selector':
262
- await waitFor(conn.client, conn.sessionId, { selector: value, timeout });
263
- break;
264
- case 'url':
265
- await waitFor(conn.client, conn.sessionId, { url: value, timeout });
266
- break;
267
- case 'load':
268
- await waitForLoad(conn.client, conn.sessionId, 'load', timeout);
269
- break;
270
- case 'networkidle':
271
- await waitForLoad(conn.client, conn.sessionId, 'networkidle', timeout);
272
- break;
273
- default:
274
- throw new Error(`browser.wait: unknown 'for' value: "${waitKind}". Use selector|url|load|networkidle|duration`);
275
- }
276
- return items;
277
- });
278
- // ── browser.extract ───────────────────────────────────────────────────────
279
- // Config: port, as (text|attribute|html|all_text|url|title), locator, value,
280
- // attribute (when as=attribute), outputKey (default "extracted")
281
- h.set('browser.extract', async (items, config) => {
282
- const port = config['port'] ?? 9222;
283
- const as = config['as'] ?? 'text';
284
- const outputKey = config['outputKey'] ?? 'extracted';
285
- const conn = await getConnection(port);
286
- if (as === 'url') {
287
- const url = await getCurrentUrl(conn.client, conn.sessionId);
288
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: url } }));
289
- }
290
- if (as === 'title') {
291
- const title = await getCurrentTitle(conn.client, conn.sessionId);
292
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: title } }));
293
- }
294
- if (as === 'all_text') {
295
- const text = await evaluateJs(conn.client, conn.sessionId, 'document.body.innerText');
296
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: text } }));
297
- }
298
- const ref = await findElement(conn, config);
299
- if (as === 'text') {
300
- const result = await conn.client.send('Runtime.callFunctionOn', { objectId: ref.objectId, functionDeclaration: 'function(){return this.innerText ?? this.textContent ?? ""}', returnByValue: true }, conn.sessionId);
301
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: result.result.value } }));
302
- }
303
- if (as === 'attribute') {
304
- const attr = config['attribute'];
305
- if (!attr)
306
- throw new Error('browser.extract with as=attribute requires config.attribute');
307
- const result = await conn.client.send('Runtime.callFunctionOn', {
308
- objectId: ref.objectId,
309
- functionDeclaration: `function(){return this.getAttribute(${JSON.stringify(attr)})}`,
310
- returnByValue: true,
311
- }, conn.sessionId);
312
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: result.result.value } }));
313
- }
314
- if (as === 'html') {
315
- const result = await conn.client.send('Runtime.callFunctionOn', { objectId: ref.objectId, functionDeclaration: 'function(){return this.outerHTML}', returnByValue: true }, conn.sessionId);
316
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: result.result.value } }));
317
- }
318
- throw new Error(`browser.extract: unknown 'as' value: "${as}". Use text|attribute|html|all_text|url|title`);
319
- });
320
- // ── browser.snapshot ──────────────────────────────────────────────────────
321
- // Captures an accessibility tree. Output stored in item.data[outputKey].
322
- // Config: port, selector (scope to element), interactiveOnly, compact, outputKey
323
- h.set('browser.snapshot', async (items, config) => {
324
- const port = config['port'] ?? 9222;
325
- const outputKey = config['outputKey'] ?? 'snapshot';
326
- const conn = await getConnection(port);
327
- const result = await captureSnapshot(conn.client, conn.sessionId, {
328
- selector: config['selector'],
329
- interactiveOnly: config['interactiveOnly'] ?? false,
330
- compact: config['compact'] ?? true,
331
- });
332
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: result } }));
333
- });
334
- // ── browser.screenshot ────────────────────────────────────────────────────
335
- // Config: port, path (optional file path), fullPage, format (jpeg|png|webp),
336
- // quality, outputKey (default "screenshot")
337
- // Output: if path is set → saves file and puts path in data; else → puts dataUrl in data + binaryBase64
338
- h.set('browser.screenshot', async (items, config) => {
339
- const port = config['port'] ?? 9222;
340
- const outputKey = config['outputKey'] ?? 'screenshot';
341
- const conn = await getConnection(port);
342
- const userPath = config['path'];
343
- const absPath = userPath ? safeResolvePath(userPath) : undefined;
344
- if (absPath)
345
- await mkdir(dirname(absPath), { recursive: true });
346
- const { path: savedPath, dataUrl } = await captureScreenshot(conn.client, conn.sessionId, {
347
- path: absPath,
348
- fullPage: config['fullPage'] ?? false,
349
- format: config['format'] ?? 'png',
350
- quality: config['quality'],
351
- });
352
- return items.map(item => ({
353
- ...item,
354
- data: { ...item.data, [outputKey]: userPath ? savedPath : dataUrl },
355
- }));
356
- });
357
- // ── browser.evaluate ──────────────────────────────────────────────────────
358
- // Config: port, script (JS expression), outputKey (default "result")
359
- h.set('browser.evaluate', async (items, config) => {
360
- const port = config['port'] ?? 9222;
361
- const script = config['script'];
362
- if (!script)
363
- throw new Error('browser.evaluate requires config.script');
364
- const outputKey = config['outputKey'] ?? 'result';
365
- const conn = await getConnection(port);
366
- const result = await evaluateJs(conn.client, conn.sessionId, script);
367
- return items.map(item => ({ ...item, data: { ...item.data, [outputKey]: result } }));
368
- });
369
- // ── browser.close ─────────────────────────────────────────────────────────
370
- h.set('browser.close', async (items, config) => {
371
- const port = config['port'] ?? 9222;
372
- releaseConnection(port);
373
- return items;
374
- });
375
- return h;
376
- }
377
- //# sourceMappingURL=browser-handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-handlers.js","sourceRoot":"","sources":["../../../../src/browser/playbook/browser-handlers.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,EAAE;AACF,6DAA6D;AAC7D,0DAA0D;AAC1D,wFAAwF;AACxF,2EAA2E;AAC3E,uEAAuE;AACvE,kEAAkE;AAClE,4DAA4D;AAC5D,8CAA8C;AAC9C,sEAAsE;AACtE,kEAAkE;AAClE,gFAAgF;AAChF,2FAA2F;AAC3F,+DAA+D;AAC/D,4EAA4E;AAC5E,qEAAqE;AACrE,8EAA8E;AAI9E,OAAO,EACL,eAAe,EACf,OAAO,EACP,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAY7C,MAAM,eAAe,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE7D,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC1C,IAAI,CAAC;YACH,8EAA8E;YAC9E,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACzG,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;YAC/C,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAsB,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACvE,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,sCAAsC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,mFAAmF;AACnF,8EAA8E;AAE9E,KAAK,UAAU,WAAW,CACxB,IAAuB,EACvB,MAA+B;IAE/B,MAAM,OAAO,GAAI,MAAM,CAAC,SAAS,CAAwB,IAAI,UAAU,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAW,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAE3F,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,MAAM,CAAC,OAAO,CAAwB;QAC7C,GAAG,EAAE,MAAM,CAAC,KAAK,CAAuB;KACzC,CAAC;IAEF,IAAI,GAAG,GAAsB,IAAI,CAAC;IAClC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU;YAAK,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAAC,MAAM;QACtF,KAAK,MAAM;YAAS,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAAC,MAAM;QACxF,KAAK,MAAM;YAAS,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAAC,MAAM;QACxF,KAAK,OAAO;YAAQ,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAAC,MAAM;QACzF,KAAK,aAAa;YAAE,GAAG,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAAC,MAAM;QAC/F,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,8CAA8C,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2DAA2D;AAC3D,SAAS,YAAY,CAAC,SAAmB;IACvC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,KAAK;gBAAI,IAAI,IAAI,CAAC,CAAC;gBAAC,MAAM;YAC/B,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS;gBAAE,IAAI,IAAI,CAAC,CAAC;gBAAC,MAAM;YACjC,KAAK,MAAM,CAAC;YACZ,KAAK,KAAK;gBAAI,IAAI,IAAI,CAAC,CAAC;gBAAC,MAAM;YAC/B,KAAK,OAAO;gBAAE,IAAI,IAAI,CAAC,CAAC;gBAAC,MAAM;QACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEzC,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC7D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAI,MAAM,CAAC,WAAW,CAAwB,IAAI,KAAK,CAAC;QACrE,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,CAA6D,IAAI,MAAM,CAAC;QAE7G,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QACjE,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAClE,MAAM,OAAO,GAAI,MAAM,CAAC,WAAW,CAAwB,IAAI,KAAK,CAAC;QACrE,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,CAA6D,IAAI,MAAM,CAAC;QAE7G,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC9D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC7D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAW,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAE7E,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC7D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,EAAE,CAAC;QAE1D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC/D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAW,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC9D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,OAAO,GAAI,MAAM,CAAC,SAAS,CAAyB,IAAI,IAAI,CAAC;QAEnE,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC9D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,2EAA2E;IAC3E,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC9D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,iFAAiF;YACjF,mFAAmF;YACnF,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,0FAA0F;IAC1F,iEAAiE;IACjE,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC/D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,CAAkD,IAAI,MAAM,CAAC;QAClG,MAAM,MAAM,GAAI,MAAM,CAAC,QAAQ,CAAwB,IAAI,GAAG,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,+EAA+E;IAC/E,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC7D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAI,MAAM,CAAC,KAAK,CAAwB,IAAI,UAAU,CAAC;QACrE,MAAM,OAAO,GAAI,MAAM,CAAC,WAAW,CAAwB,IAAI,KAAK,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,UAAU;gBACb,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAG,KAA4B,IAAI,IAAI,CAAC,CAAC,CAAC;gBACjF,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAe,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnF,MAAM;YACR,KAAK,KAAK;gBACR,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,KAAe,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC9E,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBACvE,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,+CAA+C,CAAC,CAAC;QACpH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,6EAA6E;IAC7E,yEAAyE;IACzE,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAChE,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,EAAE,GAAI,MAAM,CAAC,IAAI,CAAwB,IAAI,MAAM,CAAC;QAC1D,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,CAAwB,IAAI,WAAW,CAAC;QAC7E,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5C,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,wBAAwB,EACxB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,6DAA6D,EAAE,aAAa,EAAE,IAAI,EAAE,EACnI,IAAI,CAAC,SAAS,CACf,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAW,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,wBAAwB,EACxB;gBACE,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,mBAAmB,EAAE,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;gBACpF,aAAa,EAAE,IAAI;aACpB,EACD,IAAI,CAAC,SAAS,CACf,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,wBAAwB,EACxB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,mCAAmC,EAAE,aAAa,EAAE,IAAI,EAAE,EACzG,IAAI,CAAC,SAAS,CACf,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACpG,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,EAAE,+CAA+C,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,yEAAyE;IACzE,iFAAiF;IACjF,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QACjE,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,CAAwB,IAAI,UAAU,CAAC;QAC5E,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;YAChE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAuB;YAClD,eAAe,EAAG,MAAM,CAAC,iBAAiB,CAAyB,IAAI,KAAK;YAC5E,OAAO,EAAG,MAAM,CAAC,SAAS,CAAyB,IAAI,IAAI;SAC5D,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,6EAA6E;IAC7E,oDAAoD;IACpD,wGAAwG;IACxG,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QACnE,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,CAAwB,IAAI,YAAY,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAuB,CAAC;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,IAAI,OAAO;YAAE,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;YACxF,IAAI,EAAE,OAAO;YACb,QAAQ,EAAG,MAAM,CAAC,UAAU,CAAyB,IAAI,KAAK;YAC9D,MAAM,EAAG,MAAM,CAAC,QAAQ,CAAyC,IAAI,KAAK;YAC1E,OAAO,EAAE,MAAM,CAAC,SAAS,CAAuB;SACjD,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,GAAG,IAAI;YACP,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;SACpE,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,qEAAqE;IACrE,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QACjE,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAW,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxE,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,CAAwB,IAAI,QAAQ,CAAC;QAE1E,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAmB,EAAE;QAC9D,MAAM,IAAI,GAAI,MAAM,CAAC,MAAM,CAAwB,IAAI,IAAI,CAAC;QAC5D,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { NodeHandler } from '@monoes/monoplaybook';
2
- export declare function createBuiltinHandlers(): Map<string, NodeHandler>;
3
- //# sourceMappingURL=builtin-handlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtin-handlers.d.ts","sourceRoot":"","sources":["../../../../src/browser/playbook/builtin-handlers.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,sBAAsB,CAAC;AAsN9D,wBAAgB,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAoKhE"}