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.
@@ -1,7 +1,7 @@
1
1
  # Browser Pilot v0.3.0 Stabilization Plan
2
2
 
3
- Status: **In progress**
4
- Candidate baseline: `v0.3.0-rc.6`; release target: `v0.3.0`, protocol `1.2`
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
- - [ ] Tag `v0.3.0`, publish npm `latest`, and verify upgrade/rollback metadata.
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. Stable publication remains a separate explicit release step.
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.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/v0.3.0-rc.1.md",
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
  ],