@monoes/monobrowse 1.0.12 → 1.0.14

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 (271) hide show
  1. package/dist/src/__tests__/bridge-instruments.test.d.ts +2 -0
  2. package/dist/src/__tests__/bridge-instruments.test.d.ts.map +1 -0
  3. package/dist/src/__tests__/bridge-instruments.test.js +132 -0
  4. package/dist/src/__tests__/bridge-instruments.test.js.map +1 -0
  5. package/dist/src/__tests__/bridge-transport.test.d.ts +2 -0
  6. package/dist/src/__tests__/bridge-transport.test.d.ts.map +1 -0
  7. package/dist/src/__tests__/bridge-transport.test.js +287 -0
  8. package/dist/src/__tests__/bridge-transport.test.js.map +1 -0
  9. package/dist/src/__tests__/cdp-transport.test.d.ts +2 -0
  10. package/dist/src/__tests__/cdp-transport.test.d.ts.map +1 -0
  11. package/dist/src/__tests__/cdp-transport.test.js +167 -0
  12. package/dist/src/__tests__/cdp-transport.test.js.map +1 -0
  13. package/dist/src/__tests__/profiler-heap.test.d.ts +2 -0
  14. package/dist/src/__tests__/profiler-heap.test.d.ts.map +1 -0
  15. package/dist/src/__tests__/profiler-heap.test.js +154 -0
  16. package/dist/src/__tests__/profiler-heap.test.js.map +1 -0
  17. package/dist/src/__tests__/report-a11y.test.d.ts +2 -0
  18. package/dist/src/__tests__/report-a11y.test.d.ts.map +1 -0
  19. package/dist/src/__tests__/report-a11y.test.js +147 -0
  20. package/dist/src/__tests__/report-a11y.test.js.map +1 -0
  21. package/dist/src/__tests__/report-analyze.test.d.ts +2 -0
  22. package/dist/src/__tests__/report-analyze.test.d.ts.map +1 -0
  23. package/dist/src/__tests__/report-analyze.test.js +157 -0
  24. package/dist/src/__tests__/report-analyze.test.js.map +1 -0
  25. package/dist/src/__tests__/report-budget.test.d.ts +2 -0
  26. package/dist/src/__tests__/report-budget.test.d.ts.map +1 -0
  27. package/dist/src/__tests__/report-budget.test.js +80 -0
  28. package/dist/src/__tests__/report-budget.test.js.map +1 -0
  29. package/dist/src/__tests__/report-diff.test.d.ts +2 -0
  30. package/dist/src/__tests__/report-diff.test.d.ts.map +1 -0
  31. package/dist/src/__tests__/report-diff.test.js +231 -0
  32. package/dist/src/__tests__/report-diff.test.js.map +1 -0
  33. package/dist/src/__tests__/report-evidence.test.d.ts +2 -0
  34. package/dist/src/__tests__/report-evidence.test.d.ts.map +1 -0
  35. package/dist/src/__tests__/report-evidence.test.js +214 -0
  36. package/dist/src/__tests__/report-evidence.test.js.map +1 -0
  37. package/dist/src/__tests__/report-flake.test.d.ts +2 -0
  38. package/dist/src/__tests__/report-flake.test.d.ts.map +1 -0
  39. package/dist/src/__tests__/report-flake.test.js +182 -0
  40. package/dist/src/__tests__/report-flake.test.js.map +1 -0
  41. package/dist/src/__tests__/report-history.test.d.ts +2 -0
  42. package/dist/src/__tests__/report-history.test.d.ts.map +1 -0
  43. package/dist/src/__tests__/report-history.test.js +229 -0
  44. package/dist/src/__tests__/report-history.test.js.map +1 -0
  45. package/dist/src/__tests__/report-output.test.d.ts +2 -0
  46. package/dist/src/__tests__/report-output.test.d.ts.map +1 -0
  47. package/dist/src/__tests__/report-output.test.js +169 -0
  48. package/dist/src/__tests__/report-output.test.js.map +1 -0
  49. package/dist/src/__tests__/report-png.test.d.ts +2 -0
  50. package/dist/src/__tests__/report-png.test.d.ts.map +1 -0
  51. package/dist/src/__tests__/report-png.test.js +84 -0
  52. package/dist/src/__tests__/report-png.test.js.map +1 -0
  53. package/dist/src/__tests__/report-render-extras.test.d.ts +2 -0
  54. package/dist/src/__tests__/report-render-extras.test.d.ts.map +1 -0
  55. package/dist/src/__tests__/report-render-extras.test.js +285 -0
  56. package/dist/src/__tests__/report-render-extras.test.js.map +1 -0
  57. package/dist/src/__tests__/report-render.test.d.ts +2 -0
  58. package/dist/src/__tests__/report-render.test.d.ts.map +1 -0
  59. package/dist/src/__tests__/report-render.test.js +143 -0
  60. package/dist/src/__tests__/report-render.test.js.map +1 -0
  61. package/dist/src/__tests__/report-run.test.d.ts +2 -0
  62. package/dist/src/__tests__/report-run.test.d.ts.map +1 -0
  63. package/dist/src/__tests__/report-run.test.js +234 -0
  64. package/dist/src/__tests__/report-run.test.js.map +1 -0
  65. package/dist/src/browser/bridge.d.ts +119 -0
  66. package/dist/src/browser/bridge.d.ts.map +1 -0
  67. package/dist/src/browser/bridge.js +264 -0
  68. package/dist/src/browser/bridge.js.map +1 -0
  69. package/dist/src/browser/cdp.d.ts +11 -1
  70. package/dist/src/browser/cdp.d.ts.map +1 -1
  71. package/dist/src/browser/cdp.js +60 -56
  72. package/dist/src/browser/cdp.js.map +1 -1
  73. package/dist/src/browser/index.d.ts +3 -0
  74. package/dist/src/browser/index.d.ts.map +1 -1
  75. package/dist/src/browser/index.js +3 -0
  76. package/dist/src/browser/index.js.map +1 -1
  77. package/dist/src/browser/profiler.d.ts.map +1 -1
  78. package/dist/src/browser/profiler.js +19 -22
  79. package/dist/src/browser/profiler.js.map +1 -1
  80. package/dist/src/browser/transport.d.ts +62 -0
  81. package/dist/src/browser/transport.d.ts.map +1 -0
  82. package/dist/src/browser/transport.js +65 -0
  83. package/dist/src/browser/transport.js.map +1 -0
  84. package/dist/src/cli/commander-adapter.d.ts +16 -0
  85. package/dist/src/cli/commander-adapter.d.ts.map +1 -0
  86. package/dist/src/cli/commander-adapter.js +68 -0
  87. package/dist/src/cli/commander-adapter.js.map +1 -0
  88. package/dist/src/cli/commands-context.d.ts +14 -0
  89. package/dist/src/cli/commands-context.d.ts.map +1 -0
  90. package/dist/src/cli/commands-context.js +351 -0
  91. package/dist/src/cli/commands-context.js.map +1 -0
  92. package/dist/src/cli/commands-data.d.ts +12 -0
  93. package/dist/src/cli/commands-data.d.ts.map +1 -0
  94. package/dist/src/cli/commands-data.js +246 -0
  95. package/dist/src/cli/commands-data.js.map +1 -0
  96. package/dist/src/cli/commands-element.d.ts +15 -0
  97. package/dist/src/cli/commands-element.d.ts.map +1 -0
  98. package/dist/src/cli/commands-element.js +262 -0
  99. package/dist/src/cli/commands-element.js.map +1 -0
  100. package/dist/src/cli/commands-files.d.ts +9 -0
  101. package/dist/src/cli/commands-files.d.ts.map +1 -0
  102. package/dist/src/cli/commands-files.js +207 -0
  103. package/dist/src/cli/commands-files.js.map +1 -0
  104. package/dist/src/cli/commands-input.d.ts +26 -0
  105. package/dist/src/cli/commands-input.d.ts.map +1 -0
  106. package/dist/src/cli/commands-input.js +399 -0
  107. package/dist/src/cli/commands-input.js.map +1 -0
  108. package/dist/src/cli/commands-navigate.d.ts +12 -0
  109. package/dist/src/cli/commands-navigate.d.ts.map +1 -0
  110. package/dist/src/cli/commands-navigate.js +389 -0
  111. package/dist/src/cli/commands-navigate.js.map +1 -0
  112. package/dist/src/cli/commands-page.d.ts +25 -0
  113. package/dist/src/cli/commands-page.d.ts.map +1 -0
  114. package/dist/src/cli/commands-page.js +377 -0
  115. package/dist/src/cli/commands-page.js.map +1 -0
  116. package/dist/src/cli/commands-report.d.ts +8 -0
  117. package/dist/src/cli/commands-report.d.ts.map +1 -0
  118. package/dist/src/cli/commands-report.js +256 -0
  119. package/dist/src/cli/commands-report.js.map +1 -0
  120. package/dist/src/cli/commands-script.d.ts +43 -0
  121. package/dist/src/cli/commands-script.d.ts.map +1 -0
  122. package/dist/src/cli/commands-script.js +168 -0
  123. package/dist/src/cli/commands-script.js.map +1 -0
  124. package/dist/src/cli/commands-session.d.ts +15 -0
  125. package/dist/src/cli/commands-session.d.ts.map +1 -0
  126. package/dist/src/cli/commands-session.js +357 -0
  127. package/dist/src/cli/commands-session.js.map +1 -0
  128. package/dist/src/cli/commands-trace.d.ts +12 -0
  129. package/dist/src/cli/commands-trace.d.ts.map +1 -0
  130. package/dist/src/cli/commands-trace.js +347 -0
  131. package/dist/src/cli/commands-trace.js.map +1 -0
  132. package/dist/src/cli/commands.d.ts +22 -42
  133. package/dist/src/cli/commands.d.ts.map +1 -1
  134. package/dist/src/cli/commands.js +48 -3400
  135. package/dist/src/cli/commands.js.map +1 -1
  136. package/dist/src/cli/session.d.ts +47 -0
  137. package/dist/src/cli/session.d.ts.map +1 -0
  138. package/dist/src/cli/session.js +343 -0
  139. package/dist/src/cli/session.js.map +1 -0
  140. package/dist/src/report/a11y.d.ts +52 -0
  141. package/dist/src/report/a11y.d.ts.map +1 -0
  142. package/dist/src/report/a11y.js +231 -0
  143. package/dist/src/report/a11y.js.map +1 -0
  144. package/dist/src/report/analyze.d.ts +20 -0
  145. package/dist/src/report/analyze.d.ts.map +1 -0
  146. package/dist/src/report/analyze.js +136 -0
  147. package/dist/src/report/analyze.js.map +1 -0
  148. package/dist/src/report/budget.d.ts +27 -0
  149. package/dist/src/report/budget.d.ts.map +1 -0
  150. package/dist/src/report/budget.js +143 -0
  151. package/dist/src/report/budget.js.map +1 -0
  152. package/dist/src/report/collect-a11y.d.ts +25 -0
  153. package/dist/src/report/collect-a11y.d.ts.map +1 -0
  154. package/dist/src/report/collect-a11y.js +154 -0
  155. package/dist/src/report/collect-a11y.js.map +1 -0
  156. package/dist/src/report/collect.d.ts +45 -0
  157. package/dist/src/report/collect.d.ts.map +1 -0
  158. package/dist/src/report/collect.js +275 -0
  159. package/dist/src/report/collect.js.map +1 -0
  160. package/dist/src/report/evidence.d.ts +80 -0
  161. package/dist/src/report/evidence.d.ts.map +1 -0
  162. package/dist/src/report/evidence.js +279 -0
  163. package/dist/src/report/evidence.js.map +1 -0
  164. package/dist/src/report/flake.d.ts +88 -0
  165. package/dist/src/report/flake.d.ts.map +1 -0
  166. package/dist/src/report/flake.js +232 -0
  167. package/dist/src/report/flake.js.map +1 -0
  168. package/dist/src/report/history.d.ts +85 -0
  169. package/dist/src/report/history.d.ts.map +1 -0
  170. package/dist/src/report/history.js +176 -0
  171. package/dist/src/report/history.js.map +1 -0
  172. package/dist/src/report/index.d.ts +102 -0
  173. package/dist/src/report/index.d.ts.map +1 -0
  174. package/dist/src/report/index.js +216 -0
  175. package/dist/src/report/index.js.map +1 -0
  176. package/dist/src/report/pixel-diff.d.ts +30 -0
  177. package/dist/src/report/pixel-diff.d.ts.map +1 -0
  178. package/dist/src/report/pixel-diff.js +175 -0
  179. package/dist/src/report/pixel-diff.js.map +1 -0
  180. package/dist/src/report/png.d.ts +28 -0
  181. package/dist/src/report/png.d.ts.map +1 -0
  182. package/dist/src/report/png.js +259 -0
  183. package/dist/src/report/png.js.map +1 -0
  184. package/dist/src/report/render-evidence.d.ts +16 -0
  185. package/dist/src/report/render-evidence.d.ts.map +1 -0
  186. package/dist/src/report/render-evidence.js +174 -0
  187. package/dist/src/report/render-evidence.js.map +1 -0
  188. package/dist/src/report/render-trend.d.ts +16 -0
  189. package/dist/src/report/render-trend.d.ts.map +1 -0
  190. package/dist/src/report/render-trend.js +194 -0
  191. package/dist/src/report/render-trend.js.map +1 -0
  192. package/dist/src/report/render.d.ts +21 -0
  193. package/dist/src/report/render.d.ts.map +1 -0
  194. package/dist/src/report/render.js +286 -0
  195. package/dist/src/report/render.js.map +1 -0
  196. package/dist/src/report/run-diff.d.ts +18 -0
  197. package/dist/src/report/run-diff.d.ts.map +1 -0
  198. package/dist/src/report/run-diff.js +51 -0
  199. package/dist/src/report/run-diff.js.map +1 -0
  200. package/dist/src/report/structure.d.ts +41 -0
  201. package/dist/src/report/structure.d.ts.map +1 -0
  202. package/dist/src/report/structure.js +210 -0
  203. package/dist/src/report/structure.js.map +1 -0
  204. package/dist/src/report/trend.d.ts +26 -0
  205. package/dist/src/report/trend.d.ts.map +1 -0
  206. package/dist/src/report/trend.js +164 -0
  207. package/dist/src/report/trend.js.map +1 -0
  208. package/dist/src/report/types.d.ts +320 -0
  209. package/dist/src/report/types.d.ts.map +1 -0
  210. package/dist/src/report/types.js +11 -0
  211. package/dist/src/report/types.js.map +1 -0
  212. package/dist/src/report/util.d.ts +17 -0
  213. package/dist/src/report/util.d.ts.map +1 -0
  214. package/dist/src/report/util.js +45 -0
  215. package/dist/src/report/util.js.map +1 -0
  216. package/dist/tsconfig.tsbuildinfo +1 -1
  217. package/package.json +1 -1
  218. package/src/__tests__/bridge-instruments.test.ts +180 -0
  219. package/src/__tests__/bridge-transport.test.ts +365 -0
  220. package/src/__tests__/cdp-transport.test.ts +198 -0
  221. package/src/__tests__/profiler-heap.test.ts +191 -0
  222. package/src/__tests__/report-a11y.test.ts +180 -0
  223. package/src/__tests__/report-analyze.test.ts +202 -0
  224. package/src/__tests__/report-budget.test.ts +92 -0
  225. package/src/__tests__/report-diff.test.ts +272 -0
  226. package/src/__tests__/report-evidence.test.ts +276 -0
  227. package/src/__tests__/report-flake.test.ts +214 -0
  228. package/src/__tests__/report-history.test.ts +293 -0
  229. package/src/__tests__/report-output.test.ts +210 -0
  230. package/src/__tests__/report-png.test.ts +95 -0
  231. package/src/__tests__/report-render-extras.test.ts +315 -0
  232. package/src/__tests__/report-render.test.ts +175 -0
  233. package/src/__tests__/report-run.test.ts +264 -0
  234. package/src/browser/bridge.ts +354 -0
  235. package/src/browser/cdp.ts +57 -52
  236. package/src/browser/index.ts +3 -0
  237. package/src/browser/profiler.ts +28 -21
  238. package/src/browser/transport.ts +111 -0
  239. package/src/cli/commander-adapter.ts +65 -0
  240. package/src/cli/commands-context.ts +367 -0
  241. package/src/cli/commands-data.ts +248 -0
  242. package/src/cli/commands-element.ts +305 -0
  243. package/src/cli/commands-files.ts +248 -0
  244. package/src/cli/commands-input.ts +434 -0
  245. package/src/cli/commands-navigate.ts +442 -0
  246. package/src/cli/commands-page.ts +420 -0
  247. package/src/cli/commands-report.ts +275 -0
  248. package/src/cli/commands-script.ts +183 -0
  249. package/src/cli/commands-session.ts +376 -0
  250. package/src/cli/commands-trace.ts +349 -0
  251. package/src/cli/commands.ts +101 -3677
  252. package/src/cli/session.ts +412 -0
  253. package/src/report/a11y.ts +242 -0
  254. package/src/report/analyze.ts +181 -0
  255. package/src/report/budget.ts +155 -0
  256. package/src/report/collect-a11y.ts +200 -0
  257. package/src/report/collect.ts +408 -0
  258. package/src/report/evidence.ts +379 -0
  259. package/src/report/flake.ts +303 -0
  260. package/src/report/history.ts +219 -0
  261. package/src/report/index.ts +307 -0
  262. package/src/report/pixel-diff.ts +197 -0
  263. package/src/report/png.ts +290 -0
  264. package/src/report/render-evidence.ts +194 -0
  265. package/src/report/render-trend.ts +225 -0
  266. package/src/report/render.ts +314 -0
  267. package/src/report/run-diff.ts +63 -0
  268. package/src/report/structure.ts +212 -0
  269. package/src/report/trend.ts +189 -0
  270. package/src/report/types.ts +356 -0
  271. package/src/report/util.ts +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-report.js","sourceRoot":"","sources":["../../../src/cli/commands-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Running things in the page — `eval` for a single expression, `batch` for a
