Skip to main content

Todo/task planning toolset for pydantic-ai agents

Project description

Todo Toolset for Pydantic AI

Task Planning and Tracking for AI Agents

PyPI version Python 3.10+ License: MIT CI Pydantic AI

Subtasks & Dependencies — hierarchical task management  •  PostgreSQL Storage — persistent multi-tenant tasks  •  Event System — webhooks and callbacks


Todo Toolset for Pydantic AI adds task planning capabilities to any Pydantic AI agent. Your agent can create, track, and complete tasks with full support for subtasks, dependencies, and persistent storage.

Full framework? Check out Pydantic Deep Agents — complete agent framework with planning, filesystem, subagents, and skills.

Use Cases

What You Want to Build How Todo Toolset Helps
AI Coding Assistant Break down complex features into trackable tasks
Project Manager Bot Create hierarchical task structures with dependencies
Research Agent Track investigation progress across multiple topics
Workflow Automation React to task completion with webhooks and callbacks
Multi-User App Session-based PostgreSQL storage for each user

Installation

pip install pydantic-ai-todo

Or with uv:

uv add pydantic-ai-todo

Quick Start

from pydantic_ai import Agent
from pydantic_ai_todo import create_todo_toolset

agent = Agent(
    "openai:gpt-4o",
    toolsets=[create_todo_toolset()],
)

result = await agent.run("Create a todo list for building a REST API")

That's it. Your agent can now:

  • Create tasksadd_todo, write_todos
  • Track progressread_todos, update_todo_status
  • Manage hierarchy — subtasks and dependencies
  • Persist state — PostgreSQL multi-tenant storage

Available Tools

Tool Description
read_todos List all tasks (supports hierarchical view)
write_todos Bulk write/update tasks
add_todo Add a single task
update_todo_status Update task status by ID
remove_todo Delete task by ID
add_subtask* Create child task
set_dependency* Link tasks with dependency
get_available_tasks* List tasks ready to work on

*Available when enable_subtasks=True

Storage Backends

In-Memory (Default)

from pydantic_ai_todo import create_todo_toolset, TodoStorage

storage = TodoStorage()
toolset = create_todo_toolset(storage=storage)

# Access todos directly after agent runs
for todo in storage.todos:
    print(f"[{todo.status}] {todo.content}")

Async Memory

from pydantic_ai_todo import create_todo_toolset, AsyncMemoryStorage

storage = AsyncMemoryStorage()
toolset = create_todo_toolset(async_storage=storage)

# Async access
todos = await storage.get_todos()

PostgreSQL

from pydantic_ai_todo import create_storage, create_todo_toolset

storage = create_storage(
    "postgres",
    connection_string="postgresql://user:pass@localhost/db",
    session_id="user-123",  # Multi-tenancy
)
await storage.initialize()

toolset = create_todo_toolset(async_storage=storage)

Task Hierarchy

Enable subtasks for complex task management:

toolset = create_todo_toolset(
    async_storage=storage,
    enable_subtasks=True,
)

# Agent can now:
# - add_subtask(parent_id, content) — create child tasks
# - set_dependency(task_id, depends_on_id) — link tasks
# - get_available_tasks() — list tasks ready to work on

Dependencies include automatic cycle detection — no infinite loops possible.

Event System

React to task changes:

from pydantic_ai_todo import TodoEventEmitter, AsyncMemoryStorage

emitter = TodoEventEmitter()

@emitter.on_completed
async def notify_completed(event):
    print(f"Task done: {event.todo.content}")
    # Send webhook, update UI, etc.

@emitter.on_created
async def notify_created(event):
    print(f"New task: {event.todo.content}")

storage = AsyncMemoryStorage(event_emitter=emitter)
toolset = create_todo_toolset(async_storage=storage)

API Reference

Factory Functions

Function Description
create_todo_toolset() Create toolset with todo tools
create_storage(backend, **options) Factory for storage backends
get_todo_system_prompt() Generate system prompt with current todos

Models

Model Description
Todo Task with id, content, status, parent_id, depends_on
TodoItem Input model for write_todos
TodoEvent Event data with type, todo, timestamp
TodoEventType CREATED, UPDATED, STATUS_CHANGED, DELETED, COMPLETED

Storage Classes

Class Description
TodoStorage Sync in-memory storage
AsyncMemoryStorage Async in-memory with CRUD
AsyncPostgresStorage PostgreSQL with multi-tenancy
TodoEventEmitter Event emitter for callbacks

Related Projects

Package Description
Pydantic Deep Agents Full agent framework (uses this library)
pydantic-ai-backend File storage and Docker sandbox
subagents-pydantic-ai Multi-agent orchestration
summarization-pydantic-ai Context management
pydantic-ai The foundation — agent framework by Pydantic

Contributing

git clone https://github.com/vstorm-co/pydantic-ai-todo.git
cd pydantic-ai-todo
make install
make test  # 100% coverage required

License

MIT — see LICENSE

Built with ❤️ by vstorm-co

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_ai_todo-0.1.4.tar.gz (252.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_ai_todo-0.1.4-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_ai_todo-0.1.4.tar.gz.

File metadata

  • Download URL: pydantic_ai_todo-0.1.4.tar.gz
  • Upload date:
  • Size: 252.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pydantic_ai_todo-0.1.4.tar.gz
Algorithm Hash digest
SHA256 b487d7f05c8d0fb7ebd9e59a2daba891c8a909b3ba19676eb42b7327037d1ed4
MD5 175238c1a125f77cd69639b6895049c6
BLAKE2b-256 0949525654a5d0347673830175f8a7074f275e7c8323e4bd75a7eb84f5f4462d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_ai_todo-0.1.4.tar.gz:

Publisher: publish.yml on vstorm-co/pydantic-ai-todo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pydantic_ai_todo-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_ai_todo-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cd14bcdc2465d14a9c7ef29dfe427cf608dcc7b41b944c1d25c02444cad5c379
MD5 0b35b0791b37e1afd4f14c7d9d4f1710
BLAKE2b-256 8d89d97d4b1e6b843f75980bd8d3f0e3680031d12cafed4dc2c446b333ac319e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_ai_todo-0.1.4-py3-none-any.whl:

Publisher: publish.yml on vstorm-co/pydantic-ai-todo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page