summaryrefslogtreecommitdiff
path: root/web/test/budget.test.mjs
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-05-26 07:11:59 +0000
committerClaude <noreply@anthropic.com>2026-05-26 07:11:59 +0000
commit301e7a66387f99ab76754d08bca42f4a9930d3b1 (patch)
tree35815d99028d53f99b800a91437b455f043830bc /web/test/budget.test.mjs
parent65cd7ea65d9c6fe0fad39bb2c5cac70d61153444 (diff)
feat(executor,llm): LocalRunner agent-channel via OpenAI tool-use (Phase 5)
LocalRunner previously ignored the AgentChannel and produced a single fire-and-forget completion. It now declares the four agent back-channel tools (ask_user/report_summary/spawn_subtask/record_progress) as OpenAI function-calling definitions and runs a tool-use loop: each turn feeds tool results back as message history (re-feed) until the model stops calling tools, bounded by maxLocalToolTurns. ask_user converts a buffered question into a *BlockedError so the task blocks like the container runners. Adds tool-use support to the llm client (Tool/ToolCall/ToolFunction types, Tools on ChatRequest, ToolCalls on ChatResponse + wire request/response). The loop uses non-streaming Chat (tool_calls don't stream cleanly); assistant text is still written to stdout.log in the Claude stream-json envelope so summary/ changestats parsing is unchanged. Fully tested against a mock OpenAI endpoint + storeChannel: spawn/summary/ progress dispatch, ask_user blocking, token accumulation, and the llm tools round-trip. NOTE: local resume re-feeds conversation state (Decision #8) — not yet wired, so a blocked local task resumes fresh for now. https://claude.ai/code/session_01SESwn7kQ7oP62trWw6pc39
Diffstat (limited to 'web/test/budget.test.mjs')
0 files changed, 0 insertions, 0 deletions