StreamingTool

fun <TInput, TOutput, TContext> StreamingTool(name: String, description: String, inputSerializer: KSerializer<TInput>, outputSerializer: KSerializer<TOutput>, needsApproval: suspend (input: TInput, options: ToolPredicateOptions<TContext>) -> Boolean? = null, toModelOutput: (TOutput, ToolPredicateOptions<TContext>) -> ToolResultOutput? = null, schemaOptions: ToolSchemaOptions = ToolSchemaOptions {}, inputExamples: List<String> = emptyList(), onInputStart: suspend (streamingId: String) -> Unit? = null, onInputDelta: suspend (streamingId: String, delta: String) -> Unit? = null, onInputAvailable: suspend (toolCallId: String, input: TInput) -> Unit? = null, metadata: Map<String, JsonElement> = emptyMap(), providerOptions: ProviderOptions = ProviderOptions.None, executor: ToolExecutionContext<TContext>.(TInput) -> Flow<TOutput>): Tool<TInput, TOutput, TContext>(source)

Streaming Tool factory — executor returns Flow, each emission is a value.


inline fun <TInput, TOutput, TContext> StreamingTool(name: String, description: String, noinline needsApproval: suspend (input: TInput, options: ToolPredicateOptions<TContext>) -> Boolean? = null, noinline toModelOutput: (TOutput, ToolPredicateOptions<TContext>) -> ToolResultOutput? = null, schemaOptions: ToolSchemaOptions = ToolSchemaOptions {}, inputExamples: List<String> = emptyList(), noinline onInputStart: suspend (streamingId: String) -> Unit? = null, noinline onInputDelta: suspend (streamingId: String, delta: String) -> Unit? = null, noinline onInputAvailable: suspend (toolCallId: String, input: TInput) -> Unit? = null, metadata: Map<String, JsonElement> = emptyMap(), providerOptions: ProviderOptions = ProviderOptions.None, noinline executor: ToolExecutionContext<TContext>.(TInput) -> Flow<TOutput>): Tool<TInput, TOutput, TContext>(source)

Reified streaming factory — infers serializers from type parameters.