Commit Graph

2457 Commits

Author SHA1 Message Date
Nikhil
2e79933cae refactor: flatten server agent directory (#435) 2026-03-06 16:07:14 -08:00
Felarof
d2fd02e72e chore: sync packages/browseros-agent submodule (to db3d38a) 2026-03-06 23:11:18 +00:00
Nikhil
db3d38ae3c feat: gate Moonshot AI provider behind Kimi launch flag (#432)
* feat: gate Moonshot AI provider behind VITE_PUBLIC_KIMI_LAUNCH flag

Hide all Moonshot/Kimi provider UI when the launch flag is off:
- Filter moonshot from provider templates and type dropdown
- Gate Kimi flare badges in HubProviderRow
- Gate Kimi auto-insertion in LLM hub storage
- Add analytics events for Kimi API key configuration and guide clicks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: allow editing existing moonshot providers when launch flag is off

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 14:21:34 -08:00
Felarof
7f39f95c8e chore: sync packages/browseros-agent submodule (to dafad1d) 2026-03-06 21:11:43 +00:00
Nikhil
dafad1dd14 feat: add vertical tabs customization toggle (#430) 2026-03-06 12:44:10 -08:00
Dani Akash
c38ceb49c1 feat: update docs (#404)
* docs: update bring your own llm section

* docs: update mcp clients info

* chore: updated docs with comparison page

* docs: fix tool count

* docs: updated cowork section

* feat: connect apps screen

* feat: setup sync to cloud section

* feat: added soul.md

* feat: memory section

* feat: open claw comparison section

* feat: scheduled tasks page

* fix: info text

* feat: provide link to llms.txt

* fix: kimi section
2026-03-07 02:09:29 +05:30
Nikhil Sonti
577de3bad3 chore: Merge branch 'main' 2026-03-06 12:16:44 -08:00
Felarof
a9bb4602cd chore: sync packages/browseros-agent submodule (to fb2ad66) 2026-03-06 20:12:19 +00:00
Nikhil
fb2ad66c91 feat: add search provider settings page (#429)
* feat: add search provider settings page with 5 engine options

Allow users to select their preferred search engine (Google, DuckDuckGo,
Bing, Brave Search, Yahoo) from a new settings page. The selected provider
drives search suggestions, search URL navigation, placeholder text, and
analytics tracking. Replaces all hardcoded Google references with the
stored preference. Adds Brave Search support, replacing Yandex.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add error handling for search provider storage writes

Write to storage before updating React state so UI never diverges from
persisted value on failure. Add try/catch in the settings page to show
an error toast if the write fails.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 12:08:39 -08:00
Nikhil Sonti
d6d024fcea bump offset & version 2026-03-06 11:51:40 -08:00
Nikhil Sonti
7dbf645457 chore: bump server version 2026-03-06 11:37:00 -08:00
Felarof
b3ec17b4ff chore: sync packages/browseros-agent submodule (to bc53ff5) 2026-03-06 18:19:01 +00:00
Nikhil
7759d6769f feat: download latest bundled BrowserOS server resources (#401)
* feat: download latest bundled BrowserOS server resources

* fix: guard artifact metadata root type
2026-03-06 09:30:15 -08:00
Nikhil
bc53ff52e5 feat: remove legacy /chat endpoint (#428)
* feat: remove legacy chat endpoint alias

* refactor: rename chat-v2 to chat
2026-03-06 09:29:42 -08:00
github-actions[bot]
6ecf7ca3e4 docs: DaniAkash signed the CLA in browseros-ai/BrowserOS#$pullRequestNo 2026-03-06 16:18:38 +00:00
Felarof
5bcf3fe875 chore: sync packages/browseros-agent submodule (to 9b0c484) 2026-03-06 14:18:02 +00:00
shivammittal274
9b0c484d06 fix: migrate stale 400k context window for browseros provider (#427)
* fix: migrate stale 400k context window for browseros provider

Existing installations cached the old 400k default in extension storage.
Always normalize the browseros provider's contextWindow to 200k on load,
matching the current default and preventing compaction from failing.

* fix: add browseros-auto model with 200k context length

* fix: setup migrations using the migrations api for context window size

---------

Co-authored-by: Dani Akash <DaniAkash@users.noreply.github.com>
2026-03-06 18:58:23 +05:30
Felarof
9336ede323 chore: sync packages/browseros-agent submodule (to d778cd6) 2026-03-06 12:18:26 +00:00
shivammittal274
d778cd6ba9 fix: anchor agent to active tab page ID from browser context (#426)
* fix: anchor agent to active tab page ID from browser context

Generalize the scheduled-task page anchoring instruction to all tasks.
The agent now always uses the page ID from Browser Context instead of
calling get_active_page or list_pages, preventing it from operating
on the wrong tab.

* fix: add chatMode guard and scope windowLine to scheduled tasks

- Skip page-context section in chat mode where list_pages is allowed
- Only show windowId instruction for scheduled tasks (hidden window)
2026-03-06 17:11:22 +05:30
Felarof
4807f533cd chore: sync packages/browseros-agent submodule (to 3477772) 2026-03-06 04:38:03 +00:00
Nikhil Sonti
3477772e4e chore: bump server version 2026-03-05 19:52:45 -08:00
Felarof
402d9c0538 chore: sync packages/browseros-agent submodule (to 696d520) 2026-03-06 03:04:47 +00:00
Felarof
696d520199 Revert "feat: integrate models.dev registry for model defaults (#425)"
This reverts commit ddc376a026.
2026-03-05 17:48:12 -08:00
Felarof
00922aadc4 chore: sync packages/browseros-agent submodule (to c561861) 2026-03-06 00:44:49 +00:00
Nikhil
c56186111e fix: avoid CSP-unsafe MCP SDK usage in settings (#423)
* fix: avoid CSP-unsafe MCP SDK usage in settings

* fix: handle paginated MCP tool listings

* fix: restore MCP SDK tool listing for settings
2026-03-05 16:40:57 -08:00
Nikhil
cc075e7770 fix: resolve active page IDs from MCP response (#424)
* fix: resolve active page IDs from MCP response

* fix: tighten active page ID parsing tests
2026-03-05 16:32:59 -08:00
Felarof
48a0efeb81 feat: fix macOS icon size to match Apple HIG padding (#396)
The app icon was oversized in the macOS Dock because the source icon
filled the entire 1024x1024 canvas with no padding. Apple's macOS Big
Sur+ HIG requires ~100px padding on each side (artwork at 824x824
within 1024x1024 canvas). Resized the source icon and regenerated all
platform icons.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 16:30:59 -08:00
Felarof
ddc376a026 feat: integrate models.dev registry for model defaults (#425)
* feat: integrate models.dev registry for auto-populated model defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: fall back to upstream provider for model registry lookup

When the browseros meta-provider is used, the registry lookup now
also tries the upstream provider (e.g., openrouter, anthropic) so
that BrowserOS-hosted models get correct context window and image
support defaults.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add Object.hasOwn guards to prevent prototype chain lookup

Addresses Greptile review: bracket notation on the registry object
could return prototype-chain properties for keys like __proto__ or
constructor, bypassing the 404 guard in the route handler.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 16:27:14 -08:00
Nikhil
64b25c1610 fix: resolve dev runner port conflicts (#422)
* fix: resolve dev runner port conflicts

* fix: address PR review comments for dev_runner_port_fallback
2026-03-05 15:52:12 -08:00
Felarof
6f99d14e78 chore: sync packages/browseros-agent submodule (to b7e63a4) 2026-03-05 23:28:50 +00:00
Nikhil
b7e63a4a1f feat: add browseros-cli Go CLI for browser automation (#421)
* feat: add browseros-cli Go CLI for browser automation

Implements a full-featured CLI that communicates with the BrowserOS MCP
server over JSON-RPC 2.0 / StreamableHTTP. Covers all 54 MCP tools across
10 categories with a hybrid command structure (flat verbs for hot-path
commands, grouped noun-verb for resource management).

- MCP client with initialize + tools/call pattern, thread-safe request IDs
- Dual output: human-readable default, --json for structured/piped usage
- Implicit active page resolution with --page override
- 21 command files: open, nav, snap, click, fill, scroll, eval, ss, pdf,
  dom, wait, dialog, pages, window, bookmark, history, group, health, info
- Cobra CLI framework with fatih/color for terminal formatting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: add end-to-end integration tests for browseros-cli

Go integration tests gated by `//go:build integration` that exercise the
CLI binary against a running BrowserOS server. Tests build the binary,
run commands via exec.Command, and verify JSON output.

Covers: health, version, page lifecycle (open → text → snap → eval →
screenshot → nav → reload → close), active page, info, error handling,
and invalid page ID rejection. Skips gracefully when no server is running.

Run with: go test -tags integration -v ./...

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add init command and fix MCP client bugs

- Add `browseros-cli init` command that prompts for the server URL,
  verifies connectivity, and saves to ~/.config/browseros-cli/config.json
- Config priority: --server flag > BROWSEROS_URL env > config file > default
- Fix Accept header: include text/event-stream (required by StreamableHTTPTransport)
- Fix nil args: send empty object {} instead of null for tools with no params
- Update error messages to suggest `browseros-cli init` on connection failure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add README for browseros-cli with setup, usage, and testing guide

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: always send arguments object in MCP tools/call

Go's json omitempty omits empty maps, causing the arguments field to be
missing from tools/call requests. The MCP SDK requires arguments to be
an object (even empty {}), not undefined. Remove omitempty from the tag.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: update help menu to be have groups

* refactor: replace hand-rolled MCP client with official Go SDK

Switch from custom JSON-RPC implementation to the official
github.com/modelcontextprotocol/go-sdk. This removes all hand-rolled
protocol types (jsonrpcRequest, jsonrpcResponse, RPCError, etc.) and
uses the SDK's StreamableClientTransport with DisableStandaloneSSE
for clean CLI process lifecycle.

Also adds URL normalization/validation, config command, and
updates init/README to reference YAML config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:49:45 -08:00
Nikhil
9fdb361d67 feat: build prod server resource artifact pipeline (#417)
* feat: build prod server resource artifacts with cloudflare r2

* fix: address PR review comments for prod_server_resources_cloudflare

* feat: fix prod server build setup and CLI ergonomics

* fix: prevent build env secret inlining and template fallback

* fix: read from fileenv

* feat: add ripgrep

* feat: upload prod artifacts to latest and version prefixes
2026-03-05 14:26:46 -08:00
Felarof
706c0768a7 chore: sync packages/browseros-agent submodule (to e37d19d) 2026-03-05 22:11:50 +00:00
Nikhil
e37d19da51 feat: add structured MCP tool outputs and schemas (#420)
* feat: add structured MCP outputs for browser tools

* fix: address PR review comments for mcp_structured_content
2026-03-05 13:19:01 -08:00
Felarof
909c430988 chore: sync packages/browseros-agent submodule (to 88cb227) 2026-03-05 21:14:56 +00:00
shivammittal274
88cb227444 feat: add MCP server instructions for external AI clients (#419)
Add server-level instructions that get injected into the LLM system
prompt when external MCP clients (Claude Desktop, Cursor, Gemini CLI)
connect. Covers browser automation workflow, Klavis integration
discovery, and auth flow guidance.
2026-03-06 02:28:09 +05:30
Felarof
93c75e354f chore: sync packages/browseros-agent submodule (to 2b605bd) 2026-03-05 20:16:47 +00:00
Felarof
2b605bdaa3 feat: add inline chat experience to new tab page (#418)
* feat: add inline chat experience to new tab page

Bring the full sidepanel chat experience to the new tab page. When
users select an AI suggestion from the search bar, the page transitions
inline to a full chat view instead of opening the sidepanel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: remove unnecessary comments from NewTab.tsx

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address PR review comments

- Move NEWTAB_CHAT_STARTED_EVENT tracking to startInlineChat where it
  actually fires (was dead code in NewTabChat handleSubmit)
- Add NEWTAB_CHAT_RESET_EVENT tracking to handleNewConversation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: gate newtab chat behind NEWTAB_CHAT_SUPPORT feature flag

When the flag is off (BrowserOS < 0.40.0), falls back to opening the
sidepanel via openSidePanelWithSearch (previous behavior). In dev mode
all features are enabled, so inline chat works during development.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add newtab origin context to chat system prompt

When chatting from the new tab page, the AI is instructed to open
content in new tabs rather than navigating the current tab, keeping
the user's new tab page accessible.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 12:02:39 -08:00
Nikhil
ec725b3781 fix: restrict browser tools in chat mode for AI SDK agent (#414)
The AI SDK agent (v2) was allowing all 54 browser tools in chat mode,
while the Gemini agent correctly restricted to 6 read-only tools.
Extract CHAT_MODE_ALLOWED_TOOLS to a shared constant and filter
browser tools in AiSdkAgent.create() when chatMode is true.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 11:59:00 -08:00
Felarof
c0e5ffb378 chore: sync packages/browseros-agent submodule (to 52570bd) 2026-03-05 19:31:56 +00:00
Nikhil
52570bd6aa feat: make server tests use dynamic browser runtime allocation (#416)
* feat: use dynamic runtime allocation for server test browser startup

* fix: address PR review comments for sdk_test_dev_runner_migration
2026-03-05 11:19:31 -08:00
Felarof
5a1fc2285f chore: sync packages/browseros-agent submodule (to fb58a6e) 2026-03-05 18:43:03 +00:00
shivammittal274
fb58a6ee1c feat: expose Klavis MCP tools to external MCP clients (#411)
* feat: expose Klavis MCP tools to external MCP clients

Connect to Klavis Strata at server startup and register discovered tools
on each per-request McpServer instance. This lets external MCP clients
(Claude Code, Gemini CLI) access Klavis-proxied integrations (Gmail,
Slack, GitHub, etc.) alongside browser tools.

- Add register-klavis-mcp.ts with connectKlavisProxy() and registerKlavisTools()
- Wire KlavisProxyHandle through server.ts -> mcp routes -> mcp-server
- Use structured logging and proper type imports

* fix: forward Klavis tool schemas and add shutdown cleanup

- Use zod-from-json-schema to convert Strata's JSON Schema to Zod,
  so MCP clients see proper parameter names, types, and required fields
- Close Klavis proxy transport on server shutdown
- Move per-request Klavis tool registration logging to debug level
- Use proper type imports instead of inline import() types
- Fix connectKlavisProxy return type (never returns null)

* fix: add timeout to Klavis MCP connect/listTools and log shutdown errors

* fix: clear timeout timer and pre-compute Klavis tool schemas at startup

* fix: use client.close() instead of transport.close() for proper cleanup
2026-03-06 00:04:57 +05:30
Nikhil
a91bef1cd1 feat: remove legacy gemini agent and provider adapter (#415)
* feat: remove legacy gemini agent and provider adapter

* fix: remove redundant run graph schema refine
2026-03-05 10:34:43 -08:00
Nikhil
05887026fb feat: rename bros CLI tool to bdev (#394) 2026-03-05 10:06:41 -08:00
Felarof
7d65603e14 chore: sync packages/browseros-agent submodule (to 915ab12) 2026-03-05 16:23:52 +00:00
Dani Akash
915ab12c40 fix: prevent sending multiple messages when chat is running (#409) 2026-03-05 21:01:57 +05:30
Felarof
12ceeb81e6 chore: sync packages/browseros-agent submodule (to 2bc5d6f) 2026-03-05 03:05:05 +00:00
Nikhil
12228a9392 feat: chromium 146 upgrade (#393)
* feat: update to 146, fix clean

* fix: update all 16 failed patches for Chromium 146.0.7680.31

- Update BASE_COMMIT to 4d3225104176d (Chromium 146)
- Shift BrowserOS command IDs to avoid upstream 40300-40302 conflict
- Fix settings BUILD.gn and menu patches for upstream removals
- Shift syncable prefs IDs to 100379-100380 after upstream additions
- Migrate theme patch from theme_service_factory.cc to theme_service.cc
  (RegisterProfilePrefs moved upstream)
- Fix toolbar_actions_model.cc for upstream API changes
- Fix toolbar_pref_names.cc for upstream base::ListValue usage
- Fix ui_features.cc/.h for removed kPopupBrowserUseNewLayout
- Fix api_sources.gni for new upstream entries
- Shift infobar delegate ID to 132
- Shift extension histogram values by +4 (1961-1985)
- Shift api_permission_id kBrowserOS to 265
- Update histogram enums.xml to match shifted values
- Delete chromium_install_modes.cc patch (file removed in 146)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: enable vertical tabs

* feat: default browseros theme

* chore: bump PATCH and OFFSET

* fix: update extensions-manifestv2 series patch for Chromium 146

Regenerated the patch from a clean diff against 146.0.7680.31 to fix
line number offsets and context mismatches in extensions_ui.cc.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update vertical_tab_strip_state_controller patch for Chromium 146

Upstream refactored includes and renamed NotifyStateChanged to
NotifyModeChanged. Regenerated patch with correct context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update default theme to neutral gray (136,136,136)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: rename base::Value::Dict/List to base::DictValue/ListValue for Chromium 146

Chromium 146 moved base::Value::Dict and base::Value::List to top-level
classes base::DictValue and base::ListValue. Updated all 23 patch files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: regenerate browseros_prefs.cc patch (fix corrupt trailing newline)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: update patches for Chromium 146 build API changes

- browseros_action_utils.h: remove nonexistent base/containers/contains.h include
- chrome_content_browser_client.cc: PrivateNetworkRequestPolicyOverride → LocalNetworkAccessRequestPolicyOverride
- extension_updater.cc: InstallStageTracker::Get → InstallStageTrackerFactory::GetForBrowserContext
- toolbar_actions_model.cc: base::Contains → std::ranges::contains

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:31:20 -08:00
Nikhil
2bc5d6f5e4 fix: gate Soul page behind server version 0.0.67 (#407)
Add SOUL_SUPPORT feature flag to capabilities system requiring
minServerVersion 0.0.67. Hides "Agent Soul" nav item in settings
sidebar for older servers that lack the /soul endpoint.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:20:40 -08:00