Extract tool calls type from an agent's tools. Converts the tools array to a discriminated union of tool calls.
This handles both tuple types (e.g., readonly [Tool1, Tool2]) and
array-of-union types (e.g., readonly (Tool1 | Tool2)[]) which is how
createAgent captures tool types.
InferAgentToolCalls: ExtractAgentConfig<
T
>["Tools"] extends readonly Tool[] ToolCallFromAgentTool<Tool> extends never DefaultToolCall : ToolCallFromAgentTool<Tool> : DefaultToolCallconst agent = createAgent({ tools: [getWeather, search], ... });
type ToolCalls = InferAgentToolCalls<typeof agent>;
// ToolCalls is:
// | { name: "get_weather"; args: { location: string }; id?: string }
// | { name: "search"; args: { query: string }; id?: string }