Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .changeset/launch-readiness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@browseragentprotocol/cli": minor
"@browseragentprotocol/client": minor
"@browseragentprotocol/logger": minor
"@browseragentprotocol/mcp": minor
"@browseragentprotocol/protocol": minor
"@browseragentprotocol/server-playwright": minor
---

Harden release readiness for public launch by shipping explicit package licenses
and changelogs in npm tarballs, tightening package metadata, improving CLI
browser messaging, and adding stronger CI and release verification.
8 changes: 8 additions & 0 deletions .changeset/session-persistence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@browseragentprotocol/protocol": minor
"@browseragentprotocol/server-playwright": minor
"@browseragentprotocol/client": minor
"@browseragentprotocol/cli": minor
---

Add server-side session persistence for CLI. Browser pages now survive across CLI invocations via a dormant session store. When a client with a `sessionId` disconnects, the server parks browser state instead of destroying it. On reconnect with the same `sessionId`, state is restored transparently. CLI auto-generates `sessionId` as `cli-<port>` with `-s=<name>` override for multi-session use cases.
8 changes: 8 additions & 0 deletions .changeset/webmcp-discovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@browseragentprotocol/protocol": minor
"@browseragentprotocol/server-playwright": minor
"@browseragentprotocol/client": minor
"@browseragentprotocol/mcp": minor
---

Add WebMCP tool discovery support via new `discovery/discover` protocol method. Detects tools exposed by websites through the W3C WebMCP standard (declarative HTML attributes and imperative navigator.modelContext API). Also available through `agent/observe` with opt-in `includeWebMCPTools` parameter.
52 changes: 52 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Bug report
description: Report a reproducible bug in BAP CLI, MCP, SDKs, or release tooling.
title: "[Bug]: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to file this. Please include enough detail for us to reproduce it quickly.
- type: textarea
id: summary
attributes:
label: Summary
description: What happened, and what did you expect instead?
validations:
required: true
- type: dropdown
id: surface
attributes:
label: Surface
options:
- CLI
- MCP
- TypeScript SDK
- Python SDK
- Server (Playwright)
- Docs / Examples
- Release / Packaging
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction
description: Paste commands, prompts, code, URLs, or test steps.
render: bash
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs and screenshots
description: Include stack traces, screenshots, or terminal output if available.
- type: input
id: environment
attributes:
label: Environment
description: OS, Node version, Python version, package version, and browser if relevant.
placeholder: "macOS 15, Node 22, Python 3.12, @browseragentprotocol/cli 0.3.0, Chrome"
validations:
required: true
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Security policy
url: https://github.com/browseragentprotocol/bap/blob/main/SECURITY.md
about: Please report vulnerabilities using the security process instead of filing a public issue.
- name: Contributing guide
url: https://github.com/browseragentprotocol/bap/blob/main/CONTRIBUTING.md
about: Check the contributing guide before opening a maintenance or development workflow question.
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Feature request
description: Suggest a product, DX, or ecosystem improvement for BAP.
title: "[Feature]: "
labels:
- enhancement
body:
- type: textarea
id: problem
attributes:
label: Problem
description: What user pain, limitation, or opportunity are you trying to address?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposal
description: Describe the ideal behavior, command, API, or doc improvement.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What workarounds or competing approaches have you tried?
- type: dropdown
id: area
attributes:
label: Area
options:
- Browser automation behavior
- CLI ergonomics
- MCP integrations
- TypeScript SDK
- Python SDK
- Security / auth
- Docs / demos
- Release / packaging
validations:
required: true
21 changes: 21 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Summary

Describe the user-facing or maintainer-facing change.

## Testing

- [ ] `pnpm build`
- [ ] `pnpm typecheck`
- [ ] `pnpm lint`
- [ ] `pnpm test`
- [ ] `pnpm check:artifacts`
- [ ] Python SDK checks, if touched

## Release Notes

- [ ] Added or updated a changeset when a published package changes
- [ ] Updated docs, demos, or screenshots if the UX changed

## Risks

Call out any rollout concerns, backwards-compatibility notes, or follow-up work.
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
include: "scope"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
include: "scope"
open-pull-requests-limit: 10
92 changes: 78 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,31 @@ on:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
node-quality:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: ["20", "22"]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v2
uses: pnpm/action-setup@v4
with:
version: 9.15.0

- name: Setup Node.js
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: "22"
node-version: ${{ matrix.node-version }}
cache: "pnpm"

- name: Install dependencies
Expand All @@ -39,25 +44,50 @@ jobs:
- name: Lint
run: pnpm lint

test:
- name: Test
run: pnpm test

package-artifacts:
runs-on: ubuntu-latest
needs: build
needs: node-quality
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "pnpm"

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Test
run: pnpm build && pnpm check:artifacts

smoke-cross-platform:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node-version: ["20", "22"]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v2
uses: pnpm/action-setup@v4
with:
version: 9.15.0

- name: Setup Node.js ${{ matrix.node-version }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
node-version: "22"
cache: "pnpm"

- name: Install dependencies
Expand All @@ -66,17 +96,51 @@ jobs:
- name: Build
run: pnpm build

- name: Test
run: pnpm test
- name: Smoke test CLI entrypoints
run: |
node packages/cli/dist/cli.js --help
node packages/mcp/dist/cli.js --help

python-sdk:
runs-on: ubuntu-latest
needs: package-artifacts
steps:
- uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install Python tooling
working-directory: packages/python-sdk
run: |
python -m pip install --upgrade pip
python -m pip install -e .[dev] build twine

- name: Test Python SDK
working-directory: packages/python-sdk
run: python -m pytest

- name: Build Python SDK
working-directory: packages/python-sdk
run: python -m build

- name: Validate Python distributions
working-directory: packages/python-sdk
run: |
twine check dist/*
python -m pip install --force-reinstall dist/*.whl
python -c "import browseragentprotocol; print(browseragentprotocol.__version__)"

coverage:
runs-on: ubuntu-latest
needs: build
needs: node-quality
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v2
uses: pnpm/action-setup@v4
with:
version: 9.15.0

Expand Down
Loading
Loading