smooth-operator-mcp 3.0.1 → 3.0.4
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/dist/smooth-operator.mjs +225 -60
- package/dist/smooth-operator.mjs.map +2 -2
- package/docs/harnesses.md +7 -6
- package/docs/mcp-server.md +15 -8
- package/package.json +1 -1
package/docs/harnesses.md
CHANGED
|
@@ -3,24 +3,25 @@
|
|
|
3
3
|
## Interactive wizard (directly to your harness)
|
|
4
4
|
|
|
5
5
|
`smooth-operator install <harness>` is interactive by default — it asks exactly 3
|
|
6
|
-
curated questions (
|
|
7
|
-
|
|
6
|
+
curated questions (profile ownership, headed/headless display, and browser
|
|
7
|
+
executable) with recommended defaults in brackets.
|
|
8
8
|
Omitting `<harness>` is allowed too: on a TTY the installer prompts for the
|
|
9
9
|
target first (default `opencode`), while piped or CI environments print usage
|
|
10
10
|
and exit instead. Use `smooth-operator install opencode --yes` to skip prompts
|
|
11
11
|
and use recommended defaults. The wizard normalizes and validates its choices
|
|
12
12
|
before saving them to `~/.smooth-operator/config.json` (0600, bounded,
|
|
13
13
|
owner-only, and symlink-safe). Managed mode owns one private persistent profile;
|
|
14
|
-
connect mode
|
|
15
|
-
|
|
14
|
+
connect mode launches a dedicated debugging profile and does not touch an
|
|
15
|
+
operator's daily browser profile. Personal-Chrome mode derives `browserUrl` after launching
|
|
16
16
|
the helper on port 9222; it is not a separate prompt.
|
|
17
17
|
|
|
18
18
|
### Personal Chrome (connect) helper
|
|
19
19
|
|
|
20
20
|
When you pick “connected browser” (mode `connect`), the wizard finds Chromium via
|
|
21
21
|
`discovery.ts`, launches a dedicated debugging profile under
|
|
22
|
-
`~/.smooth-operator/personal-chrome` with port `9222`, and
|
|
23
|
-
endpoint until
|
|
22
|
+
`~/.smooth-operator/personal-chrome` with port `9222`, and probes the loopback
|
|
23
|
+
endpoint until a valid DevTools version response is live (33 attempts within a
|
|
24
|
+
default 10-second deadline). On success it writes
|
|
24
25
|
`SMOOTH_OPERATOR_BROWSER_MODE=connect` and
|
|
25
26
|
`SMOOTH_OPERATOR_BROWSER_URL=http://127.0.0.1:9222` for you. This does not
|
|
26
27
|
attach to or take ownership of an operator's daily browser profile. No manual
|
package/docs/mcp-server.md
CHANGED
|
@@ -147,7 +147,9 @@ smooth-operator
|
|
|
147
147
|
```
|
|
148
148
|
|
|
149
149
|
Remote mode is rejected unless the token is at least 32 characters. Do not
|
|
150
|
-
use a token from a shell history, checked-in file, or shared log.
|
|
150
|
+
use a token from a shell history, checked-in file, or shared log. POST requests
|
|
151
|
+
must declare `Content-Type: application/json`; unsupported media types are
|
|
152
|
+
rejected before their body is read. A reverse
|
|
151
153
|
proxy can add TLS and network access controls, but it does not replace the
|
|
152
154
|
application token, Host/Origin allowlists, or request-size limit. Allowed host
|
|
153
155
|
and origin values are hostnames without a scheme; browser preflight requests
|
|
@@ -357,8 +359,9 @@ are always applied, with explicit opt-ins where documented:
|
|
|
357
359
|
the same policy checks; `about:blank` is allowed, data/blob URLs are limited
|
|
358
360
|
to non-frame subresources, and file, browser-internal, extension, and
|
|
359
361
|
unknown schemes are rejected.
|
|
360
|
-
- Upload and PDF destinations must stay within configured
|
|
361
|
-
realpath and symlink checks
|
|
362
|
+
- Upload and PDF destinations must stay within configured directory roots after
|
|
363
|
+
realpath and symlink checks; an existing regular file cannot be configured as
|
|
364
|
+
a root. Download paths and generated files are bounded.
|
|
362
365
|
- Page JavaScript is available in the native profile by default and can be
|
|
363
366
|
disabled with `SMOOTH_OPERATOR_ALLOW_EVAL=false`; when enabled, page code can
|
|
364
367
|
observe and mutate page state with the browser's privileges.
|
|
@@ -409,13 +412,16 @@ disabled explicitly with `SMOOTH_OPERATOR_ALLOW_EVAL=false`.
|
|
|
409
412
|
`browser_evaluate` is page JavaScript and is available by default (set
|
|
410
413
|
`SMOOTH_OPERATOR_ALLOW_EVAL=false` when it is not wanted). `browser_exec`
|
|
411
414
|
accepts only a JSON array of validated browser actions; it is not a shell,
|
|
412
|
-
Python, or arbitrary code runner.
|
|
415
|
+
Python, or arbitrary code runner. Its explicit `evaluate` action still follows
|
|
416
|
+
the page-evaluation policy. Destructive batch actions require explicit
|
|
413
417
|
confirmation. `browser_wait_for_human` pauses for an operator to complete a
|
|
414
418
|
visible sign-in or challenge. `browser_solve_challenge` is an internal
|
|
415
419
|
connected-AI observe/act/verify loop: it returns bounded evidence and is
|
|
416
420
|
successful only when a fresh final classification explicitly reports the
|
|
417
|
-
challenge absent
|
|
418
|
-
|
|
421
|
+
challenge absent; present and exhausted cycles report the remaining attempt
|
|
422
|
+
budget and `automation_exhausted` is the final non-success state.
|
|
423
|
+
`browser_close_session`
|
|
424
|
+
closes the one native browser session by its explicit session identifier.
|
|
419
425
|
|
|
420
426
|
Actions that leave a usable page—navigation, click, input, select, scroll, key,
|
|
421
427
|
back, forward, and reload—accept optional `includeSnapshot: true`. The action
|
|
@@ -470,8 +476,9 @@ The server publishes read-only resources:
|
|
|
470
476
|
Resource output is bounded and follows the same redaction and policy rules as
|
|
471
477
|
tool output. The capabilities resource also reports the native defaults and
|
|
472
478
|
effective feature flags for local browser tools, page evaluation, stealth, and
|
|
473
|
-
behavioral timing
|
|
474
|
-
|
|
479
|
+
behavioral timing. Its challenge metadata includes the default and maximum
|
|
480
|
+
connected-AI attempt budgets and states that success requires an explicit
|
|
481
|
+
absent classification.
|
|
475
482
|
|
|
476
483
|
### Prompts
|
|
477
484
|
|