diff options
| author | amankumarsingh77 <amankumarsingh7702@gmal.com> | 2026-05-04 22:44:55 +0530 |
|---|---|---|
| committer | amankumarsingh77 <amankumarsingh7702@gmal.com> | 2026-05-04 22:44:55 +0530 |
| commit | 71da8e0719c50d9b11c918b032b9ed4d77aabf5b (patch) | |
| tree | 16794f5884f95abe9fff79d7eec7e08f24286aed /src/prompt.ts | |
| parent | 2a98be01d28044beabe6a1363f01a5a3acde9fd5 (diff) | |
feat: parallel tool execution with automatic mutation serialization
- Add lightweight async mutex (src/util/mutex.ts) for FIFO serialization
- Add serialized?: boolean to BrowserToolDefinition
- Wire mutex acquisition into registerBrowserTool execute wrapper
- Expose mutationMutex() on BrowserClient
- Mark all mutation tools (click, type, scroll, navigate, switch_tab, etc.) as serialized
- Leave observation tools (screenshot, page_info, execute_js, http_get, etc.) unguarded
- Update prompt and skill docs to reflect parallel-safe behavior
- Fix scroll tool: add Page.bringToFront, explicit button:none/buttons:0/pointerType:mouse
- Update .gitignore to ignore scripts/ and data/ folders
Diffstat (limited to 'src/prompt.ts')
| -rw-r--r-- | src/prompt.ts | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/prompt.ts b/src/prompt.ts index 6d2b2ab..1a2a4c1 100644 --- a/src/prompt.ts +++ b/src/prompt.ts @@ -63,6 +63,16 @@ browser_run_script("/tmp/scrape-pages.js", { urls: [...] }) Script bindings: params, daemon, require, signal, onUpdate, ctx, console, fetch, JSON, Buffer, setTimeout, clearTimeout. +### Parallel Execution + +Observation tools (browser_screenshot, browser_page_info, browser_execute_js, browser_list_tabs, browser_http_get, etc.) can run in parallel with each other and with mutation tools. The harness automatically serializes mutation tools (click, type, scroll, navigate, switch_tab, etc.) so they never race on shared state. When operations are independent, emit them in the same turn for better performance. + +**Examples of safe parallel calls:** +\`\`\` +browser_screenshot() + browser_page_info() + browser_execute_js("document.title") +browser_http_get("https://api.example.com/data") + browser_click(x, y) +\`\`\` + ### Common Patterns **Navigation:** @@ -85,9 +95,9 @@ browser_http_get("https://api.example.com/data") **Scrolling:** \`\`\` -browser_screenshot() → browser_scroll({ deltaY: -500 }) → browser_screenshot() +browser_screenshot() → browser_scroll({ deltaY: 500 }) → browser_screenshot() \`\`\` -Note: deltaY follows W3C wheel-event convention: positive=up, negative=down. Default deltaY=-300 scrolls down. +Note: deltaY follows W3C wheel-event convention: positive=down, negative=up. Default deltaY=300 scrolls down. **Research Workflow (search + browser):** \`\`\` |
