summaryrefslogtreecommitdiff
path: root/Omni/Agent/Subagent.hs
AgeCommit message (Collapse)Author
9 daysOmni/Ava: improve trace viewer and subagent notificationsBen Sima
- Add subagent completion callback to notify user when subagent finishes - Show tool name in 'view trace' link (e.g. 'view web_search trace') - Pretty-print JSON on trace web page using aeson-pretty Amp-Thread-ID: https://ampcode.com/threads/T-019b3a13-bc75-7368-9ec9-362d462a022c Co-authored-by: Amp <amp@ampcode.com>
11 daysfeat(ava): add tool trace viewer mini-appBen Sima
- Add SQLite storage for tool traces (Omni/Ava/Trace.hs) - Add web server to serve trace viewer (Omni/Ava/Web.hs) - Add HTML/CSS/JS trace viewer UI (Omni/Ava/Web/trace.html) - Integrate trace storage into Engine.hs tool execution callback - Add trace links to Telegram responses when AVA_WEB_URL is set - Configure Tailscale Funnel for public access - Fix pre-push hook variable scope bug - Add direnv, bash, nix to Ava service PATH - Add mustache dep to Ava.hs for template rendering Epic: t-272
11 daysOmni/Agent: wire prompt templating system to agentsBen Sima
- Telegram.hs: add loadTelegramSystemPrompt with fallback - Subagent.hs: add loadSystemPromptForRole with fallback - Coder.hs: add loadCoderSystemPrompt with fallback - Ava.nix: add tmpfiles rules for /home/ava/prompts/ - Prompts.hs: fix test to expect .mustache extension Templates loaded at runtime from $AVA_DATA_ROOT/prompts/. Falls back to hardcoded prompts if templates not found. Amp-Thread-ID: https://ampcode.com/threads/T-019b3878-73be-77ec-97cc-d092a28d211e Co-authored-by: Amp <amp@ampcode.com>
12 daysSubagent: clarify context is required for coder roleBen Sima
12 daysSubagent: remove task_id from spawn_subagent tool schemaBen Sima
The coder role no longer requires task_id, only namespace.
12 daysOmni/Agent/Subagent/Coder: decouple from jr task systemBen Sima
Remove task_id requirement and all jr task CLI calls. The Coder subagent now only requires namespace and task description - no external task tracking needed. Changes: - Remove coderTaskId from CoderConfig - Remove jr task show/update/comment calls - Commit message uses namespace prefix instead of task ID - Recovery phase just reverts git, no task comment - Subagent.hs only validates namespace for Coder role
13 daysAdd Telegram button confirmation for subagent spawningBen Sima
Security improvement: subagents now require explicit user confirmation via Telegram inline buttons, preventing the agent from bypassing approval. Changes: - Add InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery types - Add parseCallbackQuery for handling button presses - Add sendMessageWithKeyboard and answerCallbackQuery API functions - Add PendingSpawn registry for tracking unconfirmed spawn requests - Add spawnSubagentToolWithApproval that sends approval buttons - Add handleCallbackQuery to process approve/reject button clicks - Add approveAndSpawnSubagent and rejectPendingSpawn functions Flow: 1. Agent calls spawn_subagent → creates pending request 2. User receives message with ✅ Approve / ❌ Reject buttons 3. Button click (outside agent loop) spawns or cancels 4. Pending requests expire after 10 minutes
13 daysMake subagents non-blocking with async spawningBen Sima
- Add global subagent registry to track running handles by ID - Modify executeSpawnSubagent to use spawnSubagentAsync and return immediately - Add check_subagent tool for querying status or getting results - Export subagentTools convenience function with both tools - Update Telegram.hs to use subagentTools instead of just spawnSubagentTool Ava can now spawn subagents in the background and continue conversations while checking on progress via check_subagent.
13 daysfeat(ava): subagent hardening with audit loggingBen Sima
Based on Anthropic's effective harnesses research. New modules: - Omni/Agent/AuditLog.hs: JSONL audit logging with SubagentId linking - Omni/Agent/Tools/AvaLogs.hs: Tool for Ava to query her own logs - Omni/Agent/Subagent/HARDENING.md: Design documentation Key features: - SubagentHandle with TVar status for async execution and polling - spawnSubagentAsync, querySubagentStatus, waitSubagent, cancelSubagent - User confirmation: spawn_subagent requires confirmed=true after approval - Audit logs stored in $AVA_DATA_ROOT/logs/{ava,subagents}/ - CLI: ava logs [--last=N] [<subagent_id>] - read_ava_logs tool for Ava self-diagnosis Tasks: t-267, t-268, t-269, t-270, t-271
13 daysAdd subagent system for AvaBen Sima
Enables orchestrator to spawn specialized subagents for focused tasks: - WebCrawler: web search + page reading (haiku, fast) - CodeReviewer: code analysis tools (sonnet, thorough) - DataExtractor: structured data extraction (haiku) - Researcher: combined web + codebase research (sonnet) Key features: - spawn_subagent tool with role-based tool selection - Per-subagent resource limits (timeout, cost, tokens) - Structured output with citations (claim, source_url, quote) - Separate API keys for OpenRouter vs Kagi - Efficiency-focused system prompts Defaults: 200k tokens, $1.00 cost cap, 600s timeout, 20 iterations