Add comprehensive two-tier architecture where Steward analyzes requests and Tatlock executes with scoped tools. Includes full infrastructure for request preprocessing, tool tracking, benchmarking, and streaming. **Added:** - Steward agent for request analysis and capability recommendation - Household Registry for centralized capability management - Request preprocessing pipeline (Steward → Tatlock flow) - Tool usage tracking and benchmarking system - Streaming transparency (Steward reasoning visible in streams) - Structured logging with operation timing - Redis benchmark storage with 30-day expiry - Benchmark analysis CLI tools **Infrastructure:** - src/agents/steward/ - Steward agent implementation - src/agents/tatlock_core/ - Tatlock capability domain - src/core/preprocessing.py - Request preprocessing pipeline - src/core/tool_tracking.py - Tool call tracking - src/core/benchmarks.py - Benchmark recording system - src/core/household_registry.py - Capability registry - src/core/startup.py - Application startup coordination - src/core/logging_config.py - Structured logging setup **Integration:** - Responses API uses Steward for Tatlock requests - Chat Completions wraps Responses API for OpenAI compatibility - Streaming coordinator supports Steward + Tatlock flow - Tool scoping per request based on Steward recommendations **Testing:** - Integration tests for Steward-Tatlock flow - Benchmark and registry unit tests - Steward streaming tests See PHASE2_PLAN.md and PHASE2_COMPLETE.md for detailed documentation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
89 lines
2.4 KiB
Python
89 lines
2.4 KiB
Python
"""
|
|
PydanticAI toolset for Tatlock's core tools.
|
|
|
|
Converts the core tool functions into PydanticAI tool definitions
|
|
that can be registered with agents and the household registry.
|
|
"""
|
|
from pydantic_ai.tools import Tool
|
|
|
|
from . import tools
|
|
|
|
|
|
# Create tool definitions for PydanticAI
|
|
calculator_tool = Tool(
|
|
function=tools.calculate,
|
|
name="calculate",
|
|
description=(
|
|
"Safely evaluate mathematical expressions. "
|
|
"Supports basic arithmetic (+, -, *, /, %, **), "
|
|
"functions (sqrt, sin, cos, log, exp, etc.), "
|
|
"and constants (pi, e). "
|
|
"Use this for ALL mathematical calculations."
|
|
),
|
|
)
|
|
|
|
current_datetime_tool = Tool(
|
|
function=tools.get_current_datetime,
|
|
name="get_current_datetime",
|
|
description=(
|
|
"Get the current date and time. "
|
|
"Supports various formats: 'full' (datetime), 'date' (YYYY-MM-DD), "
|
|
"'time' (HH:MM:SS), 'iso' (ISO 8601), or custom strftime format. "
|
|
"Use this instead of guessing the current date/time."
|
|
),
|
|
)
|
|
|
|
time_offset_tool = Tool(
|
|
function=tools.calculate_time_offset,
|
|
name="calculate_time_offset",
|
|
description=(
|
|
"Calculate a date/time relative to now. "
|
|
"Accepts natural language like '1 week ago', '2 days from now', "
|
|
"'3 months ago', etc. "
|
|
"Use this for calculating past or future dates."
|
|
),
|
|
)
|
|
|
|
time_difference_tool = Tool(
|
|
function=tools.time_difference,
|
|
name="time_difference",
|
|
description=(
|
|
"Calculate the difference between two dates. "
|
|
"Accepts dates in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format. "
|
|
"Second date can be 'now'. "
|
|
"Returns human-readable difference (e.g., '5 days, 3 hours')."
|
|
),
|
|
)
|
|
|
|
web_search_tool = Tool(
|
|
function=tools.search_web,
|
|
name="search_web",
|
|
description=(
|
|
"Search the web using SearXNG for current information. "
|
|
"Use this to find recent events, current data, or verify facts. "
|
|
"Returns formatted results with titles, URLs, and snippets. "
|
|
"Useful for information that may have changed since training data."
|
|
),
|
|
takes_ctx=False,
|
|
)
|
|
|
|
|
|
# Combined toolset of all core tools
|
|
tatlock_core_tools = [
|
|
calculator_tool,
|
|
current_datetime_tool,
|
|
time_offset_tool,
|
|
time_difference_tool,
|
|
web_search_tool,
|
|
]
|
|
|
|
|
|
def get_core_tools():
|
|
"""
|
|
Get list of Tatlock's core tool definitions.
|
|
|
|
Returns:
|
|
List of PydanticAI Tool objects
|
|
"""
|
|
return tatlock_core_tools
|