pi-agent-browser-native 0.1.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,36 @@
1
+ # Changelog
2
+
3
+ ## 0.1.1 - 2026-04-11
4
+
5
+ ### Changed
6
+ - startup-scoped flags like `--profile`, `--session-name`, and `--cdp` now fail clearly when reused against an already-active implicit session instead of silently relying on upstream to ignore them
7
+ - prompt-based bash/help allowances are now derived from the current user prompt instead of mutable extension-global booleans, and the inspection allowance only triggers for tool-specific requests
8
+ - oversized subprocess stdout is now bounded in memory and spilled to private temp files before JSON parsing, reducing unbounded buffering risk without breaking large snapshot handling
9
+ - snapshot spill files now live under private temp directories with restrictive permissions and are cleaned up on shutdown
10
+ - failed upstream envelopes now synthesize clearer fallback error text when no simple top-level `error` string is present
11
+ - package/release verification now has a documented maintainer workflow, a tarball verifier script, a tracked repo-local `.pi` development shim, and a published tarball that excludes agent-only or superseded docs while including `LICENSE`
12
+ - npm publish prep now uses the available package name `pi-agent-browser-native`, adds author and gallery-friendly keywords, and updates README install guidance to show npm first and GitHub second
13
+
14
+ ## 0.1.0 - 2026-04-09
15
+
16
+ ### Added
17
+ - initial package scaffold for `pi-agent-browser`
18
+ - native `agent_browser` extension tool that wraps upstream `agent-browser --json`
19
+ - thin implicit-session support for the common path
20
+ - lightweight extension-level guards to keep direct bash `agent-browser` usage from becoming the primary path
21
+ - plain-text fallback for native `agent_browser --help` and `--version` inspection
22
+ - support for observed `batch --json` array output
23
+ - local TypeScript typecheck and unit-test setup
24
+ - concise product and implementation docs
25
+
26
+ ### Changed
27
+ - removed the shipped skill override; extension hooks are the primary mechanism for preferring the native tool
28
+ - implicit `piab-*` sessions are now best-effort closed on `pi` shutdown and get an idle timeout so abandoned background daemons do not accumulate as easily
29
+ - tightened tool guidance so agents avoid falling back to osascript or other generic browser-driving bash commands when the native tool should be used
30
+ - taught the tool a clearer browser operating playbook so agents do not need to rediscover core `open` / `snapshot -i` / auth / tab-management patterns from `--help` on routine tasks
31
+ - refined the authenticated-content playbook to prefer `--profile Default` on the first browser call while reusing the extension-managed implicit session for normal personal feeds/dashboards; this avoids stale cross-run browser state from fixed explicit session names
32
+ - refined read-only browsing guidance so agents prefer extracting from the current snapshot, ref labels, or page-state eval before navigating away, and clarified that extraction evals should return values instead of relying on `console.log`
33
+ - generalized recovery guidance so unexpected `open` failures now point agents to inspect and recover tab/session state before retrying alternate URLs or fallback strategies
34
+ - improved native error presentation so upstream JSON error messages are shown to the agent instead of a generic `agent-browser exited with code 1.` when the CLI already reported a specific failure
35
+ - oversized `snapshot -i` results now switch to a browser-aware compact view for the model and spill the full raw snapshot JSON to a temp file referenced from tool details instead of always inlining the full snapshot tree
36
+ - refined compact snapshots to be main-content-first: prefer the primary content block and nearby sections over top-of-page chrome, ads, and unrelated sidebars when the snapshot structure makes that distinction possible
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mitch Fultz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,139 @@
1
+ # pi-agent-browser
2
+
3
+ Native `pi` integration for [`agent-browser`](https://agent-browser.dev/).
4
+
5
+ ## Status
6
+
7
+ Early working scaffold.
8
+
9
+ The package scaffold, native `agent_browser` tool, local typecheck/test setup, tracked repo-local development entrypoint, and release/package verification workflow are in place.
10
+
11
+ ## Goal
12
+
13
+ Expose `agent-browser` to `pi` as a native tool so agents can automate the browser without going through a bash-backed skill.
14
+
15
+ ## Product stance
16
+
17
+ - **Not bundled**: users install `agent-browser` separately and keep it on `PATH`
18
+ - **Latest-version only**: no backward-compatibility support or shims for older `agent-browser` versions
19
+ - **Thin wrapper**: stay close to upstream `agent-browser` instead of re-implementing its CLI
20
+ - **Agent-invoked first**: the main UX is the agent calling the tool directly, like `read` or `write`
21
+ - **Global-install first**: package behavior matters more than repo-local development wiring
22
+
23
+ Upstream install/docs:
24
+ - https://agent-browser.dev/
25
+ - https://github.com/vercel-labs/agent-browser
26
+
27
+ ## Why this exists
28
+
29
+ A native `pi` integration can improve on the current skill by adding:
30
+
31
+ - structured tool calls instead of shell strings
32
+ - parsed results instead of bash stdout
33
+ - compact model-facing snapshot shaping with full raw spill files for oversized pages
34
+ - main-content-first snapshot previews so the model sees the important page region before unrelated chrome or sidebar noise
35
+ - inline screenshots and artifacts
36
+ - lightweight session convenience inside `pi`
37
+ - a better base for serious browser automation
38
+
39
+ ## Example use cases
40
+
41
+ - UI testing and exploratory QA
42
+ - web research
43
+ - driving web UIs for ChatGPT, Grok, Gemini, and Claude
44
+ - authenticated browser sessions and persistent profiles
45
+
46
+ ## Install and try
47
+
48
+ The product direction is package-first. Prefer the package source once a release exists, while keeping the local-checkout flow for current development and pre-release validation.
49
+
50
+ ### Preferred package install
51
+
52
+ Install `agent-browser` separately, then install this package into `pi`:
53
+
54
+ ```bash
55
+ pi install npm:pi-agent-browser-native
56
+ ```
57
+
58
+ To try a published package without installing it permanently:
59
+
60
+ ```bash
61
+ pi -e npm:pi-agent-browser-native
62
+ ```
63
+
64
+ ### GitHub install
65
+
66
+ For the source install path, prefer the repository URL:
67
+
68
+ ```bash
69
+ pi install https://github.com/fitchmultz/pi-agent-browser
70
+ ```
71
+
72
+ To try the GitHub source without installing it permanently:
73
+
74
+ ```bash
75
+ pi -e https://github.com/fitchmultz/pi-agent-browser
76
+ ```
77
+
78
+ ### Current practical local-checkout flow
79
+
80
+ Until you are using a published package release, install from a checkout:
81
+
82
+ ```bash
83
+ pi install /absolute/path/to/pi-agent-browser
84
+ ```
85
+
86
+ Or try it for one session only:
87
+
88
+ ```bash
89
+ pi -e /absolute/path/to/pi-agent-browser
90
+ ```
91
+
92
+ The native tool exposed to the agent is named `agent_browser`.
93
+
94
+ ## Local development
95
+
96
+ This repository now tracks `.pi/extensions/agent-browser.ts` as a thin development entrypoint that re-exports the real extension from `extensions/agent-browser/index.ts`. That keeps repo-root `pi` launches working without changing the published package layout.
97
+
98
+ 1. Install `agent-browser` separately via the upstream project.
99
+ 2. Run `npm install`.
100
+ 3. Launch `pi` from this repository root.
101
+ 4. Prompt the agent to use `agent_browser`.
102
+
103
+ Example prompt:
104
+
105
+ ```text
106
+ Use the agent_browser tool to open https://react.dev and then take an interactive snapshot.
107
+ ```
108
+
109
+ Validated workflow examples:
110
+
111
+ - open a page and snapshot it
112
+ - click a link and confirm the destination title
113
+ - use an explicit `--session` across multiple tool calls
114
+ - use an explicit `--profile` and verify persisted browser storage across restarts
115
+ - run `batch` with JSON via `stdin`
116
+ - run `eval --stdin`
117
+ - take a screenshot with inline attachment support
118
+ - inspect `agent_browser --help` and `--version`
119
+
120
+ Current cautions:
121
+ - passing `--profile` is an explicit upstream choice; this extension does not add its own profile-cloning or isolation layer
122
+ - startup-scoped flags like `--profile`, `--session-name`, and `--cdp` are for the first command that launches a session; if the implicit session is already active, the extension returns a validation error instead of silently letting upstream ignore those flags
123
+ - implicit `piab-*` sessions are extension-managed convenience sessions; they are best-effort closed on `pi` shutdown, get an idle timeout to reduce stale background daemons, and clean up private temp spill artifacts on shutdown
124
+ - explicit upstream sessions like `--session`, `--profile`, `--session-name`, and `--cdp` are treated as user-managed and are not auto-closed by the extension
125
+
126
+ ## Docs
127
+
128
+ - [`docs/REQUIREMENTS.md`](docs/REQUIREMENTS.md) — product requirements and constraints
129
+ - [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — current architecture decision
130
+ - [`docs/TOOL_CONTRACT.md`](docs/TOOL_CONTRACT.md) — proposed v1 tool shape
131
+ - [`docs/RELEASE.md`](docs/RELEASE.md) — maintainer release and package verification workflow
132
+
133
+ ## Documentation rule
134
+
135
+ When requirements change in chat:
136
+
137
+ 1. update `docs/REQUIREMENTS.md`
138
+ 2. update the affected design docs
139
+ 3. update this README if user-facing expectations changed
@@ -0,0 +1,158 @@
1
+ # Architecture
2
+
3
+ Related docs:
4
+ - [`../README.md`](../README.md)
5
+ - [`REQUIREMENTS.md`](REQUIREMENTS.md)
6
+ - [`TOOL_CONTRACT.md`](TOOL_CONTRACT.md)
7
+
8
+ ## Decision
9
+
10
+ Build this as a **thin `pi` extension/package** that exposes `agent-browser` as one native tool while keeping upstream `agent-browser` as the source of truth.
11
+
12
+ The package install path is the primary product path. Repo-local `.pi/` wiring exists only as a thin tracked development shim, while package-manifest behavior and packaged contents matter more.
13
+
14
+ ## Chosen shape
15
+
16
+ ### One primary tool
17
+
18
+ V1 should expose one native tool:
19
+
20
+ - `agent_browser`
21
+
22
+ Why:
23
+ - lowest maintenance cost
24
+ - lowest drift risk as upstream changes
25
+ - preserves full upstream power
26
+ - avoids overengineering
27
+
28
+ ### Direct subprocess execution
29
+
30
+ The extension should:
31
+ - resolve `agent-browser` from `PATH`
32
+ - invoke it directly, not through a shell
33
+ - inject `--json`
34
+ - support optional stdin for commands like `eval --stdin` and `batch`
35
+
36
+ ### Agent-first UX
37
+
38
+ The primary UX is the agent calling the tool directly.
39
+
40
+ That means:
41
+ - no command-heavy slash-command interface
42
+ - no manual user orchestration as the main workflow
43
+ - any future slash commands should be minimal and secondary
44
+
45
+ ### Package layout versus repo-local development
46
+
47
+ The published package should load from the `pi` manifest in `package.json`.
48
+
49
+ Repo-local development should use one thin tracked shim at `.pi/extensions/agent-browser.ts` that re-exports `extensions/agent-browser/index.ts`.
50
+
51
+ Why:
52
+ - keeps repo-root `pi` launches working during development
53
+ - avoids making local `.pi/` wiring the product contract
54
+ - keeps the published tarball focused on the package manifest, extension code, canonical docs, and license
55
+
56
+ The published package should exclude agent-only and superseded repo materials such as `AGENTS.md`, `docs/v1-tool-contract.md`, `docs/native-integration-design.md`, and other internal planning notes.
57
+
58
+ ## Session model
59
+
60
+ ### Default
61
+
62
+ If the caller does not provide `--session`, the extension should use an implicit session name derived from the current `pi` session id.
63
+
64
+ Why:
65
+ - works out of the box
66
+ - gives continuity across calls
67
+ - avoids forcing the agent to invent session names for basic browsing
68
+
69
+ ### Explicit upstream sessions
70
+
71
+ If the caller provides `--session`, `--profile`, `--cdp`, or similar upstream flags, the extension should respect them with minimal interference.
72
+
73
+ ### Ownership
74
+
75
+ V1 ownership rule:
76
+ - implicit auto-generated sessions are extension-managed convenience sessions
77
+ - explicit/user-managed sessions are not auto-managed by default
78
+ - implicit sessions should be reusable during an active `pi` session, but should still be cleaned up predictably
79
+
80
+ Practical policy:
81
+ - on normal `pi` shutdown, best-effort close the implicit session
82
+ - also set an idle timeout on implicit sessions so abandoned daemons self-clean after inactivity
83
+ - clean up private temp spill artifacts owned by the implicit session on shutdown
84
+ - leave explicit upstream sessions like `--session`, `--profile`, `--session-name`, and `--cdp` alone unless the caller closes them explicitly
85
+
86
+ This is primarily about ownership clarity and avoiding surprise, not adding a heavy safety wrapper. If the extension invented the session, the extension should clean it up. If the caller explicitly chose the upstream session model, the extension should stay out of the way.
87
+
88
+ ### Launch flags
89
+
90
+ `agent-browser` startup flags are sticky once a session is already running.
91
+ The extension should surface that clearly and avoid hidden restart behavior in v1.
92
+
93
+ That means explicit startup-scoping flags like `--profile`, `--session-name`, and `--cdp` should remain explicit upstream choices instead of being wrapped in extra hidden restart or cloning logic.
94
+
95
+ If the implicit session is already active and one of those startup-scoped flags appears again, the extension should fail clearly instead of silently sending a command shape that upstream would ignore.
96
+
97
+ ## Preferring the native tool
98
+
99
+ Keep the handling simple:
100
+ - prefer the native tool through extension guidance and tool-call guards
101
+ - do not rely on package skill overrides as the primary solution
102
+
103
+ This keeps the product centered on native tool usage instead of auxiliary skill wiring.
104
+
105
+ ## Responsibility split
106
+
107
+ ### `pi-agent-browser` owns
108
+
109
+ - tool registration and schema
110
+ - subprocess execution and JSON parsing
111
+ - clear missing-binary errors
112
+ - compact result summaries
113
+ - inline screenshots/images
114
+ - lightweight session convenience
115
+ - docs
116
+
117
+ ### Upstream `agent-browser` owns
118
+
119
+ - browser automation semantics
120
+ - command vocabulary
121
+ - session/profile behavior
122
+ - auth/profile mechanics
123
+ - feature evolution
124
+
125
+ ## Not the right design
126
+
127
+ V1 should avoid:
128
+ - a wide family of bespoke browser tools
129
+ - compatibility layers for old `agent-browser` versions
130
+ - deep embedded SDK-style integration
131
+ - embedding a human-browsable browser UI inside `pi`
132
+ - a slash-command-heavy UX
133
+
134
+ ## V1 priorities
135
+
136
+ ### Must have
137
+
138
+ - one native `agent_browser` tool
139
+ - direct `--json` execution
140
+ - optional stdin support
141
+ - implicit-session convenience
142
+ - screenshot/image attachment
143
+ - clear install and missing-binary messaging
144
+ - solid docs
145
+
146
+ ### Nice to have
147
+
148
+ - compact renderers for snapshots and tab lists
149
+ - lightweight status display
150
+
151
+ ## Summary
152
+
153
+ The architecture should stay:
154
+ - thin
155
+ - latest-only
156
+ - close to upstream
157
+ - native where it matters
158
+ - low-maintenance
@@ -0,0 +1,86 @@
1
+ # Release and package verification
2
+
3
+ Related docs:
4
+ - [`../README.md`](../README.md)
5
+ - [`REQUIREMENTS.md`](REQUIREMENTS.md)
6
+ - [`ARCHITECTURE.md`](ARCHITECTURE.md)
7
+ - [`TOOL_CONTRACT.md`](TOOL_CONTRACT.md)
8
+
9
+ ## Purpose
10
+
11
+ Provide one concrete maintainer workflow for validating repo state, package contents, and install guidance before publishing `pi-agent-browser`.
12
+
13
+ ## Pre-release checks
14
+
15
+ From the repository root:
16
+
17
+ ```bash
18
+ npm install
19
+ npm run verify:release
20
+ ```
21
+
22
+ `npm run verify:release` runs:
23
+
24
+ 1. `npm run verify` for TypeScript and unit coverage
25
+ 2. `npm run verify:package` for package-content validation via `npm pack --json --dry-run`
26
+
27
+ ## What package verification checks
28
+
29
+ `npm run verify:package` confirms that:
30
+
31
+ - the tracked repo-local development entrypoint exists at `.pi/extensions/agent-browser.ts`
32
+ - `LICENSE` exists in the repo and the packed tarball
33
+ - canonical published docs are present
34
+ - extension source files are present
35
+ - agent-only and superseded docs are absent from the tarball
36
+
37
+ Current forbidden packed files include:
38
+
39
+ - `AGENTS.md`
40
+ - `docs/IMPLEMENTATION_PLAN.md`
41
+ - `docs/native-integration-design.md`
42
+ - `docs/v1-tool-contract.md`
43
+ - `.pi/extensions/agent-browser.ts`
44
+ - test and repo-only maintenance files
45
+
46
+ For a full packed file listing:
47
+
48
+ ```bash
49
+ node scripts/verify-package.mjs --list-files
50
+ ```
51
+
52
+ ## Local development validation
53
+
54
+ Before publishing, also validate the repo-local development path:
55
+
56
+ 1. Install `agent-browser` separately.
57
+ 2. Launch `pi` from this repository root.
58
+ 3. Confirm the tracked `.pi/extensions/agent-browser.ts` shim loads the current extension code.
59
+ 4. Run a smoke prompt that exercises `agent_browser`.
60
+
61
+ Example prompt:
62
+
63
+ ```text
64
+ Use the agent_browser tool to open https://react.dev and then take an interactive snapshot.
65
+ ```
66
+
67
+ ## Post-publish install validation
68
+
69
+ After publishing a release, validate the package-first install path explicitly:
70
+
71
+ ```bash
72
+ pi install npm:pi-agent-browser-native@<version>
73
+ pi -e npm:pi-agent-browser-native@<version>
74
+ ```
75
+
76
+ Then confirm `pi` exposes the native `agent_browser` tool and that a basic `open` + `snapshot -i` flow works.
77
+
78
+ ## Release notes checklist
79
+
80
+ Before publishing:
81
+
82
+ - update `CHANGELOG.md`
83
+ - confirm README install guidance still leads with the package-first flow
84
+ - confirm local-checkout instructions still work for pre-release validation
85
+ - rerun `npm run verify:release`
86
+ - publish only after the tarball contents match expectations
@@ -0,0 +1,101 @@
1
+ # Requirements
2
+
3
+ Related docs:
4
+ - [`../README.md`](../README.md)
5
+ - [`ARCHITECTURE.md`](ARCHITECTURE.md)
6
+ - [`TOOL_CONTRACT.md`](TOOL_CONTRACT.md)
7
+ - [`RELEASE.md`](RELEASE.md)
8
+
9
+ ## Purpose
10
+
11
+ Define the product requirements and constraints for `pi-agent-browser`.
12
+
13
+ ## Product requirements
14
+
15
+ ### Dependency model
16
+
17
+ - `agent-browser` is an external dependency.
18
+ - This project does **not** bundle `agent-browser`.
19
+ - Users install `agent-browser` separately and keep it available on `PATH`.
20
+ - User-facing install guidance should point to the upstream `agent-browser` project/docs.
21
+
22
+ ### Version policy
23
+
24
+ - Target the current locally installed `agent-browser` version.
25
+ - Do **not** support a broad range of older `agent-browser` versions.
26
+ - Do **not** add backward-compatibility shims.
27
+ - Keep the wrapper close to current upstream behavior as `agent-browser` evolves.
28
+
29
+ ### Design philosophy
30
+
31
+ - Do **not** overengineer.
32
+ - Do **not** reduce usability.
33
+ - Keep the integration thin and close to upstream `agent-browser`.
34
+ - Give `pi` agents the power they need for practical browser automation.
35
+ - Prefer official `pi` mechanisms over bespoke custom integration patterns.
36
+ - Do **not** solve hypothetical problems that are not backed by observed behavior.
37
+
38
+ ### Primary UX
39
+
40
+ - The main UX is the agent invoking the native tool directly, similar to built-in tools like `read` or `write`.
41
+ - Do **not** rely on a large set of user-facing slash commands as the main interface.
42
+ - This project is not trying to embed a human-browsable browser UI inside `pi`.
43
+
44
+ ### Install priority
45
+
46
+ - Prioritize the package install path first.
47
+ - User-facing install docs should lead with `pi install npm:pi-agent-browser-native` and `pi -e npm:pi-agent-browser-native` once releases exist.
48
+ - User-facing install docs should also include the GitHub source path `pi install https://github.com/fitchmultz/pi-agent-browser`.
49
+ - Keep the current local-checkout path documented as the practical pre-release and development flow.
50
+ - Most users will install this extension globally rather than as a project-local extension.
51
+ - Repo-local `.pi/` wiring is for development convenience only and should not drive the product design.
52
+ - The tracked repo-local development entrypoint should stay a thin re-export, not a second implementation path.
53
+
54
+ ### Native-tool preference
55
+
56
+ - When this native extension is available, the native `agent_browser` tool should be the preferred path for browser automation.
57
+ - Keep the handling simple and global-install-friendly.
58
+ - Do not rely on package skill overrides as the primary answer.
59
+
60
+ ### Documentation standard
61
+
62
+ - Documentation is a core product artifact.
63
+ - Docs must be structured, concise, well-linked, and written for humans first.
64
+ - Someone opening the repo should quickly understand the goal, purpose, install model, and usage.
65
+ - Documents should read as complete documents, not iterative logs, unless they are explicitly meant to be iterative, such as a changelog.
66
+ - Requirements, expectations, and durable rules from user conversations should be reflected in the appropriate docs.
67
+ - Published package contents should include the canonical user-facing docs plus `LICENSE`.
68
+ - Published package contents should exclude agent-only and superseded docs such as `AGENTS.md`, `docs/v1-tool-contract.md`, and `docs/native-integration-design.md`.
69
+
70
+ ### Testing guidance
71
+
72
+ - The primary confidence path is a real `pi` session driven in `tmux`.
73
+ - Launch `pi` from the repository root for local development so the tracked `.pi` development entrypoint loads.
74
+ - Prefer full `pi` restart over `/reload` when validating extension changes.
75
+ - Use `/resume` when needed after restart.
76
+ - Keep testing broader than a single smoke site like `example.com`.
77
+ - Maintain a concrete release/package verification workflow in `docs/RELEASE.md` and matching repository scripts.
78
+
79
+ ## Representative use cases
80
+
81
+ The design should comfortably support workflows such as:
82
+
83
+ - UI testing and exploratory QA
84
+ - web research
85
+ - using browser UIs for other LLMs such as ChatGPT, Grok, Gemini, and Claude
86
+ - isolated authenticated browser sessions
87
+ - cloned-profile workflows similar to the patterns used in `pi-oracle`
88
+
89
+ ## Implications for the implementation
90
+
91
+ - Package-manifest behavior matters more than repo-local development wiring.
92
+ - The extension should use official `pi` hooks and package resources where possible.
93
+ - The wrapper should stay thin, with upstream `agent-browser` remaining the source of truth for command semantics.
94
+ - User-facing docs belong in `README.md` and the canonical published files under `docs/`.
95
+ - Agent workflow and deeper testing procedures can stay in `AGENTS.md`, but published docs must not depend on that file being present.
96
+ - Keep mitigations for legacy-skill coexistence simple; do not add extra moving parts unless observed behavior justifies them.
97
+
98
+ ## Open design questions
99
+
100
+ - How much session convenience should the extension add by default versus leaving explicit session naming entirely to upstream `agent-browser` semantics?
101
+ - Exactly which high-value result renderers belong in v1 beyond screenshots/images and a few compact summaries?