mwcyu wires live web search into Mike's main chat

The assistant can now reach out to the open web mid-conversation and fold current results straight into its answer.

searchchat-ui

mwcyu turned on the built-in web search that the major AI providers - Claude, OpenAI, and Gemini - now run on their own servers. Ask a question in the main chat and the model can go look something up live, then weave what it finds into the reply, rather than answering only from what it was trained on or what you've uploaded.

The touch is deliberate. Search is switched on only in the interactive chat, not in the bulk document-review or extraction tools, so routine batch work stays sealed off from the open internet. And the search is remembered: reopen an old conversation and you'll still see what it looked up, not just the answer it gave.

So what For anyone leaning on a legal-AI tool to check current case law or citations, this is the difference between a confident guess and a freshly verified answer - worth a look on GitHub.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

1 commit from mwcyu/Mike-fork, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
0ad1b344 Add native web-search tool to all three LLM adapters Claude 2026-05-31 ↗ GitHub
commit body
Enable each provider's built-in, server-executed web search so the main
chat can browse the internet:
- Claude: native web_search_20250305 server tool
- OpenAI Responses: web_search built-in tool
- Gemini: googleSearch grounding tool

These run server-side (the provider performs the search and folds
results into its answer), so they bypass the runTools function-call
loop. A new enableWebSearch flag on StreamChatParams gates them; only
the interactive main chat (runLLMStream) opts in, leaving tabular
review and bulk extraction untouched.

Surface searches to the UI via a new onWebSearch callback that each
adapter fires when a search starts - Claude on the server_tool_use
contentBlock, OpenAI on the web_search_call output item, Gemini on
groundingMetadata.webSearchQueries. runLLMStream streams a web_search
event and persists it to the assistant message (unlike the transient
tool_call_start), so reloaded chats still show "Searched the web for
...". Added the web_search variant to the backend and frontend
AssistantEvent unions, a stream handler, and a WebSearchBlock renderer.

Backend and frontend typecheck clean.

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-617.md from inside the repo you want the changes in.

⬇ Download capture-thread-617.md