|
221 | 221 | {"id":"agent-relay-546","title":"Storage troubleshooting docs","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-28T13:07:54.784208+01:00","created_by":"khaliqgant","updated_at":"2026-01-28T13:10:21.19387+01:00","closed_at":"2026-01-28T13:10:21.19387+01:00","close_reason":"Documentation structure complete with placeholders for implementation details"} |
222 | 222 | {"id":"agent-relay-547","title":"Add JSONL ledger to relay-pty for durability","description":"## Background\n\nThe relay-pty OutboxMonitor currently uses in-memory HashMap tracking. When relay-pty crashes or restarts, pending/in-flight messages are lost.\n\nPreviously, RelayLedger (TypeScript + SQLite) provided:\n- Crash recovery (reset processing → pending on startup)\n- Retry logic with configurable max retries\n- Audit trail for debugging\n- Content hash deduplication\n\nRelayLedger was removed because relay-pty handles the primary file-based message flow. But we lost durability features.\n\n## Proposal\n\nAdd JSONL-based ledger to relay-pty at `.agent-relay/meta/outbox-ledger.jsonl`:\n\n```json\n{\"file_id\":\"msg-001\",\"path\":\"/...\",\"status\":\"pending\",\"discovered_at\":1706540000000,\"retries\":0}\n{\"file_id\":\"msg-001\",\"status\":\"delivered\",\"processed_at\":1706540001000}\n{\"file_id\":\"msg-002\",\"status\":\"failed\",\"retries\":1,\"error\":\"daemon unreachable\"}\n```\n\n## Features to implement\n\n1. **Crash recovery** - On startup, scan JSONL for pending/processing records, retry them\n2. **Retry logic** - Track retries count, re-attempt failed deliveries up to max (3)\n3. **Audit trail** - Append delivered/failed records for debugging\n4. **Deduplication** - Check if file_id already processed before re-processing\n5. **Compaction** - Periodic compaction to keep file size manageable\n\n## Implementation\n\n1. Add `outbox_ledger.rs` module (~200-300 lines)\n2. Integrate with OutboxMonitor and parser.rs\n3. Add tests for crash recovery scenarios","status":"open","priority":2,"issue_type":"feature","created_at":"2026-01-29T09:54:06.750753+01:00","created_by":"khaliqgant","updated_at":"2026-01-29T09:54:18.992309+01:00"} |
223 | 223 | {"id":"agent-relay-548","title":"Add getAllAgentSummaries and getStats to JSONL adapter","description":"The JSONL adapter currently lacks getAllAgentSummaries and getStats methods that exist in the SQLite adapter. These are used by the dashboard for: 1) Agent summaries: 'Recent Work' section in AgentProfilePanel 2) Stats: /api/history/stats endpoint showing message counts. The dashboard currently gracefully hides these sections when data is unavailable, but full parity would provide better UX for local users.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-29T10:46:10.962538+01:00","created_by":"khaliqgant","updated_at":"2026-01-29T10:46:20.463476+01:00"} |
| 224 | +{"id":"agent-relay-549","title":"Verified PTY delivery in Rust broker","status":"closed","priority":0,"issue_type":"feature","created_at":"2026-02-16T10:16:04.973451+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T13:50:58.692578+01:00","closed_at":"2026-02-16T13:50:58.692578+01:00","close_reason":"Wave 2: Echo verification implemented in commits cf93556f and 845b9ece. PTY delivery now includes echo buffer matching for verified injection.","dependencies":[{"issue_id":"agent-relay-549","depends_on_id":"agent-relay-555","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 225 | +{"id":"agent-relay-550","title":"Enable local send_message with async Relaycast publish","status":"closed","priority":0,"issue_type":"feature","created_at":"2026-02-16T10:16:05.791673+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T13:50:58.742089+01:00","closed_at":"2026-02-16T13:50:58.742089+01:00","close_reason":"Wave 3: send_message handler now forwards to Relaycast REST API when target is not a local worker. RelaycastHttpClient implemented with register, send_dm, send_to_channel. Protocol events RelaycastPublished/RelaycastPublishFailed added. All 98 tests pass.","dependencies":[{"issue_id":"agent-relay-550","depends_on_id":"agent-relay-549","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 226 | +{"id":"agent-relay-551","title":"Broker crash recovery with PID tracking","status":"in_progress","priority":0,"issue_type":"feature","created_at":"2026-02-16T10:16:07.049221+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T14:08:27.900283+01:00"} |
| 227 | +{"id":"agent-relay-552","title":"Activity confirmation after PTY injection","status":"open","priority":1,"issue_type":"feature","created_at":"2026-02-16T10:16:07.824585+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:16:07.824585+01:00","dependencies":[{"issue_id":"agent-relay-552","depends_on_id":"agent-relay-549","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 228 | +{"id":"agent-relay-553","title":"Adaptive throttling for PTY injection","status":"open","priority":1,"issue_type":"feature","created_at":"2026-02-16T10:16:09.041173+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:16:09.041173+01:00","dependencies":[{"issue_id":"agent-relay-553","depends_on_id":"agent-relay-552","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 229 | +{"id":"agent-relay-554","title":"Delivery receipts from broker to SDK","status":"open","priority":1,"issue_type":"feature","created_at":"2026-02-16T10:16:09.954487+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:16:09.954487+01:00","dependencies":[{"issue_id":"agent-relay-554","depends_on_id":"agent-relay-549","type":"blocks","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"agent-relay-554","depends_on_id":"agent-relay-550","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 230 | +{"id":"agent-relay-555","title":"TDD integration tests for broker delivery guarantees","status":"open","priority":1,"issue_type":"task","created_at":"2026-02-16T10:16:10.878661+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:21:22.32265+01:00"} |
| 231 | +{"id":"agent-relay-556","title":"Benchmark suite: broker vs old stack","status":"open","priority":1,"issue_type":"task","created_at":"2026-02-16T10:24:07.558772+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:24:07.558772+01:00","dependencies":[{"issue_id":"agent-relay-556","depends_on_id":"agent-relay-550","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 232 | +{"id":"agent-relay-557","title":"Stdio pipe bottleneck: add concurrency or switch to Unix socket","status":"open","priority":1,"issue_type":"bug","created_at":"2026-02-16T10:25:10.799822+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:25:10.799822+01:00"} |
| 233 | +{"id":"agent-relay-558","title":"Move auth token out of WebSocket URL query string","status":"open","priority":2,"issue_type":"bug","created_at":"2026-02-16T10:25:11.656551+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:25:11.656551+01:00"} |
| 234 | +{"id":"agent-relay-559","title":"Add flock guard to prevent multi-broker conflicts","status":"open","priority":2,"issue_type":"bug","created_at":"2026-02-16T10:25:12.493286+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:25:12.493286+01:00"} |
| 235 | +{"id":"agent-relay-560","title":"Decompose main.rs into modules","status":"open","priority":3,"issue_type":"task","created_at":"2026-02-16T10:25:13.270209+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:25:13.270209+01:00"} |
| 236 | +{"id":"agent-relay-561","title":"Make PTY auto-response patterns configurable","status":"open","priority":2,"issue_type":"task","created_at":"2026-02-16T10:25:14.688369+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:25:14.688369+01:00"} |
| 237 | +{"id":"agent-relay-562","title":"Atomic state persistence with tmp+rename","status":"open","priority":2,"issue_type":"bug","created_at":"2026-02-16T10:25:15.484908+01:00","created_by":"khaliqgant","updated_at":"2026-02-16T10:25:15.484908+01:00"} |
224 | 238 | {"id":"agent-relay-5af","title":"Hook doesn't integrate with daemon-based messaging","description":"hooks/inbox-check/hook.ts reads from file-based inbox but the daemon uses SQLite. When using daemon mode, the hook won't see messages. Need to: (1) Query daemon storage, (2) Or ensure inbox files are written in daemon mode too.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-20T00:18:35.503078+01:00","updated_at":"2025-12-20T00:18:35.503078+01:00"} |
225 | 239 | {"id":"agent-relay-5fa","title":"Add exponential backoff for daemon reconnection","description":"Implement graceful reconnection with exponential backoff delays [100, 500, 1000, 2000, 5000ms]. After max attempts, operate offline gracefully. See docs/TMUX_IMPROVEMENTS.md for implementation details.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-20T21:28:48.055013+01:00","updated_at":"2025-12-20T21:33:42.229756+01:00","closed_at":"2025-12-20T21:33:42.229756+01:00"} |
226 | 240 | {"id":"agent-relay-5g0","title":"Heartbeat timeout could be more configurable","description":"In connection.ts:196, heartbeat timeout is hardcoded as 2x heartbeatMs. This should be independently configurable. Also, heartbeat failures immediately kill the connection - could implement exponential backoff for transient issues.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-20T00:18:03.556614+01:00","updated_at":"2025-12-23T23:03:07.563273+01:00","closed_at":"2025-12-23T23:03:07.563273+01:00"} |
|
0 commit comments