Skip to content
Open
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
28 changes: 28 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Use the `bsk` CLI with Cursor, Claude Code, Codex, OpenClaw, CodeBuddy, WorkBudd
| **Debug websites with evidence** | Connect actions to requests, response bodies, console messages, and page changes. Inspect performance, slow APIs, and suspected duplicate requests; use explicit HTTP rules or request replay to test a hypothesis. |
| **Choose the right browser** | Name browser instances, bind a task to a specific profile, or pair an agent running on a server with a browser on your computer. |
| **Review what happened** | Reopen browser-local debugging history, export evidence as JSON, or enable a separate operation audit to review task activity. |
| **Extract structured data** | Export loaded tables and lists as JSON/CSV with column names, page/frame sources, merged-cell metadata and explicit coverage. See [structured extraction](docs/structured-extraction.md). |

Watch a browser task in action:

Expand Down
1 change: 1 addition & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Cursor、Claude Code、Codex、OpenClaw、CodeBuddy、WorkBuddy、Pi、Hermes Ag
| **带着证据调试网站** | 把操作与请求、响应正文、控制台和页面变化关联起来,检查性能、慢接口与疑似重复请求,用明确配置的 HTTP 规则或请求重放验证问题。 |
| **选对浏览器和账号** | 为浏览器实例命名,让任务绑定指定 Profile;也可以让服务器上的 Agent 连接你电脑上的浏览器。 |
| **回看任务过程** | 重新打开浏览器本地的调试历史、导出 JSON,或单独开启操作审计,查看任务执行记录。 |
| **提取结构化数据** | 将已加载的表格和列表导出为 JSON/CSV,保留列名、页面/frame 来源、合并单元格信息和完整性标记。见[结构化提取说明](docs/structured-extraction.md)。 |

看看 Agent 如何完成一次浏览器任务:

Expand Down
1 change: 1 addition & 0 deletions apps/extension/src/entrypoints/audit/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const methodKeys = {
"tool.snapshot": "read",
"tool.observe": "read",
"tool.get_html": "read",
"tool.extract": "read",
"tool.screenshot": "screenshot",
"tool.console": "console",
"tool.network": "network",
Expand Down
1 change: 1 addition & 0 deletions apps/extension/src/tools/background-execution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const reads = new Set([
"tool.observe",
"tool.screenshot",
"tool.get_html",
"tool.extract",
"tool.evaluate",
"tool.console",
"tool.network",
Expand Down
9 changes: 9 additions & 0 deletions apps/extension/src/tools/dispatcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import type {
DownloadParams,
EmulateParams,
EvaluateParams,
ExtractParams,
FillParams,
FocusParams,
GetHtmlParams,
Expand Down Expand Up @@ -53,6 +54,7 @@ import { handleDownload } from "./download";
import { type EmulateCdpRunner, handleEmulate } from "./emulate";
import { classifyCdpError } from "./errors";
import { handleEvaluate } from "./evaluate";
import { handleExtract } from "./extract";
import { handleRequestHelp } from "./human-loop";
import {
handleBlur,
Expand Down Expand Up @@ -593,6 +595,13 @@ export class ToolDispatcher {
signal,
);
}
case "tool.extract":
return handleExtract(
this.sessions,
req.params as ExtractParams,
this.cdp ? { cdp: this.cdp, tabsApi: chromeTabsApi } : undefined,
signal,
);
case "tool.get_html":
return handleGetHtml(
this.sessions,
Expand Down
Loading
Loading