v0.6.0 — TUI planner cockpit, planner off claude -p, web tools#70
Merged
Conversation
runPlanner now calls spawnCli (the same agentic-loop entry the worker uses), read-only and multi-turn (maxTurns 15), instead of shelling out to `claude -p --max-turns 1`. Removes the claude-binary dependency (completes the INT-1420 claude -p removal) and lets the planner read the codebase before decomposing. A READ_ONLY_GUARD is appended to the prompt; a bare `claude-*` model id is dropped to the adapter default (org-prefixed anthropic/claude-* passes). parsePlannerOutput was already plain-text-first, so the contract is unchanged. New planner.test.ts (5). Refs: INT-1574
The TUI becomes a planning surface: /plan <goal> runs the Planner to preview a decomposition, gates on human approval (y/n/edit to drop sub-tasks), then dispatches into the daemon loop; progress shows in the Tasks tab. Wired in both the blessed TUI and the readline chat via a shared planCommand.ts + PlanIO. - POST /api/plan/dispatch — dual path: Linear configured → parent issue + dependency-wired sub-issues + heartbeat; else → exec pipeline per sub-task. - Extracted createSubIssuesWithDependencies() from the autonomous runner so the endpoint and decomposeTask share one engine (no fork). Extracted startExecTask() so /api/exec and the fallback share one lifecycle. - runnerExecution also drops the planner model claude-opus-4-7 default (INT-1574). New planCommand.test.ts (5). Refs: INT-1572, INT-1574
Restores the web capability the claude -p harness used to provide, now as first-class tools shared by every adapter (openrouter/gpt/local): - web_fetch(url) — keyless: fetch → HTML stripped to text, capped. - web_search(query) — pluggable backend: Tavily/Brave when TAVILY_KEY/ BRAVE_SEARCH_KEY is set, else a keyless DuckDuckGo fallback. New src/adapters/webTools.ts. Exposed via a `webTools` agenticLoop option (default true), threaded through CliRunOptions → adapters → WorkerOptions. TOOL_DEFINITIONS stays the original 5; web tools are a separate list appended when enabled. sweBench passes webTools:false (benchmark integrity — no searching up the gold patch). New webTools.test.ts (9). Refs: INT-1573
…web tools Refs: INT-1572, INT-1573, INT-1574
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v0.6.0: the TUI becomes a planning cockpit, the Planner sheds its last
claude -pdependency, and the agentic loop regains web search/fetch. Four focused commits.TUI Planner Cockpit (INT-1572)
/plan <goal>→ Planner previews a decomposition → human approves (y/n/editto drop sub-tasks) → dispatch into the daemon loop → track in the Tasks tab. SharedplanCommand.ts+PlanIOacross the blessed TUI and readline chat. NewPOST /api/plan/dispatch(Linear sub-issues + heartbeat, or exec-pipeline fallback). ExtractedcreateSubIssuesWithDependencies()andstartExecTask()so the endpoint reuses the autonomous engines (no fork).Planner off
claude -p(INT-1574)runPlannernow runs through the agentic loop viaspawnCli(read-only, multi-turn) instead ofclaude -p --max-turns 1. Completes the INT-1420claude -premoval; the planner can read the code before decomposing.PlannerResultunchanged.Web tools (INT-1573)
web_fetch(keyless) +web_search(Tavily/Brave via key, else keyless DuckDuckGo) as first-class tools shared by every adapter — restores the capabilityclaude -pused to provide.webToolsoption (default on), threaded through the adapters; SWE-bench passeswebTools:falsefor benchmark integrity.Verification
tsc --noEmitclean ·oxlint0/0 · full suite 711/711 (+19: planCommand 5, planner 5, webTools 9). Each engine reuse is structural (shared exported functions).Related Issues
Refs INT-1572, INT-1573, INT-1574 (all Done)