export type TextToolBlock = { type: "text"; text: string; }; export type TextToolPayload = Record> = { content: TextToolBlock[]; details: TDetails; isError?: boolean; }; export type TextToolUpdate = Record> = ( update: TextToolPayload, ) => void; export function textBlock(text: string): TextToolBlock { return { type: "text", text }; } export function textResult = Record>( text: string, details?: TDetails, ): TextToolPayload { return { content: [textBlock(text)], details: (details ?? {}) as TDetails, }; } export function errorResult = Record>( text: string, details?: TDetails, ): TextToolPayload { return { content: [textBlock(text)], details: (details ?? {}) as TDetails, isError: true, }; } export function emitProgress = Record>( onUpdate: TextToolUpdate | undefined, text: string, details?: TDetails, ): void { onUpdate?.(textResult(text, details)); }