@markus-global/cli 0.6.8 → 0.7.1

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.
@@ -11,8 +11,8 @@
11
11
  <script>
12
12
  (function(){var t=localStorage.getItem('markus-theme');if(t==='midnight'){t='dark';try{localStorage.setItem('markus-theme','dark')}catch(e){}}if(t&&t!=='system')document.documentElement.classList.add(t)})();
13
13
  </script>
14
- <script type="module" crossorigin src="/assets/index-B8jf_U2f.js"></script>
15
- <link rel="stylesheet" crossorigin href="/assets/index-bD7A_PcE.css">
14
+ <script type="module" crossorigin src="/assets/index-DtpSP_xt.js"></script>
15
+ <link rel="stylesheet" crossorigin href="/assets/index-BmAWk8NW.css">
16
16
  </head>
17
17
  <body>
18
18
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markus-global/cli",
3
- "version": "0.6.8",
3
+ "version": "0.7.1",
4
4
  "description": "Markus — AI Digital Workforce Platform",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-or-later",
@@ -33,6 +33,7 @@
33
33
  "@markus/comms": "workspace:*",
34
34
  "@markus/core": "workspace:*",
35
35
  "@markus/org-manager": "workspace:*",
36
+ "@markus/remote": "workspace:*",
36
37
  "@markus/shared": "workspace:*",
37
38
  "commander": "^14.0.3",
38
39
  "esbuild": "^0.27.4"
@@ -22,93 +22,129 @@ Use Chrome DevTools tools when you need to:
22
22
  Do NOT use these tools when `web_fetch` or `web_search` suffice (simple content retrieval or search).
23
23
  Chrome DevTools is for interactive browser sessions that require a real rendering engine.
24
24
 
