moondesk 0.11.6 → 0.11.8
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.
- package/README.md +4 -2
- package/package.json +1 -1
- package/skills/browser/SKILL.md +11 -8
package/README.md
CHANGED
|
@@ -120,7 +120,9 @@ Select the connector and start working.
|
|
|
120
120
|
|
|
121
121
|
## Browser control
|
|
122
122
|
|
|
123
|
-
MoonDesk owns
|
|
123
|
+
MoonDesk owns one lazy agent Chromium process instead of attaching to your personal browser profile or launching a separate browser for every project. Inside that shared Chromium, each registered workspace gets its own isolated BrowserContext for cookies and site storage, while each ChatGPT conversation gets its own MoonDesk-routed logical tab set. Different workspaces therefore do not share cookies, localStorage, IndexedDB, or service-worker state, and separate conversations cannot accidentally act on each other's selected tabs.
|
|
124
|
+
|
|
125
|
+
The browser runs headless by default and can be switched to visible mode for human-assisted steps such as logins or permission prompts. Presentation belongs to the shared Chromium process, so changing it while the browser is live requires explicit confirmation because every workspace BrowserContext and logical tab is recreated. MoonDesk never attaches to or reuses your personal browser profile, cookies, or logged-in sessions.
|
|
124
126
|
|
|
125
127
|
```bash
|
|
126
128
|
moondesk browser navigate_page --url=http://localhost:3000
|
|
@@ -129,7 +131,7 @@ moondesk browser take_snapshot
|
|
|
129
131
|
moondesk browser list_console_messages
|
|
130
132
|
```
|
|
131
133
|
|
|
132
|
-
Use `view_page` when the task depends on actual rendered pixels rather than only a text/accessibility snapshot.
|
|
134
|
+
The `moondesk browser` CLI shares the resolved workspace's BrowserContext/login state but uses its own logical tab session, so scripted browser commands cannot steal a ChatGPT conversation's active page. Use `view_page` when the task depends on actual rendered pixels rather than only a text/accessibility snapshot.
|
|
133
135
|
|
|
134
136
|
For browser-runtime invariants and implementation details, see [`docs/BROWSER_RUNTIME_ARCHITECTURE_HARDENING.md`](docs/BROWSER_RUNTIME_ARCHITECTURE_HARDENING.md).
|
|
135
137
|
|
package/package.json
CHANGED
package/skills/browser/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser
|
|
3
|
-
description: Control MoonDesk's shared Chromium
|
|
3
|
+
description: Control MoonDesk's shared Chromium runtime with workspace-isolated storage and conversation-owned tabs without exposing the full Chrome DevTools MCP schema to the model.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# MoonDesk Browser
|
|
@@ -9,10 +9,10 @@ Use MoonDesk's browser runtime for local web-app inspection, UI testing, console
|
|
|
9
9
|
|
|
10
10
|
## Interfaces
|
|
11
11
|
|
|
12
|
-
- **MCP `set_browser_presentation`**: available in `multi-tools` mode for the rare case where the
|
|
12
|
+
- **MCP `set_browser_presentation`**: available in `multi-tools` mode for the rare case where the user needs the shared agent Chromium to become visible for human input. Prefer headless; changing presentation while Chromium is live restarts the host-wide browser runtime and therefore requires explicit user approval before retrying with `confirm_restart=true`.
|
|
13
13
|
- **MCP `browser_command`**: preferred for one browser action at a time and the only page-action primitive needed in Browser-only mode.
|
|
14
14
|
- **MCP `view_page`**: preferred whenever appearance matters. It returns the current rendered page as model-visible pixels.
|
|
15
|
-
- **`moondesk browser` CLI**: preferred in Both mode when several deterministic browser actions are easier to express as a shell script or loop. It calls the same MoonDesk
|
|
15
|
+
- **`moondesk browser` CLI**: preferred in Both mode when several deterministic browser actions are easier to express as a shell script or loop. It calls the same MoonDesk Chromium runtime and workspace BrowserContext, but it intentionally owns a separate local-CLI logical tab session instead of borrowing a ChatGPT conversation's active page.
|
|
16
16
|
|
|
17
17
|
Do not invoke `npx chrome-devtools-mcp` directly. MoonDesk pins and manages the compatible Chrome DevTools runtime.
|
|
18
18
|
|
|
@@ -26,14 +26,16 @@ Do not invoke `npx chrome-devtools-mcp` directly. MoonDesk pins and manages the
|
|
|
26
26
|
6. Use `view_page` for visual judgment. Accessibility/text snapshots are structural evidence, not a substitute for seeing the rendered page.
|
|
27
27
|
7. Inspect console/network/performance data when it helps the task; do not collect large traces by default.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
MoonDesk starts one host-owned Chromium lazily on the first browser operation and runs it headless by default at a deterministic 1280x800 initial viewport. The expensive Chromium/MCP process is shared, but browser ownership is not: each registered workspace gets a named isolated BrowserContext for cookies/storage, and each ChatGPT conversation gets its own logical page set inside that workspace context. MoonDesk routes page-scoped operations by the conversation's owned page ID instead of trusting Chromium's globally selected tab. Conversations in the same workspace therefore share that project's login/storage state while keeping separate tabs; different workspaces do not share cookies/localStorage/IndexedDB/service-worker state. Always use the connector that owns the project for its browser work--do not switch to another workspace connector merely because it exposes browser tools.
|
|
30
|
+
|
|
31
|
+
Headless mode still supports snapshots, screenshots, `view_page`, console/network inspection, interaction, and responsive emulation. Users can switch the one agent Chromium to visible presentation from MoonDesk's dashboard. In `multi-tools`, use `set_browser_presentation` only when the user needs to see or manually interact with the browser, such as a login, CAPTCHA, or permission prompt; `view_page` already provides rendered pixels for agent inspection. Presentation is process-global. Changing it while Chromium is running closes **all** MoonDesk workspace BrowserContexts and conversation/CLI tabs, so the tool returns `confirmation_required` until the user explicitly approves that loss and the agent retries with `confirm_restart=true`. If the shared runtime is lost or a dispatched operation exceeds its deadline, MoonDesk invalidates that runtime before another browser operation can run; the next call starts a fresh Chromium generation and all callers must re-establish their page/snapshot state. MoonDesk never automatically replays an ambiguous state-changing action.
|
|
30
32
|
|
|
31
33
|
## Local dev-server verification
|
|
32
34
|
|
|
33
35
|
When an agent starts a local web server, browser verification is part of completing the task rather than a separate setup step:
|
|
34
36
|
|
|
35
37
|
1. Wait until the server reports its localhost URL as ready.
|
|
36
|
-
2. Navigate
|
|
38
|
+
2. Navigate this conversation's project browser page to that URL.
|
|
37
39
|
3. Set the viewport being tested, then take a fresh snapshot.
|
|
38
40
|
4. Exercise the user-visible flow with snapshot UIDs.
|
|
39
41
|
5. Inspect console/network output when debugging behavior.
|
|
@@ -76,7 +78,8 @@ Prefer the CLI for orchestration, but return to `view_page` whenever the task re
|
|
|
76
78
|
## Safety and lifecycle
|
|
77
79
|
|
|
78
80
|
- Do not run browser lifecycle commands (`start`, `status`, `stop`) through MCP `browser_command` or `moondesk browser`; the running MoonDesk host owns that lifecycle.
|
|
79
|
-
- `moondesk browser` is a lightweight localhost client to the running MoonDesk host. It does not own a separate browser process
|
|
81
|
+
- `moondesk browser` is a lightweight localhost client to the running MoonDesk host. It does not own a separate browser process. CLI calls for one workspace share that workspace's BrowserContext/storage but use a dedicated local-CLI logical tab session, separate from ChatGPT conversations.
|
|
80
82
|
- ReadOnly mode permits inspection commands only; navigation, JavaScript execution, interaction, uploads, resizing, and other state-changing browser commands are blocked.
|
|
81
|
-
- Treat `evaluate_script` as code execution in
|
|
82
|
-
- Browser file paths are local machine paths.
|
|
83
|
+
- Treat `evaluate_script` as code execution in this caller's currently active logical page. MoonDesk injects the owned upstream page ID; callers must not rely on Chromium's globally selected tab. Use scripts only when needed and keep them narrowly scoped.
|
|
84
|
+
- Browser file paths are local machine paths. Relative input paths stay inside the active workspace. Browser-only mode keeps browser inputs workspace-scoped. When Computer tools are also enabled (`Both` mode), an explicit absolute input-file path (for example, `upload_file`) may reference another regular file readable by the MoonDesk user; MoonDesk stages a private copy before Chromium sees it. Input directories and file-producing/output paths remain workspace-bound.
|
|
85
|
+
- Browser-global extension lifecycle operations are intentionally unavailable through the shared runtime because installing/reloading an extension would mutate every workspace. Performance traces and screencasts are globally singleton upstream resources, so MoonDesk leases them to the conversation and exact page that started them.
|