8.0 KiB
8.0 KiB
Tasks — Storage Abstraction Retrofit
Single-writer: orchestrator only. Workers read but never modify.
Mission: Decouple gateway from hardcoded Postgres/Valkey backends. Introduce interface-driven middleware so the gateway is backend-agnostic. Default to local tier (SQLite + JSON) for zero-dependency installs.
agentcolumn values:codex|sonnet|haiku|glm-5|opus|—(auto/default)
| id | status | description | issue | repo | branch | depends_on | blocks | agent | started_at | completed_at | estimate | used | notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SA-P1-001 | done | Define QueueAdapter interface in packages/queue/src/types.ts — enqueue, dequeue, length, publish, subscribe, close | queue | feat/storage-abstraction | SA-P1-004 | sonnet | 2026-04-02T20:20 | 2026-04-02T20:25 | 5K | 3K | types.ts created, typecheck clean | ||
| SA-P1-002 | done | Define StorageAdapter interface in packages/storage/src/types.ts — CRUD, query, find, transaction, close | storage | feat/storage-abstraction | SA-P1-004 | codex | 8K | ||||||
| SA-P1-003 | done | Define MemoryAdapter interface in packages/memory/src/types.ts — preferences, insights, search, embedder support | memory | feat/storage-abstraction | SA-P1-004 | codex | 5K | ||||||
| SA-P1-004 | done | Create adapter factory pattern + config types: createQueue(config), createStorage(config), createMemory(config) | queue,storage,memory | feat/storage-abstraction | SA-P1-001,SA-P1-002,SA-P1-003 | SA-P2-001 | codex | 8K | |||||
| SA-P2-001 | not-started | Refactor @mosaic/queue: move queue.ts → adapters/bullmq.ts, implement QueueAdapter interface, export factory | queue | feat/storage-abstraction | SA-P1-004 | SA-P2-004 | codex | 12K | |||||
| SA-P2-002 | not-started | Create @mosaic/storage package: move @mosaic/db Drizzle logic → adapters/postgres.ts, implement StorageAdapter interface | storage | feat/storage-abstraction | SA-P1-004 | SA-P2-004 | codex | 15K | |||||
| SA-P2-003 | not-started | Refactor @mosaic/memory: extract pgvector logic → adapters/pgvector.ts, implement MemoryAdapter interface | memory | feat/storage-abstraction | SA-P1-004 | SA-P2-004 | codex | 12K | |||||
| SA-P2-004 | not-started | Update gateway database.module.ts, queue.module.ts, memory.module.ts to use factories + NestJS DI tokens | gateway | feat/storage-abstraction | SA-P2-001,SA-P2-002,SA-P2-003 | SA-P2-005 | codex | 15K | |||||
| SA-P2-005 | not-started | Verify Phase 2: existing Postgres/Valkey behavior unchanged — all existing tests pass, typecheck clean | gateway | feat/storage-abstraction | SA-P2-004 | SA-P3-001 | codex | 10K | |||||
| SA-P3-001 | not-started | Implement local queue adapter: in-process Map + JSON file persistence in adapters/local.ts | queue | feat/storage-abstraction | SA-P2-005 | SA-P3-004 | codex | 10K | |||||
| SA-P3-002 | not-started | Implement SQLite storage adapter: better-sqlite3 with schema mirroring Drizzle tables, in adapters/sqlite.ts | storage | feat/storage-abstraction | SA-P2-005 | SA-P3-004 | codex | 20K | |||||
| SA-P3-003 | not-started | Implement keyword memory adapter: TF-IDF or simple keyword matching, no vector dependency, in adapters/keyword.ts | memory | feat/storage-abstraction | SA-P2-005 | SA-P3-004 | codex | 12K | |||||
| SA-P3-004 | not-started | Verify Phase 3: gateway starts with local config (no PG/Valkey), basic CRUD works, all adapter tests pass | gateway | feat/storage-abstraction | SA-P3-001,SA-P3-002,SA-P3-003 | SA-P4-001 | codex | 15K | |||||
| SA-P4-001 | not-started | Add mosaic.config.ts schema + loader: storage tier selection (local/team), backend config, defaults to local | config | feat/storage-abstraction | SA-P3-004 | SA-P4-002 | codex | 10K | |||||
| SA-P4-002 | not-started | CLI: mosaic gateway init — interactive wizard to generate mosaic.config.ts with tier selection | cli | feat/storage-abstraction | SA-P4-001 | SA-P4-003 | codex | 12K | |||||
| SA-P4-003 | not-started | CLI: mosaic gateway start/stop/status — lifecycle management for the gateway daemon | cli | feat/storage-abstraction | SA-P4-002 | SA-P4-004 | codex | 12K | |||||
| SA-P4-004 | not-started | Verify Phase 4: fresh install with mosaic gateway init && mosaic gateway start works end-to-end |
cli,gateway | feat/storage-abstraction | SA-P4-003 | SA-P5-001 | codex | 10K | |||||
| SA-P5-001 | not-started | Migration tooling: mosaic storage export/import for local↔postgres tier migration | cli,storage | feat/storage-abstraction | SA-P4-004 | SA-P5-002 | codex | 15K | |||||
| SA-P5-002 | not-started | Docker Compose profiles: local (gateway only) vs team (gateway+pg+valkey), update docker-compose.yml | infra | feat/storage-abstraction | SA-P5-001 | SA-P5-003 | codex | 8K | |||||
| SA-P5-003 | not-started | Final verification + docs: README update, architecture diagram, configuration guide | docs | feat/storage-abstraction | SA-P5-002 | codex | 10K |