Files
stack/apps/api/src/bullmq/queues.ts
T
jason.woltjeandClaude Opus 4.5 e09950f225 feat(#165): Implement BullMQ module setup
Create BullMQ module that shares the existing Valkey connection for job queue processing.

Files Created:
- apps/api/src/bullmq/bullmq.module.ts - Global module configuration
- apps/api/src/bullmq/bullmq.service.ts - Queue management service
- apps/api/src/bullmq/queues.ts - Queue name constants
- apps/api/src/bullmq/index.ts - Barrel exports
- apps/api/src/bullmq/bullmq.service.spec.ts - Unit tests

Files Modified:
- apps/api/src/app.module.ts - Import BullMqModule

Queue Definitions:
- mosaic-jobs (main queue)
- mosaic-jobs-runner (read-only operations)
- mosaic-jobs-weaver (write operations)
- mosaic-jobs-inspector (validation operations)

Implementation:
- Reuses VALKEY_URL from environment (shared connection)
- Follows existing Valkey module patterns
- Includes health check methods
- Proper lifecycle management (init/destroy)
- Queue names use hyphens instead of colons (BullMQ requirement)

Quality Gates:
- Unit tests: 11 passing
- TypeScript: No errors
- ESLint: No violations
- Build: Successful

Co-Authored-By: Claude Opus 4.5 <[email protected]>
2026-02-01 21:01:25 -06:00

39 lines
882 B
TypeScript

/**
* Queue name constants for BullMQ
*
* These queue names follow the mosaic:jobs:* convention
* and align with the Mosaic Component Architecture (agent profiles).
*/
export const QUEUE_NAMES = {
/**
* Main job queue - general purpose jobs
*/
MAIN: "mosaic-jobs",
/**
* Runner profile jobs - read-only operations
* - Fetches information
* - Gathers context
* - Reads repositories
*/
RUNNER: "mosaic-jobs-runner",
/**
* Weaver profile jobs - write operations
* - Implements code changes
* - Writes files
* - Scoped to worktree
*/
WEAVER: "mosaic-jobs-weaver",
/**
* Inspector profile jobs - validation operations
* - Runs quality gates (build, lint, test)
* - No modifications allowed
*/
INSPECTOR: "mosaic-jobs-inspector",
} as const;
export type QueueName = (typeof QUEUE_NAMES)[keyof typeof QUEUE_NAMES];