- Add CIOperationsService for Woodpecker CI integration - Add types for pipeline status, failure diagnosis - Add waitForPipeline with auto-diagnosis on failure - Add getPipelineLogs for log retrieval - Integrate CIModule into orchestrator app Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import { Module } from "@nestjs/common";
|
|
import { ConfigModule } from "@nestjs/config";
|
|
import { BullModule } from "@nestjs/bullmq";
|
|
import { ThrottlerModule } from "@nestjs/throttler";
|
|
import { HealthModule } from "./api/health/health.module";
|
|
import { AgentsModule } from "./api/agents/agents.module";
|
|
import { CoordinatorModule } from "./coordinator/coordinator.module";
|
|
import { BudgetModule } from "./budget/budget.module";
|
|
import { CIModule } from "./ci";
|
|
import { orchestratorConfig } from "./config/orchestrator.config";
|
|
|
|
/**
|
|
* Rate limiting configuration:
|
|
* - 'default': Standard API endpoints (100 requests per minute)
|
|
* - 'strict': Spawn/kill endpoints (10 requests per minute) - prevents DoS
|
|
* - 'status': Status/health endpoints (200 requests per minute) - higher for polling
|
|
*/
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({
|
|
isGlobal: true,
|
|
load: [orchestratorConfig],
|
|
}),
|
|
BullModule.forRoot({
|
|
connection: {
|
|
host: process.env.VALKEY_HOST ?? "localhost",
|
|
port: parseInt(process.env.VALKEY_PORT ?? "6379"),
|
|
},
|
|
}),
|
|
ThrottlerModule.forRoot([
|
|
{
|
|
name: "default",
|
|
ttl: 60000, // 1 minute
|
|
limit: 100, // 100 requests per minute
|
|
},
|
|
{
|
|
name: "strict",
|
|
ttl: 60000, // 1 minute
|
|
limit: 10, // 10 requests per minute for spawn/kill
|
|
},
|
|
{
|
|
name: "status",
|
|
ttl: 60000, // 1 minute
|
|
limit: 200, // 200 requests per minute for status endpoints
|
|
},
|
|
]),
|
|
HealthModule,
|
|
AgentsModule,
|
|
CoordinatorModule,
|
|
BudgetModule,
|
|
CIModule,
|
|
],
|
|
})
|
|
export class AppModule {}
|