Files
fuzzforge_ai/ai/agents/task_agent/litellm_agent/tools.py
Songbird baace0eac4 Add AI module with A2A wrapper and task agent
- Disable FuzzForge MCP connection (no Prefect backend)
- Add a2a_wrapper module for programmatic A2A agent tasks
- Add task_agent (LiteLLM A2A agent) on port 10900
- Create volumes/env/ for centralized Docker config
- Update docker-compose.yml with task-agent service
- Remove workflow_automation_skill from agent card
2025-10-14 13:05:35 +02:00

65 lines
1.8 KiB
Python

"""Tool definitions exposed to the LiteLLM agent."""
from __future__ import annotations
from typing import Optional
from google.adk.tools import FunctionTool, ToolContext
from .control import parse_model_spec
from .state import HotSwapState, apply_state_to_agent
async def set_model(
model: str,
*,
provider: Optional[str] = None,
tool_context: ToolContext,
) -> str:
"""Hot-swap the active LiteLLM model for this session."""
spec = parse_model_spec(model, provider=provider)
state = HotSwapState.from_mapping(tool_context.state)
state.model = spec.model
state.provider = spec.provider
state.persist(tool_context.state)
try:
apply_state_to_agent(tool_context._invocation_context, state)
except Exception as exc: # pragma: no cover - defensive reporting
return f"❌ Failed to apply model '{state.display_model}': {exc}"
return f"✅ Model switched to: {state.display_model}"
async def set_prompt(prompt: str, *, tool_context: ToolContext) -> str:
"""Update or clear the system prompt used for this session."""
state = HotSwapState.from_mapping(tool_context.state)
prompt_value = prompt.strip()
state.prompt = prompt_value or None
state.persist(tool_context.state)
if state.prompt:
return "✅ System prompt updated. This change takes effect immediately."
return "✅ System prompt cleared. Reverting to default instruction."
async def get_config(*, tool_context: ToolContext) -> str:
"""Return a summary of the current model and prompt configuration."""
state = HotSwapState.from_mapping(tool_context.state)
return state.describe()
HOTSWAP_TOOLS = [
FunctionTool(set_model),
FunctionTool(set_prompt),
FunctionTool(get_config),
]
__all__ = [
"set_model",
"set_prompt",
"get_config",
"HOTSWAP_TOOLS",
]