Remote AG-UI Bots can't use the browser in chat: `computer_*` calls refused as "unavailable for this headless turn"
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 68/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- react, typescript
- Lĩnh vực
- ai-infra-agents, backend-api-design
Hướng nghiên cứu
Start with toolkit/src/headless-tools.ts, server/src/copilot.ts, and server/src/index.ts, then inspect the browser tools in app/src/lib/copilot/computer-tools.tsx. Trace how toolsForTurn and HeadlessToolsMiddleware receive computer_* tools for remote chat, and run server/tests/headless-tools.test.ts plus the relevant toolkit tests. Done means a remote AG-UI bot can use caller-offered browser tools while retaining headless behavior and gateway auditing; confirm whether the intended fix is caller pass-through or server-side computer tools.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What happens
In a normal chat with a remote AG-UI Bot (the picked harness, agent-claude-sdk), every browser tool call is refused. The Bot reports:
The tool computer_navigate is unavailable for this headless turn.
The built-in General Assistant browses fine on the same deployment, same page and same request.
Steps to reproduce
Tested at 12c3a69 (main), laptop stack via scripts/start.sh, macOS, Docker (OrbStack).
- Register the picked harness
ghcr.io/copilotkit/openbot-agent-claude-sdk:v0.2.0(PICKED_HARNESS_*set, endpoint allowed viaAGENT_ENDPOINT_ALLOWED_HOSTS). - Open
/channel/new?agent=picked-harness. - Ask:
Open news.ycombinator.com and tell me the top story. - The Bot calls
computer_navigate, gets the refusal above, and falls back to its ownWebFetch.
Doing the same with general-assistant works and is audited as computer.action_allowed.
I only tested agent-claude-sdk. From the code it looks like it affects any remote_ag_ui / remote_mastra Bot (see below), but I haven't confirmed that with the LangGraph Bot.
Why it happens
server/src/copilot.ts:1322buildsclientToolsfrom the Bot's tools that have anexecutefunction.loadToolsForActor(server/src/index.ts:1271) always adds wake-up, memory and host-access tools, so for a remote Bot this list is never empty. That meanscopilot.ts:1445always wraps the run inHeadlessToolsMiddleware.HeadlessToolsMiddleware(toolkit/src/headless-tools.ts:164) treats every pending call whose name starts withcomputer_as its own, whether or not it holds that tool.- In a chat turn the middleware isn't given any computer tools. They're only passed through
toolsForTurnon the routine, approval and hop paths inindex.ts. Socomputer_navigateisn't in its map, and line 184 throws "unavailable for this headless turn". - The
computer_*tools the open page offered ininput.tools(app/src/lib/copilot/computer-tools.tsx) never get to run, even though a browser is open. The middleware's own doc comment says it's for when "the caller has no browser".
Workaround I'm running locally
Leave computer_* calls to the caller when the caller offered that tool:
const executed = new Set<string>();
+ const offeredByCaller = new Set(
+ originalInput.tools
+ .map((tool) => tool.name)
+ .filter((name) => !tools.has(name)),
+ );
...
tools.has(call.function.name) ||
- call.function.name.startsWith("computer_"),
+ (call.function.name.startsWith("computer_") &&
+ !offeredByCaller.has(call.function.name)),
With this change the picked harness browses, and the action still goes through the gateway: it shows up in audit_events as computer.action_allowed with bot: picked-harness and the policy decision attached. toolkit tests pass (59/59), and server/tests/headless-tools.test.ts passes.
This may not be the direction you want, though. If the intent is for remote Bots to run browser tools server-side with no page attached (as the comments in agent-langgraph/src/index.ts suggest), the fix would be to pass createHeadlessComputerTools(...) into the remote chat path the way toolsForTurn does for routines. Either way, refusing the call outright while a page is offering the tool seems unintended.
- Ngôn ngữ chính
- TypeScript
- Star
- 6.6k
- Fork
- 914
- Merge trung bình
- 17 giờ 52 phút
- Pull request đã merge (30 ngày)
- 155
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của CopilotKit/OpenBot
-
Wrong key location at startupCó thể đã có người làm @charan-rathore đã nhận hôm nay. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
CopilotKit/OpenBot#800 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
setup-learning.ts fails on Windows with "spawn npx.cmd EINVAL"Có thể đã có người làm @Caldas đã nhận 3 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
CopilotKit/OpenBot#792 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Five out-of-subject findings from PR #770's tier-3 review (credential-revoking tests, single-user boot gate, OAuth client rotation, shared-use atomicity, untyped server/tests)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 4/5 Hơn một tuần Mức phù hợp với người mới 22/100
CopilotKit/OpenBot#786 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
server/tests leaks database connections: 55 files open a pool and never close itCó thể đã có người làm @adamsiwiec1 đã nhận 2 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 70/100
CopilotKit/OpenBot#785 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
brokered_connections: two reads carry no provider predicate (blocks the provider sunset flow)Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
CopilotKit/OpenBot#783 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của CopilotKit/OpenBot
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
chrisparsons83/flexspotff#215 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
vitest-dev/vitest#11633 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày