@aipexstudio/browser-runtime
v0.0.16
Published
Browser automation runtime, context providers, and extension host contracts for AIPex
Readme
@aipexstudio/browser-runtime
Chrome/Chromium runtime implementations for @aipexstudio/aipex-core.
This package is where browser-specific code lives (Manifest V3 friendly). It provides:
- Browser tools (
allBrowserTools) for tab/page interaction - Context providers for common browser data sources (tabs, bookmarks, history, current page, screenshots)
- Storage adapters for extension environments (
ChromeStorageAdapter,IndexedDBStorage) - A CDP-based automation layer (via
chrome.debugger) and related helpers - Runtime contracts used by the AIPex extension (hosts, addons, omni action registry)
Note: These APIs depend on
chrome.*and/orindexedDB. They are not meant to run in plain Node.js.
Why a separate runtime package?
AIPex is split into layers so each stays focused:
@aipexstudio/aipex-core: platform-agnostic agent + events + contexts + sessions@aipexstudio/browser-runtime: Chrome/extension implementations (tools, providers, storage, automation)@aipexstudio/aipex-react: React UI toolkit that depends only on corebrowser-ext: the actual extension that wires everything together
Features
1) allBrowserTools (31 tools)
allBrowserTools is a curated bundle of FunctionTools that an agent can call.
It includes:
- Tab management: list/switch/open/duplicate/close, basic grouping helpers
- UI operations: locate elements, click, hover, fill inputs/forms, wait
- Page content: metadata, scrolling, highlighting
- Screenshots: capture to data URL / clipboard
- Downloads: save text/images from the agent workflow
- Human-in-the-loop interventions: request/cancel interventions
Tool names included (strings used for tool-calling):
- Tabs:
get_all_tabs,get_current_tab,switch_to_tab,create_new_tab,get_tab_info,duplicate_tab,close_tab,organize_tabs,ungroup_tabs - UI ops:
search_elements,click,fill_element_by_uid,get_editor_value,fill_form,hover_element_by_uid,wait - Page:
get_page_metadata,scroll_to_element,highlight_element,highlight_text_inline - Screenshot:
capture_screenshot,capture_tab_screenshot,capture_screenshot_to_clipboard - Download:
download_text_as_markdown,download_image,download_chat_images,download_current_chat_images - Interventions:
list_interventions,get_intervention_info,request_intervention,cancel_intervention
Note:
take_snapshotexists but is intentionally not included inallBrowserToolsbecause it is used internally.
2) Default browser context providers
This package includes providers and a convenience registration helper:
allBrowserProvidersregisterDefaultBrowserContextProviders(manager)
Providers included by default:
CurrentPageProviderTabsProviderBookmarksProviderScreenshotProviderHistoryProvider
3) Storage adapters
ChromeStorageAdapter<T>: implementsKeyValueStorage<T>usingchrome.storage.- Supports
"local"and"sync"areas - Falls back to
localStoragewhenchrome.storageis unavailable (useful for non-extension dev)
- Supports
IndexedDBStorage<T extends { id: string }>: a smallKeyValueStorageimplementation backed by IndexedDB
4) CDP automation helpers
Under automation/, you’ll find building blocks for CDP-based workflows (via chrome.debugger):
DebuggerManagerSnapshotManagerSmartLocator/SmartElementHandle- Snapshot text search utilities (
searchSnapshotText,parseSearchQuery,hasGlobPatterns)
Installation
npm install @aipexstudio/browser-runtime
# or
pnpm add @aipexstudio/browser-runtimePeer dependencies:
@types/chrome(for TypeScript)react(optional; only needed if you use React-related helpers)
Usage
1) Use the built-in browser tools with an agent
import { google } from "@ai-sdk/google";
import { AIPex, aisdk } from "@aipexstudio/aipex-core";
import { allBrowserTools } from "@aipexstudio/browser-runtime";
const agent = AIPex.create({
instructions: "You can control the current browser tab.",
model: aisdk(google("gemini-2.5-flash")),
tools: allBrowserTools,
});2) Register default browser context providers
import { ContextManager } from "@aipexstudio/aipex-core";
import { registerDefaultBrowserContextProviders } from "@aipexstudio/browser-runtime";
const contextManager = new ContextManager({ autoInitialize: true });
registerDefaultBrowserContextProviders(contextManager);3) Use extension storage in UI packages
@aipexstudio/aipex-react accepts any KeyValueStorage implementation for persisting settings.
In a Chrome extension, you can pass chromeStorageAdapter:
import { Chatbot } from "@aipexstudio/aipex-react";
import { chromeStorageAdapter } from "@aipexstudio/browser-runtime";
export function App({ agent }: { agent: any }) {
return <Chatbot agent={agent} storageAdapter={chromeStorageAdapter} />;
}4) Execute a function in the active tab
import { executeScriptInActiveTab } from "@aipexstudio/browser-runtime";
const title = await executeScriptInActiveTab(() => document.title, []);
console.log(title);5) IndexedDB-backed storage
import { IndexedDBStorage } from "@aipexstudio/browser-runtime";
const storage = new IndexedDBStorage<{ id: string; value: string }>({
dbName: "aipex",
storeName: "sessions",
});API reference
Tools
allBrowserTools: FunctionTool[]interventionTools: FunctionTool[]registerDefaultBrowserTools(registryLike)getActiveTab(): Promise<chrome.tabs.Tab>executeScriptInTab(tabId, func, args)executeScriptInActiveTab(func, args)
Context providers
allBrowserProviders: ContextProvider[]registerDefaultBrowserContextProviders(manager)- Provider classes:
CurrentPageProvider,TabsProvider,BookmarksProvider,ScreenshotProvider,HistoryProvider
Storage
ChromeStorageAdapter<T>chromeStorageAdapter: ChromeStorageAdapterIndexedDBStorage<T>IndexedDBConfig
Automation (CDP)
DebuggerManager,debuggerManagerSnapshotManager,snapshotManagerSmartLocator,SmartElementHandlesearchSnapshotText,parseSearchQuery,hasGlobPatterns
Runtime contracts
RuntimeAddonNoopBrowserAutomationHostInMemoryOmniActionRegistryNullInterventionHostNoopContextProvider
Development (monorepo)
From the repository root:
pnpm --filter @aipexstudio/browser-runtime build
pnpm --filter @aipexstudio/browser-runtime typecheckLicense
MIT