25
- ## Installation & Setup
25
+ ## Connection Modes
26
+
27
+ Markus supports three ways to connect to Chrome, listed from best to fallback:
28
+
29
+ ### Mode 1: Markus Chrome Extension (recommended)
30
+
31
+ The **Markus Browser Automation** Chrome extension provides the smoothest experience:
32
+ - **No debugging dialog** — the extension uses `chrome.debugger` API internally
33
+ - **Works when screen is locked or sleeping** — no OS-level interaction needed
34
+ - **Cross-platform** — works on macOS, Windows, and Linux identically
35
+ - **Instant startup** — no `npx` download, no child process spawn
36
+ - **No extra permissions** — no macOS Accessibility or Windows UI Automation needed
37
+
38
+ **How to install:**
39
+
40
+ 1. Build the extension (one-time):
41
+ ```
42
+ cd packages/chrome-extension && pnpm install && pnpm run build
43
+ ```
44
+ 2. Open Chrome → `chrome://extensions/`
45
+ 3. Enable **Developer mode** (toggle in top-right)
46
+ 4. Click **Load unpacked** → select `packages/chrome-extension/dist`
47
+ 5. The Markus icon appears in the toolbar
48
+
49
+ **How it works:**
50
+
51
+ When Markus starts, it launches a WebSocket bridge on `ws://127.0.0.1:9333`. The extension
52
+ auto-connects to this bridge. All browser tool calls are routed through the extension instead
53
+ of spawning an external MCP process.
54
+
55
+ Check connection status in **Settings > Browser Automation > Chrome Extension**:
56
+ - Green dot = Connected (extension is active, all tools route through it)
57
+ - Gray dot = Not Connected (Markus falls back to Mode 2 or 3)
58
+
59
+ The extension reconnects automatically within 3 seconds if the connection drops.
60
+
61
+ **Note:** Chrome shows a yellow infobar ("Markus Browser Automation started debugging this
62
+ tab") on debugged tabs. This is cosmetic and doesn't affect functionality. To hide it, launch
63
+ Chrome with `--silent-debugger-extension-api`.
64
+
65
+ ### Mode 2: Auto-Connect with Auto-Click (fallback)
66
+
67
+ If the extension is not installed, Markus falls back to `chrome-devtools-mcp` via `npx`.
68
+ Chrome shows an "Allow remote debugging?" dialog each time. Markus can auto-click this
69
+ dialog on supported platforms:
70
+
71
+ **macOS:** Requires Accessibility permission.
72
+ 1. Open System Settings > Privacy & Security > Accessibility
73
+ 2. Add the app running Markus (Markus.app, Terminal, or iTerm)
74
+ 3. Enable "Auto-Allow Chrome Debugging Dialog" in Settings > Browser Automation
75
+
76
+ **Windows:** No additional permissions needed. Enable the toggle in Settings.
77
+
78
+ **Linux:** Auto-click is not supported. Use Mode 1 (extension) or Mode 3 (debugging port).
79
+
80
+ Limitations of auto-click:
81
+ - Does not work when the screen is locked or display is sleeping
82
+ - Requires OS-specific permissions (Accessibility on macOS)
83
+ - Has timing dependencies on npx download and dialog detection
26
84
 
27
- ### 1. Check if Chrome is already installed
85
+ ### Mode 3: Persistent Debugging Port (manual)
28
86
 
29
- Before installing, check if Chrome is available on the system:
87
+ Launch Chrome with a fixed debugging port to bypass the dialog entirely:
88
+
89
+ - **macOS**: `/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222`
90
+ - **Linux**: `google-chrome --remote-debugging-port=9222`
91
+ - **Windows**: `"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222`
92
+
93
+ Set the same port in **Settings > Browser Automation > Remote Debugging Port**.
94
+
95
+ ## Installation & Setup
96
+
97
+ ### 1. Check if Chrome is installed
30
98
 
31
99
  - **macOS**: `ls /Applications/Google\ Chrome.app` or `mdfind "kMDItemCFBundleIdentifier == com.google.Chrome"`
32
100
  - **Linux**: `which google-chrome || which google-chrome-stable || which chromium-browser`
33
101
  - **Windows**: `where chrome` or check `"C:\Program Files\Google\Chrome\Application\chrome.exe"`
34
102
 
35
- To check the installed version:
103
+ Chrome version **144+** is required (146+ recommended). Check with:
36
104
  - **macOS**: `/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version`
37
105
  - **Linux**: `google-chrome --version`
38
106
 
39
- If Chrome is already installed and version is **144+**, skip to step 2.
40
-
41
- **Only if Chrome is NOT installed:**
42
-
107
+ **If Chrome is NOT installed:**
43
108
  - **macOS**: `brew install --cask google-chrome` or download from https://www.google.com/chrome/
44
109
  - **Linux (Debian/Ubuntu)**: `wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - && sudo apt update && sudo apt install google-chrome-stable`
45
110
  - **Windows**: Download from https://www.google.com/chrome/
46
111
 
47
- Chrome version **144+** is required (146+ recommended).
48
-
49
- ### 2. Launch Chrome with Remote Debugging
112
+ ### 2. Choose a connection mode
50
113
 
51
- To use DevTools automation you must start Chrome with remote debugging enabled:
52
-
53
- - **macOS**:
54
- ```
55
- /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
56
- ```
57
- - **Linux**:
58
- ```
59
- google-chrome --remote-debugging-port=9222
60
- ```
61
- - **Windows**:
62
- ```
63
- "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
64
- ```
65
-
66
- Alternatively, skip the launch flag and use Auto-Connect (see Mode 1 below) — but you must
67
- manually enable remote debugging in Chrome first.
114
+ - **Best experience**: Install the Markus Chrome Extension (Mode 1 above)
115
+ - **Quick start**: Just ensure Chrome is running — Markus will auto-connect and prompt for permission
116
+ - **Unattended use without extension**: Launch Chrome with `--remote-debugging-port=9222` (Mode 3)
68
117
 
69
118
  ### 3. Verify Connection
70
119
 
71
- Open `chrome://inspect/#remote-debugging` in Chrome. You should see your open tabs listed.
72
- If the MCP server is running, it will appear as a connected client.
120
+ - With extension: Click the Markus icon in Chrome toolbar — status should show "Connected to Markus"
121
+ - With auto-connect: Open `chrome://inspect/#remote-debugging` in Chrome and verify tabs are listed
122
+ - In Markus: Go to Settings > Browser Automation — check the extension status or run the auto-click test
73
123
 
74
124
  ### Troubleshooting
75
125
 
76
- - **Port conflict**: If port 9222 is in use, pick another (e.g. 9333) and update Settings > Browser Automation > Remote Debugging Port.
77
- - **Firewall**: Ensure localhost access to the debugging port is not blocked.
78
- - **Memory Saver**: Chrome's Memory Saver can freeze tabs and cause connection timeouts. Disable it at `chrome://settings/performance` or upgrade to Chrome 146+.
79
- - **Permission dialog**: On first Auto-Connect, Chrome shows a permission dialog click **Allow**.
80
-
81
- ## Prerequisites
82
-
83
- The MCP server connects to the user's running Chrome via one of two modes:
84
-
85
- ### Mode 1: Auto-Connect (default)
86
- Uses `--autoConnect` to discover Chrome automatically (Chrome 144+).
87
- 1. Chrome version must be 144 or newer (146+ recommended).
88
- 2. Open `chrome://inspect/#remote-debugging` in Chrome and enable remote debugging.
89
- 3. On first MCP connection, Chrome will show a permission dialog — the user must click **Allow**.
90
- 4. **Note:** This permission is per-connection. Each new agent or session may trigger a new dialog.
91
-
92
- ### Mode 2: Persistent Debugging Port (recommended for unattended use)
93
- Set **Remote Debugging Port** in Settings > Browser Automation (e.g. 9222) to skip the
94
- permission dialog entirely. This requires launching Chrome with:
95
- ```
96
- chrome --remote-debugging-port=9222
97
- ```
98
- Once configured, all agents reuse this connection without prompting for permission.
126
+ - **Extension shows "Not Connected"**: Ensure Markus is running (`pnpm dev`). The bridge starts on port 9333 by default. Check if another process is using that port.
127
+ - **Port conflict**: If port 9333 is in use, change `browser.extensionBridgePort` in Markus config.
128
+ - **Permission dialog keeps appearing**: Install the Chrome extension (Mode 1) to eliminate it entirely.
129
+ - **Memory Saver freezes tabs**: Disable at `chrome://settings/performance` or upgrade to Chrome 146+.
130
+ - **Connection timeout**: On first use without extension, `npx` may need to download `chrome-devtools-mcp`. Wait up to 60 seconds. Subsequent connections are faster.
131
+ - **Firewall**: Ensure localhost access to the debugging/bridge port is not blocked.
99
132
 
100
- **Frozen/suspended tabs cause connection timeout:** When Chrome has frozen tabs (Memory Saver
101
- or restored tabs), the MCP server may hang. If you encounter a timeout, inform the user to:
102
- upgrade Chrome to 146+, disable Memory Saver at `chrome://settings/performance`, click suspended
103
- tabs to wake them, or use a dedicated Chrome profile with few tabs.
133
+ **If browser automation fails, advise the user:**
134
+ 1. First choice: Install the Markus Chrome Extension (Settings > Browser Automation shows install path)
135
+ 2. Second choice: Enable auto-click in Settings > Browser Automation (macOS/Windows only)
136
+ 3. Third choice: Launch Chrome with `--remote-debugging-port=9222` and set the port in Settings
104
137
 
105
138
  ## Configurable behavior (Settings > Browser Automation)
106
139
 
107
140
  | Setting | Default | Description |
108
141
  |---------|---------|-------------|
142
+ | **Chrome Extension** | — | Shows connection status of the Markus Chrome Extension (Connected / Not Connected). |
109
143
  | **Bring to Foreground** | Off | When on, Chrome tabs are brought to the foreground during agent operations. When off (default), agents operate silently in background tabs. |
110
144
  | **Auto-close Tabs** | On | When on, agent-owned tabs are closed when the agent task completes or the agent is removed. |
145
+ | **Auto-Allow Debugging Dialog** | Off | Auto-click Chrome's "Allow remote debugging?" dialog via OS APIs. Only needed when extension is not installed. macOS requires Accessibility permission; Windows works out of the box; Linux not supported. |
111
146
  | **Remote Debugging Port** | 0 (auto-connect) | Set to a port number (e.g. 9222) to use a persistent debugging connection instead of auto-connect, eliminating repeated permission dialogs. |
147
+ | **Extension Bridge Port** | 9333 | WebSocket port for communication between Markus and the Chrome extension. Change if 9333 conflicts with another service. |
112
148
 
113
149
  ## Tool reference
114
150
 
@@ -16,7 +16,7 @@
16
16
  "skill": {
17
17
  "skillFile": "SKILL.md",
18
18
  "requiredPermissions": ["browser", "network"],
19
- "isolation": "per-agent",
19
+ "isolation": "pooled",
20
20
  "mcpServers": {
21
21
  "chrome-devtools": {
22
22
  "command": "npx",