3
+ * sequence of browse subcommands in one process, and the init scripts that run
4
+ * before every navigation.
5
+ *
6
+ * The tokenizer is shared: a batch line is parsed the same way the CLI would
7
+ * have parsed it on the command line, so `eval` expressions survive quoting.
8
+ */
9
+ import type { Command } from './types.js';
10
+ export declare const evalCommand: Command;
11
+ /**
12
+ * Splits one line of a `batch` command string into a subcommand name, its
13
+ * args, and any recognized leading flags.
14
+ *
15
+ * `eval` is special-cased: its sole argument is a raw JS expression, which
16
+ * legitimately contains its own string-literal quotes (e.g.
17
+ * `eval document.querySelector('a')`). tokenizeBatchCommand's shell-style
18
+ * word-splitting treats `'...'`/`"..."` as grouping delimiters and discards
19
+ * them — correct for a value like `fill @e1 "some text"`, but for `eval` it
20
+ * silently deletes the expression's own quotes, turning a string literal
21
+ * into a bare (undefined) identifier reference and producing a
22
+ * ReferenceError instead of evaluating the intended expression. For `eval`,
23
+ * only its own known --flags are consumed from the front; everything after
24
+ * them is taken verbatim as one argument, untouched by tokenization.
25
+ *
26
+ /**
27
+ * `get box`'s output shape: browser.getElementBox() returns the element's
28
+ * CENTER point under x/y (correct for internal click-target callers), but
29
+ * `get box` is a bounding-box accessor where x/y conventionally means the
30
+ * top-left origin — a caller computing its own center as `box.x + width/2`
31
+ * would otherwise double-offset away from the element (issue #15). Expose
32
+ * both conventions, explicitly labeled, so neither is ambiguous.
33
+ *
34
+ * Exported for direct unit testing — not part of the CLI's public API.
35
+ */
36
+ export declare function parseBatchCommandLine(cmdStr: string): {
37
+ subName: string;
38
+ subArgs: string[];
39
+ flags: Record<string, unknown>;
40
+ };
41
+ export declare const addinitscriptCommand: Command;
42
+ export declare const removeinitscriptCommand: Command;
43
+ //# sourceMappingURL=commands-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-script.d.ts","sourceRoot":"","sources":["../../../src/cli/commands-script.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAEzE,eAAO,MAAM,WAAW,EAAE,OA8CzB,CAAC;AA4BF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CA4BA;AAED,eAAO,MAAM,oBAAoB,EAAE,OAalC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,OAarC,CAAC"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Running things in the page — `eval` for a single expression, `batch` for a
3
+ * sequence of browse subcommands in one process, and the init scripts that run
4
+ * before every navigation.
5
+ *
6
+ * The tokenizer is shared: a batch line is parsed the same way the CLI would
7
+ * have parsed it on the command line, so `eval` expressions survive quoting.
8
+ */
9
+ import { output } from './output.js';
10
+ import { DEFAULT_EVAL_MAX_OUTPUT, ensureConnected, getBrowser, print, session, truncateForOutput, } from './session.js';
11
+ export const evalCommand = {
12
+ name: 'eval',
13
+ description: 'Evaluate JavaScript in page context. Usage: monomind browse eval "document.title"',
14
+ options: [
15
+ { name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
16
+ {
17
+ name: 'stdin',
18
+ type: 'boolean',
19
+ description: 'Read JS expression from stdin (heredoc-friendly for multiline scripts)',
20
+ default: false,
21
+ },
22
+ {
23
+ name: 'max-output',
24
+ type: 'number',
25
+ description: `Truncate printed output to N characters (default ${DEFAULT_EVAL_MAX_OUTPUT}; 0 disables truncation)`,
26
+ },
27
+ {
28
+ name: 'timeout',
29
+ type: 'number',
30
+ description: 'Max ms to wait for evaluation to settle (default 30000)',
31
+ },
32
+ ],
33
+ action: async (ctx) => {
34
+ const { client, sessionId } = await ensureConnected(session.port);
35
+ const browser = await getBrowser();
36
+ let expr = ctx.args[0];
37
+ if (ctx.flags.stdin) {
38
+ const chunks = [];
39
+ for await (const chunk of process.stdin)
40
+ chunks.push(chunk);
41
+ expr = Buffer.concat(chunks).toString('utf8').trim();
42
+ }
43
+ if (!expr)
44
+ throw new Error('Usage: monomind browse eval "<expression>" (or pipe with --stdin)');
45
+ const timeoutMs = ctx.flags.timeout;
46
+ const result = await browser.evaluateJs(client, sessionId, expr, timeoutMs);
47
+ const maxOutput = ctx.flags['max-output'] ?? DEFAULT_EVAL_MAX_OUTPUT;
48
+ if (ctx.flags.json) {
49
+ print(truncateForOutput(JSON.stringify({ data: result }), maxOutput));
50
+ }
51
+ else {
52
+ print(truncateForOutput(String(result ?? ''), maxOutput));
53
+ }
54
+ return { success: true, data: { result } };
55
+ },
56
+ };
57
+ function tokenizeBatchCommand(input) {
58
+ const tokens = [];
59
+ let current = '';
60
+ let inQuote = null;
61
+ for (const ch of input.trim()) {
62
+ if (inQuote) {
63
+ if (ch === inQuote) {
64
+ inQuote = null;
65
+ }
66
+ else {
67
+ current += ch;
68
+ }
69
+ }
70
+ else if (ch === '"' || ch === "'") {
71
+ inQuote = ch;
72
+ }
73
+ else if (/\s/.test(ch)) {
74
+ if (current) {
75
+ tokens.push(current);
76
+ current = '';
77
+ }
78
+ }
79
+ else {
80
+ current += ch;
81
+ }
82
+ }
83
+ if (current)
84
+ tokens.push(current);
85
+ return tokens;
86
+ }
87
+ /**
88
+ * Splits one line of a `batch` command string into a subcommand name, its
89
+ * args, and any recognized leading flags.
90
+ *
91
+ * `eval` is special-cased: its sole argument is a raw JS expression, which
92
+ * legitimately contains its own string-literal quotes (e.g.
93
+ * `eval document.querySelector('a')`). tokenizeBatchCommand's shell-style
94
+ * word-splitting treats `'...'`/`"..."` as grouping delimiters and discards
95
+ * them — correct for a value like `fill @e1 "some text"`, but for `eval` it
96
+ * silently deletes the expression's own quotes, turning a string literal
97
+ * into a bare (undefined) identifier reference and producing a
98
+ * ReferenceError instead of evaluating the intended expression. For `eval`,
99
+ * only its own known --flags are consumed from the front; everything after
100
+ * them is taken verbatim as one argument, untouched by tokenization.
101
+ *
102
+ /**
103
+ * `get box`'s output shape: browser.getElementBox() returns the element's
104
+ * CENTER point under x/y (correct for internal click-target callers), but
105
+ * `get box` is a bounding-box accessor where x/y conventionally means the
106
+ * top-left origin — a caller computing its own center as `box.x + width/2`
107
+ * would otherwise double-offset away from the element (issue #15). Expose
108
+ * both conventions, explicitly labeled, so neither is ambiguous.
109
+ *
110
+ * Exported for direct unit testing — not part of the CLI's public API.
111
+ */
112
+ export function parseBatchCommandLine(cmdStr) {
113
+ const trimmed = cmdStr.trim();
114
+ const evalMatch = trimmed.match(/^eval\b\s*/);
115
+ if (!evalMatch) {
116
+ const parts = tokenizeBatchCommand(trimmed);
117
+ return { subName: parts[0], subArgs: parts.slice(1), flags: {} };
118
+ }
119
+ let rest = trimmed.slice(evalMatch[0].length);
120
+ const flags = {};
121
+ let consumedAnother = true;
122
+ while (consumedAnother) {
123
+ consumedAnother = false;
124
+ const withValue = rest.match(/^--(max-output|timeout)\s+(-?\d+)\s*/);
125
+ if (withValue) {
126
+ flags[withValue[1]] = Number(withValue[2]);
127
+ rest = rest.slice(withValue[0].length);
128
+ consumedAnother = true;
129
+ continue;
130
+ }
131
+ const boolFlag = rest.match(/^--(json|stdin)\b\s*/);
132
+ if (boolFlag) {
133
+ flags[boolFlag[1]] = true;
134
+ rest = rest.slice(boolFlag[0].length);
135
+ consumedAnother = true;
136
+ }
137
+ }
138
+ return { subName: 'eval', subArgs: [rest], flags };
139
+ }
140
+ export const addinitscriptCommand = {
141
+ name: 'addinitscript',
142
+ description: 'Add script to run before page navigation. Usage: monomind browse addinitscript "window.x=1"',
143
+ action: async (ctx) => {
144
+ const { client, sessionId } = await ensureConnected(session.port);
145
+ const browser = await getBrowser();
146
+ const script = ctx.args[0];
147
+ if (!script)
148
+ throw new Error('Usage: monomind browse addinitscript "<js>"');
149
+ const id = await browser.addInitScript(client, sessionId, script);
150
+ output.printSuccess(`Init script added: ${id}`);
151
+ return { success: true, data: { identifier: id } };
152
+ },
153
+ };
154
+ export const removeinitscriptCommand = {
155
+ name: 'removeinitscript',
156
+ description: 'Remove a previously added init script. Usage: monomind browse removeinitscript <id>',
157
+ action: async (ctx) => {
158
+ const { client, sessionId } = await ensureConnected(session.port);
159
+ const browser = await getBrowser();
160
+ const id = ctx.args[0];
161
+ if (!id)
162
+ throw new Error('Usage: monomind browse removeinitscript <identifier>');
163
+ await browser.removeInitScript(client, sessionId, id);
164
+ output.printSuccess(`Init script removed: ${id}`);
165
+ return { success: true };
166
+ },
167
+ };
168
+ //# sourceMappingURL=commands-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-script.js","sourceRoot":"","sources":["../../../src/cli/commands-script.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Session lifecycle — starting a browser session, attaching to one someone
3
+ * else started, and ending it.
4
+ *
5
+ * `open` launches (or reuses) headless Chrome and is the only command that can
6
+ * escalate to a headed window for a login/CAPTCHA wall. `connect` attaches to
7
+ * a browser the user already runs, which is why `close` treats the two
8
+ * differently: it must never kill a Chrome it did not launch.
9
+ */
10
+ import type { Command } from './types.js';
11
+ export declare const openCommand: Command;
12
+ export declare const closeCommand: Command;
13
+ export declare const connectCommand: Command;
14
+ export declare const resizeCommand: Command;
15
+ //# sourceMappingURL=commands-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-session.d.ts","sourceRoot":"","sources":["../../../src/cli/commands-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAEzE,eAAO,MAAM,WAAW,EAAE,OAyIzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OAwG1B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,OA6F5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAc3B,CAAC"}
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Session lifecycle — starting a browser session, attaching to one someone
3
+ * else started, and ending it.
4
+ *
5
+ * `open` launches (or reuses) headless Chrome and is the only command that can
6
+ * escalate to a headed window for a login/CAPTCHA wall. `connect` attaches to
7
+ * a browser the user already runs, which is why `close` treats the two
8
+ * differently: it must never kill a Chrome it did not launch.
9
+ */
10
+ import { output } from './output.js';
11
+ import { detectAttentionNeeded, ensureConnected, ensureSignalCleanupHandlers, getBrowser, session, switchToHeaded, } from './session.js';
12
+ export const openCommand = {
13
+ name: 'open',
14
+ description: 'Open a URL in the browser. Usage: monomind browse open <url>',
15
+ options: [
16
+ { name: 'port', short: 'p', type: 'number', description: 'CDP port', default: 9222 },
17
+ {
18
+ name: 'headed',
19
+ type: 'boolean',
20
+ description: 'Force visible browser window',
21
+ default: false,
22
+ },
23
+ { name: 'session', short: 's', type: 'string', description: 'Session name to restore' },
24
+ { name: 'state', type: 'string', description: 'State file to load' },
25
+ ],
26
+ action: async (ctx) => {
27
+ const url = ctx.args[0];
28
+ if (!url)
29
+ throw new Error('URL required. Usage: monomind browse open <url>');
30
+ const port = ctx.flags.port ?? 9222;
31
+ const forceHeaded = ctx.flags.headed;
32
+ const browser = await getBrowser();
33
+ if (session.client) {
34
+ const prevSid = session.sessionId;
35
+ const prevClient = session.client;
36
+ if (browser.getHarStatus(prevSid).recording) {
37
+ try {
38
+ await browser.stopHarRecording(prevClient, prevSid);
39
+ }
40
+ catch {
41
+ /* ignore */
42
+ }
43
+ }
44
+ if (browser.getTraceStatus(prevSid)) {
45
+ try {
46
+ await browser.stopTrace(prevClient, prevSid);
47
+ }
48
+ catch {
49
+ /* ignore */
50
+ }
51
+ }
52
+ if (browser.isProfilingActive(prevSid)) {
53
+ try {
54
+ await browser.stopCpuProfile(prevClient, prevSid);
55
+ }
56
+ catch {
57
+ /* ignore */
58
+ }
59
+ }
60
+ browser.teardownRouteInterception(prevSid);
61
+ browser.stopRequestCapture(prevSid);
62
+ browser.teardownDialogHandling(prevSid);
63
+ browser.teardownConsoleCapture(prevSid);
64
+ prevClient.close();
65
+ session.client = null;
66
+ session.sessionId = '';
67
+ session.parentSessionId = '';
68
+ session.targetId = '';
69
+ session.refs = new Map();
70
+ }
71
+ session.port = await browser.launchBrowser({ port, headless: !forceHeaded });
72
+ // Persist the active port so subsequent CLI invocations (each a fresh
73
+ // process) default to attaching here instead of hardcoded 9222. Also
74
+ // persist the launched PID/userDataDir so a later process's closeBrowser
75
+ // can still kill this Chrome even though launchedPids (browser.ts) is
76
+ // per-process and empty there.
77
+ //
78
+ // launchBrowser() can either LAUNCH a fresh Chrome or ATTACH to one
79
+ // already listening on the requested port (see its own "attach if
80
+ // already Chrome" comment) — it returns only a port number, with no
81
+ // signal telling this caller which happened. getLaunchedPid(session.port) is
82
+ // undefined on the attach path (this process never spawned anything).
83
+ // Bug fixed here: unconditionally saving {pid: undefined, ...} on
84
+ // attach used to CLOBBER a real PID a previous `open` had already
85
+ // persisted for this exact port, destroying the only way a later
86
+ // process's closeBrowser() PID-kill fallback could ever find it.
87
+ const freshPid = browser.getLaunchedPid(session.port);
88
+ const freshUserDataDir = browser.getLaunchedUserDataDir(session.port);
89
+ if (freshPid !== undefined) {
90
+ await browser.saveActivePort(session.port, { pid: freshPid, userDataDir: freshUserDataDir });
91
+ }
92
+ else {
93
+ // Attach path: preserve whatever PID/userDataDir was already on file
94
+ // for this port (most likely from the process that originally
95
+ // launched it) instead of overwriting with undefined.
96
+ const existing = await browser.loadActivePortInfo();
97
+ const preserved = existing && existing.port === session.port ? existing : undefined;
98
+ await browser.saveActivePort(session.port, {
99
+ pid: preserved?.pid,
100
+ userDataDir: preserved?.userDataDir,
101
+ });
102
+ }
103
+ ensureSignalCleanupHandlers();
104
+ const conn = await browser.connectToTarget(session.port);
105
+ session.client = conn.client;
106
+ session.sessionId = conn.sessionId;
107
+ session.targetId = conn.target.id;
108
+ session.refs = new Map();
109
+ // A snapshot taken before this navigation is no longer valid for the new
110
+ // page — drop the persisted ref cache so a stale process's weak
111
+ // time-based check can't resurrect it before the next explicit snapshot.
112
+ await browser.clearRefCache();
113
+ if (ctx.flags.state && ctx.flags.session) {
114
+ output.printWarning('Both --state and --session provided; --state takes precedence');
115
+ }
116
+ if (ctx.flags.state) {
117
+ await browser.loadStateFile(session.client, session.sessionId, ctx.flags.state);
118
+ }
119
+ else if (ctx.flags.session) {
120
+ await browser.loadSession(session.client, session.sessionId, ctx.flags.session);
121
+ }
122
+ await browser.openUrl(session.client, session.sessionId, url);
123
+ const currentUrl = await browser.getCurrentUrl(session.client, session.sessionId);
124
+ // Auto-detect login/CAPTCHA walls and switch to headed if needed
125
+ if (!forceHeaded) {
126
+ const attentionType = await detectAttentionNeeded(session.client, session.sessionId, currentUrl);
127
+ if (attentionType) {
128
+ output.printWarning(`${attentionType === 'captcha' ? 'CAPTCHA' : 'Login'} detected — switching to headed mode`);
129
+ await switchToHeaded(currentUrl, port);
130
+ await browser.openUrl(session.client, session.sessionId, currentUrl);
131
+ output.printSuccess(`Resumed headless after ${attentionType === 'captcha' ? 'CAPTCHA' : 'login'}`);
132
+ }
133
+ }
134
+ const finalUrl = await browser.getCurrentUrl(session.client, session.sessionId);
135
+ const title = await browser.getCurrentTitle(session.client, session.sessionId);
136
+ output.printSuccess(`Opened: ${title} (${finalUrl})`);
137
+ return { success: true, data: { url: finalUrl, title } };
138
+ },
139
+ };
140
+ export const closeCommand = {
141
+ name: 'close',
142
+ description: 'Close the active browser session',
143
+ action: async (_ctx) => {
144
+ if (session.client) {
145
+ const browser = await getBrowser();
146
+ const sid = session.sessionId;
147
+ const client = session.client;
148
+ // Tear down per-session Maps and listeners before closing
149
+ if (browser.getHarStatus(sid).recording) {
150
+ try {
151
+ await browser.stopHarRecording(client, sid);
152
+ }
153
+ catch {
154
+ /* ignore */
155
+ }
156
+ }
157
+ if (browser.getTraceStatus(sid)) {
158
+ try {
159
+ await browser.stopTrace(client, sid);
160
+ }
161
+ catch {
162
+ /* ignore */
163
+ }
164
+ }
165
+ if (browser.isProfilingActive(sid)) {
166
+ try {
167
+ await browser.stopCpuProfile(client, sid);
168
+ }
169
+ catch {
170
+ /* ignore */
171
+ }
172
+ }
173
+ browser.teardownRouteInterception(sid);
174
+ browser.stopRequestCapture(sid);
175
+ browser.teardownDialogHandling(sid);
176
+ browser.teardownConsoleCapture(sid);
177
+ client.close();
178
+ session.client = null;
179
+ session.sessionId = '';
180
+ session.parentSessionId = '';
181
+ session.targetId = '';
182
+ session.refs = new Map();
183
+ // Session is gone — forget the persisted port and stale refs so later
184
+ // invocations don't chase a dead endpoint (or the wrong elements).
185
+ await browser.clearActivePort();
186
+ await browser.clearRefCache();
187
+ output.printSuccess('Browser session closed');
188
+ }
189
+ else {
190
+ // Each CLI invocation is a fresh process, so `close` almost always
191
+ // lands here. The persisted port file is the real session handle:
192
+ // if monobrowse LAUNCHED that browser (open), gracefully Browser.close
193
+ // it — otherwise every open→close cycle leaks a headless Chrome. If we
194
+ // merely ATTACHED to it (connect, launched:false), never kill it: it's
195
+ // the user's own browser. Either way, forget the port and refs.
196
+ const browser = await getBrowser();
197
+ const persisted = await browser.loadActivePortInfo();
198
+ if (persisted?.launched) {
199
+ try {
200
+ const conn = await browser.connectToTarget(persisted.port);
201
+ try {
202
+ await browser.closeBrowser(conn.client, persisted.port);
203
+ }
204
+ finally {
205
+ // Always drop our websocket — a hung Browser.close must not keep
206
+ // this CLI process's event loop alive.
207
+ try {
208
+ conn.client.close();
209
+ }
210
+ catch {
211
+ /* already gone */
212
+ }
213
+ }
214
+ // closeBrowser has no PID fallback in a fresh process (launchedPids
215
+ // is per-process) — re-probe so we report what actually happened.
216
+ // Poll briefly: Browser.close is acknowledged before the process
217
+ // actually exits, so a single immediate probe false-alarms.
218
+ let stillUp = true;
219
+ const probeDeadline = Date.now() + 3000;
220
+ while (stillUp && Date.now() < probeDeadline) {
221
+ try {
222
+ await fetch(`http://127.0.0.1:${persisted.port}/json/version`, {
223
+ signal: AbortSignal.timeout(800),
224
+ });
225
+ await new Promise((r) => setTimeout(r, 300));
226
+ }
227
+ catch {
228
+ stillUp = false;
229
+ }
230
+ }
231
+ if (stillUp)
232
+ output.printWarning(`Browser on port ${persisted.port} did not exit — kill it manually if needed`);
233
+ else
234
+ output.printSuccess(`Closed browser on port ${persisted.port}`);
235
+ }
236
+ catch {
237
+ output.printInfo(`No browser answering on port ${persisted.port} — nothing to close`);
238
+ }
239
+ }
240
+ else {
241
+ output.printInfo(persisted
242
+ ? `Detached from browser on port ${persisted.port} (attached via connect — left running)`
243
+ : 'No active browser session');
244
+ }
245
+ await browser.clearActivePort();
246
+ await browser.clearRefCache();
247
+ }
248
+ return { success: true };
249
+ },
250
+ };
251
+ export const connectCommand = {
252
+ name: 'connect',
253
+ description: 'Connect to existing Chrome instance; later commands reuse this session (note: `open` without --port still launches on its own default). Usage: monomind browse connect [--port 9222] [--target <id>] [--auto-connect]',
254
+ options: [
255
+ { name: 'port', short: 'p', type: 'number', description: 'CDP port', default: 9222 },
256
+ { name: 'target', type: 'string', description: 'Target ID to attach to' },
257
+ {
258
+ name: 'auto-connect',
259
+ type: 'boolean',
260
+ description: 'Auto-discover running Chrome on ports 9222 and 9229',
261
+ default: false,
262
+ },
263
+ ],
264
+ action: async (ctx) => {
265
+ let port = ctx.flags.port ?? 9222;
266
+ if (ctx.flags['auto-connect']) {
267
+ const probePorts = [9222, 9229];
268
+ let found = false;
269
+ for (const p of probePorts) {
270
+ try {
271
+ const r = await fetch(`http://127.0.0.1:${p}/json/version`);
272
+ if (r.ok) {
273
+ port = p;
274
+ found = true;
275
+ break;
276
+ }
277
+ }
278
+ catch {
279
+ /* port not open */
280
+ }
281
+ }
282
+ if (!found)
283
+ throw new Error('No running Chrome instance found. Launch Chrome with --remote-debugging-port or use --port.');
284
+ }
285
+ const browser = await getBrowser();
286
+ if (session.client) {
287
+ const prevSid = session.sessionId;
288
+ const prevClient = session.client;
289
+ if (browser.getHarStatus(prevSid).recording) {
290
+ try {
291
+ await browser.stopHarRecording(prevClient, prevSid);
292
+ }
293
+ catch {
294
+ /* ignore */
295
+ }
296
+ }
297
+ if (browser.getTraceStatus(prevSid)) {
298
+ try {
299
+ await browser.stopTrace(prevClient, prevSid);
300
+ }
301
+ catch {
302
+ /* ignore */
303
+ }
304
+ }
305
+ if (browser.isProfilingActive(prevSid)) {
306
+ try {
307
+ await browser.stopCpuProfile(prevClient, prevSid);
308
+ }
309
+ catch {
310
+ /* ignore */
311
+ }
312
+ }
313
+ browser.teardownRouteInterception(prevSid);
314
+ browser.stopRequestCapture(prevSid);
315
+ browser.teardownDialogHandling(prevSid);
316
+ browser.teardownConsoleCapture(prevSid);
317
+ prevClient.close();
318
+ session.client = null;
319
+ session.sessionId = '';
320
+ session.parentSessionId = '';
321
+ session.targetId = '';
322
+ session.refs = new Map();
323
+ }
324
+ const conn = await browser.connectToTarget(port, ctx.flags.target);
325
+ session.client = conn.client;
326
+ session.sessionId = conn.sessionId;
327
+ session.targetId = conn.target.id;
328
+ session.port = port;
329
+ session.refs = new Map();
330
+ // Persist the port like `open` does — without this, the NEXT CLI process
331
+ // (each command is a fresh process) resolves the hardcoded default and
332
+ // tries to launch its own Chrome on 9222 instead of reusing this session.
333
+ // launched:false marks this browser as someone else's — close must never
334
+ // kill it, and a dead endpoint must not be silently relaunched.
335
+ await browser.saveActivePort(port, { launched: false });
336
+ const url = await browser.getCurrentUrl(session.client, session.sessionId);
337
+ const title = await browser.getCurrentTitle(session.client, session.sessionId);
338
+ output.printSuccess(`Connected: ${title} (${url})`);
339
+ return { success: true, data: { targetId: session.targetId, url, title } };
340
+ },
341
+ };
342
+ export const resizeCommand = {
343
+ name: 'resize',
344
+ description: 'Resize browser window. Usage: monomind browse resize <width> <height>',
345
+ action: async (ctx) => {
346
+ const { client, sessionId } = await ensureConnected(session.port);
347
+ const browser = await getBrowser();
348
+ const width = parseInt(ctx.args[0], 10);
349
+ const height = parseInt(ctx.args[1], 10);
350
+ if (Number.isNaN(width) || Number.isNaN(height))
351
+ throw new Error('Usage: monomind browse resize <width> <height>');
352
+ await browser.setViewport(client, sessionId, width, height);
353
+ output.printSuccess(`Resized to ${width}x${height}`);
354
+ return { success: true, data: { width, height } };
355
+ },
356
+ };
357
+ //# sourceMappingURL=commands-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-session.js","sourceRoot":"","sources":["../../../src/cli/commands-session.ts"],"names":[],"mappings":"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"}