Files
GMW/package.json
T
MythEclipseandClaude Opus 4.8 a643125c7b refactor(moderation): improve LLM moderation client - 10 recommendations
- Add XML delimiters to prevent prompt injection (R1)
- Use JSON Schema response format instead of json_object (R2)
- Add concurrency limiter via p-limit (R3)
- Add timeout per media analysis call (R4)
- Resize images with sharp before vision API (R5)
- Split text batches when exceeding batch size limit (R6)
- Add few-shot examples to system prompt (R7)
- Modularize system prompt builder (R8)
- Enhance deferral detection regex with exception patterns (R9)
- Sanitize error messages to avoid leaking internals (R10)

New files: concurrencyLimiter.ts, imageResizer.ts, moderationPrompt.ts
Updated: llmModerationClient.ts, config.ts, package.json, tests

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 18:50:05 +07:00

85 lines
2.7 KiB
JSON

{
"name": "discord-voice-recorder",
"version": "1.0.0",
"description": "Discord bot that joins a voice channel and records audio",
"type": "module",
"main": "src/index.ts",
"packageManager": "pnpm@11.1.3",
"scripts": {
"prepare:vendor": "pnpm --filter './vendor/*' --filter '!discord.js-selfbot-v13' --if-present run build",
"dev": "tsx watch src/index.ts",
"dev:server": "tsx watch src/index.ts",
"dev:web": "vite --host 0.0.0.0 frontend",
"start": "node dist/index.js",
"start:dev": "tsx src/index.ts",
"build": "pnpm run build:web && pnpm run build:server",
"build:web": "vite build frontend --outDir ../public/app --emptyOutDir",
"build:server": "vite build --config vite.backend.config.ts",
"typecheck": "tsc --noEmit",
"lint": "biome check --diagnostic-level=error .",
"format": "biome format --write .",
"test": "vitest run",
"db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate",
"db:migrate:programmatic": "tsx src/database/migrateCli.ts",
"db:studio": "drizzle-kit studio",
"install:yt-dlp": "sh scripts/install-yt-dlp.sh"
},
"dependencies": {
"@dank074/discord-video-stream": "workspace:*",
"@discordjs/opus": "^0.10.0",
"@discordjs/voice": "^0.19.2",
"@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-tabs": "^1.1.13",
"@snazzah/davey": "^0.1.11",
"@tanstack/react-query": "^5.100.14",
"@types/pg": "^8.20.0",
"@vitejs/plugin-react": "^6.0.2",
"axios": "^1.16.1",
"clsx": "^2.1.1",
"discord.js-selfbot-v13": "workspace:*",
"dotenv": "^17.4.2",
"drizzle-orm": "^0.45.2",
"express": "^5.2.1",
"helmet": "^8.1.0",
"ioredis": "^5.11.0",
"libsodium-wrappers": "^0.8.4",
"lucide-react": "^1.16.0",
"motion": "^12.40.0",
"openai": "^6.38.0",
"opusscript": "^0.0.8",
"p-limit": "^7.3.0",
"p-retry": "^8.0.0",
"pg": "^8.21.0",
"piscina": "^5.1.4",
"play-dl": "^1.9.7",
"prism-media": "2.0.0-alpha.0",
"prom-client": "^15.1.3",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"sharp": "^0.34.5",
"tailwind-merge": "^3.6.0",
"vite": "^8.0.13",
"winston": "^3.19.0",
"ws": "^8.20.1",
"zod": "^4.4.3"
},
"devDependencies": {
"@biomejs/biome": "latest",
"@tailwindcss/postcss": "^4.3.0",
"@types/express": "^5.0.6",
"@types/node": "^25.9.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@types/ws": "^8.18.1",
"autoprefixer": "^10.5.0",
"drizzle-kit": "^0.31.10",
"postcss": "^8.5.14",
"tailwindcss": "^4.3.0",
"tsx": "^4.22.2",
"typescript": "^5.9.3",
"vitest": "latest"
}
}