From e808487725b4d54568bc70e03b3256f1aca007e0 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Mon, 2 Feb 2026 13:16:19 -0600 Subject: [PATCH] feat(M6): Set up orchestrator service foundation Add NestJS-based orchestrator service structure for M6-AgentOrchestration. Changes: - Migrate from Express to NestJS architecture - Add health check endpoint module - Add placeholder modules: coordinator, git, killswitch, monitor, queue, spawner, valkey - Update configuration for NestJS - Update lockfile for new dependencies This is foundational work for M6-AgentOrchestration milestone. Co-Authored-By: Claude Sonnet 4.5 --- apps/orchestrator/.env.example | 3 + apps/orchestrator/README.md | 24 +- apps/orchestrator/eslint.config.js | 16 + apps/orchestrator/nest-cli.json | 10 + apps/orchestrator/package.json | 37 +- .../src/api/health/health.controller.ts | 20 + .../src/api/health/health.module.ts | 7 + .../src/api/routes/health.routes.ts | 17 - apps/orchestrator/src/api/server.ts | 13 - apps/orchestrator/src/app.module.ts | 22 + .../src/config/orchestrator.config.ts | 26 ++ .../src/coordinator/coordinator.module.ts | 4 + apps/orchestrator/src/git/git.module.ts | 4 + .../src/killswitch/killswitch.module.ts | 4 + apps/orchestrator/src/main.ts | 33 +- .../src/monitor/monitor.module.ts | 4 + apps/orchestrator/src/queue/queue.module.ts | 4 + .../src/spawner/spawner.module.ts | 4 + apps/orchestrator/src/valkey/valkey.module.ts | 4 + apps/orchestrator/tsconfig.json | 25 +- pnpm-lock.yaml | 380 +++++++++++++++++- 21 files changed, 587 insertions(+), 74 deletions(-) create mode 100644 apps/orchestrator/eslint.config.js create mode 100644 apps/orchestrator/nest-cli.json create mode 100644 apps/orchestrator/src/api/health/health.controller.ts create mode 100644 apps/orchestrator/src/api/health/health.module.ts delete mode 100644 apps/orchestrator/src/api/routes/health.routes.ts delete mode 100644 apps/orchestrator/src/api/server.ts create mode 100644 apps/orchestrator/src/app.module.ts create mode 100644 apps/orchestrator/src/config/orchestrator.config.ts create mode 100644 apps/orchestrator/src/coordinator/coordinator.module.ts create mode 100644 apps/orchestrator/src/git/git.module.ts create mode 100644 apps/orchestrator/src/killswitch/killswitch.module.ts create mode 100644 apps/orchestrator/src/monitor/monitor.module.ts create mode 100644 apps/orchestrator/src/queue/queue.module.ts create mode 100644 apps/orchestrator/src/spawner/spawner.module.ts create mode 100644 apps/orchestrator/src/valkey/valkey.module.ts diff --git a/apps/orchestrator/.env.example b/apps/orchestrator/.env.example index 8710b56..8fcb609 100644 --- a/apps/orchestrator/.env.example +++ b/apps/orchestrator/.env.example @@ -1,7 +1,10 @@ # Orchestrator Configuration ORCHESTRATOR_PORT=3001 +NODE_ENV=development # Valkey +VALKEY_HOST=localhost +VALKEY_PORT=6379 VALKEY_URL=redis://localhost:6379 # Claude API diff --git a/apps/orchestrator/README.md b/apps/orchestrator/README.md index 0655cda..a0a442c 100644 --- a/apps/orchestrator/README.md +++ b/apps/orchestrator/README.md @@ -1,10 +1,11 @@ # Mosaic Orchestrator -Agent orchestration service for Mosaic Stack. +Agent orchestration service for Mosaic Stack built with NestJS. ## Overview The Orchestrator is the execution plane of Mosaic Stack, responsible for: + - Spawning and managing Claude agents - Task queue management (Valkey-backed) - Agent health monitoring and recovery @@ -25,19 +26,36 @@ Monitored via `apps/web/` (Agent Dashboard). # Install dependencies (from monorepo root) pnpm install -# Run in dev mode +# Run in dev mode (watch mode) pnpm --filter @mosaic/orchestrator dev # Build pnpm --filter @mosaic/orchestrator build +# Start production +pnpm --filter @mosaic/orchestrator start:prod + # Test pnpm --filter @mosaic/orchestrator test + +# Generate module (NestJS CLI) +cd apps/orchestrator +nest generate module +nest generate controller +nest generate service ``` +## NestJS Architecture + +- **Modules:** Feature-based organization (spawner, queue, monitor, etc.) +- **Controllers:** HTTP endpoints (health, agents, tasks) +- **Services:** Business logic +- **Providers:** Dependency injection + ## Configuration -See `.env.example` for required environment variables. +Environment variables loaded via @nestjs/config. +See `.env.example` for required vars. ## Documentation diff --git a/apps/orchestrator/eslint.config.js b/apps/orchestrator/eslint.config.js new file mode 100644 index 0000000..3fb1722 --- /dev/null +++ b/apps/orchestrator/eslint.config.js @@ -0,0 +1,16 @@ +import nestjsConfig from "@mosaic/config/eslint/nestjs"; + +export default [ + ...nestjsConfig, + { + languageOptions: { + parserOptions: { + project: ["./tsconfig.json"], + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + ignores: ["dist/**", "node_modules/**", "**/*.test.ts", "**/*.spec.ts"], + }, +]; diff --git a/apps/orchestrator/nest-cli.json b/apps/orchestrator/nest-cli.json new file mode 100644 index 0000000..340aab8 --- /dev/null +++ b/apps/orchestrator/nest-cli.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json-schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true, + "webpack": false, + "tsConfigPath": "tsconfig.json" + } +} diff --git a/apps/orchestrator/package.json b/apps/orchestrator/package.json index ada8a26..1c42ef7 100644 --- a/apps/orchestrator/package.json +++ b/apps/orchestrator/package.json @@ -2,32 +2,47 @@ "name": "@mosaic/orchestrator", "version": "0.0.6", "private": true, - "type": "module", - "main": "dist/main.js", "scripts": { - "dev": "tsx watch src/main.ts", - "build": "tsc", + "dev": "nest start --watch", + "build": "nest build", + "start": "node dist/main.js", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main.js", "test": "vitest", "test:watch": "vitest watch", + "test:e2e": "vitest run --config tests/integration/vitest.config.ts", "typecheck": "tsc --noEmit", "lint": "eslint src/", "lint:fix": "eslint src/ --fix" }, "dependencies": { - "@anthropic-ai/sdk": "^0.31.1", + "@anthropic-ai/sdk": "^0.72.1", "@mosaic/shared": "workspace:*", "@mosaic/config": "workspace:*", - "fastify": "^5.2.0", - "ioredis": "^5.4.2", + "@nestjs/common": "^11.1.12", + "@nestjs/core": "^11.1.12", + "@nestjs/platform-express": "^11.1.12", + "@nestjs/config": "^4.0.2", + "@nestjs/bullmq": "^11.0.4", + "bullmq": "^5.67.2", + "ioredis": "^5.9.2", "dockerode": "^4.0.2", "simple-git": "^3.27.0", - "zod": "^3.24.1" + "zod": "^3.24.1", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1" }, "devDependencies": { + "@nestjs/cli": "^11.0.6", + "@nestjs/schematics": "^11.0.1", + "@nestjs/testing": "^11.1.12", "@types/dockerode": "^3.3.31", - "@types/node": "^22.10.5", - "tsx": "^4.19.2", + "@types/node": "^22.13.4", + "@types/express": "^5.0.1", "typescript": "^5.8.2", - "vitest": "^3.0.8" + "vitest": "^4.0.18", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0" } } diff --git a/apps/orchestrator/src/api/health/health.controller.ts b/apps/orchestrator/src/api/health/health.controller.ts new file mode 100644 index 0000000..de24ff6 --- /dev/null +++ b/apps/orchestrator/src/api/health/health.controller.ts @@ -0,0 +1,20 @@ +import { Controller, Get } from "@nestjs/common"; + +@Controller("health") +export class HealthController { + @Get() + check() { + return { + status: "ok", + service: "orchestrator", + version: "0.0.6", + timestamp: new Date().toISOString(), + }; + } + + @Get("ready") + ready() { + // TODO: Check Valkey connection, Docker daemon + return { ready: true }; + } +} diff --git a/apps/orchestrator/src/api/health/health.module.ts b/apps/orchestrator/src/api/health/health.module.ts new file mode 100644 index 0000000..40b7bdf --- /dev/null +++ b/apps/orchestrator/src/api/health/health.module.ts @@ -0,0 +1,7 @@ +import { Module } from "@nestjs/common"; +import { HealthController } from "./health.controller"; + +@Module({ + controllers: [HealthController], +}) +export class HealthModule {} diff --git a/apps/orchestrator/src/api/routes/health.routes.ts b/apps/orchestrator/src/api/routes/health.routes.ts deleted file mode 100644 index 69c4902..0000000 --- a/apps/orchestrator/src/api/routes/health.routes.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { FastifyPluginAsync } from 'fastify'; - -export const healthRoutes: FastifyPluginAsync = async (fastify) => { - fastify.get('/health', async () => { - return { - status: 'ok', - service: 'orchestrator', - version: '0.0.6', - timestamp: new Date().toISOString() - }; - }); - - fastify.get('/health/ready', async () => { - // TODO: Check Valkey connection, Docker daemon - return { ready: true }; - }); -}; diff --git a/apps/orchestrator/src/api/server.ts b/apps/orchestrator/src/api/server.ts deleted file mode 100644 index da465f8..0000000 --- a/apps/orchestrator/src/api/server.ts +++ /dev/null @@ -1,13 +0,0 @@ -import Fastify from 'fastify'; -import { healthRoutes } from './routes/health.routes.js'; - -export async function createServer() { - const fastify = Fastify({ - logger: true, - }); - - // Health check routes - await fastify.register(healthRoutes); - - return fastify; -} diff --git a/apps/orchestrator/src/app.module.ts b/apps/orchestrator/src/app.module.ts new file mode 100644 index 0000000..c46ef8c --- /dev/null +++ b/apps/orchestrator/src/app.module.ts @@ -0,0 +1,22 @@ +import { Module } from "@nestjs/common"; +import { ConfigModule } from "@nestjs/config"; +import { BullModule } from "@nestjs/bullmq"; +import { HealthModule } from "./api/health/health.module"; +import { orchestratorConfig } from "./config/orchestrator.config"; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + load: [orchestratorConfig], + }), + BullModule.forRoot({ + connection: { + host: process.env.VALKEY_HOST ?? "localhost", + port: parseInt(process.env.VALKEY_PORT ?? "6379"), + }, + }), + HealthModule, + ], +}) +export class AppModule {} diff --git a/apps/orchestrator/src/config/orchestrator.config.ts b/apps/orchestrator/src/config/orchestrator.config.ts new file mode 100644 index 0000000..cafd8ac --- /dev/null +++ b/apps/orchestrator/src/config/orchestrator.config.ts @@ -0,0 +1,26 @@ +import { registerAs } from "@nestjs/config"; + +export const orchestratorConfig = registerAs("orchestrator", () => ({ + port: parseInt(process.env.ORCHESTRATOR_PORT ?? "3001", 10), + valkey: { + host: process.env.VALKEY_HOST ?? "localhost", + port: parseInt(process.env.VALKEY_PORT ?? "6379", 10), + url: process.env.VALKEY_URL ?? "redis://localhost:6379", + }, + claude: { + apiKey: process.env.CLAUDE_API_KEY, + }, + docker: { + socketPath: process.env.DOCKER_SOCKET ?? "/var/run/docker.sock", + }, + git: { + userName: process.env.GIT_USER_NAME ?? "Mosaic Orchestrator", + userEmail: process.env.GIT_USER_EMAIL ?? "orchestrator@mosaicstack.dev", + }, + killswitch: { + enabled: process.env.KILLSWITCH_ENABLED === "true", + }, + sandbox: { + enabled: process.env.SANDBOX_ENABLED === "true", + }, +})); diff --git a/apps/orchestrator/src/coordinator/coordinator.module.ts b/apps/orchestrator/src/coordinator/coordinator.module.ts new file mode 100644 index 0000000..b72b38e --- /dev/null +++ b/apps/orchestrator/src/coordinator/coordinator.module.ts @@ -0,0 +1,4 @@ +import { Module } from "@nestjs/common"; + +@Module({}) +export class CoordinatorModule {} diff --git a/apps/orchestrator/src/git/git.module.ts b/apps/orchestrator/src/git/git.module.ts new file mode 100644 index 0000000..712db8c --- /dev/null +++ b/apps/orchestrator/src/git/git.module.ts @@ -0,0 +1,4 @@ +import { Module } from "@nestjs/common"; + +@Module({}) +export class GitModule {} diff --git a/apps/orchestrator/src/killswitch/killswitch.module.ts b/apps/orchestrator/src/killswitch/killswitch.module.ts new file mode 100644 index 0000000..cc1c48a --- /dev/null +++ b/apps/orchestrator/src/killswitch/killswitch.module.ts @@ -0,0 +1,4 @@ +import { Module } from "@nestjs/common"; + +@Module({}) +export class KillswitchModule {} diff --git a/apps/orchestrator/src/main.ts b/apps/orchestrator/src/main.ts index f031bd2..12a497f 100644 --- a/apps/orchestrator/src/main.ts +++ b/apps/orchestrator/src/main.ts @@ -1,28 +1,19 @@ -/** - * Mosaic Orchestrator - Agent Orchestration Service - * - * Execution plane for Mosaic Stack agent coordination. - * Spawns, monitors, and manages Claude agents for autonomous work. - */ +import { NestFactory } from "@nestjs/core"; +import { AppModule } from "./app.module"; +import { Logger } from "@nestjs/common"; -import { createServer } from './api/server.js'; - -const PORT = process.env.ORCHESTRATOR_PORT || 3001; +const logger = new Logger("Orchestrator"); async function bootstrap() { - console.log('🚀 Starting Mosaic Orchestrator...'); - - const server = await createServer(); - - await server.listen({ - port: Number(PORT), - host: '0.0.0.0' + const app = await NestFactory.create(AppModule, { + logger: ["error", "warn", "log", "debug", "verbose"], }); - console.log(`✅ Orchestrator running on http://0.0.0.0:${PORT}`); + const port = process.env.ORCHESTRATOR_PORT ?? 3001; + + await app.listen(Number(port), "0.0.0.0"); + + logger.log(`🚀 Orchestrator running on http://0.0.0.0:${String(port)}`); } -bootstrap().catch((error) => { - console.error('Failed to start orchestrator:', error); - process.exit(1); -}); +void bootstrap(); diff --git a/apps/orchestrator/src/monitor/monitor.module.ts b/apps/orchestrator/src/monitor/monitor.module.ts new file mode 100644 index 0000000..88f2d84 --- /dev/null +++ b/apps/orchestrator/src/monitor/monitor.module.ts @@ -0,0 +1,4 @@ +import { Module } from "@nestjs/common"; + +@Module({}) +export class MonitorModule {} diff --git a/apps/orchestrator/src/queue/queue.module.ts b/apps/orchestrator/src/queue/queue.module.ts new file mode 100644 index 0000000..b73689a --- /dev/null +++ b/apps/orchestrator/src/queue/queue.module.ts @@ -0,0 +1,4 @@ +import { Module } from "@nestjs/common"; + +@Module({}) +export class QueueModule {} diff --git a/apps/orchestrator/src/spawner/spawner.module.ts b/apps/orchestrator/src/spawner/spawner.module.ts new file mode 100644 index 0000000..d41447a --- /dev/null +++ b/apps/orchestrator/src/spawner/spawner.module.ts @@ -0,0 +1,4 @@ +import { Module } from "@nestjs/common"; + +@Module({}) +export class SpawnerModule {} diff --git a/apps/orchestrator/src/valkey/valkey.module.ts b/apps/orchestrator/src/valkey/valkey.module.ts new file mode 100644 index 0000000..70cffd8 --- /dev/null +++ b/apps/orchestrator/src/valkey/valkey.module.ts @@ -0,0 +1,4 @@ +import { Module } from "@nestjs/common"; + +@Module({}) +export class ValkeyModule {} diff --git a/apps/orchestrator/tsconfig.json b/apps/orchestrator/tsconfig.json index fd5f567..fdda5bc 100644 --- a/apps/orchestrator/tsconfig.json +++ b/apps/orchestrator/tsconfig.json @@ -1,13 +1,28 @@ { - "extends": "../../tsconfig.json", + "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2021", + "sourceMap": true, "outDir": "./dist", - "rootDir": "./src", - "strict": true, - "esModuleInterop": true, + "baseUrl": "./", + "incremental": true, "skipLibCheck": true, + "strictNullChecks": true, + "noImplicitAny": true, + "strictBindCallApply": true, "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "strict": true, + "lib": ["ES2021"] }, "include": ["src/**/*"], "exclude": ["node_modules", "dist", "tests"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6c3f986..5879031 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -242,6 +242,85 @@ importers: specifier: ^4.0.18 version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.7)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + apps/orchestrator: + dependencies: + '@anthropic-ai/sdk': + specifier: ^0.72.1 + version: 0.72.1(zod@3.25.76) + '@mosaic/config': + specifier: workspace:* + version: link:../../packages/config + '@mosaic/shared': + specifier: workspace:* + version: link:../../packages/shared + '@nestjs/bullmq': + specifier: ^11.0.4 + version: 11.0.4(@nestjs/common@11.1.12(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.12)(bullmq@5.67.2) + '@nestjs/common': + specifier: ^11.1.12 + version: 11.1.12(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/config': + specifier: ^4.0.2 + version: 4.0.2(@nestjs/common@11.1.12(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2) + '@nestjs/core': + specifier: ^11.1.12 + version: 11.1.12(@nestjs/common@11.1.12(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.12)(@nestjs/websockets@11.1.12)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/platform-express': + specifier: ^11.1.12 + version: 11.1.12(@nestjs/common@11.1.12(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.12) + bullmq: + specifier: ^5.67.2 + version: 5.67.2 + dockerode: + specifier: ^4.0.2 + version: 4.0.9 + ioredis: + specifier: ^5.9.2 + version: 5.9.2 + reflect-metadata: + specifier: ^0.2.2 + version: 0.2.2 + rxjs: + specifier: ^7.8.1 + version: 7.8.2 + simple-git: + specifier: ^3.27.0 + version: 3.30.0 + zod: + specifier: ^3.24.1 + version: 3.25.76 + devDependencies: + '@nestjs/cli': + specifier: ^11.0.6 + version: 11.0.16(@swc/core@1.15.11)(@types/node@22.19.7) + '@nestjs/schematics': + specifier: ^11.0.1 + version: 11.0.9(chokidar@4.0.3)(typescript@5.9.3) + '@nestjs/testing': + specifier: ^11.1.12 + version: 11.1.12(@nestjs/common@11.1.12(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.12)(@nestjs/platform-express@11.1.12) + '@types/dockerode': + specifier: ^3.3.31 + version: 3.3.47 + '@types/express': + specifier: ^5.0.1 + version: 5.0.6 + '@types/node': + specifier: ^22.13.4 + version: 22.19.7 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.15.11)(@types/node@22.19.7)(typescript@5.9.3) + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 + typescript: + specifier: ^5.8.2 + version: 5.9.3 + vitest: + specifier: ^4.0.18 + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.7)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + apps/web: dependencies: '@dnd-kit/core': @@ -644,6 +723,9 @@ packages: resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} + '@balena/dockerignore@1.0.2': + resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -716,6 +798,10 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} @@ -995,6 +1081,11 @@ packages: resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} + '@grpc/proto-loader@0.7.15': + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + engines: {node: '>=6'} + hasBin: true + '@grpc/proto-loader@0.8.0': resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} engines: {node: '>=6'} @@ -1340,9 +1431,18 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + '@lukeed/csprng@1.1.0': resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -2521,6 +2621,18 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/adm-zip@0.5.7': resolution: {integrity: sha512-DNEs/QvmyRLurdQPChqq0Md4zGvPwHerAJYWk9l2jCbD1VPpnzRJorOdiq4zsw09NFbYnhfsoEhWtxIzXpn2yw==} @@ -2659,6 +2771,12 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/docker-modem@3.0.6': + resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} + + '@types/dockerode@3.3.47': + resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -2703,6 +2821,9 @@ packages: '@types/mysql@2.15.26': resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} + '@types/node@22.19.7': resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} @@ -2748,6 +2869,9 @@ packages: '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} + '@types/ssh2@1.15.5': + resolution: {integrity: sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==} + '@types/superagent@8.1.9': resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==} @@ -2999,6 +3123,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -3087,6 +3215,9 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -3106,6 +3237,9 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -3149,6 +3283,9 @@ packages: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + better-auth@1.4.17: resolution: {integrity: sha512-VmHGQyKsEahkEs37qguROKg/6ypYpNF13D7v/lkbO7w7Aivz0Bv2h+VyUkH4NzrGY0QBKXi1577mGhDCVwp0ew==} peerDependencies: @@ -3264,6 +3401,10 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buildcheck@0.0.7: + resolution: {integrity: sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==} + engines: {node: '>=10.0.0'} + bullmq@5.67.2: resolution: {integrity: sha512-3KYqNqQptKcgksACO1li4YW9/jxEh6XWa1lUg4OFrHa80Pf0C7H9zeb6ssbQQDfQab/K3QCXopbZ40vrvcyrLw==} @@ -3533,6 +3674,10 @@ packages: typescript: optional: true + cpu-features@0.0.10: + resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} + engines: {node: '>=10.0.0'} + crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -3542,6 +3687,9 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cron-parser@4.9.0: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} @@ -3808,6 +3956,10 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + diff@4.0.4: + resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} + engines: {node: '>=0.3.1'} + discord-api-types@0.38.38: resolution: {integrity: sha512-7qcM5IeZrfb+LXW07HvoI5L+j4PQeMZXEkSm1htHAHh4Y9JSMXBWjy/r7zmUCOj4F7zNjMcm7IMWr131MT2h0Q==} @@ -3815,6 +3967,14 @@ packages: resolution: {integrity: sha512-2l0gsPOLPs5t6GFZfQZKnL1OJNYFcuC/ETWsW4VtKVD/tg4ICa9x+jb9bkPffkMdRpRpuUaO/fKkHCBeiCKh8g==} engines: {node: '>=18'} + docker-modem@5.0.6: + resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} + engines: {node: '>= 8.0'} + + dockerode@4.0.9: + resolution: {integrity: sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q==} + engines: {node: '>= 8.0'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -4799,6 +4959,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + marked-gfm-heading-id@4.1.3: resolution: {integrity: sha512-aR0i63LmFbuxU/gAgrgz1Ir+8HK6zAIFXMlckeKHpV+qKbYaOP95L4Ux5Gi+sKmCZU5qnN2rdKpvpb7PnUBIWg==} peerDependencies: @@ -4943,6 +5106,9 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + nan@2.25.0: + resolution: {integrity: sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==} + nano-spawn@2.0.0: resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==} engines: {node: '>=20.17'} @@ -5609,6 +5775,9 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-git@3.30.0: + resolution: {integrity: sha512-q6lxyDsCmEal/MEGhP1aVyQ3oxnagGlBDOVSIB4XUVLl1iZh0Pah6ebC9V4xBap/RfgP2WlI8EKs0WS0rMEJHg==} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5650,6 +5819,9 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + split-ca@1.0.1: + resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} + split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -5657,6 +5829,10 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + ssh2@1.17.0: + resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==} + engines: {node: '>=10.16.0'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5903,6 +6079,20 @@ packages: ts-mixer@6.0.4: resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + tsconfig-paths-webpack-plugin@4.2.0: resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} engines: {node: '>=10.13.0'} @@ -5956,6 +6146,9 @@ packages: resolution: {integrity: sha512-hYbxnLEdvJF+DLALS+Ia+PbfNtn0sDP0hH2u9AFoskSUDmcVHSrtwHpzdX94MrRJKo9D9tYxY3MyP20gnlrWyA==} hasBin: true + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -5994,6 +6187,9 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -6035,6 +6231,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true @@ -6043,6 +6243,9 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + validator@13.15.26: resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==} engines: {node: '>= 0.10'} @@ -6332,6 +6535,10 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -6352,6 +6559,9 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} @@ -6438,6 +6648,12 @@ snapshots: package-manager-detector: 1.6.0 tinyexec: 1.0.2 + '@anthropic-ai/sdk@0.72.1(zod@3.25.76)': + dependencies: + json-schema-to-ts: 3.1.1 + optionalDependencies: + zod: 3.25.76 + '@anthropic-ai/sdk@0.72.1(zod@4.3.6)': dependencies: json-schema-to-ts: 3.1.1 @@ -6676,13 +6892,13 @@ snapshots: '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.28.6 + '@babel/code-frame': 7.29.0 '@babel/parser': 7.28.6 '@babel/types': 7.28.6 '@babel/traverse@7.28.6': dependencies: - '@babel/code-frame': 7.28.6 + '@babel/code-frame': 7.29.0 '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.6 @@ -6697,6 +6913,8 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@balena/dockerignore@1.0.2': {} + '@bcoe/v8-coverage@1.0.2': {} '@better-auth/cli@1.4.17(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.1.8(zod@4.3.6))(jose@6.1.3)(kysely@0.28.10)(magicast@0.3.5)(nanostores@1.1.0)(next@16.1.6(@babel/core@7.28.6)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.7)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': @@ -6842,6 +7060,10 @@ snapshots: '@colors/colors@1.5.0': optional: true + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -7070,6 +7292,13 @@ snapshots: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 + '@grpc/proto-loader@0.7.15': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.4 + yargs: 17.7.2 + '@grpc/proto-loader@0.8.0': dependencies: lodash.camelcase: 4.3.0 @@ -7376,8 +7605,21 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@js-sdsl/ordered-map@4.4.2': {} + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@kwsites/promise-deferred@1.1.1': {} + '@lukeed/csprng@1.1.0': {} '@mermaid-js/parser@0.6.3': @@ -8724,6 +8966,14 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@tsconfig/node10@1.0.12': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + '@types/adm-zip@0.5.7': dependencies: '@types/node': 22.19.7 @@ -8900,6 +9150,17 @@ snapshots: '@types/deep-eql@4.0.2': {} + '@types/docker-modem@3.0.6': + dependencies: + '@types/node': 22.19.7 + '@types/ssh2': 1.15.5 + + '@types/dockerode@3.3.47': + dependencies: + '@types/docker-modem': 3.0.6 + '@types/node': 22.19.7 + '@types/ssh2': 1.15.5 + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -8953,6 +9214,10 @@ snapshots: dependencies: '@types/node': 22.19.7 + '@types/node@18.19.130': + dependencies: + undici-types: 5.26.5 + '@types/node@22.19.7': dependencies: undici-types: 6.21.0 @@ -9011,6 +9276,10 @@ snapshots: '@types/shimmer@1.2.0': {} + '@types/ssh2@1.15.5': + dependencies: + '@types/node': 18.19.130 + '@types/superagent@8.1.9': dependencies: '@types/cookiejar': 2.1.5 @@ -9398,6 +9667,10 @@ snapshots: dependencies: acorn: 8.15.0 + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 + acorn@8.15.0: {} adm-zip@0.5.16: {} @@ -9480,6 +9753,8 @@ snapshots: - bare-abort-controller - react-native-b4a + arg@4.1.3: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -9496,6 +9771,10 @@ snapshots: asap@2.0.6: {} + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + assertion-error@2.0.1: {} ast-v8-to-istanbul@0.3.10: @@ -9520,6 +9799,10 @@ snapshots: baseline-browser-mapping@2.9.19: {} + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + better-auth@1.4.17(@prisma/client@5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)))(better-sqlite3@12.6.2)(drizzle-orm@0.41.0(@opentelemetry/api@1.9.0)(@prisma/client@5.22.0(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)))(@types/pg@8.16.0)(better-sqlite3@12.6.2)(kysely@0.28.10)(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3)))(next@16.1.6(@babel/core@7.28.6)(@opentelemetry/api@1.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.17.2)(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.7)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@better-auth/core': 1.4.17(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.1.3)(kysely@0.28.10)(nanostores@1.1.0) @@ -9670,6 +9953,9 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + buildcheck@0.0.7: + optional: true + bullmq@5.67.2: dependencies: cron-parser: 4.9.0 @@ -9944,6 +10230,12 @@ snapshots: optionalDependencies: typescript: 5.9.3 + cpu-features@0.0.10: + dependencies: + buildcheck: 0.0.7 + nan: 2.25.0 + optional: true + crc-32@1.2.2: {} crc32-stream@6.0.0: @@ -9951,6 +10243,8 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 + create-require@1.1.1: {} + cron-parser@4.9.0: dependencies: luxon: 3.7.2 @@ -10219,6 +10513,8 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 + diff@4.0.4: {} + discord-api-types@0.38.38: {} discord.js@14.25.1: @@ -10240,6 +10536,27 @@ snapshots: - bufferutil - utf-8-validate + docker-modem@5.0.6: + dependencies: + debug: 4.4.3 + readable-stream: 3.6.2 + split-ca: 1.0.1 + ssh2: 1.17.0 + transitivePeerDependencies: + - supports-color + + dockerode@4.0.9: + dependencies: + '@balena/dockerignore': 1.0.2 + '@grpc/grpc-js': 1.14.3 + '@grpc/proto-loader': 0.7.15 + docker-modem: 5.0.6 + protobufjs: 7.5.4 + tar-fs: 2.1.4 + uuid: 10.0.0 + transitivePeerDependencies: + - supports-color + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -10651,7 +10968,7 @@ snapshots: fork-ts-checker-webpack-plugin@9.1.0(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.15.11)): dependencies: - '@babel/code-frame': 7.28.6 + '@babel/code-frame': 7.29.0 chalk: 4.1.2 chokidar: 4.0.3 cosmiconfig: 8.3.6(typescript@5.9.3) @@ -11216,6 +11533,8 @@ snapshots: dependencies: semver: 7.7.3 + make-error@1.3.6: {} + marked-gfm-heading-id@4.1.3(marked@17.0.1): dependencies: github-slugger: 2.0.0 @@ -11360,6 +11679,9 @@ snapshots: mute-stream@2.0.0: {} + nan@2.25.0: + optional: true + nano-spawn@2.0.0: {} nanoid@3.3.11: {} @@ -11515,7 +11837,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.28.6 + '@babel/code-frame': 7.29.0 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -12108,6 +12430,14 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 + simple-git@3.30.0: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + sisteransi@1.0.5: {} slice-ansi@7.1.2: @@ -12169,10 +12499,20 @@ snapshots: source-map@0.7.4: {} + split-ca@1.0.1: {} + split2@4.2.0: {} sprintf-js@1.0.3: {} + ssh2@1.17.0: + dependencies: + asn1: 0.2.6 + bcrypt-pbkdf: 1.0.2 + optionalDependencies: + cpu-features: 0.0.10 + nan: 2.25.0 + stackback@0.0.2: {} standard-as-callback@2.1.0: {} @@ -12415,6 +12755,26 @@ snapshots: ts-mixer@6.0.4: {} + ts-node@10.9.2(@swc/core@1.15.11)(@types/node@22.19.7)(typescript@5.9.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.19.7 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.4 + make-error: 1.3.6 + typescript: 5.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.15.11 + tsconfig-paths-webpack-plugin@4.2.0: dependencies: chalk: 4.1.2 @@ -12468,6 +12828,8 @@ snapshots: turbo-windows-64: 2.8.0 turbo-windows-arm64: 2.8.0 + tweetnacl@0.14.5: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -12506,6 +12868,8 @@ snapshots: uint8array-extras@1.5.0: {} + undici-types@5.26.5: {} + undici-types@6.21.0: {} undici@6.21.3: {} @@ -12546,10 +12910,14 @@ snapshots: util-deprecate@1.0.2: {} + uuid@10.0.0: {} + uuid@11.1.0: {} uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} + validator@13.15.26: {} vary@1.1.2: {} @@ -12833,6 +13201,8 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yn@3.1.1: {} + yocto-queue@0.1.0: {} yocto-spinner@0.2.3: @@ -12849,6 +13219,8 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.7.0 + zod@3.25.76: {} + zod@4.3.6: {} zustand@4.5.7(@types/react@19.2.10)(react@19.2.4):