browser-pilot-cli 0.3.0 → 0.5.0
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 +270 -354
- package/dist/cli.js +1285 -2864
- package/dist/daemon.js +1142 -887
- package/docs/architecture/browser-pilot-platform-spec.md +440 -1013
- package/docs/plans/browser-capability-evolution.md +6 -6
- package/docs/plans/profile-context-routing.md +35 -10
- package/docs/plans/universal-agent-integration.md +121 -335
- package/docs/plans/v0.3.0-stabilization.md +10 -4
- package/docs/releases/v0.2.0.md +53 -0
- package/docs/releases/v0.2.1.md +13 -0
- package/docs/releases/v0.2.2.md +18 -0
- package/docs/releases/v0.4.0.md +62 -0
- package/docs/releases/v0.5.0.md +93 -0
- package/package.json +8 -15
- package/docs/integration/stdio-bridge.md +0 -670
- package/docs/integration/stdio-conformance.md +0 -51
- package/scripts/run-stdio-conformance.mjs +0 -698
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Browser Pilot v0.3.0 Stabilization Plan
|
|
2
2
|
|
|
3
|
-
Status: **
|
|
4
|
-
|
|
3
|
+
Status: **Complete**
|
|
4
|
+
Released baseline: `v0.3.0`, protocol `1.2`
|
|
5
5
|
|
|
6
6
|
## Goal
|
|
7
7
|
|
|
@@ -48,7 +48,11 @@ products depend on. No Agent-specific behavior enters Browser Pilot.
|
|
|
48
48
|
Chrome Profiles: public GitHub reading, search, precise scrolling, screenshot
|
|
49
49
|
annotation, PDF export, a disposable form with verified input and submission,
|
|
50
50
|
and managed-only cleanup. User tabs and exported files were preserved.
|
|
51
|
-
- [
|
|
51
|
+
- [x] Tag `v0.3.0`, publish a non-prerelease GitHub Release and npm
|
|
52
|
+
`latest=0.3.0`, and retain `next=0.3.0-rc.6` plus the local RC.6 standalone
|
|
53
|
+
as rollback paths. The installed stable executable connected through one
|
|
54
|
+
authorization request and repeated managed open/cleanup with
|
|
55
|
+
`closed: 1, remaining: 6`; all six user tabs remained available.
|
|
52
56
|
|
|
53
57
|
## Stable decision
|
|
54
58
|
|
|
@@ -64,4 +68,6 @@ RC.4 through RC.6 then closed the remaining real-browser gaps in passive
|
|
|
64
68
|
connection status, text-targeted scroll verification, restrictive-CSP screenshot
|
|
65
69
|
annotation, and asynchronous managed-target closure. The published RC.6
|
|
66
70
|
standalone now satisfies every pre-stable source, distribution, Host, and live
|
|
67
|
-
Chrome gate above.
|
|
71
|
+
Chrome gate above. The identical stable runtime passed the complete source and
|
|
72
|
+
distribution gates, published successfully on all three platforms, and passed
|
|
73
|
+
the installed user-Chrome smoke check.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Browser Pilot 0.2.0
|
|
2
|
+
|
|
3
|
+
Browser Pilot 0.2.0 turns the original one-shot CLI into an Agent-neutral
|
|
4
|
+
browser control platform while preserving direct `bp` commands and the user's
|
|
5
|
+
real Chrome profile. It requires no browser extension.
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Adds a versioned `bridge --stdio` protocol for products embedding the
|
|
10
|
+
official executable, with runtime tool discovery and no required SDK or MCP
|
|
11
|
+
dependency.
|
|
12
|
+
- Adds a shared per-user Broker with isolated Workspaces, Leases, targets,
|
|
13
|
+
refs, network rules, auth state, events, and Artifacts for concurrent Agents.
|
|
14
|
+
- Lists and controls eligible user-opened tabs alongside Browser Pilot managed
|
|
15
|
+
tabs. Bulk cleanup and session release close only managed tabs.
|
|
16
|
+
- Makes Chrome discovery passive. Only an explicit `bp connect` or
|
|
17
|
+
`browser.connect` may request browser authorization, and concurrent requests
|
|
18
|
+
share one in-flight connection attempt without timer-driven retries.
|
|
19
|
+
- Replaces file-backed refs with ephemeral Observation-scoped identity across
|
|
20
|
+
browser generations, targets, frames, CDP sessions, loaders, and documents.
|
|
21
|
+
- Fuses accessibility, DOM, and layout information; supports Shadow DOM,
|
|
22
|
+
same-process frames, and OOPIFs with bounded output and typed stale-ref
|
|
23
|
+
failures.
|
|
24
|
+
- Adds verified click, input, keyboard, upload, scroll, and dropdown behavior,
|
|
25
|
+
including obstruction checks, controlled-input readback, and composite-action
|
|
26
|
+
cancellation when page state changes.
|
|
27
|
+
- Adds bounded read, search, DOM metadata, page geometry, annotated screenshot,
|
|
28
|
+
PDF, download Artifact, dialog, network interception, cookie, and HTTP auth
|
|
29
|
+
support.
|
|
30
|
+
- Adds typed browser events, disconnect/reconnect state, command idempotency,
|
|
31
|
+
deadlines, cancellation, unknown outcomes, event cursors, and protected
|
|
32
|
+
Artifact delivery.
|
|
33
|
+
- Adds npm, local project, and self-contained macOS, Linux, and Windows launch
|
|
34
|
+
modes plus a language-neutral stdio conformance suite and reference Tenon and
|
|
35
|
+
OpenClaw adapters.
|
|
36
|
+
|
|
37
|
+
## Upgrade Notes
|
|
38
|
+
|
|
39
|
+
- Chrome remote debugging must be enabled at
|
|
40
|
+
`chrome://inspect/#remote-debugging`.
|
|
41
|
+
- Browser authorization is explicit. Run `bp connect` once when Browser Pilot
|
|
42
|
+
reports that it is disconnected; ordinary discovery and bridge startup do
|
|
43
|
+
not prompt.
|
|
44
|
+
- Direct CLI behavior remains supported. Embedded products should launch the
|
|
45
|
+
pinned executable with `bridge --stdio` and depend only on the documented
|
|
46
|
+
protocol.
|
|
47
|
+
- Refs are intentionally transient. Obtain a fresh snapshot after navigation,
|
|
48
|
+
frame changes, reconnects, or `stale_ref` responses.
|
|
49
|
+
|
|
50
|
+
See the [platform specification](https://github.com/relixiaobo/browser-pilot/blob/v0.2.0/docs/architecture/browser-pilot-platform-spec.md),
|
|
51
|
+
[stdio integration contract](https://github.com/relixiaobo/browser-pilot/blob/v0.2.0/docs/integration/stdio-bridge.md),
|
|
52
|
+
and [conformance suite](https://github.com/relixiaobo/browser-pilot/blob/v0.2.0/docs/integration/stdio-conformance.md)
|
|
53
|
+
for the stable public contracts.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Browser Pilot 0.2.1
|
|
2
|
+
|
|
3
|
+
This packaging-only patch adds the canonical GitHub repository metadata
|
|
4
|
+
required for npm Trusted Publishing provenance verification. Browser runtime,
|
|
5
|
+
protocol, CLI, and Agent integration behavior are unchanged from 0.2.0.
|
|
6
|
+
|
|
7
|
+
This is the first 0.2 stable version published through the package's GitHub
|
|
8
|
+
Actions OIDC Trusted Publisher. The npm package requires no long-lived publish
|
|
9
|
+
token, and its provenance identifies
|
|
10
|
+
`https://github.com/relixiaobo/browser-pilot` as the source repository.
|
|
11
|
+
|
|
12
|
+
See the [Browser Pilot 0.2.0 release](https://github.com/relixiaobo/browser-pilot/releases/tag/v0.2.0)
|
|
13
|
+
for the complete feature and upgrade notes.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Browser Pilot 0.2.2
|
|
2
|
+
|
|
3
|
+
This patch fixes executable ownership validation when a CLI command encounters
|
|
4
|
+
a compatible Broker started by another Browser Pilot installation.
|
|
5
|
+
|
|
6
|
+
The CLI now checks the Broker's executable version and identity before it
|
|
7
|
+
initializes its one-shot connection. A mismatched installation returns the
|
|
8
|
+
structured `protocol_incompatible` error without creating or changing Broker
|
|
9
|
+
session state. The executable that owns the Broker can therefore still shut it
|
|
10
|
+
down cleanly, which makes in-place upgrades deterministic and avoids a failed
|
|
11
|
+
command leaving the old Broker unusable.
|
|
12
|
+
|
|
13
|
+
Health responses from older compatible Brokers that do not expose executable
|
|
14
|
+
metadata remain supported. Current Brokers continue to enforce exact ownership
|
|
15
|
+
for protected shutdown.
|
|
16
|
+
|
|
17
|
+
Browser authorization, tab ownership, public protocol, and Agent integration
|
|
18
|
+
behavior are otherwise unchanged from 0.2.1.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Browser Pilot 0.4.0
|
|
2
|
+
|
|
3
|
+
Browser Pilot 0.4.0 introduces protocol 1.3 while preserving protocol 1.0-1.2
|
|
4
|
+
compatibility and the extension-free browser control model.
|
|
5
|
+
|
|
6
|
+
## Profile identity
|
|
7
|
+
|
|
8
|
+
- `browser.profiles.list` remains passive and returns neutral, connection-scoped
|
|
9
|
+
Profile contexts without opening or attaching to identity pages.
|
|
10
|
+
- New `browser.profiles.identify` explicitly creates temporary visible
|
|
11
|
+
`chrome://version` targets, verifies the reported Profile path against the
|
|
12
|
+
connected browser `userDataRoot`, reads bounded Chrome Local State metadata,
|
|
13
|
+
and proves cleanup before returning.
|
|
14
|
+
- Results distinguish `unidentified`, `verified`, and `unavailable`, with
|
|
15
|
+
structured Profile/account fields and stable failure codes. Identity is
|
|
16
|
+
cached only for one browser connection generation.
|
|
17
|
+
- `bp profiles --identify [--refresh]` exposes the same behavior. Profile and
|
|
18
|
+
tab selectors are one-based and may use a uniquely verified Profile name,
|
|
19
|
+
account name, or email address.
|
|
20
|
+
|
|
21
|
+
## Agent isolation and vocabulary
|
|
22
|
+
|
|
23
|
+
- Direct one-shot CLI Agents can set a stable `BROWSER_PILOT_CLIENT_KEY` or
|
|
24
|
+
`--client-key`; different keys receive distinct Principal, Connection,
|
|
25
|
+
Workspace, and Lease state while repeated calls with one key reuse it.
|
|
26
|
+
- `bp disconnect` releases only its CLI namespace and cannot stop a Broker that
|
|
27
|
+
still has another active Lease or embedded Connection.
|
|
28
|
+
- Protocol 1.3 browser discovery uses `userDataRoot` instead of the ambiguous
|
|
29
|
+
legacy candidate field `profile`.
|
|
30
|
+
- Protocol 1.3 tab inventory uses `selected` for the Lease-local target instead
|
|
31
|
+
of `active`, which could be mistaken for Chrome foreground focus.
|
|
32
|
+
|
|
33
|
+
## Page and target isolation
|
|
34
|
+
|
|
35
|
+
- Browser Pilot no longer injects a controller overlay or other status UI into
|
|
36
|
+
page DOM. Embedding Hosts may present returned controller identity in
|
|
37
|
+
Host-owned UI.
|
|
38
|
+
- Chrome and Edge extension pages are excluded from ordinary tab inventory and
|
|
39
|
+
Profile context evidence.
|
|
40
|
+
- Existing eligible user tabs remain fully controllable; managed-only cleanup
|
|
41
|
+
still leaves user tabs open.
|
|
42
|
+
|
|
43
|
+
## Embedding
|
|
44
|
+
|
|
45
|
+
- The Tenon/OpenClaw-neutral reference adapter negotiates protocol 1.3 and
|
|
46
|
+
discovers the identity operation through the canonical runtime manifest.
|
|
47
|
+
- One-shot CLI, embedded stdio, local Artifact export, native image results,
|
|
48
|
+
and protocol 1.0-1.2 compatibility remain supported without a Native SDK,
|
|
49
|
+
MCP server, or browser extension.
|
|
50
|
+
|
|
51
|
+
## CLI and distribution contract
|
|
52
|
+
|
|
53
|
+
- Every non-TTY one-shot failure now includes stable `code` and `retryable`
|
|
54
|
+
fields. Commander/parser and local input errors use `invalid_argument`, while
|
|
55
|
+
Broker errors preserve their protocol code and structured remediation.
|
|
56
|
+
- The versioned Agent plugin/skill records CLI `0.4.0` as its tested/minimum
|
|
57
|
+
version and accepts backward-compatible updates within the declared range. It
|
|
58
|
+
includes Codex UI metadata plus a machine-readable compatibility manifest.
|
|
59
|
+
- GitHub releases publish the plugin archive and checksum alongside a release
|
|
60
|
+
index that verifies the npm version, protocol range, and every native asset.
|
|
61
|
+
- Native targets are Apple Silicon macOS, x64 Linux, and x64 Windows. Intel Mac
|
|
62
|
+
is not supported and no `darwin-x64` asset is published.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Browser Pilot 0.5.0
|
|
2
|
+
|
|
3
|
+
Browser Pilot 0.5.0 establishes one public integration model for every Agent:
|
|
4
|
+
the Browser Pilot skill invokes the short-lived `bp` CLI through the Agent's
|
|
5
|
+
existing shell tool. Agent-installed and product-bundled copies now use the
|
|
6
|
+
same commands, state model, and recovery behavior.
|
|
7
|
+
|
|
8
|
+
## One Agent interface
|
|
9
|
+
|
|
10
|
+
- The public `bridge --stdio` command, JSON-RPC adapter, reference host
|
|
11
|
+
adapters, conformance suites, and adapter documentation have been removed.
|
|
12
|
+
- Browser Pilot does not require an MCP server, Native SDK, Browser Pilot
|
|
13
|
+
native tools, Agent-specific runtime, or browser extension.
|
|
14
|
+
- Tenon, OpenClaw, Codex, Claude Code, and other shell-capable Agents integrate
|
|
15
|
+
by bundling a compatible CLI on the Agent `PATH`, installing the same skill,
|
|
16
|
+
and assigning a stable `BROWSER_PILOT_CLIENT_KEY` per independent Agent.
|
|
17
|
+
- The internal Broker remains shared and long-lived. Individual CLI processes
|
|
18
|
+
remain short-lived and do not expose the Broker protocol as a public API.
|
|
19
|
+
|
|
20
|
+
## Stateful CLI recovery
|
|
21
|
+
|
|
22
|
+
- `bp status` returns bounded browser, profile, tab, active-command,
|
|
23
|
+
uncertain-command, and structured recovery state for the current Agent.
|
|
24
|
+
- `bp commands`, `bp command <id>`, and `bp cancel <id>` expose command
|
|
25
|
+
inspection and best-effort cancellation without a persistent client.
|
|
26
|
+
- Global `--request-id` provides deterministic deduplication for recovery of
|
|
27
|
+
one intended operation. Global `--timeout` sets its command deadline.
|
|
28
|
+
- `SIGINT` and `SIGTERM` request cancellation of an active command. Mutations
|
|
29
|
+
that may already have reached Chrome still return `unknown_outcome` and must
|
|
30
|
+
be inspected before retry.
|
|
31
|
+
- `bp wait` waits for one browser-visible URL, text, selector, dialog,
|
|
32
|
+
download, or popup condition and returns stable `wait_timeout` on expiry.
|
|
33
|
+
Terminating the wait CLI returns `command_cancelled` without releasing its
|
|
34
|
+
Agent browser state.
|
|
35
|
+
- `bp status` queries active and uncertain command states independently, so a
|
|
36
|
+
long condition wait cannot hide an older `unknown_outcome` behind its polling
|
|
37
|
+
reads.
|
|
38
|
+
|
|
39
|
+
## Files and downloads
|
|
40
|
+
|
|
41
|
+
- `BROWSER_PILOT_OUTPUT_DIR` provides a task-owned default destination for
|
|
42
|
+
screenshots, PDFs, exported downloads, and saved network bodies.
|
|
43
|
+
- Capture and download results return an absolute file path, MIME type, byte
|
|
44
|
+
size, and image dimensions when available.
|
|
45
|
+
- `bp downloads` lists completed downloads retained for the current Agent;
|
|
46
|
+
`bp download <index> [filename]` copies one result without moving or deleting
|
|
47
|
+
Chrome's original file.
|
|
48
|
+
- Artifact exports and saved network bodies are written with private file
|
|
49
|
+
permissions.
|
|
50
|
+
|
|
51
|
+
## Shared Broker and Agent isolation
|
|
52
|
+
|
|
53
|
+
- The private Broker RPC envelope is versioned independently from the public
|
|
54
|
+
CLI. A 0.5 CLI detects a pre-0.5 Broker before sending RPC and returns
|
|
55
|
+
`protocol_incompatible` with explicit stop-or-isolate remediation.
|
|
56
|
+
- Compatible global, Agent-installed, and product-bundled CLI versions reuse
|
|
57
|
+
one per-user Broker through protocol negotiation rather than executable-path
|
|
58
|
+
equality.
|
|
59
|
+
- A stable Agent key preserves selected profile, tab, frame, refs, auth,
|
|
60
|
+
network rules, downloads, and command history across CLI calls. Different
|
|
61
|
+
keys remain isolated.
|
|
62
|
+
- Commands are serialized per physical target. A second Agent receives
|
|
63
|
+
`target_busy` instead of taking control of a tab already leased by another
|
|
64
|
+
Agent.
|
|
65
|
+
- `bp disconnect` releases only the invoking Agent's state and managed tabs.
|
|
66
|
+
A compatible CLI that does not own the Broker executable cannot stop the
|
|
67
|
+
shared Broker.
|
|
68
|
+
- All eligible Browser Pilot-created and user-opened tabs remain available;
|
|
69
|
+
user tabs stay open during Agent release and crash cleanup.
|
|
70
|
+
|
|
71
|
+
## Skill and distribution
|
|
72
|
+
|
|
73
|
+
- The skill uses progressive disclosure: the main operating loop links to
|
|
74
|
+
separate command, asynchronous recovery, failure recovery, and product
|
|
75
|
+
embedding references.
|
|
76
|
+
- `bp --help` is the canonical runtime command inventory. The plugin no longer
|
|
77
|
+
publishes a permanent native-tool manifest.
|
|
78
|
+
- CLI, skill, plugin, marketplace metadata, compatibility range, checksums,
|
|
79
|
+
and release index are versioned together at 0.5.0.
|
|
80
|
+
- Native release targets remain Apple Silicon macOS, x64 Linux, and x64
|
|
81
|
+
Windows. Intel Mac is not supported.
|
|
82
|
+
|
|
83
|
+
## Migration from 0.4.x
|
|
84
|
+
|
|
85
|
+
Remove any `browser-pilot bridge --stdio` process and Browser Pilot-specific
|
|
86
|
+
tool mapping. Keep the Agent's normal shell tool, install the complete
|
|
87
|
+
`browser-pilot` skill, make a compatible `bp` executable available on `PATH`,
|
|
88
|
+
and inject `BROWSER_PILOT_CLIENT_KEY` plus an absolute
|
|
89
|
+
`BROWSER_PILOT_OUTPUT_DIR`. Use `bp status`, command recovery, and `bp wait`
|
|
90
|
+
when the host previously depended on a persistent adapter for state or events.
|
|
91
|
+
If a pre-0.5 Broker is still running, stop it once with the older executable's
|
|
92
|
+
`bp disconnect` before starting 0.5; Browser Pilot never replaces a live
|
|
93
|
+
incompatible process automatically.
|
package/package.json
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browser-pilot-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "CLI tool to control your browser via Chrome DevTools Protocol",
|
|
5
5
|
"repository": "https://github.com/relixiaobo/browser-pilot",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"bp": "dist/cli.js",
|
|
9
|
-
"browser-pilot": "dist/cli.js"
|
|
10
|
-
"browser-pilot-conformance": "scripts/run-stdio-conformance.mjs"
|
|
9
|
+
"browser-pilot": "dist/cli.js"
|
|
11
10
|
},
|
|
12
11
|
"scripts": {
|
|
13
12
|
"build": "tsup",
|
|
14
13
|
"build:standalone:js": "tsup --config tsup.standalone.config.ts",
|
|
15
14
|
"build:standalone": "npm run build:standalone:js && node scripts/build-standalone.mjs",
|
|
16
15
|
"package:standalone": "node scripts/package-standalone.mjs",
|
|
16
|
+
"package:agent-plugin": "node scripts/package-agent-plugin.mjs",
|
|
17
|
+
"package:release-index": "node scripts/build-release-index.mjs",
|
|
18
|
+
"release:sync-version": "node scripts/sync-release-version.mjs",
|
|
19
|
+
"release:check-version": "node scripts/sync-release-version.mjs --check",
|
|
20
|
+
"version": "node scripts/sync-release-version.mjs",
|
|
17
21
|
"verify:standalone": "node scripts/verify-standalone.mjs",
|
|
18
22
|
"dev": "tsup --watch",
|
|
19
23
|
"start": "node dist/cli.js",
|
|
@@ -21,8 +25,6 @@
|
|
|
21
25
|
"test:unit": "tsup && node --test tests/*.test.mjs",
|
|
22
26
|
"test:capabilities": "tsup && node --test tests/browser-capability-fixtures.test.mjs",
|
|
23
27
|
"test:protocol": "tsup && node --test tests/protocol.test.mjs",
|
|
24
|
-
"test:stdio-conformance": "tsup && node scripts/run-isolated-stdio-conformance.mjs",
|
|
25
|
-
"test:host-acceptance": "tsup && node scripts/run-isolated-host-integration-acceptance.mjs",
|
|
26
28
|
"test:distribution": "tsup && node scripts/verify-npm-distribution.mjs",
|
|
27
29
|
"test:canary": "tsup && node scripts/run-real-site-canaries.mjs",
|
|
28
30
|
"test:canary:strict": "tsup && node scripts/run-real-site-canaries.mjs --strict",
|
|
@@ -36,21 +38,12 @@
|
|
|
36
38
|
"dist/cli.js",
|
|
37
39
|
"dist/daemon.js",
|
|
38
40
|
"dist/managed-target-janitor.js",
|
|
39
|
-
"scripts/run-stdio-conformance.mjs",
|
|
40
41
|
"docs/architecture/browser-pilot-platform-spec.md",
|
|
41
|
-
"docs/integration/stdio-bridge.md",
|
|
42
|
-
"docs/integration/stdio-conformance.md",
|
|
43
42
|
"docs/plans/browser-capability-evolution.md",
|
|
44
43
|
"docs/plans/profile-context-routing.md",
|
|
45
44
|
"docs/plans/v0.3.0-stabilization.md",
|
|
46
45
|
"docs/plans/universal-agent-integration.md",
|
|
47
|
-
"docs/releases/
|
|
48
|
-
"docs/releases/v0.3.0-rc.2.md",
|
|
49
|
-
"docs/releases/v0.3.0-rc.3.md",
|
|
50
|
-
"docs/releases/v0.3.0-rc.4.md",
|
|
51
|
-
"docs/releases/v0.3.0-rc.5.md",
|
|
52
|
-
"docs/releases/v0.3.0-rc.6.md",
|
|
53
|
-
"docs/releases/v0.3.0.md",
|
|
46
|
+
"docs/releases/",
|
|
54
47
|
"README.md",
|
|
55
48
|
"LICENSE"
|
|
56
49
|
],
|