Description
Tool-Using Chat Turns allow an agent to do more than generate prose. For each send, Dots resolves the tools available to that actor, mode, provider, and context, applies the effective tool policy, and passes only the permitted definitions to the provider. Tool activity is normalized into conversation messages with input, output, state, category, and timing so the transcript explains the work behind the answer.
The runtime also supports product-specific outcome cards without teaching the chat core about every module. An injected resolver can recognize completed tool calls and emit typed chip drafts, which dispatch stamps and persists alongside the turn. This supports reviewable outcomes such as captured knowledge or proposed changes while keeping tool execution, visual presentation, and conversation persistence connected through explicit contracts.
Selling Points
- Agents can retrieve knowledge and act through tools inside the same conversation instead of forcing users to switch workflows.
- Per-turn resolution offers only relevant tools, reducing accidental capability exposure and unnecessary model context.
- Durable tool messages make completed actions inspectable after the live run, including failures and structured outputs.
- Typed categories distinguish platform, MCP, agent-native, and external calls so downstream renderers and metrics remain consistent.
- Outcome-card seams let modules turn important tool results into recognizable, reviewable objects without coupling chat to their internals.
User Story
A user asks an agent to find a past decision and prepare a follow-up. The turn exposes the permitted Dots retrieval tools, the agent searches and reads the relevant rows, and the transcript records each call. A module-owned resolver converts the resulting proposal into a durable chip. The user walks away with both the cited answer and a clear record of what the agent queried and produced.
Extension Surface
This feature is extensible. packages/chat/src/contracts/turn-seams.ts exports ResolveTurnToolsLike and ResolveToolCallChipsLike, allowing in-repo modules to supply definitions and map completed calls to chips. packages/chat/src/dispatch/tool-subset.ts applies policy-driven subsets. These structural seams are composable, but third parties do not register chat tools directly through this package.
Capabilities & Limits
- It resolves a tool catalog independently for each turn and applies the effective allow/deny posture.
- It records normalized tool calls and can surface live tool activity during streaming.
- It converts selected tool outcomes into typed, durable conversation chips.
- Limit: the chat package does not implement the tools themselves; execution and authorization remain with provider and composition layers.
Implementation Map
packages/chat/src/contracts/turn-seams.tspackages/chat/src/dispatch/tool-subset.tspackages/chat/src/dispatch/tool-classify.tspackages/chat/src/dispatch/commit-turn.tspackages/chat/src/types.ts