Skip to content

feature: enable optionally using Azure Container Apps for task execution instead of docker #5646

Closed
@rysweet

Description

@rysweet

Implement @roo-code/issue-tasks Package - GitHub Issue-Based Task Automation

Summary

This PR introduces a new package @roo-code/issue-tasks that generalizes the evals system architecture for arbitrary GitHub issue-based task management. The package provides a complete task automation framework that can convert GitHub issues into executable tasks with full database tracking, metrics, and queue management.

Background

The existing @roo-code/evals package provides an excellent foundation for automated evaluation workflows with database persistence, GitHub integration, and task execution. However, it's specifically designed for evaluation tasks. This new package extracts the core architecture patterns and creates a generalized system for any GitHub issue-based automation.

Implementation Details

Core Architecture

  • Database Schema: Tasks, runs, task_metrics, and tool_errors tables using Drizzle ORM
  • GitHub Integration: Issue fetching with authentication, rate limiting, and webhook support
  • Task Management: Loader, executor, and runner with complete workflow orchestration
  • Queue System: Redis-based async task processing with job scheduling
  • CLI Interface: Command-line tools for task management and monitoring

Key Features

  1. Issue-to-Task Conversion: Automatically converts GitHub issues into structured tasks
  2. Database Persistence: Full audit trail with metrics and error tracking
  3. Docker Integration: Postgres and Redis containers with automated setup
  4. Test Infrastructure: Comprehensive test suite with 16/16 tests passing
  5. Production Ready: Environment management, health checks, and monitoring

Package Structure

packages/issue-tasks/
├── src/
│   ├── db/           # Database schema and queries
│   ├── github/       # GitHub API integration
│   ├── tasks/        # Task management core
│   ├── runner/       # Task execution engine
│   ├── queue/        # Redis-based task queue
│   ├── cli/          # Command-line interface
│   └── __tests__/    # Integration tests
├── docs/             # Complete documentation
├── examples/         # Usage examples
└── scripts/          # Utility scripts

Test Results

All tests pass with full database integration:

  • GitHub Client Tests: 4/4 passing - Authentication, issue fetching, rate limiting
  • Task Loader Tests: 5/5 passing - Issue conversion, validation, metadata extraction
  • Integration Tests: 7/7 passing - End-to-end workflows, database operations, queue processing

Documentation

Complete documentation provided:

  • API Documentation: Full TypeScript API reference
  • Getting Started Guide: Setup and basic usage examples
  • Architecture Overview: System design and component relationships
  • Deployment Guide: Production deployment instructions

Files Added

Core Implementation

  • packages/issue-tasks/src/index.ts - Main package exports
  • packages/issue-tasks/src/db/schema.ts - Database schema definitions
  • packages/issue-tasks/src/db/db.ts - Database connection and configuration
  • packages/issue-tasks/src/github/client.ts - GitHub API integration
  • packages/issue-tasks/src/tasks/loader.ts - Issue-to-task conversion logic
  • packages/issue-tasks/src/runner/TaskExecutor.ts - Task execution engine
  • packages/issue-tasks/src/runner/TaskRunner.ts - Workflow orchestration
  • packages/issue-tasks/src/queue/TaskQueue.ts - Redis queue management
  • packages/issue-tasks/src/cli/index.ts - Command-line interface

Infrastructure

  • packages/issue-tasks/docker-compose.yml - Database and Redis services
  • packages/issue-tasks/Dockerfile - Application containerization
  • packages/issue-tasks/drizzle.config.ts - Database migration configuration
  • packages/issue-tasks/vitest.config.ts - Test configuration
  • packages/issue-tasks/scripts/wait-for-db.sh - Database health check

Tests

  • packages/issue-tasks/src/__tests__/integration.test.ts - End-to-end integration tests
  • packages/issue-tasks/src/github/__tests__/client.test.ts - GitHub client tests
  • packages/issue-tasks/src/tasks/__tests__/loader.test.ts - Task loader tests

Documentation

  • packages/issue-tasks/README.md - Package overview and quick start
  • packages/issue-tasks/docs/API.md - Complete API documentation
  • packages/issue-tasks/docs/GETTING_STARTED.md - Setup and usage guide
  • packages/issue-tasks/docs/ARCHITECTURE.md - System architecture overview
  • packages/issue-tasks/docs/DEPLOYMENT.md - Production deployment guide

Examples

  • packages/issue-tasks/examples/basic-usage.ts - Basic usage examples

Breaking Changes

None - this is a new package with no impact on existing code.

Migration Guide

Not applicable - this is a new package.

Testing

  • All 16 tests pass
  • Database integration working
  • Docker services automated
  • End-to-end workflows verified
  • GitHub API integration tested
  • Queue processing validated

Checklist

  • Implementation complete
  • Tests passing (16/16)
  • Documentation complete
  • Examples provided
  • Docker configuration working
  • Database schema implemented
  • GitHub integration functional
  • CLI interface complete
  • Queue system operational
  • Error handling comprehensive

Related Issues

This implements a generalized version of the patterns established in the @roo-code/evals package, providing a reusable foundation for GitHub issue-based task automation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Issue/PR - TriageNew issue. Needs quick review to confirm validity and assign labels.enhancementNew feature or request

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions