@monoes/monobrowse 1.0.2 → 1.0.4

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 (277) hide show
  1. package/dist/src/__tests__/batch-eval-parsing.test.d.ts +2 -0
  2. package/dist/src/__tests__/batch-eval-parsing.test.d.ts.map +1 -0
  3. package/dist/src/__tests__/batch-eval-parsing.test.js +47 -0
  4. package/dist/src/__tests__/batch-eval-parsing.test.js.map +1 -0
  5. package/dist/src/__tests__/output.test.d.ts +2 -0
  6. package/dist/src/__tests__/output.test.d.ts.map +1 -0
  7. package/dist/src/__tests__/output.test.js +54 -0
  8. package/dist/src/__tests__/output.test.js.map +1 -0
  9. package/dist/src/__tests__/ref-cache.test.d.ts +2 -0
  10. package/dist/src/__tests__/ref-cache.test.d.ts.map +1 -0
  11. package/dist/src/__tests__/ref-cache.test.js +145 -0
  12. package/dist/src/__tests__/ref-cache.test.js.map +1 -0
  13. package/dist/src/browser/action-builder/analyzer.d.ts +0 -0
  14. package/dist/src/browser/action-builder/analyzer.d.ts.map +0 -0
  15. package/dist/src/browser/action-builder/analyzer.js +0 -0
  16. package/dist/src/browser/action-builder/analyzer.js.map +1 -1
  17. package/dist/src/browser/action-builder/types.d.ts +0 -0
  18. package/dist/src/browser/action-builder/types.d.ts.map +0 -0
  19. package/dist/src/browser/action-builder/types.js +0 -0
  20. package/dist/src/browser/action-builder/types.js.map +0 -0
  21. package/dist/src/browser/actions.d.ts +1 -1
  22. package/dist/src/browser/actions.d.ts.map +1 -1
  23. package/dist/src/browser/actions.js +19 -2
  24. package/dist/src/browser/actions.js.map +1 -1
  25. package/dist/src/browser/adapters/gemini.d.ts +0 -0
  26. package/dist/src/browser/adapters/gemini.d.ts.map +0 -0
  27. package/dist/src/browser/adapters/gemini.js +0 -0
  28. package/dist/src/browser/adapters/gemini.js.map +0 -0
  29. package/dist/src/browser/adapters/google.d.ts +0 -0
  30. package/dist/src/browser/adapters/google.d.ts.map +0 -0
  31. package/dist/src/browser/adapters/google.js +0 -0
  32. package/dist/src/browser/adapters/google.js.map +0 -0
  33. package/dist/src/browser/adapters/index.d.ts +0 -0
  34. package/dist/src/browser/adapters/index.d.ts.map +0 -0
  35. package/dist/src/browser/adapters/index.js +0 -0
  36. package/dist/src/browser/adapters/index.js.map +0 -0
  37. package/dist/src/browser/adapters/instagram.d.ts +0 -0
  38. package/dist/src/browser/adapters/instagram.d.ts.map +0 -0
  39. package/dist/src/browser/adapters/instagram.js +0 -0
  40. package/dist/src/browser/adapters/instagram.js.map +0 -0
  41. package/dist/src/browser/adapters/linkedin.d.ts +0 -0
  42. package/dist/src/browser/adapters/linkedin.d.ts.map +0 -0
  43. package/dist/src/browser/adapters/linkedin.js +0 -0
  44. package/dist/src/browser/adapters/linkedin.js.map +0 -0
  45. package/dist/src/browser/adapters/microsoft.d.ts +0 -0
  46. package/dist/src/browser/adapters/microsoft.d.ts.map +0 -0
  47. package/dist/src/browser/adapters/microsoft.js +0 -0
  48. package/dist/src/browser/adapters/microsoft.js.map +0 -0
  49. package/dist/src/browser/adapters/x.d.ts +0 -0
  50. package/dist/src/browser/adapters/x.d.ts.map +0 -0
  51. package/dist/src/browser/adapters/x.js +0 -0
  52. package/dist/src/browser/adapters/x.js.map +0 -0
  53. package/dist/src/browser/batch.d.ts +0 -0
  54. package/dist/src/browser/batch.d.ts.map +0 -0
  55. package/dist/src/browser/batch.js +0 -0
  56. package/dist/src/browser/batch.js.map +0 -0
  57. package/dist/src/browser/browser.d.ts +10 -0
  58. package/dist/src/browser/browser.d.ts.map +1 -1
  59. package/dist/src/browser/browser.js +111 -3
  60. package/dist/src/browser/browser.js.map +1 -1
  61. package/dist/src/browser/cdp.d.ts +0 -0
  62. package/dist/src/browser/cdp.d.ts.map +1 -1
  63. package/dist/src/browser/cdp.js +1 -1
  64. package/dist/src/browser/cdp.js.map +1 -1
  65. package/dist/src/browser/console-log.d.ts +0 -0
  66. package/dist/src/browser/console-log.d.ts.map +0 -0
  67. package/dist/src/browser/console-log.js +0 -0
  68. package/dist/src/browser/console-log.js.map +0 -0
  69. package/dist/src/browser/dashboard/api-types.d.ts +0 -0
  70. package/dist/src/browser/dashboard/api-types.d.ts.map +0 -0
  71. package/dist/src/browser/dashboard/api-types.js +0 -0
  72. package/dist/src/browser/dashboard/api-types.js.map +0 -0
  73. package/dist/src/browser/dashboard/server.d.ts +0 -0
  74. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  75. package/dist/src/browser/dashboard/server.js +37 -2
  76. package/dist/src/browser/dashboard/server.js.map +1 -1
  77. package/dist/src/browser/dashboard/ui.html +1 -1
  78. package/dist/src/browser/dialog.d.ts +0 -0
  79. package/dist/src/browser/dialog.d.ts.map +0 -0
  80. package/dist/src/browser/dialog.js +0 -0
  81. package/dist/src/browser/dialog.js.map +0 -0
  82. package/dist/src/browser/emulation.d.ts +0 -0
  83. package/dist/src/browser/emulation.d.ts.map +0 -0
  84. package/dist/src/browser/emulation.js +0 -0
  85. package/dist/src/browser/emulation.js.map +0 -0
  86. package/dist/src/browser/find.d.ts +0 -0
  87. package/dist/src/browser/find.d.ts.map +0 -0
  88. package/dist/src/browser/find.js +0 -0
  89. package/dist/src/browser/find.js.map +1 -1
  90. package/dist/src/browser/har.d.ts +0 -0
  91. package/dist/src/browser/har.d.ts.map +0 -0
  92. package/dist/src/browser/har.js +0 -0
  93. package/dist/src/browser/har.js.map +0 -0
  94. package/dist/src/browser/index.d.ts +1 -0
  95. package/dist/src/browser/index.d.ts.map +1 -1
  96. package/dist/src/browser/index.js +1 -0
  97. package/dist/src/browser/index.js.map +1 -1
  98. package/dist/src/browser/network.d.ts +7 -0
  99. package/dist/src/browser/network.d.ts.map +1 -1
  100. package/dist/src/browser/network.js +10 -0
  101. package/dist/src/browser/network.js.map +1 -1
  102. package/dist/src/browser/pdf.d.ts +0 -0
  103. package/dist/src/browser/pdf.d.ts.map +0 -0
  104. package/dist/src/browser/pdf.js +0 -0
  105. package/dist/src/browser/pdf.js.map +1 -1
  106. package/dist/src/browser/profiler.d.ts +0 -0
  107. package/dist/src/browser/profiler.d.ts.map +0 -0
  108. package/dist/src/browser/profiler.js +0 -0
  109. package/dist/src/browser/profiler.js.map +1 -1
  110. package/dist/src/browser/record.d.ts +3 -0
  111. package/dist/src/browser/record.d.ts.map +1 -1
  112. package/dist/src/browser/record.js +37 -5
  113. package/dist/src/browser/record.js.map +1 -1
  114. package/dist/src/browser/ref-cache.d.ts +41 -0
  115. package/dist/src/browser/ref-cache.d.ts.map +1 -0
  116. package/dist/src/browser/ref-cache.js +120 -0
  117. package/dist/src/browser/ref-cache.js.map +1 -0
  118. package/dist/src/browser/screenshot.d.ts +0 -0
  119. package/dist/src/browser/screenshot.d.ts.map +0 -0
  120. package/dist/src/browser/screenshot.js +0 -0
  121. package/dist/src/browser/screenshot.js.map +1 -1
  122. package/dist/src/browser/session.d.ts +0 -0
  123. package/dist/src/browser/session.d.ts.map +1 -1
  124. package/dist/src/browser/session.js +12 -7
  125. package/dist/src/browser/session.js.map +1 -1
  126. package/dist/src/browser/snapshot.d.ts +0 -0
  127. package/dist/src/browser/snapshot.d.ts.map +0 -0
  128. package/dist/src/browser/snapshot.js +0 -0
  129. package/dist/src/browser/snapshot.js.map +1 -1
  130. package/dist/src/browser/storage.d.ts +0 -0
  131. package/dist/src/browser/storage.d.ts.map +0 -0
  132. package/dist/src/browser/storage.js +0 -0
  133. package/dist/src/browser/storage.js.map +0 -0
  134. package/dist/src/browser/tabs.d.ts +1 -1
  135. package/dist/src/browser/tabs.d.ts.map +1 -1
  136. package/dist/src/browser/tabs.js +20 -4
  137. package/dist/src/browser/tabs.js.map +1 -1
  138. package/dist/src/browser/trace.d.ts +0 -0
  139. package/dist/src/browser/trace.d.ts.map +0 -0
  140. package/dist/src/browser/trace.js +0 -0
  141. package/dist/src/browser/trace.js.map +1 -1
  142. package/dist/src/browser/types.d.ts +0 -0
  143. package/dist/src/browser/types.d.ts.map +0 -0
  144. package/dist/src/browser/types.js +0 -0
  145. package/dist/src/browser/types.js.map +0 -0
  146. package/dist/src/browser/vitals.d.ts +0 -0
  147. package/dist/src/browser/vitals.d.ts.map +0 -0
  148. package/dist/src/browser/vitals.js +0 -0
  149. package/dist/src/browser/vitals.js.map +0 -0
  150. package/dist/src/browser/wait.d.ts +0 -0
  151. package/dist/src/browser/wait.d.ts.map +0 -0
  152. package/dist/src/browser/wait.js +0 -0
  153. package/dist/src/browser/wait.js.map +0 -0
  154. package/dist/src/cli/action.d.ts +0 -0
  155. package/dist/src/cli/action.d.ts.map +1 -1
  156. package/dist/src/cli/action.js +87 -2
  157. package/dist/src/cli/action.js.map +1 -1
  158. package/dist/src/cli/commands.d.ts +22 -0
  159. package/dist/src/cli/commands.d.ts.map +1 -1
  160. package/dist/src/cli/commands.js +276 -28
  161. package/dist/src/cli/commands.js.map +1 -1
  162. package/dist/src/cli/output.d.ts +0 -0
  163. package/dist/src/cli/output.d.ts.map +1 -1
  164. package/dist/src/cli/output.js +0 -0
  165. package/dist/src/cli/output.js.map +0 -0
  166. package/dist/src/cli/platform.d.ts +0 -0
  167. package/dist/src/cli/platform.d.ts.map +0 -0
  168. package/dist/src/cli/platform.js +0 -0
  169. package/dist/src/cli/platform.js.map +0 -0
  170. package/dist/src/cli/types.d.ts +0 -0
  171. package/dist/src/cli/types.d.ts.map +0 -0
  172. package/dist/src/cli/types.js +0 -0
  173. package/dist/src/cli/types.js.map +0 -0
  174. package/dist/src/cli.d.ts +0 -0
  175. package/dist/src/cli.d.ts.map +0 -0
  176. package/dist/src/cli.js.map +1 -1
  177. package/dist/src/index.d.ts +0 -0
  178. package/dist/src/index.d.ts.map +0 -0
  179. package/dist/src/index.js +0 -0
  180. package/dist/src/index.js.map +0 -0
  181. package/dist/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +2 -2
  183. package/src/__tests__/batch-eval-parsing.test.ts +52 -0
  184. package/src/__tests__/output.test.ts +62 -0
  185. package/src/__tests__/ref-cache.test.ts +175 -0
  186. package/src/browser/action-builder/analyzer.ts +0 -0
  187. package/src/browser/action-builder/types.ts +0 -0
  188. package/src/browser/actions.ts +22 -2
  189. package/src/browser/adapters/gemini.ts +0 -0
  190. package/src/browser/adapters/google.ts +0 -0
  191. package/src/browser/adapters/index.ts +0 -0
  192. package/src/browser/adapters/instagram.ts +0 -0
  193. package/src/browser/adapters/linkedin.ts +0 -0
  194. package/src/browser/adapters/microsoft.ts +0 -0
  195. package/src/browser/adapters/x.ts +0 -0
  196. package/src/browser/batch.ts +0 -0
  197. package/src/browser/browser.ts +115 -2
  198. package/src/browser/cdp.ts +1 -1
  199. package/src/browser/console-log.ts +0 -0
  200. package/src/browser/dashboard/api-types.ts +0 -0
  201. package/src/browser/dashboard/server.ts +37 -2
  202. package/src/browser/dashboard/ui.html +1 -1
  203. package/src/browser/dialog.ts +0 -0
  204. package/src/browser/emulation.ts +0 -0
  205. package/src/browser/find.ts +0 -0
  206. package/src/browser/har.ts +0 -0
  207. package/src/browser/index.ts +1 -0
  208. package/src/browser/network.ts +11 -0
  209. package/src/browser/pdf.ts +0 -0
  210. package/src/browser/profiler.ts +0 -0
  211. package/src/browser/record.ts +43 -6
  212. package/src/browser/ref-cache.ts +141 -0
  213. package/src/browser/screenshot.ts +0 -0
  214. package/src/browser/session.ts +13 -7
  215. package/src/browser/snapshot.ts +0 -0
  216. package/src/browser/storage.ts +0 -0
  217. package/src/browser/tabs.ts +36 -7
  218. package/src/browser/trace.ts +0 -0
  219. package/src/browser/types.ts +0 -0
  220. package/src/browser/vitals.ts +0 -0
  221. package/src/browser/wait.ts +0 -0
  222. package/src/cli/action.ts +85 -3
  223. package/src/cli/commands.ts +272 -28
  224. package/src/cli/output.ts +0 -0
  225. package/src/cli/platform.ts +0 -0
  226. package/src/cli/types.ts +0 -0
  227. package/src/cli.ts +0 -0
  228. package/src/index.ts +0 -0
  229. package/dist/package.json +0 -71
  230. package/dist/src/browser/playbook/browser-handlers.d.ts +0 -3
  231. package/dist/src/browser/playbook/browser-handlers.d.ts.map +0 -1
  232. package/dist/src/browser/playbook/browser-handlers.js +0 -377
  233. package/dist/src/browser/playbook/browser-handlers.js.map +0 -1
  234. package/dist/src/browser/playbook/builtin-handlers.d.ts +0 -3
  235. package/dist/src/browser/playbook/builtin-handlers.d.ts.map +0 -1
  236. package/dist/src/browser/playbook/builtin-handlers.js +0 -364
  237. package/dist/src/browser/playbook/builtin-handlers.js.map +0 -1
  238. package/dist/src/browser/playbook/index.d.ts +0 -3
  239. package/dist/src/browser/playbook/index.d.ts.map +0 -1
  240. package/dist/src/browser/playbook/index.js +0 -3
  241. package/dist/src/browser/playbook/index.js.map +0 -1
  242. package/dist/src/browser/playbook/store.d.ts +0 -8
  243. package/dist/src/browser/playbook/store.d.ts.map +0 -1
  244. package/dist/src/browser/playbook/store.js +0 -87
  245. package/dist/src/browser/playbook/store.js.map +0 -1
  246. package/dist/src/browser/workflow/builtin-handlers.d.ts +0 -3
  247. package/dist/src/browser/workflow/builtin-handlers.d.ts.map +0 -1
  248. package/dist/src/browser/workflow/builtin-handlers.js +0 -343
  249. package/dist/src/browser/workflow/builtin-handlers.js.map +0 -1
  250. package/dist/src/browser/workflow/engine.d.ts +0 -10
  251. package/dist/src/browser/workflow/engine.d.ts.map +0 -1
  252. package/dist/src/browser/workflow/engine.js +0 -174
  253. package/dist/src/browser/workflow/engine.js.map +0 -1
  254. package/dist/src/browser/workflow/expression.d.ts +0 -4
  255. package/dist/src/browser/workflow/expression.d.ts.map +0 -1
  256. package/dist/src/browser/workflow/expression.js +0 -89
  257. package/dist/src/browser/workflow/expression.js.map +0 -1
  258. package/dist/src/browser/workflow/index.d.ts +0 -6
  259. package/dist/src/browser/workflow/index.d.ts.map +0 -1
  260. package/dist/src/browser/workflow/index.js +0 -6
  261. package/dist/src/browser/workflow/index.js.map +0 -1
  262. package/dist/src/browser/workflow/store.d.ts +0 -8
  263. package/dist/src/browser/workflow/store.d.ts.map +0 -1
  264. package/dist/src/browser/workflow/store.js +0 -87
  265. package/dist/src/browser/workflow/store.js.map +0 -1
  266. package/dist/src/browser/workflow/types.d.ts +0 -62
  267. package/dist/src/browser/workflow/types.d.ts.map +0 -1
  268. package/dist/src/browser/workflow/types.js +0 -2
  269. package/dist/src/browser/workflow/types.js.map +0 -1
  270. package/dist/src/cli/playbook.d.ts +0 -3
  271. package/dist/src/cli/playbook.d.ts.map +0 -1
  272. package/dist/src/cli/playbook.js +0 -265
  273. package/dist/src/cli/playbook.js.map +0 -1
  274. package/dist/src/cli/workflow.d.ts +0 -2
  275. package/dist/src/cli/workflow.d.ts.map +0 -1
  276. package/dist/src/cli/workflow.js +0 -3
  277. 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":"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"}
@@ -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"}