Skip to content

Commit fe97b82

Browse files
halfaipgclaude
andcommitted
feat: web search, chiptune audio, cleaner intent routing
- Add web_search tool (Tavily, Brave, SearXNG, DuckDuckGo fallback) with auto-provider detection from env vars - Fix DDG parser to handle single-quoted HTML attributes - Add chiptune synthesizer for boot screen (square/triangle/noise, 4-channel tracker pattern, pipes to aplay/paplay, silent fallback) - Simplify intent classify prompt — 6 lines, agent-first, no bloat - Add web_search to agent, subagent, and parallel-safe tool lists - Tell agent it can call read-only tools in parallel Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 2a0ec95 commit fe97b82

10 files changed

Lines changed: 1387 additions & 24 deletions

File tree

agent.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,12 @@ Available tools:
6060
- multi_edit: Batch multiple edits across files. Per-file atomicity with rollback.
6161
- list_files: List directory contents or glob for files (e.g. "**/*.go").
6262
- search_files: Regex search across files (powered by ripgrep). Find definitions, usages, etc.
63+
- web_search: Search the web. Use for current info, docs, versions, error solutions, or anything not in local files.
6364
- dispatch_agent: Spawn a read-only research subagent to investigate questions in isolated context.
6465
- shell: Run any shell command. Use for builds, tests, git, package management.
6566
6667
Guidelines:
68+
- You can call multiple tools in parallel — read_file, list_files, search_files, web_search, and dispatch_agent all run concurrently
6769
- Use list_files and search_files to explore the project before making changes
6870
- Read files before editing them — understand existing code first
6971
- Make targeted, minimal changes — don't rewrite entire files unnecessarily

app.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ func (m appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
5353
case screenBoot:
5454
switch msg.(type) {
5555
case bootDoneMsg:
56+
m.boot.audio.Stop() // stop boot music (nil-safe)
5657
m.screen = screenChat
5758
return m, tea.Batch(
5859
m.chat.Init(),

0 commit comments

Comments
 (0)