Files
windmill/backend/windmill-api
Guilhem LemouelandClaude Opus 5 6ce5e7f89c feat(ai-chat): keep an MCP tool's call and the model's thinking on the conversation
A tool row's call is read back from the tool's own job, which an MCP tool and a
provider-native one never have — they run inside the agent's job — so those rows
could only ever be a summary line. Thinking had nowhere at all: it is streamed
and never returned in a response body. `flow_conversation_message` now carries
`tool_arguments`, `tool_result` and `reasoning`, written for exactly the parts of
a turn no job holds: an MCP call, a web search's sources, and the thinking behind
an answer or behind a tool call.

`ParsedResponse::Text` gains the reasoning the parsers already had in hand; each
SSE parser accumulates it beside the answer text.

Flow chat renders both through the components the session chat uses, and paces
them with the same `TypewriterReveal`: the worker's events arrive in bursts, so
display is decoupled from arrival — measured over one 1000-character answer, 54
growth steps of ~18 characters where it was 15 of ~54. The row is built from the
reveal rather than once per chunk, which is also what lets thinking survive
arriving in the same chunk as the tool call that ends it.

Enabling chat mode now turns streaming on, next to the memory it already sets:
without it the chat has no stream to read and a turn shows nothing until it ends.

The answer footer renders only under an actual answer, carries no margin of its
own, and drops the day from today's timestamps.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QN7VboDEm9HAB1t4sMxMdE
2026-09-08 18:03:43 +02:00
..
2024-04-08 01:42:43 +02:00

Windmill API

The API server, exposing functionality to other components and the frontend

This crate exposes both a library as well as a binary target.