# `Mojentic.LLM.Tools.EphemeralTaskManager`
[🔗](https://github.com/svetzal/mojentic-ex/blob/v1.5.0/lib/mojentic/llm/tools/ephemeral_task_manager.ex#L1)

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)

# `all_tools`

Creates all task manager tools with a shared agent.

Returns a list of tool instances ready to be used with the broker.

## Examples

    alias Mojentic.LLM.Tools.EphemeralTaskManager

    {:ok, agent} = Agent.start_link(fn -> TaskList.new() end)
    tools = EphemeralTaskManager.all_tools(agent)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
