SimpleAwaitableTypedTool

class SimpleAwaitableTypedTool<I : Any, O : Any, P : Any> constructor(name: String, description: String, inputType: Class<I>, outputType: Class<O>, awaitableFactory: AwaitableFactory<I, P>, executor: (I) -> O, metadata: Tool.Metadata = Tool.Metadata.DEFAULT, objectMapper: <Error class: unknown class> = jacksonObjectMapper()) : TypedTool<I, O>

Simple implementation of AwaitableTypedTool using functional factories.

Example:

val tool = SimpleAwaitableTypedTool(
name = "delete_file",
description = "Delete a file",
inputType = DeleteRequest::class.java,
outputType = DeleteResult::class.java,
awaitableFactory = { input ->
ConfirmationRequest(input, "Delete ${input.path}?")
},
executor = { input ->
DeleteResult(deleted = true, path = input.path)
}
)

Constructors

Link copied to clipboard
constructor(name: String, description: String, inputType: Class<I>, outputType: Class<O>, awaitableFactory: AwaitableFactory<I, P>, executor: (I) -> O, metadata: Tool.Metadata = Tool.Metadata.DEFAULT, objectMapper: <Error class: unknown class> = jacksonObjectMapper())

Properties

Link copied to clipboard
open override val definition: Tool.Definition

Tool definition for LLM

Link copied to clipboard
open override val metadata: Tool.Metadata

Functions

Link copied to clipboard
open fun call(input: String, context: ToolCallContext): Tool.Result

Execute the tool with JSON input and out-of-band context.

open override fun call(input: String): Tool.Result

Executes the tool by deserializing input JSON, calling typedCall, and serializing the result.

Link copied to clipboard
inline fun <T : Any> Tool.requireType(message: String? = null): Tool

Wrap this tool to require a value of type T before execution (reified).

fun <T : Any> Tool.requireType(type: Class<T>, messageProvider: (String) -> String? = { null }): Tool

Wrap this tool to require a value of type T before execution.

Link copied to clipboard
fun Tool.toSpringToolCallback(): <Error class: unknown class>

Extension function to convert an Embabel Tool to a Spring AI ToolCallback.

Link copied to clipboard
open fun typedCall(input: I): O

Execute the tool with strongly typed input. Calls the function provided at construction time. Can be overridden in subclasses for custom behavior.

Link copied to clipboard
inline fun <T : Tool> Tool.unwrapAs(): T?

Unwrap a tool to find a specific type, or return null if not found.

Link copied to clipboard

Wrap this tool to conditionally await before execution.

Link copied to clipboard
fun Tool.withConfirmation(messageProvider: (String) -> String): Tool

Wrap this tool to always require confirmation before execution.

Link copied to clipboard
open fun withDefinitionMetadata(entries: Map<String, Any>): Tool

Create a new tool with additional definition metadata entries merged in. Existing keys are overwritten by the new values.

open fun withDefinitionMetadata(key: String, value: Any): Tool

Create a new tool with a single definition metadata entry added.

Link copied to clipboard
open fun withDescription(newDescription: String): Tool

Create a new tool with a different description. Useful for providing context-specific descriptions while keeping the same functionality.

Link copied to clipboard
fun Tool.withEventPublication(agentProcess: AgentProcess, action: Action?, llmOptions: <Error class: unknown class>): Tool

Extension function to wrap a Tool with event publication.

Link copied to clipboard
open fun withName(newName: String): Tool

Create a new tool with a different name. Useful for namespacing tools when combining multiple tool sources.

Link copied to clipboard
open fun withNote(note: String): Tool

Create a new tool with an additional note appended to the description. Useful for adding context-specific hints to an existing tool.