opera-browser-cli 0.1.45 → 0.1.47

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.
@@ -13,13 +13,15 @@
13
13
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
14
14
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
15
15
  import { LoggingMessageNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
16
- import { createServer, } from "node:http";
16
+ import { createServer, request, } from "node:http";
17
17
  import { existsSync, mkdirSync, unlinkSync, writeFileSync } from "node:fs";
18
18
  import { randomBytes, timingSafeEqual } from "node:crypto";
19
19
  import { extractPageOrigin } from "./snapshot.js";
20
20
  import { createRequire } from "node:module";
21
21
  import { dirname, join, resolve } from "node:path";
22
22
  import { homedir } from "node:os";
23
+ import { BRIDGE_SERVER_NAME, computeBootMinute, } from "./identity.js";
24
+ import { getPackageVersion } from "./version.js";
23
25
  const DEFAULT_PORT = Number.parseInt(process.env.OPERA_CLI_PORT ?? "9225", 10);
24
26
  const STATE_DIR = join(homedir(), ".opera-browser-cli");
25
27
  const PID_FILE = join(STATE_DIR, "bridge.pid");
@@ -29,6 +31,7 @@ const OPERA_AI_TOOLS = new Set([
29
31
  "opera_do",
30
32
  "opera_research",
31
33
  "opera_make",
34
+ "opera_call_mcp_tool",
32
35
  ]);
33
36
  // The most recent raw snapshot text returned by take_snapshot.
34
37
  // Shared across all concurrent HTTP requests; last write wins.
@@ -50,6 +53,61 @@ export async function isBridgeClientConnected(client) {
50
53
  return false;
51
54
  }
52
55
  }
56
+ /**
57
+ * "Usable" health for the bridge: the MCP server is up AND, when the bridge is
58
+ * in attach mode, the browser at the attach URL is actually reachable.
59
+ *
60
+ * In attach mode devtools-mcp stays connected over stdio even when the browser
61
+ * it points at is gone (it reaches for the browser lazily on a tool call), so
62
+ * MCP liveness alone cannot tell that a bridge is wedged on a dead URL. Probing
63
+ * the attach endpoint directly keeps `/health` honest, which lets the CLI stop
64
+ * reusing a wedged bridge and rebuild it against the current target.
65
+ */
66
+ export async function isBridgeHealthConnected(client) {
67
+ if (!(await isBridgeClientConnected(client)))
68
+ return false;
69
+ const browserUrl = process.env.OPERA_CLI_BROWSER_URL;
70
+ if (browserUrl) {
71
+ return await probeHttp(`${browserUrl}/json/version`, 800);
72
+ }
73
+ return true;
74
+ }
75
+ /** GET a URL, answering whether it looks like a live CDP endpoint. */
76
+ function probeHttp(url, timeoutMs) {
77
+ return new Promise((resolve) => {
78
+ let req;
79
+ try {
80
+ req = request(url, { method: "GET", timeout: timeoutMs }, (res) => {
81
+ let body = "";
82
+ res.setEncoding("utf-8");
83
+ res.on("data", (chunk) => (body += chunk));
84
+ res.on("end", () => {
85
+ try {
86
+ resolve(typeof JSON.parse(body).Browser ===
87
+ "string");
88
+ }
89
+ catch {
90
+ resolve(false);
91
+ }
92
+ });
93
+ });
94
+ }
95
+ catch {
96
+ // Malformed browser URL — treat as unreachable, never crash the health ping.
97
+ resolve(false);
98
+ return;
99
+ }
100
+ req.on("error", () => resolve(false));
101
+ req.on("timeout", () => {
102
+ req.destroy();
103
+ resolve(false);
104
+ });
105
+ req.end();
106
+ });
107
+ }
108
+ /** Wall-clock start of this bridge process — part of its identity. */
109
+ const STARTED_AT = Date.now();
110
+ const BOOT_MINUTE = computeBootMinute();
53
111
  function writePidFile(port, token) {
54
112
  mkdirSync(STATE_DIR, { recursive: true });
55
113
  // Unlink first: writeFileSync's `mode` only applies on create, so overwriting
@@ -61,9 +119,16 @@ function writePidFile(port, token) {
61
119
  // Didn't exist — fine
62
120
  }
63
121
  // 0600: only the owning user may read the auth token.
64
- writeFileSync(PID_FILE, JSON.stringify({ pid: process.pid, port, token }), {
65
- mode: 0o600,
66
- });
122
+ // version/startedAt/bootMinute let a CLI process verify this file describes
123
+ // *our* bridge on *this* boot before it ever signals the PID.
124
+ writeFileSync(PID_FILE, JSON.stringify({
125
+ pid: process.pid,
126
+ port,
127
+ token,
128
+ version: getPackageVersion(),
129
+ startedAt: STARTED_AT,
130
+ bootMinute: BOOT_MINUTE,
131
+ }), { mode: 0o600 });
67
132
  }
