@monoes/monomindcli 1.10.29 → 1.10.30

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 (80) hide show
  1. package/.claude/helpers/auto-memory-hook.mjs +39 -4
  2. package/.claude/helpers/handlers/edit-handler.cjs +145 -0
  3. package/.claude/helpers/handlers/route-handler.cjs +393 -0
  4. package/.claude/helpers/handlers/session-handler.cjs +167 -0
  5. package/.claude/helpers/handlers/session-restore-handler.cjs +343 -0
  6. package/.claude/helpers/handlers/task-handler.cjs +329 -0
  7. package/.claude/helpers/hook-handler.cjs +114 -2273
  8. package/.claude/helpers/intelligence.cjs +21 -2
  9. package/.claude/helpers/learning-service.mjs +166 -8
  10. package/.claude/helpers/memory-palace.cjs +72 -12
  11. package/.claude/helpers/router.cjs +79 -5
  12. package/.claude/helpers/statusline.cjs +193 -399
  13. package/.claude/helpers/utils/micro-agents.cjs +338 -0
  14. package/.claude/helpers/utils/monograph.cjs +349 -0
  15. package/.claude/helpers/utils/telemetry.cjs +144 -0
  16. package/.claude/skills/agent-browser-testing/SKILL.md +3 -2
  17. package/.claude/skills/monomind/browse-agentcore.md +116 -0
  18. package/.claude/skills/monomind/browse-electron.md +189 -0
  19. package/.claude/skills/monomind/browse-qa.md +229 -0
  20. package/.claude/skills/monomind/browse-references/authentication.md +162 -0
  21. package/.claude/skills/monomind/browse-references/trust-boundaries.md +41 -0
  22. package/.claude/skills/monomind/browse-references/video-recording.md +84 -0
  23. package/.claude/skills/monomind/browse-slack.md +189 -0
  24. package/.claude/skills/monomind/browse-vercel.md +240 -0
  25. package/.claude/skills/monomind/browse.md +724 -0
  26. package/dist/src/browser/actions.d.ts +13 -0
  27. package/dist/src/browser/actions.d.ts.map +1 -0
  28. package/dist/src/browser/actions.js +201 -0
  29. package/dist/src/browser/actions.js.map +1 -0
  30. package/dist/src/browser/browser.d.ts +14 -0
  31. package/dist/src/browser/browser.d.ts.map +1 -0
  32. package/dist/src/browser/browser.js +198 -0
  33. package/dist/src/browser/browser.js.map +1 -0
  34. package/dist/src/browser/cdp.d.ts +17 -0
  35. package/dist/src/browser/cdp.d.ts.map +1 -0
  36. package/dist/src/browser/cdp.js +106 -0
  37. package/dist/src/browser/cdp.js.map +1 -0
  38. package/dist/src/browser/index.d.ts +11 -0
  39. package/dist/src/browser/index.d.ts.map +1 -0
  40. package/dist/src/browser/index.js +11 -0
  41. package/dist/src/browser/index.js.map +1 -0
  42. package/dist/src/browser/network.d.ts +11 -0
  43. package/dist/src/browser/network.d.ts.map +1 -0
  44. package/dist/src/browser/network.js +81 -0
  45. package/dist/src/browser/network.js.map +1 -0
  46. package/dist/src/browser/screenshot.d.ts +15 -0
  47. package/dist/src/browser/screenshot.d.ts.map +1 -0
  48. package/dist/src/browser/screenshot.js +36 -0
  49. package/dist/src/browser/screenshot.js.map +1 -0
  50. package/dist/src/browser/session.d.ts +8 -0
  51. package/dist/src/browser/session.d.ts.map +1 -0
  52. package/dist/src/browser/session.js +50 -0
  53. package/dist/src/browser/session.js.map +1 -0
  54. package/dist/src/browser/snapshot.d.ts +12 -0
  55. package/dist/src/browser/snapshot.d.ts.map +1 -0
  56. package/dist/src/browser/snapshot.js +147 -0
  57. package/dist/src/browser/snapshot.js.map +1 -0
  58. package/dist/src/browser/tabs.d.ts +8 -0
  59. package/dist/src/browser/tabs.d.ts.map +1 -0
  60. package/dist/src/browser/tabs.js +25 -0
  61. package/dist/src/browser/tabs.js.map +1 -0
  62. package/dist/src/browser/types.d.ts +109 -0
  63. package/dist/src/browser/types.d.ts.map +1 -0
  64. package/dist/src/browser/types.js +16 -0
  65. package/dist/src/browser/types.js.map +1 -0
  66. package/dist/src/browser/wait.d.ts +4 -0
  67. package/dist/src/browser/wait.d.ts.map +1 -0
  68. package/dist/src/browser/wait.js +122 -0
  69. package/dist/src/browser/wait.js.map +1 -0
  70. package/dist/src/commands/browse.d.ts +8 -0
  71. package/dist/src/commands/browse.d.ts.map +1 -0
  72. package/dist/src/commands/browse.js +573 -0
  73. package/dist/src/commands/browse.js.map +1 -0
  74. package/dist/src/commands/index.d.ts.map +1 -1
  75. package/dist/src/commands/index.js +2 -0
  76. package/dist/src/commands/index.js.map +1 -1
  77. package/dist/src/ui/dashboard-v2.html +1692 -0
  78. package/dist/src/ui/server.mjs +15 -1
  79. package/dist/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +2 -1
