Files
stack/docs/scratchpads/167-runner-jobs-crud.md
Jason Woltje 7102b4a1d2 feat(#167): Implement Runner jobs CRUD and queue submission
Implements runner-jobs module for job lifecycle management and queue submission.

Changes:
- Created RunnerJobsModule with service, controller, and DTOs
- Implemented job creation with BullMQ queue submission
- Implemented job listing with filters (status, type, agentTaskId)
- Implemented job detail retrieval with steps and events
- Implemented cancel operation for pending/queued jobs
- Implemented retry operation for failed jobs
- Added comprehensive unit tests (24 tests, 100% coverage)
- Integrated with BullMQ for async job processing
- Integrated with Prisma for database operations
- Followed existing CRUD patterns from tasks/events modules

API Endpoints:
- POST /runner-jobs - Create and queue a new job
- GET /runner-jobs - List jobs (with filters)
- GET /runner-jobs/:id - Get job details
- POST /runner-jobs/:id/cancel - Cancel a running job
- POST /runner-jobs/:id/retry - Retry a failed job

Quality Gates:
- Typecheck:  PASSED
- Lint:  PASSED
- Build:  PASSED
- Tests:  PASSED (24/24 tests)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:09:03 -06:00

1.9 KiB

Issue #167: Runner jobs CRUD and queue submission

Objective

Implement runner-jobs module for job lifecycle management and queue submission, integrating with BullMQ for async job processing.

Prerequisites

  • #164 (Database schema) - RunnerJob model available
  • #165 (BullMQ module) - BullMqService available for queue submission

Approach

  1. Review existing CRUD patterns (tasks, events modules)
  2. Review RunnerJob schema and BullMqService interface
  3. Follow TDD: Write tests first (RED phase)
  4. Implement service layer with Prisma + BullMQ integration (GREEN phase)
  5. Implement controller layer (GREEN phase)
  6. Refactor and optimize (REFACTOR phase)
  7. Run quality gates (typecheck, lint, build, test)

API Endpoints

  • POST /runner-jobs - Create and queue a new job
  • GET /runner-jobs - List jobs (with filters)
  • GET /runner-jobs/:id - Get job details
  • POST /runner-jobs/:id/cancel - Cancel a running job
  • POST /runner-jobs/:id/retry - Retry a failed job

Progress

  • Review existing patterns and dependencies
  • Create DTOs (CreateJobDto, QueryJobsDto)
  • Write service tests (RED phase)
  • Implement service with Prisma + BullMQ (GREEN phase)
  • Write controller tests (RED phase)
  • Implement controller (GREEN phase)
  • Create module configuration
  • Run quality gates (typecheck, lint, build, test)
  • Commit changes

Quality Gates Results

  • Typecheck: PASSED
  • Lint: PASSED (auto-fixed formatting)
  • Build: PASSED
  • Tests: PASSED (24/24 tests passing)

Testing

  • Unit tests for RunnerJobsService
  • Unit tests for RunnerJobsController
  • Mock BullMqService for queue operations
  • Mock Prisma for database operations
  • Target: ≥85% coverage

Notes

  • Follow existing CRUD patterns from tasks/events modules
  • Use DTOs for validation
  • Integrate with BullMqService for queue submission
  • Use Prisma for all database operations
  • Follow PDA-friendly language principles in responses