Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
3.1 KiB
3.1 KiB
PRD: mosaic-queue
Version: 0.0.1 Status: Approved Source: ~/src/jarvis-brain/docs/planning/MOSAIC-QUEUE-PRD.md
Problem Statement
Current task management relies on HEARTBEAT.md + MEMORY.md files (fragile, manual), with no cross-agent coordination, no transactional guarantees, state lost on session crash/compaction, and AI drift in task state management.
Solution
A Valkey/Redis-backed task queue exposed via MCP (and optional REST), providing atomic task claims with TTL, cross-agent visibility, crash recovery, and zero AI involvement in state management.
Core Interface
Task Schema
interface Task {
id: string;
project: string;
mission: string;
taskId: string;
title: string;
description?: string;
status: 'pending' | 'claimed' | 'in-progress' | 'completed' | 'failed' | 'blocked';
priority: 'critical' | 'high' | 'medium' | 'low';
dependencies: string[];
lane: 'planning' | 'coding' | 'any';
claimedBy?: string;
claimedAt?: number;
claimTTL?: number;
completedAt?: number;
failedAt?: number;
failureReason?: string;
retryCount: number;
metadata?: object;
createdAt: number;
updatedAt: number;
}
CLI Commands (Phase 1)
mosaic queue create <project> <mission> <taskId> --title "..." [--priority high] [--lane coding]
mosaic queue list [--project X] [--mission Y] [--status pending]
mosaic queue show <taskId>
mosaic queue claim <taskId> --agent <agentId> --ttl 3600
mosaic queue heartbeat <taskId>
mosaic queue release <taskId>
mosaic queue complete <taskId> [--summary "..."]
MCP Tools (Phase 1)
queue_list— list tasks with filtersqueue_get— single task detailsqueue_claim— atomic claimqueue_heartbeat— extend TTLqueue_release— release claimqueue_complete— mark completequeue_fail— mark failed with reasonqueue_status— queue health/stats
State Machine
pending → claimed (via claim) → in-progress (via start) → completed | failed
claimed → pending (TTL expiry, via watchdog)
Configuration
redis:
url: redis://localhost:6379
defaults:
claimTTL: 3600
maxRetries: 3
deadLetterAfter: 3
lanes:
planning:
maxConcurrent: 2
coding:
maxConcurrent: 4
watchdog:
interval: 60
openbrain:
url: ${OPENBRAIN_URL} # required — no default
autoCapture: false
Tech Stack
- TypeScript (Node.js)
- ioredis for Valkey/Redis
- @modelcontextprotocol/sdk for MCP server
- commander for CLI
- Valkey instance: existing mosaic-stack deployment
Phases
- Phase 1 (this milestone): Core queue, CLI, MCP server
- Phase 2: TTL watchdog, dead letter queue, TASKS.md sync
- Phase 3: Coordinator integration, lane enforcement
- Phase 4: OpenBrain integration (finding capture)
Acceptance Criteria (Phase 1)
mosaic queue createcreates a task in Valkeymosaic queue claimatomically claims (no double-claim race)mosaic queue listfilters by project/mission/statusmosaic queue completemarks done, optionally with summary- MCP server exposes all tools above
- TypeScript strict, ESLint clean, tests green
- README with setup + usage docs