Ephemeral Task Manager tools for managing a list of tasks.
This module provides tools for appending, prepending, inserting, starting, completing, and listing tasks. Tasks follow a state machine that transitions from :pending through :in_progress to :completed.
Usage
The task manager requires a shared Agent to maintain state across tool calls:
alias Mojentic.LLM.Tools.EphemeralTaskManager
alias Mojentic.LLM.Tools.EphemeralTaskManager.TaskList
# Create a shared task list agent
{:ok, agent} = Agent.start_link(fn -> TaskList.new() end)
# Create tool instances that share the agent
tools = [
EphemeralTaskManager.AppendTask.new(agent),
EphemeralTaskManager.PrependTask.new(agent),
EphemeralTaskManager.InsertTaskAfter.new(agent),
EphemeralTaskManager.StartTask.new(agent),
EphemeralTaskManager.CompleteTask.new(agent),
EphemeralTaskManager.ListTasks.new(agent),
EphemeralTaskManager.ClearTasks.new(agent)
]
# Use with broker
{:ok, response} = Broker.generate(broker, messages, tools)Example
alias Mojentic.LLM.{Broker, Message}
alias Mojentic.LLM.Gateways.Ollama
alias Mojentic.LLM.Tools.EphemeralTaskManager
alias Mojentic.LLM.Tools.EphemeralTaskManager.TaskList
# Setup
broker = Broker.new("qwen3:32b", Ollama)
{:ok, agent} = Agent.start_link(fn -> TaskList.new() end)
tools = [
EphemeralTaskManager.AppendTask.new(agent),
EphemeralTaskManager.StartTask.new(agent),
EphemeralTaskManager.CompleteTask.new(agent),
EphemeralTaskManager.ListTasks.new(agent)
]
# Use the LLM with task management tools
message = Message.user("Create 3 tasks: write tests, write docs, write code")
{:ok, response} = Broker.generate(broker, [message], tools)
Summary
Functions
Creates all task manager tools with a shared agent.