{ "name": "@mosaic/api", "version": "0.0.20", "private": true, "scripts": { "build": "nest build", "dev": "nest start --watch", "start": "node dist/main", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"src/**/*.ts\"", "lint:fix": "eslint \"src/**/*.ts\" --fix", "typecheck": "tsc --noEmit", "clean": "rm -rf dist", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", "test:e2e": "vitest run --config ./vitest.e2e.config.ts", "prisma:generate": "prisma generate", "prisma:migrate": "prisma migrate dev", "prisma:migrate:prod": "prisma migrate deploy", "prisma:studio": "prisma studio", "prisma:seed": "prisma db seed", "prisma:reset": "prisma migrate reset", "migrate:encrypt-llm-keys": "tsx scripts/encrypt-llm-keys.ts" }, "dependencies": { "@anthropic-ai/sdk": "^0.72.1", "@mosaic/shared": "workspace:*", "@mosaicstack/telemetry-client": "^0.1.1", "@nestjs/axios": "^4.0.1", "@nestjs/bullmq": "^11.0.4", "@nestjs/common": "^11.1.12", "@nestjs/config": "^4.0.2", "@nestjs/core": "^11.1.12", "@nestjs/mapped-types": "^2.1.0", "@nestjs/platform-express": "^11.1.12", "@nestjs/platform-socket.io": "^11.1.12", "@nestjs/throttler": "^6.5.0", "@nestjs/websockets": "^11.1.12", "@opentelemetry/api": "^1.9.0", "@opentelemetry/auto-instrumentations-node": "^0.55.0", "@opentelemetry/exporter-trace-otlp-http": "^0.56.0", "@opentelemetry/instrumentation-nestjs-core": "^0.44.0", "@opentelemetry/resources": "^1.30.1", "@opentelemetry/sdk-node": "^0.56.0", "@opentelemetry/sdk-trace-base": "^2.5.0", "@opentelemetry/semantic-conventions": "^1.28.0", "@prisma/client": "^6.19.2", "@types/marked": "^6.0.0", "@types/multer": "^2.0.0", "adm-zip": "^0.5.16", "archiver": "^7.0.1", "axios": "^1.13.5", "bcryptjs": "^3.0.3", "better-auth": "^1.4.17", "bullmq": "^5.67.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.3", "cookie-parser": "^1.4.7", "discord.js": "^14.25.1", "gray-matter": "^4.0.3", "highlight.js": "^11.11.1", "ioredis": "^5.9.2", "jose": "^6.1.3", "marked": "^17.0.1", "marked-gfm-heading-id": "^4.1.3", "marked-highlight": "^2.2.3", "matrix-bot-sdk": "^0.8.0", "node-pty": "^1.0.0", "ollama": "^0.6.3", "openai": "^6.17.0", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", "sanitize-html": "^2.17.0", "slugify": "^1.6.6", "socket.io": "^4.8.3" }, "devDependencies": { "@better-auth/cli": "^1.4.17", "@mosaic/config": "workspace:*", "@nestjs/cli": "^11.0.6", "@nestjs/schematics": "^11.0.1", "@nestjs/testing": "^11.1.12", "@opentelemetry/context-async-hooks": "^2.5.0", "@swc/core": "^1.10.18", "@types/adm-zip": "^0.5.7", "@types/archiver": "^7.0.0", "@types/bcryptjs": "^3.0.0", "@types/cookie-parser": "^1.4.10", "@types/express": "^5.0.1", "@types/highlight.js": "^10.1.0", "@types/node": "^22.13.4", "@types/sanitize-html": "^2.16.0", "@types/supertest": "^6.0.3", "@vitest/coverage-v8": "^4.0.18", "dotenv": "^17.2.4", "express": "^5.2.1", "prisma": "^6.19.2", "supertest": "^7.2.2", "tsx": "^4.21.0", "typescript": "^5.8.2", "unplugin-swc": "^1.5.2", "vitest": "^4.0.18" } }