@@ -0,0 +1,573 @@
1
+ /**
2
+ * Browse Command — Native browser automation via Chrome DevTools Protocol
3
+ * Provides ref-based element model and token-efficient accessibility snapshots
4
+ */
5
+ import { output } from '../output.js';
6
+ // Runtime state (single session per CLI process)
7
+ let _client = null;
8
+ let _sessionId = '';
9
+ let _targetId = '';
10
+ let _port = 9222;
11
+ let _refs = new Map();
12
+ async function getBrowser() {
13
+ return import('../browser/index.js');
14
+ }
15
+ async function ensureConnected(port, targetId) {
16
+ const browser = await getBrowser();
17
+ if (!_client || !_client.isConnected()) {
18
+ _port = await browser.launchBrowser({ port, headless: false });
19
+ const conn = await browser.connectToTarget(_port, targetId);
20
+ _client = conn.client;
21
+ _sessionId = conn.sessionId;
22
+ _targetId = conn.target.id;
23
+ _refs = new Map();
24
+ }
25
+ return { client: _client, sessionId: _sessionId, targetId: _targetId };
26
+ }
27
+ function print(msg) {
28
+ process.stdout.write(msg + '\n');
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // Sub-commands
32
+ // ---------------------------------------------------------------------------
33
+ const openCommand = {
34
+ name: 'open',
35
+ description: 'Open a URL in the browser. Usage: monomind browse open <url>',
36
+ options: [
37
+ { name: 'port', short: 'p', type: 'number', description: 'CDP port', default: 9222 },
38
+ { name: 'headless', type: 'boolean', description: 'Run in headless mode', default: false },
39
+ { name: 'session', short: 's', type: 'string', description: 'Session name to restore' },
40
+ { name: 'state', type: 'string', description: 'State file to load' },
41
+ ],
42
+ action: async (ctx) => {
43
+ const url = ctx.args[0];
44
+ if (!url)
45
+ throw new Error('URL required. Usage: monomind browse open <url>');
46
+ const port = ctx.flags.port ?? 9222;
47
+ const browser = await getBrowser();
48
+ _port = await browser.launchBrowser({ port, headless: ctx.flags.headless });
49
+ const conn = await browser.connectToTarget(_port);
50
+ _client = conn.client;
51
+ _sessionId = conn.sessionId;
52
+ _targetId = conn.target.id;
53
+ _refs = new Map();
54
+ if (ctx.flags.state) {
55
+ await browser.loadStateFile(_client, _sessionId, ctx.flags.state);
56
+ }
57
+ else if (ctx.flags.session) {
58
+ await browser.loadSession(_client, _sessionId, ctx.flags.session);
59
+ }
60
+ await browser.openUrl(_client, _sessionId, url);
61
+ const currentUrl = await browser.getCurrentUrl(_client, _sessionId);
62
+ const title = await browser.getCurrentTitle(_client, _sessionId);
63
+ output.printSuccess(`Opened: ${title} (${currentUrl})`);
64
+ return { success: true, data: { url: currentUrl, title } };
65
+ },
66
+ };
67
+ const snapshotCommand = {
68
+ name: 'snapshot',
69
+ description: 'Capture accessibility snapshot with ref-based element handles (@e1, @e2, ...)',
70
+ options: [
71
+ { name: 'interactive', short: 'i', type: 'boolean', description: 'Interactive elements only (93% token reduction)', default: false },
72
+ { name: 'compact', short: 'c', type: 'boolean', description: 'Compact output format', default: false },
73
+ { name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
74
+ ],
75
+ action: async (ctx) => {
76
+ const { client, sessionId } = await ensureConnected(_port);
77
+ const browser = await getBrowser();
78
+ const result = await browser.captureSnapshot(client, sessionId, {
79
+ interactiveOnly: ctx.flags.interactive,
80
+ compact: ctx.flags.compact,
81
+ });
82
+ _refs = result.refs;
83
+ if (ctx.flags.json) {
84
+ const refsObj = Object.fromEntries([...result.refs.entries()].map(([k, v]) => [k, v]));
85
+ print(JSON.stringify({ url: result.url, title: result.title, refs: refsObj, snapshot: result.text }));
86
+ }
87
+ else {
88
+ print(`[${result.title}] ${result.url}\n`);
89
+ print(result.text);
90
+ }
91
+ return { success: true, data: result };
92
+ },
93
+ };
94
+ const clickCommand = {
95
+ name: 'click',
96
+ description: 'Click an element by ref (@e1) or coordinates. Usage: monomind browse click @e1',
97
+ options: [
98
+ { name: 'right', type: 'boolean', description: 'Right-click', default: false },
99
+ { name: 'double', type: 'boolean', description: 'Double-click', default: false },
100
+ { name: 'x', type: 'number', description: 'X coordinate (for point click)' },
101
+ { name: 'y', type: 'number', description: 'Y coordinate (for point click)' },
102
+ ],
103
+ action: async (ctx) => {
104
+ const { client, sessionId } = await ensureConnected(_port);
105
+ const browser = await getBrowser();
106
+ const refArg = ctx.args[0];
107
+ if (!refArg && ctx.flags.x === undefined)
108
+ throw new Error('Ref (@e1) or --x/--y required');
109
+ if (ctx.flags.x !== undefined && ctx.flags.y !== undefined) {
110
+ await browser.clickPoint(client, sessionId, ctx.flags.x, ctx.flags.y);
111
+ output.printSuccess(`Clicked at (${ctx.flags.x}, ${ctx.flags.y})`);
112
+ return { success: true };
113
+ }
114
+ const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
115
+ const ref = await browser.resolveRef(client, sessionId, _refs, refKey);
116
+ await browser.clickElement(client, sessionId, ref, {
117
+ button: ctx.flags.right ? 'right' : 'left',
118
+ clickCount: ctx.flags.double ? 2 : 1,
119
+ });
120
+ output.printSuccess(`Clicked: ${ref.role} "${ref.name}"`);
121
+ return { success: true };
122
+ },
123
+ };
124
+ const fillCommand = {
125
+ name: 'fill',
126
+ description: 'Fill an input element. Usage: monomind browse fill @e1 "text value"',
127
+ action: async (ctx) => {
128
+ const { client, sessionId } = await ensureConnected(_port);
129
+ const browser = await getBrowser();
130
+ const refArg = ctx.args[0];
131
+ const value = ctx.args[1];
132
+ if (!refArg || value === undefined)
133
+ throw new Error('Usage: monomind browse fill @e1 "value"');
134
+ const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
135
+ const ref = await browser.resolveRef(client, sessionId, _refs, refKey);
136
+ await browser.fillElement(client, sessionId, ref, value);
137
+ output.printSuccess(`Filled: ${ref.role} "${ref.name}"`);
138
+ return { success: true };
139
+ },
140
+ };
141
+ const pressCommand = {
142
+ name: 'press',
143
+ description: 'Press a keyboard key. Usage: monomind browse press Enter',
144
+ action: async (ctx) => {
145
+ const { client, sessionId } = await ensureConnected(_port);
146
+ const browser = await getBrowser();
147
+ const key = ctx.args[0];
148
+ if (!key)
149
+ throw new Error('Key required. E.g.: monomind browse press Enter');
150
+ await browser.pressKey(client, sessionId, key);
151
+ output.printSuccess(`Pressed: ${key}`);
152
+ return { success: true };
153
+ },
154
+ };
155
+ const waitCommand = {
156
+ name: 'wait',
157
+ description: 'Wait for a condition to be met before proceeding',
158
+ options: [
159
+ { name: 'url', type: 'string', description: 'Wait for URL matching glob pattern' },
160
+ { name: 'text', type: 'string', description: 'Wait for text to appear in page' },
161
+ { name: 'selector', type: 'string', description: 'Wait for CSS selector to appear' },
162
+ { name: 'load', type: 'string', description: 'Wait for load event: load|networkidle|domcontentloaded' },
163
+ { name: 'ms', type: 'number', description: 'Wait N milliseconds' },
164
+ { name: 'timeout', short: 't', type: 'number', description: 'Timeout in ms', default: 30000 },
165
+ ],
166
+ action: async (ctx) => {
167
+ const { client, sessionId } = await ensureConnected(_port);
168
+ const browser = await getBrowser();
169
+ if (ctx.flags.ms) {
170
+ await new Promise((r) => setTimeout(r, ctx.flags.ms));
171
+ output.printSuccess(`Waited ${ctx.flags.ms}ms`);
172
+ return { success: true };
173
+ }
174
+ await browser.waitFor(client, sessionId, {
175
+ url: ctx.flags.url,
176
+ text: ctx.flags.text,
177
+ selector: ctx.flags.selector,
178
+ load: ctx.flags.load,
179
+ timeout: ctx.flags.timeout,
180
+ });
181
+ output.printSuccess('Wait condition met');
182
+ return { success: true };
183
+ },
184
+ };
185
+ const screenshotCommand = {
186
+ name: 'screenshot',
187
+ description: 'Capture a screenshot. Usage: monomind browse screenshot [path]',
188
+ options: [
189
+ { name: 'full', type: 'boolean', description: 'Full page screenshot', default: false },
190
+ { name: 'format', type: 'string', description: 'Format: png|jpeg|webp', default: 'png' },
191
+ { name: 'quality', type: 'number', description: 'Quality 0-100 for jpeg/webp', default: 80 },
192
+ { name: 'json', type: 'boolean', description: 'Output JSON with path', default: false },
193
+ ],
194
+ action: async (ctx) => {
195
+ const { client, sessionId } = await ensureConnected(_port);
196
+ const browser = await getBrowser();
197
+ const result = await browser.captureScreenshot(client, sessionId, {
198
+ path: ctx.args[0],
199
+ fullPage: ctx.flags.full,
200
+ format: ctx.flags.format,
201
+ quality: ctx.flags.quality,
202
+ });
203
+ if (ctx.flags.json) {
204
+ print(JSON.stringify({ data: { path: result.path } }));
205
+ }
206
+ else {
207
+ output.printSuccess(`Screenshot saved: ${result.path}`);
208
+ }
209
+ return { success: true, data: result };
210
+ },
211
+ };
212
+ const getCommand = {
213
+ name: 'get',
214
+ description: 'Get page info. Usage: monomind browse get url|title|text|html [@ref]',
215
+ options: [
216
+ { name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
217
+ ],
218
+ action: async (ctx) => {
219
+ const { client, sessionId } = await ensureConnected(_port);
220
+ const browser = await getBrowser();
221
+ const what = ctx.args[0];
222
+ if (!what)
223
+ throw new Error('Usage: monomind browse get url|title|text|html');
224
+ let value;
225
+ switch (what) {
226
+ case 'url':
227
+ value = await browser.getCurrentUrl(client, sessionId);
228
+ break;
229
+ case 'title':
230
+ value = await browser.getCurrentTitle(client, sessionId);
231
+ break;
232
+ case 'text': {
233
+ const refArg = ctx.args[1];
234
+ if (refArg) {
235
+ const refKey = refArg.startsWith('@') ? refArg.slice(1) : refArg;
236
+ const ref = _refs.get(refKey);
237
+ if (!ref)
238
+ throw new Error(`Ref @${refKey} not found`);
239
+ const objectId = await browser.getObjectIdForRef(client, sessionId, ref);
240
+ if (!objectId)
241
+ throw new Error('Element not in DOM');
242
+ const result = await client.send('Runtime.callFunctionOn', {
243
+ functionDeclaration: 'function() { return this.innerText || this.textContent || ""; }',
244
+ objectId,
245
+ returnByValue: true,
246
+ }, sessionId);
247
+ value = result.result?.value ?? '';
248
+ }
249
+ else {
250
+ value = (await browser.evaluateJs(client, sessionId, 'document.body.innerText'));
251
+ }
252
+ break;
253
+ }
254
+ case 'html':
255
+ value = (await browser.evaluateJs(client, sessionId, 'document.documentElement.outerHTML'));
256
+ break;
257
+ default:
258
+ throw new Error(`Unknown: ${what}. Use: url|title|text|html`);
259
+ }
260
+ if (ctx.flags.json) {
261
+ print(JSON.stringify({ data: { [what]: value } }));
262
+ }
263
+ else {
264
+ print(value);
265
+ }
266
+ return { success: true, data: { [what]: value } };
267
+ },
268
+ };
269
+ const scrollCommand = {
270
+ name: 'scroll',
271
+ description: 'Scroll the page. Usage: monomind browse scroll up|down|left|right',
272
+ options: [
273
+ { name: 'amount', short: 'a', type: 'number', description: 'Pixels to scroll', default: 300 },
274
+ { name: 'ref', type: 'string', description: 'Element ref to scroll within' },
275
+ ],
276
+ action: async (ctx) => {
277
+ const { client, sessionId } = await ensureConnected(_port);
278
+ const browser = await getBrowser();
279
+ const direction = ctx.args[0];
280
+ if (!direction)
281
+ throw new Error('Usage: monomind browse scroll up|down|left|right');
282
+ let ref;
283
+ if (ctx.flags.ref) {
284
+ const refKey = ctx.flags.ref.startsWith('@')
285
+ ? ctx.flags.ref.slice(1)
286
+ : ctx.flags.ref;
287
+ ref = _refs.get(refKey);
288
+ }
289
+ await browser.scrollElement(client, sessionId, direction, ctx.flags.amount, ref);
290
+ output.printSuccess(`Scrolled ${direction}`);
291
+ return { success: true };
292
+ },
293
+ };
294
+ const navigateCommand = {
295
+ name: 'navigate',
296
+ description: 'Navigate browser history. Usage: monomind browse navigate back|forward|reload',
297
+ action: async (ctx) => {
298
+ const { client, sessionId } = await ensureConnected(_port);
299
+ const direction = ctx.args[0];
300
+ if (!direction)
301
+ throw new Error('Usage: monomind browse navigate back|forward|reload');
302
+ switch (direction) {
303
+ case 'back':
304
+ await client.send('Runtime.evaluate', { expression: 'history.back()' }, sessionId);
305
+ break;
306
+ case 'forward':
307
+ await client.send('Runtime.evaluate', { expression: 'history.forward()' }, sessionId);
308
+ break;
309
+ case 'reload':
310
+ await client.send('Page.reload', {}, sessionId);
311
+ break;
312
+ default:
313
+ throw new Error(`Unknown direction: ${direction}. Use: back|forward|reload`);
314
+ }
315
+ output.printSuccess(`Navigated: ${direction}`);
316
+ return { success: true };
317
+ },
318
+ };
319
+ const setCommand = {
320
+ name: 'set',
321
+ description: 'Configure browser settings. Usage: monomind browse set viewport 375 812',
322
+ action: async (ctx) => {
323
+ const { client, sessionId } = await ensureConnected(_port);
324
+ const browser = await getBrowser();
325
+ const setting = ctx.args[0];
326
+ if (!setting)
327
+ throw new Error('Usage: monomind browse set viewport <width> <height>');
328
+ switch (setting) {
329
+ case 'viewport': {
330
+ const width = parseInt(ctx.args[1], 10);
331
+ const height = parseInt(ctx.args[2], 10);
332
+ if (isNaN(width) || isNaN(height))
333
+ throw new Error('Usage: set viewport <width> <height>');
334
+ await browser.setViewport(client, sessionId, width, height);
335
+ output.printSuccess(`Viewport set to ${width}x${height}`);
336
+ break;
337
+ }
338
+ case 'useragent': {
339
+ const ua = ctx.args[1];
340
+ if (!ua)
341
+ throw new Error('Usage: set useragent "<user-agent-string>"');
342
+ await browser.setUserAgent(client, sessionId, ua);
343
+ output.printSuccess('User agent set');
344
+ break;
345
+ }
346
+ default:
347
+ throw new Error(`Unknown setting: ${setting}. Use: viewport|useragent`);
348
+ }
349
+ return { success: true };
350
+ },
351
+ };
352
+ const stateCommand = {
353
+ name: 'state',
354
+ description: 'Manage browser session state. Usage: monomind browse state save|load|list [name]',
355
+ action: async (ctx) => {
356
+ const browser = await getBrowser();
357
+ const action = ctx.args[0];
358
+ if (!action)
359
+ throw new Error('Usage: monomind browse state save|load|list [name]');
360
+ switch (action) {
361
+ case 'list': {
362
+ const sessions = await browser.listSessions();
363
+ if (sessions.length === 0) {
364
+ output.printInfo('No saved sessions');
365
+ }
366
+ else {
367
+ output.printInfo('Saved sessions:');
368
+ for (const s of sessions)
369
+ print(` ${s}`);
370
+ }
371
+ return { success: true, data: { sessions } };
372
+ }
373
+ case 'save': {
374
+ const { client, sessionId } = await ensureConnected(_port);
375
+ const target = ctx.args[1];
376
+ if (!target)
377
+ throw new Error('Usage: monomind browse state save <name-or-file>');
378
+ const url = await browser.getCurrentUrl(client, sessionId);
379
+ const title = await browser.getCurrentTitle(client, sessionId);
380
+ if (target.endsWith('.json')) {
381
+ await browser.saveStateFile(client, sessionId, _targetId, target, url, title);
382
+ output.printSuccess(`State saved to ${target}`);
383
+ }
384
+ else {
385
+ const path = await browser.saveSession(client, sessionId, _targetId, target, url, title);
386
+ output.printSuccess(`Session "${target}" saved to ${path}`);
387
+ }
388
+ return { success: true };
389
+ }
390
+ case 'load': {
391
+ const { client, sessionId } = await ensureConnected(_port);
392
+ const target = ctx.args[1];
393
+ if (!target)
394
+ throw new Error('Usage: monomind browse state load <name-or-file>');
395
+ if (target.endsWith('.json')) {
396
+ await browser.loadStateFile(client, sessionId, target);
397
+ }
398
+ else {
399
+ await browser.loadSession(client, sessionId, target);
400
+ }
401
+ output.printSuccess(`State loaded from ${target}`);
402
+ return { success: true };
403
+ }
404
+ default:
405
+ throw new Error(`Unknown action: ${action}. Use: save|load|list`);
406
+ }
407
+ },
408
+ };
409
+ const networkCommand = {
410
+ name: 'network',
411
+ description: 'Network interception and cookie management',
412
+ options: [
413
+ { name: 'pattern', type: 'string', description: 'URL pattern for route (glob)' },
414
+ { name: 'abort', type: 'boolean', description: 'Abort matching requests' },
415
+ { name: 'fulfill', type: 'string', description: 'JSON response body' },
416
+ { name: 'status', type: 'number', description: 'HTTP status for fulfill', default: 200 },
417
+ { name: 'headers', type: 'string', description: 'JSON headers object' },
418
+ ],
419
+ action: async (ctx) => {
420
+ const { client, sessionId } = await ensureConnected(_port);
421
+ const browser = await getBrowser();
422
+ const action = ctx.args[0];
423
+ if (!action)
424
+ throw new Error('Usage: monomind browse network route|cookies|headers');
425
+ switch (action) {
426
+ case 'route': {
427
+ const pattern = ctx.flags.pattern;
428
+ if (!pattern)
429
+ throw new Error('--pattern required for network route');
430
+ const routes = [{
431
+ pattern,
432
+ action: ctx.flags.abort ? 'abort' : ctx.flags.fulfill ? 'fulfill' : 'continue',
433
+ response: ctx.flags.fulfill ? {
434
+ status: ctx.flags.status,
435
+ body: ctx.flags.fulfill,
436
+ headers: ctx.flags.headers ? JSON.parse(ctx.flags.headers) : {},
437
+ } : undefined,
438
+ }];
439
+ await browser.setupRoutes(client, sessionId, routes);
440
+ output.printSuccess(`Network route set: ${pattern}`);
441
+ break;
442
+ }
443
+ case 'cookies': {
444
+ const cookies = await browser.getCookies(client, sessionId);
445
+ print(JSON.stringify(cookies, null, 2));
446
+ return { success: true, data: { cookies } };
447
+ }
448
+ case 'headers': {
449
+ const headers = ctx.flags.headers;
450
+ if (!headers)
451
+ throw new Error('--headers required (JSON string)');
452
+ await browser.setExtraHeaders(client, sessionId, JSON.parse(headers));
453
+ output.printSuccess('Extra headers set');
454
+ break;
455
+ }
456
+ default:
457
+ throw new Error(`Unknown: ${action}. Use: route|cookies|headers`);
458
+ }
459
+ return { success: true };
460
+ },
461
+ };
462
+ const evalCommand = {
463
+ name: 'eval',
464
+ description: 'Evaluate JavaScript in page context. Usage: monomind browse eval "document.title"',
465
+ options: [
466
+ { name: 'json', type: 'boolean', description: 'Output as JSON', default: false },
467
+ ],
468
+ action: async (ctx) => {
469
+ const { client, sessionId } = await ensureConnected(_port);
470
+ const browser = await getBrowser();
471
+ const expr = ctx.args[0];
472
+ if (!expr)
473
+ throw new Error('Usage: monomind browse eval "<expression>"');
474
+ const result = await browser.evaluateJs(client, sessionId, expr);
475
+ if (ctx.flags.json) {
476
+ print(JSON.stringify({ data: result }));
477
+ }
478
+ else {
479
+ print(String(result ?? ''));
480
+ }
481
+ return { success: true, data: { result } };
482
+ },
483
+ };
484
+ const closeCommand = {
485
+ name: 'close',
486
+ description: 'Close the active browser session',
487
+ action: async (_ctx) => {
488
+ if (_client) {
489
+ _client.close();
490
+ _client = null;
491
+ _sessionId = '';
492
+ _targetId = '';
493
+ _refs = new Map();
494
+ output.printSuccess('Browser session closed');
495
+ }
496
+ else {
497
+ output.printInfo('No active browser session');
498
+ }
499
+ return { success: true };
500
+ },
501
+ };
502
+ // ---------------------------------------------------------------------------
503
+ // Root browse command
504
+ // ---------------------------------------------------------------------------
505
+ const browseCommand = {
506
+ name: 'browse',
507
+ description: 'Native browser automation via Chrome DevTools Protocol',
508
+ subcommands: [
509
+ openCommand,
510
+ snapshotCommand,
511
+ clickCommand,
512
+ fillCommand,
513
+ pressCommand,
514
+ waitCommand,
515
+ screenshotCommand,
516
+ getCommand,
517
+ scrollCommand,
518
+ navigateCommand,
519
+ setCommand,
520
+ stateCommand,
521
+ networkCommand,
522
+ evalCommand,
523
+ closeCommand,
524
+ ],
525
+ options: [
526
+ { name: 'port', short: 'p', type: 'number', description: 'CDP debug port', default: 9222 },
527
+ { name: 'session', short: 's', type: 'string', description: 'Named session to use' },
528
+ ],
529
+ examples: [
530
+ { command: 'monomind browse open https://example.com', description: 'Open a URL' },
531
+ { command: 'monomind browse snapshot -i', description: 'Interactive-only snapshot (93% token reduction)' },
532
+ { command: 'monomind browse click @e3', description: 'Click element by ref' },
533
+ { command: 'monomind browse fill @e1 "user@example.com"', description: 'Fill an input' },
534
+ { command: 'monomind browse press Enter', description: 'Press Enter key' },
535
+ { command: 'monomind browse wait --url "**/dashboard"', description: 'Wait for URL pattern' },
536
+ { command: 'monomind browse wait --text "Success"', description: 'Wait for text' },
537
+ { command: 'monomind browse wait --load networkidle', description: 'Wait for network idle' },
538
+ { command: 'monomind browse screenshot ./output.png', description: 'Take screenshot' },
539
+ { command: 'monomind browse get url', description: 'Get current URL' },
540
+ { command: 'monomind browse scroll down', description: 'Scroll down 300px' },
541
+ { command: 'monomind browse set viewport 375 812', description: 'Set mobile viewport' },
542
+ { command: 'monomind browse state save my-session', description: 'Save session state' },
543
+ { command: 'monomind browse navigate back', description: 'Navigate back' },
544
+ { command: 'monomind browse eval "document.title"', description: 'Evaluate JavaScript' },
545
+ { command: 'monomind browse network route --pattern "https://api.*" --abort', description: 'Abort API calls' },
546
+ { command: 'monomind browse close', description: 'Close browser session' },
547
+ ],
548
+ action: async (_ctx) => {
549
+ output.printInfo('Native browser automation via Chrome DevTools Protocol.');
550
+ output.printInfo('');
551
+ output.printInfo('Usage: monomind browse <subcommand> [options]');
552
+ output.printInfo('');
553
+ output.printInfo('Subcommands:');
554
+ output.printInfo(' open Open a URL');
555
+ output.printInfo(' snapshot Capture accessibility snapshot with refs');
556
+ output.printInfo(' click Click an element by ref');
557
+ output.printInfo(' fill Fill an input element');
558
+ output.printInfo(' press Press a keyboard key');
559
+ output.printInfo(' wait Wait for a condition');
560
+ output.printInfo(' screenshot Take a screenshot');
561
+ output.printInfo(' get Get page info (url, title, text, html)');
562
+ output.printInfo(' scroll Scroll the page');
563
+ output.printInfo(' navigate Navigate history (back/forward/reload)');
564
+ output.printInfo(' set Configure viewport or user agent');
565
+ output.printInfo(' state Save/load/list session state');
566
+ output.printInfo(' network Network interception and cookies');
567
+ output.printInfo(' eval Evaluate JavaScript');
568
+ output.printInfo(' close Close the browser session');
569
+ return { success: true };
570
+ },
571
+ };
572
+ export default browseCommand;
573
+ //# sourceMappingURL=browse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../../src/commands/browse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,8 @@ const commandLoaders = {
68
68
  tokens: () => import('./tokens.js'),
69
69
  monograph: () => import('./monograph.js'),
70
70
  replay: () => import('./replay.js'),
71
+ // Native browser automation (TypeScript CDP client)
72
+ browse: () => import('./browse.js'),
71
73
  };
72
74
  // Cache for loaded commands
73
75
  const loadedCommands = new Map();