Phase 2 Complete: Message queuing for offline/inactive projects
Queue Storage:
- File-based queue in ~/.innervoice/queues/
- Separate JSON file per project
- Persistent storage survives restarts
- Auto-cleanup of old delivered tasks (7 days)
Queue Manager (queue-manager.ts):
- enqueueTask() - Add task to project queue
- getPendingTasks() - Get undelivered tasks
- markTaskDelivered() - Mark task as complete
- getQueueSummary() - Get overview of all queues
- cleanupOldTasks() - Remove old delivered tasks
API Endpoints:
- POST /queue/add - Queue message for project
- GET /queue/:projectName - Get pending tasks
- POST /queue/:projectName/mark-delivered - Mark delivered
- GET /queue/summary - Get all project summaries
Telegram Bot Features:
- /queue command - Show all queued messages
- Project-targeted messages: "ProjectName: message"
- Auto-detect if project is online or offline
- Queue for offline, deliver immediately if online
MCP Tool:
- telegram_check_queue - Check for queued messages on startup
- Shows pending messages with timestamps
- Perfect for checking what happened while offline
Usage Scenarios:
1. Send to offline project:
You: "ESO-MCP: Continue with roadmap"
Bot: "📥 Message queued for ESO-MCP (offline)"
2. Open Claude in ESO-MCP:
Claude auto-checks queue on startup
Shows: "📬 You have 1 queued message: Continue with roadmap"
3. Check queue status:
You: "/queue"
Bot: Shows all projects with pending messages
This solves the "no one listening" problem - messages are stored
and delivered when Claude opens in that project.
Next: Phase 3 (remote Claude spawner)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>