68
133
  function removePidFile() {
69
134
  try {
@@ -117,6 +182,40 @@ export function resolveBridgeScript(importMetaDir) {
117
182
  const sourceScript = builtScript.replace(/\.js$/, ".ts");
118
183
  return existsSync(sourceScript) ? sourceScript : builtScript;
119
184
  }
185
+ /** Locate the tsx CLI entrypoint without going through `npx`. */
186
+ function resolveTsxCli() {
187
+ try {
188
+ const require = createRequire(import.meta.url);
189
+ const pkgPath = require.resolve("tsx/package.json");
190
+ const cli = join(dirname(pkgPath), "dist", "cli.mjs");
191
+ return existsSync(cli) ? cli : null;
192
+ }
193
+ catch {
194
+ return null;
195
+ }
196
+ }
197
+ /**
198
+ * Decide how to launch the bridge process.
199
+ *
200
+ * Prefers the built JavaScript. The TypeScript entrypoint is used only in a
201
+ * source checkout (or under OPERA_CLI_DEV=1), and only when tsx is already
202
+ * installed — never via `npx`, which blocks on an install prompt when the
203
+ * package is uncached and would hang invisibly behind a redirected stdio.
204
+ */
205
+ export function resolveBridgeLauncher(importMetaDir, execPath = process.execPath) {
206
+ const builtScript = resolve(importMetaDir, "../bin/opera-browser-cli-bridge.js");
207
+ const sourceScript = builtScript.replace(/\.js$/, ".ts");
208
+ const preferSource = process.env.OPERA_CLI_DEV === "1" || !existsSync(builtScript);
209
+ if (preferSource && existsSync(sourceScript)) {
210
+ const tsx = resolveTsxCli();
211
+ if (tsx === null)
212
+ return { ok: false, reason: "tsx-not-installed" };
213
+ return { ok: true, command: execPath, args: [tsx, sourceScript] };
214
+ }
215
+ if (!existsSync(builtScript))
216
+ return { ok: false, reason: "bridge-not-built" };
217
+ return { ok: true, command: execPath, args: [builtScript] };
218
+ }
120
219
  async function readRequestBody(req) {
121
220
  let body = "";
122
221
  for await (const chunk of req) {
@@ -202,6 +301,17 @@ export function checkRequestAccess(req, token, requireToken) {
202
301
  export function generateBridgeToken() {
203
302
  return randomBytes(32).toString("hex");
204
303
  }
304
+ export function buildHealth(connected) {
305
+ return {
306
+ status: connected ? "ok" : "not-connected",
307
+ server: BRIDGE_SERVER_NAME,
308
+ version: getPackageVersion(),
309
+ pid: process.pid,
310
+ startedAt: STARTED_AT,
311
+ bootMinute: BOOT_MINUTE,
312
+ browser: { connected },
313
+ };
314
+ }
205
315
  async function handleToolsRequest(client, res) {
206
316
  const result = await client.listTools();
207
317
  writeJson(res, 200, result.tools.map((tool) => ({
@@ -280,14 +390,12 @@ export async function handleBridgeRequest(client, req, res, captureNextId, token
280
390
  writeJson(res, baseAccess.status ?? 403, { error: baseAccess.error });
281
391
  return;
282
392
  }
283
- // /health is token-free so the CLI can detect a running bridge before it knows the token.
393
+ // /health is token-free so the CLI can detect a running bridge before it knows
394
+ // the token. It carries the full identity (version, pid, boot) so the caller
395
+ // can tell a usable bridge from a stale-version one from a foreign server.
284
396
  if (req.method === "GET" && req.url === "/health") {
285
- if (await isBridgeClientConnected(client)) {
286
- writeJson(res, 200, { status: "ok", server: "opera-browser-cli" });
287
- }
288
- else {
289
- writeJson(res, 503, { status: "not-connected", server: "opera-browser-cli" });
290
- }
397
+ const connected = await isBridgeHealthConnected(client);
398
+ writeJson(res, connected ? 200 : 503, buildHealth(connected));
291
399
  return;
292
400
  }
293
401
  // Every remaining route exposes browser state or automation — require the token.
@@ -321,17 +429,68 @@ export async function handleBridgeRequest(client, req, res, captureNextId, token
321
429
  }
322
430
  writeJson(res, 404, { error: "not found" });
323
431
  }
324
- export function createBridgeServer(client, captureNextId, token = null) {
432
+ /**
433
+ * Build the HTTP server.
434
+ *
435
+ * `resolve` is called per request rather than the client being captured up
436
+ * front, so the port can be bound before the MCP connection exists. Until it
437
+ * returns a client every route answers 503 with a well-formed health body —
438
+ * which is exactly what a caller probing /health during startup should see.
439
+ */
440
+ export function createBridgeServer(resolve, token = null) {
325
441
  return createServer((req, res) => {
442
+ const { client, captureNextId } = resolve();
443
+ if (client === null) {
444
+ res.setHeader("Content-Type", "application/json");
445
+ writeJson(res, 503, buildHealth(false));
446
+ return;
447
+ }
326
448
  void handleBridgeRequest(client, req, res, captureNextId, token);
327
449
  });
328
450
  }
329
451
  function logBridgeMessage(message) {
330
452
  process.stderr.write(`[opera-browser-cli] ${message}\n`);
331
453
  }
454
+ // ---------------------------------------------------------------------------
455
+ // Startup handshake
456
+ //
457
+ // The parent spawns us with stdout on a pipe and reads exactly one line:
458
+ // READY — listening, MCP connected, PID file written
459
+ // FAILED <reason> — fatal, with a machine-readable reason
460
+ //
461
+ // Without this the parent can only poll /health blind, which costs a full
462
+ // timeout window even when we died in milliseconds. stderr goes to the log
463
+ // file, so stdout carries nothing but this handshake.
464
+ // ---------------------------------------------------------------------------
465
+ /** Exit code signalling "port taken, try the next one" (EX_TEMPFAIL). */
466
+ export const EXIT_PORT_IN_USE = 75;
332
467
  function writeReadySignal() {
333
468
  process.stdout.write("READY\n");
334
469
  }
470
+ function writeFailedSignal(reason, detail) {
471
+ process.stdout.write(`FAILED ${reason}${detail ? ` ${detail}` : ""}\n`);
472
+ }
473
+ /**
474
+ * Whether to launch a visible browser.
475
+ *
476
+ * Headless is the safe default for a tool — it is the only thing that works on
477
+ * a server with no display. But a configured Opera binary means the user wants
478
+ * *their* browser, and every Opera AI feature needs a window: sign-in and
479
+ * consent cannot be completed headlessly, so a headless AI command fails on a
480
+ * state the user has no way to fix.
481
+ *
482
+ * So: headed when an Opera executable is configured, headless otherwise, and
483
+ * OPERA_CLI_HEADED=0 or =1 overrides either way. A machine with no Opera
484
+ * installed — CI, Docker, a plain-Chrome setup — keeps the old behaviour.
485
+ */
486
+ export function shouldRunHeaded() {
487
+ const explicit = process.env.OPERA_CLI_HEADED;
488
+ if (explicit === "1")
489
+ return true;
490
+ if (explicit === "0")
491
+ return false;
492
+ return Boolean(process.env.OPERA_CLI_EXECUTABLE_PATH);
493
+ }
335
494
  export function buildTransportArgs() {
336
495
  const args = [];
337
496
  const browserUrl = process.env.OPERA_CLI_BROWSER_URL;
@@ -365,7 +524,7 @@ export function buildTransportArgs() {
365
524
  else {
366
525
  args.push("--isolated");
367
526
  }
368
- if (process.env.OPERA_CLI_HEADED !== "1") {
527
+ if (!shouldRunHeaded()) {
369
528
  args.push("--headless");
370
529
  }
371
530
  }
@@ -377,6 +536,38 @@ export function buildTransportArgs() {
377
536
  }
378
537
  return args;
379
538
  }
539
+ /** Look a bare command up on PATH, the way a shell would. */
540
+ function existsOnPath(command) {
541
+ const pathVar = process.env.PATH ?? "";
542
+ const separator = process.platform === "win32" ? ";" : ":";
543
+ const extensions = process.platform === "win32"
544
+ ? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT").split(";")
545
+ : [""];
546
+ for (const entry of pathVar.split(separator)) {
547
+ if (!entry)
548
+ continue;
549
+ for (const ext of extensions) {
550
+ if (existsSync(join(entry, command + ext)))
551
+ return true;
552
+ }
553
+ }
554
+ return false;
555
+ }
556
+ /**
557
+ * Where opera-devtools-mcp is coming from, and whether it is actually there.
558
+ * Used by `doctor` so a missing MCP server is named before it costs a failed
559
+ * bridge start.
560
+ */
561
+ export function resolveMcpBinStatus() {
562
+ const bin = resolveOperaMcpBin();
563
+ if (process.env.OPERA_CLI_MCP_BIN) {
564
+ return { bin, found: existsSync(bin) || existsOnPath(bin), source: "env" };
565
+ }
566
+ if (bin === "opera-devtools-mcp") {
567
+ return { bin, found: existsOnPath(bin), source: "path" };
568
+ }
569
+ return { bin, found: existsSync(bin), source: "dependency" };
570
+ }
380
571
  function resolveOperaMcpBin() {
381
572
  if (process.env.OPERA_CLI_MCP_BIN)
382
573
  return process.env.OPERA_CLI_MCP_BIN;
@@ -480,18 +671,64 @@ async function closeServer(server) {
480
671
  });
481
672
  }
482
673
  export async function runBridge(port = DEFAULT_PORT) {
674
+ // The parent destroys its end of the stdout pipe once the handshake is read.
675
+ // We never write to stdout again, but guard anyway so a stray write can never
676
+ // take the bridge down with an EPIPE.
677
+ process.stdout.on("error", () => { });
678
+ // Bind the port before anything expensive happens. Connecting to MCP first
679
+ // would launch an entire browser only to throw it away when the listen
680
+ // fails — so losing a start race would cost a browser launch and leave an
681
+ // orphaned child. Binding first makes losing the race free.
682
+ let client = null;
683
+ let captureNextId;
684
+ const token = generateBridgeToken();
685
+ const server = createBridgeServer(() => ({ client, captureNextId }), token);
686
+ // Without an error handler this is an uncaught exception: the bridge dies
687
+ // with a stack trace in the log and the parent waits out the whole startup
688
+ // timeout. EADDRINUSE is routine — we lost a start race, or the port was
689
+ // taken between the parent's probe and our listen — so exit with a code the
690
+ // parent can read as "try the next port".
691
+ server.on("error", (error) => {
692
+ if (error.code === "EADDRINUSE") {
693
+ writeFailedSignal("port-in-use", String(port));
694
+ logBridgeMessage(`Port ${port} already in use`);
695
+ process.exit(EXIT_PORT_IN_USE);
696
+ }
697
+ writeFailedSignal("listen-failed", getErrorMessage(error));
698
+ logBridgeMessage(`Listen failed: ${getErrorMessage(error)}`);
699
+ process.exit(1);
700
+ });
701
+ await new Promise((resolve) => {
702
+ server.listen(port, "127.0.0.1", resolve);
703
+ });
704
+ logBridgeMessage(`Listening on http://127.0.0.1:${port}`);
483
705
  const transport = createTransport();
484
- const captureNextId = wrapTransportForIdCapture(transport);
485
- const client = createBridgeClient();
486
- await client.connect(transport);
706
+ captureNextId = wrapTransportForIdCapture(transport);
707
+ const mcpClient = createBridgeClient();
708
+ try {
709
+ await mcpClient.connect(transport);
710
+ }
711
+ catch (error) {
712
+ // Almost always a missing or broken opera-devtools-mcp. Name it now rather
713
+ // than letting the parent time out with nothing to report.
714
+ writeFailedSignal("mcp-connect", getErrorMessage(error));
715
+ logBridgeMessage(`Failed to connect to opera-devtools-mcp: ${getErrorMessage(error)}`);
716
+ process.exit(1);
717
+ }
718
+ client = mcpClient;
487
719
  logBridgeMessage("Connected to opera-devtools-mcp");
488
- const token = generateBridgeToken();
489
- const server = createBridgeServer(client, captureNextId, token);
490
- server.listen(port, "127.0.0.1", () => {
720
+ try {
491
721
  writePidFile(port, token);
492
- logBridgeMessage(`Listening on http://127.0.0.1:${port}`);
493
- writeReadySignal();
494
- });
722
+ }
723
+ catch (error) {
724
+ // Typically a state dir left root-owned by an earlier `sudo` run. This used
725
+ // to throw uncaught from inside the listen callback, killing the bridge
726
+ // *after* it had bound the port.
727
+ writeFailedSignal("state-dir-unwritable", STATE_DIR);
728
+ logBridgeMessage(`Cannot write ${PID_FILE}: ${getErrorMessage(error)} — check ownership of ${STATE_DIR}`);
729
+ process.exit(1);
730
+ }
731
+ writeReadySignal();
495
732
  let shuttingDown = false;
496
733
  const shutdown = async () => {
497
734
  if (shuttingDown)
@@ -499,7 +736,7 @@ export async function runBridge(port = DEFAULT_PORT) {
499
736
  shuttingDown = true;
500
737
  removePidFile();
501
738
  await closeServer(server);
502
- await client.close();
739
+ await mcpClient.close();
503
740
  await transport.close();
504
741
  process.exit(0);
505
742
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Decide what browser the bridge should talk to, before it starts.
3
+ *
4
+ * The constraint that shapes all of this: --remote-debugging-port is a
5
+ * startup-only flag. A browser the user opened normally cannot be attached to,
6
+ * ever. So there is no way to "connect to the Opera that is already open" —
7
+ * only ways to arrange that the open Opera was started with a port in the first
8
+ * place, and a way to detect it when it was.
9
+ *
10
+ * That gives three states for a configured profile:
11
+ *
12
+ * free → let opera-devtools-mcp launch it, as before.
13
+ * locked, debug port live → attach. No prompt, no restart, nothing to do.
14
+ * locked, no debug port → a conflict only the user can resolve, by
15
+ * letting us restart their browser.
16
+ *
17
+ * The second case is the one that makes this feel automatic: once a browser has
18
+ * been started with a port — by us, or by the user following `launch-args` —
19
+ * every later command finds it on its own via DevToolsActivePort.
20
+ */
21
+ import { type ProfileLock } from "./profile.js";
22
+ export interface BrowserTargetContext {
23
+ browserUrl?: string | undefined;
24
+ userDataDir?: string | undefined;
25
+ executablePath?: string | undefined;
26
+ }
27
+ export type BrowserTarget =
28
+ /** Connect to a browser that is already running. */
29
+ {
30
+ mode: "attach";
31
+ url: string;
32
+ note: string;
33
+ }
34
+ /** Let opera-devtools-mcp launch the browser, as it always has. */
35
+ | {
36
+ mode: "managed";
37
+ note: string;
38
+ }
39
+ /** The profile is in use and we cannot reach the browser holding it. */
40
+ | {
41
+ mode: "conflict";
42
+ userDataDir: string;
43
+ lock: ProfileLock;
44
+ };
45
+ export declare function resolveBrowserTarget(ctx: BrowserTargetContext): Promise<BrowserTarget>;
46
+ export interface QuitResult {
47
+ ok: boolean;
48
+ reason?: "no-pid" | "timeout";
49
+ }
50
+ /**
51
+ * Ask a running browser to quit, and wait for it to let go of the profile.
52
+ *
53
+ * SIGTERM only. Chromium treats it as a clean shutdown — session saved, profile
54
+ * flushed — whereas SIGKILL risks a corrupted profile and loses the user's
55
+ * tabs. If it will not go, we say so rather than escalating: this is somebody's
56
+ * browser, and forcing it is not ours to decide.
57
+ */
58
+ export declare function quitBrowser(lock: ProfileLock, userDataDir: string, timeoutMs?: number): Promise<QuitResult>;
59
+ export interface LaunchResult {
60
+ ok: boolean;
61
+ url?: string;
62
+ reason?: "no-executable" | "spawn-failed" | "timeout";
63
+ detail?: string;
64
+ }
65
+ /**
66
+ * Start a browser we can attach to, and that outlives us.
67
+ *
68
+ * `--remote-debugging-port=0` has Chromium pick a free port itself and record
69
+ * it in DevToolsActivePort. That satisfies two requirements at once: we never
70
+ * squat a predictable port like 9222, and the port is discoverable by every
71
+ * later command without being written to any config.
72
+ *
73
+ * The browser is detached deliberately. Having just restarted the user's
74
+ * browser, closing it again when the CLI's bridge stops would be a poor trade.
75
+ */
76
+ export declare function launchAttachableBrowser(executablePath: string | undefined, userDataDir: string, extraArgs?: string[], timeoutMs?: number): Promise<LaunchResult>;
77
+ /**
78
+ * The flags a user needs to start Opera themselves so the CLI can attach.
79
+ *
80
+ * Deliberately not `--remote-allow-origins=*`: Chromium's default rejection of
81
+ * CDP WebSocket upgrades that carry an Origin header is what stops a web page
82
+ * from driving the browser, and this profile is logged into everything.
83
+ */
84
+ export declare function browserLaunchArgs(userDataDir?: string): string[];