Author SHA1 Message Date
asepharyana 588e750ede fix: switch GMW AI source from omniroute to 9router
- Change AI_LLM_BASE_URL default from omniroute.imrnes.team to 9router.asepharyana.my.id
- Update AI_LLM_MODEL default from 'text' to 'claude-opus-5' (bare model name
  compatible with 9router/OpenAI-compatible router)
- Update .env.example and inline comments to reflect 9router
- discord-gateway config now matches backend (which already uses 9router)
2026-08-25 20:22:40 +07:00
10 changed files with 853 additions and 1544 deletions

No files matched your search

+3 -3
View File
@@ -84,9 +84,9 @@ BACKLOG_SYNC_BATCH_SIZE=100 # Messages per backlog batch, max 100 (d
# === AI Analysis === # === AI Analysis ===
AI_ANALYSIS_ENABLED=false # Enable AI content moderation (default: false) AI_ANALYSIS_ENABLED=false # Enable AI content moderation (default: false)
# AI_LLM_API_KEY= # REQUIRED if AI_ANALYSIS_ENABLED=true. LLM API key AI_LLM_API_KEY= # REQUIRED if AI_ANALYSIS_ENABLED=true. LLM API key
AI_LLM_BASE_URL=http://100.121.180.82:20128/api/v1 # LLM API base URL (omniroute on imrnes; /api/v1 exposes OpenAI-compatible chat+embeddings) AI_LLM_BASE_URL=https://9router.asepharyana.my.id/v1 # LLM API base URL (9router — OpenAI-compatible router, replaces omniroute)
AI_LLM_MODEL=text # LLM text model name (default: text) AI_LLM_MODEL=claude-opus-5 # LLM text model name (default: claude-opus-5)
# AI_LLM_VISION_MODEL= # Vision model for image analysis (falls back to AI_LLM_MODEL) # AI_LLM_VISION_MODEL= # Vision model for image analysis (falls back to AI_LLM_MODEL)
# AI_LLM_EMBEDDING_MODEL= # Embedding model for semantic moderation cache (optional; enables near-duplicate text reuse to save LLM calls) # AI_LLM_EMBEDDING_MODEL= # Embedding model for semantic moderation cache (optional; enables near-duplicate text reuse to save LLM calls)
# AI_LLM_EMBEDDING_MIN_SIMILARITY=0.97 # Min cosine similarity to reuse a cached verdict (default: 0.97) # AI_LLM_EMBEDDING_MIN_SIMILARITY=0.97 # Min cosine similarity to reuse a cached verdict (default: 0.97)
-39
View File
@@ -1,39 +0,0 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
labels: ["dependencies"]
groups:
production:
dependency-type: "production"
development:
dependency-type: "development"
- package-ecosystem: "npm"
directory: "/services/backend"
schedule:
interval: "daily"
labels: ["dependencies"]
groups:
production:
dependency-type: "production"
- package-ecosystem: "npm"
directory: "/services/discord-gateway"
schedule:
interval: "daily"
labels: ["dependencies"]
groups:
production:
dependency-type: "production"
- package-ecosystem: "npm"
directory: "/services/frontend"
schedule:
interval: "daily"
labels: ["dependencies"]
groups:
production:
dependency-type: "production"
+7 -7
View File
@@ -21,21 +21,21 @@
"drizzle-orm": "^0.45.2", "drizzle-orm": "^0.45.2",
"express": "^5.2.1", "express": "^5.2.1",
"helmet": "^8.1.0", "helmet": "^8.1.0",
"ioredis": "^6.0.0", "ioredis": "^5.11.0",
"pg": "^8.23.0", "pg": "^8.21.0",
"pino": "^10.3.1", "pino": "^9.6.0",
"prom-client": "^15.1.3", "prom-client": "^15.1.3",
"ws": "^8.21.3", "ws": "^8.20.1",
"zod": "^4.4.3" "zod": "^4.4.3"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "latest", "@biomejs/biome": "latest",
"@types/express": "^5.0.6", "@types/express": "^5.0.6",
"@types/node": "^26.2.0", "@types/node": "^25.9.0",
"@types/pg": "^8.23.1", "@types/pg": "^8.20.0",
"@types/ws": "^8.18.1", "@types/ws": "^8.18.1",
"tsx": "^4.22.2", "tsx": "^4.22.2",
"typescript": "^7.0.2", "typescript": "^5.9.3",
"vitest": "latest" "vitest": "latest"
} }
} }
+172 -370
View File
@@ -13,7 +13,7 @@ importers:
version: 0.19.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) version: 0.19.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)
'@orpc/server': '@orpc/server':
specifier: 1.15.0 specifier: 1.15.0
version: 1.15.0(@opentelemetry/api@1.9.1)(ws@8.21.3) version: 1.15.0(@opentelemetry/api@1.9.1)(ws@8.21.1)
axios: axios:
specifier: ^1.16.1 specifier: ^1.16.1
version: 1.19.0(debug@4.4.3) version: 1.19.0(debug@4.4.3)
@@ -22,7 +22,7 @@ importers:
version: 17.4.2 version: 17.4.2
drizzle-orm: drizzle-orm:
specifier: ^0.45.2 specifier: ^0.45.2
version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.23.1)(pg@8.23.0) version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(pg@8.22.0)
express: express:
specifier: ^5.2.1 specifier: ^5.2.1
version: 5.2.1 version: 5.2.1
@@ -30,36 +30,36 @@ importers:
specifier: ^8.1.0 specifier: ^8.1.0
version: 8.3.0 version: 8.3.0
ioredis: ioredis:
specifier: ^6.0.0 specifier: ^5.11.0
version: 6.0.0 version: 5.11.1
pg: pg:
specifier: ^8.23.0 specifier: ^8.21.0
version: 8.23.0 version: 8.22.0
pino: pino:
specifier: ^10.3.1 specifier: ^9.6.0
version: 10.3.1 version: 9.14.0
prom-client: prom-client:
specifier: ^15.1.3 specifier: ^15.1.3
version: 15.1.3 version: 15.1.3
ws: ws:
specifier: ^8.21.3 specifier: ^8.20.1
version: 8.21.3 version: 8.21.1
zod: zod:
specifier: ^4.4.3 specifier: ^4.4.3
version: 4.4.3 version: 4.4.3
devDependencies: devDependencies:
'@biomejs/biome': '@biomejs/biome':
specifier: latest specifier: latest
version: 2.5.10 version: 2.5.8
'@types/express': '@types/express':
specifier: ^5.0.6 specifier: ^5.0.6
version: 5.0.6 version: 5.0.6
'@types/node': '@types/node':
specifier: ^26.2.0 specifier: ^25.9.0
version: 26.2.0 version: 25.9.5
'@types/pg': '@types/pg':
specifier: ^8.23.1 specifier: ^8.20.0
version: 8.23.1 version: 8.20.0
'@types/ws': '@types/ws':
specifier: ^8.18.1 specifier: ^8.18.1
version: 8.18.1 version: 8.18.1
@@ -67,67 +67,67 @@ importers:
specifier: ^4.22.2 specifier: ^4.22.2
version: 4.23.1 version: 4.23.1
typescript: typescript:
specifier: ^7.0.2 specifier: ^5.9.3
version: 7.0.2 version: 5.9.3
vitest: vitest:
specifier: latest specifier: latest
version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.0(@types/node@26.2.0)(esbuild@0.28.1)(tsx@4.23.1)) version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@25.9.5)(vite@8.2.0(@types/node@25.9.5)(esbuild@0.28.1)(tsx@4.23.1))
packages: packages:
'@biomejs/biome@2.5.10': '@biomejs/biome@2.5.8':
resolution: {integrity: sha512-WRKXARA3kTuiV5sxqTpobJ/I0MVd4vk3pOL6wnp5az4LntFIhWTj1RWZq3DI9PCEN3lXcqy7p5aqUHzvq8AXyQ==} resolution: {integrity: sha512-aeAeeJB9fSDc7Gq+2GqpQxA0qBj6gj1k2R6L1cYqGePKP/baIq1WX8y6B+D+nRsO5ViQL22K/8IwbqERW0q1nw==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
hasBin: true hasBin: true
'@biomejs/cli-darwin-arm64@2.5.10': '@biomejs/cli-darwin-arm64@2.5.8':
resolution: {integrity: sha512-ItCrxKK6SXVT6flYs0qIuBd4AA3TTTl4d66Re6YI2FuGZnN85NmuYNzkiTJUyYw8qBLv69L5zTUB6uyWd++h3Q==} resolution: {integrity: sha512-mk1QON9PHllvvLN5gU3f4rMxeh4syK5p9OvKyWH6/W8ueh04uaC8TUXXByhGufWf/y5mQc03ZLM45zU+cmqMjA==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@biomejs/cli-darwin-x64@2.5.10': '@biomejs/cli-darwin-x64@2.5.8':
resolution: {integrity: sha512-yLsPU9pAmtChXDu8vhKAzErqe+LeeYuwuUB2FZMkRitsmdodxsYRa9KHrFispsUHzzOu+9HB3nP/TQxyia+Sjw==} resolution: {integrity: sha512-bsGwFMBNyHPyiLSsQcZJxdoRrg1V4JL+d7wEsvUBczlP9U9lwM+7mzQHxI4o1mhBsTmdOBbAb6fHU3Z3snN45w==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@biomejs/cli-linux-arm64-musl@2.5.10': '@biomejs/cli-linux-arm64-musl@2.5.8':
resolution: {integrity: sha512-t1QAKZwQJRB4dvgJSgFiQ4BNfNPChg69BNonz854qLVxnjT3UvDzQg9mbkTJRu35ZqU0Rw10A73J8Urgbg2RPw==} resolution: {integrity: sha512-VcJNbstduTHx83NGAdhp78/JOcP45BZHXL7yNsfI1uGzdUgegAz2s+mSoT7wK6PBNzLoqG0zDOXaz/RQYVtSiw==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@biomejs/cli-linux-arm64@2.5.10': '@biomejs/cli-linux-arm64@2.5.8':
resolution: {integrity: sha512-VG8uQW/86a1roLaIFvtIbEigxIdzdJ190oGyg1tV7VYeQtOS+x10sflk7WbuXgw91EtZX5DlIIIej1YqkNLlcg==} resolution: {integrity: sha512-XmFiA0WPYFC+uiUDC8WRFzAIH9bo7vwQLav38Uoq4ETC+T/+uBi0TsYGJECkugY3r8USl3jc+Ae2/irAF6F2lQ==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@biomejs/cli-linux-x64-musl@2.5.10': '@biomejs/cli-linux-x64-musl@2.5.8':
resolution: {integrity: sha512-pgDDqp9JybHm2I0KRgzN6i4+lt8xu4iqxUwLzglUMmOmyRTU1AYBGKzh9sNMOtIjah7xoWvKHlLVetvyifzoiQ==} resolution: {integrity: sha512-kKmiyokeISRGq2FLwvr+TzsgBusfxaZ0FZNLcOYOpCK/78tRrEjeEBLvq3xLZMpqbANgJdRPI7vZX8ZL37u9/w==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@biomejs/cli-linux-x64@2.5.10': '@biomejs/cli-linux-x64@2.5.8':
resolution: {integrity: sha512-4O6T0eq2heoHZN0a9UX+rWQoxXEBaKf+lRi2hbsGlHneUz9BWXM76nEWMK7Eeq8gzMxR1khQB6BFpAASpeXqGg==} resolution: {integrity: sha512-S5wcm9OBDvLHodD4PUaN488hCpco9QD/9ZxuYJiw4euWtr/oQvLR72z2ixItH8Wd5BCm6FZaeb+YNvOoM1xHtQ==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@biomejs/cli-win32-arm64@2.5.10': '@biomejs/cli-win32-arm64@2.5.8':
resolution: {integrity: sha512-pxAbxduPO4xq/Cvgaa2lOrs9BB0hEXmmDqfMNP4ZOffGOkUrD1/QGw9UAMpFQpX2P8MqTIIRuQKcmetum4Oa6A==} resolution: {integrity: sha512-nILH0mzm3Hi3iEdd7o7GpB8kBR/mSQwfQG/tyBqyNrY2GFtcgwfV9nV8xLmbtUpMNY/Oi0Ml1XgfR4flOdq+AA==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@biomejs/cli-win32-x64@2.5.10': '@biomejs/cli-win32-x64@2.5.8':
resolution: {integrity: sha512-M+2dgBsl3lXRiTfgPVc2p3anS4Tocojke4rzFLScZ2Y/wmF+36dRb1iHCLiyGqOzQGyTplZH1HnEYviiAqi3nA==} resolution: {integrity: sha512-I2czzXTY61f3nFJxXoMDq80t7MivxDEnCjE+8sDKoFfcKMaoQdkqhIFQ3KyY0XLzeSpUBYeNAXgD+iOV/BU0VA==}
engines: {node: '>=14.21.3'} engines: {node: '>=14.21.3'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -301,8 +301,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@ioredis/commands@2.0.0': '@ioredis/commands@1.10.0':
resolution: {integrity: sha512-vrx0AE/T0h7cRZwfo1M39Cr+ZhZrkf0V8mQN75wucKCxCLD9l/VX6no3gFvrLqD1IlG/1LtzWovqEw3t0Vr9zg==} resolution: {integrity: sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q==}
'@jridgewell/sourcemap-codec@1.5.5': '@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
@@ -593,11 +593,11 @@ packages:
'@types/http-errors@2.0.5': '@types/http-errors@2.0.5':
resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
'@types/node@26.2.0': '@types/node@25.9.5':
resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==} resolution: {integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==}
'@types/pg@8.23.1': '@types/pg@8.20.0':
resolution: {integrity: sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==} resolution: {integrity: sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==}
'@types/qs@6.15.1': '@types/qs@6.15.1':
resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==} resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==}
@@ -614,131 +614,11 @@ packages:
'@types/ws@8.18.1': '@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
'@typescript/typescript-aix-ppc64@7.0.2': '@vitest/expect@4.1.10':
resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==}
engines: {node: '>=16.20.0'}
cpu: [ppc64]
os: [aix]
'@typescript/typescript-darwin-arm64@7.0.2': '@vitest/mocker@4.1.10':
resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==}
engines: {node: '>=16.20.0'}
cpu: [arm64]
os: [darwin]
'@typescript/typescript-darwin-x64@7.0.2':
resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==}
engines: {node: '>=16.20.0'}
cpu: [x64]
os: [darwin]
'@typescript/typescript-freebsd-arm64@7.0.2':
resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==}
engines: {node: '>=16.20.0'}
cpu: [arm64]
os: [freebsd]
'@typescript/typescript-freebsd-x64@7.0.2':
resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==}
engines: {node: '>=16.20.0'}
cpu: [x64]
os: [freebsd]
'@typescript/typescript-linux-arm64@7.0.2':
resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==}
engines: {node: '>=16.20.0'}
cpu: [arm64]
os: [linux]
'@typescript/typescript-linux-arm@7.0.2':
resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==}
engines: {node: '>=16.20.0'}
cpu: [arm]
os: [linux]
'@typescript/typescript-linux-loong64@7.0.2':
resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==}
engines: {node: '>=16.20.0'}
cpu: [loong64]
os: [linux]
'@typescript/typescript-linux-mips64el@7.0.2':
resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==}
engines: {node: '>=16.20.0'}
cpu: [mips64el]
os: [linux]
'@typescript/typescript-linux-ppc64@7.0.2':
resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==}
engines: {node: '>=16.20.0'}
cpu: [ppc64]
os: [linux]
'@typescript/typescript-linux-riscv64@7.0.2':
resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==}
engines: {node: '>=16.20.0'}
cpu: [riscv64]
os: [linux]
'@typescript/typescript-linux-s390x@7.0.2':
resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==}
engines: {node: '>=16.20.0'}
cpu: [s390x]
os: [linux]
'@typescript/typescript-linux-x64@7.0.2':
resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==}
engines: {node: '>=16.20.0'}
cpu: [x64]
os: [linux]
'@typescript/typescript-netbsd-arm64@7.0.2':
resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==}
engines: {node: '>=16.20.0'}
cpu: [arm64]
os: [netbsd]
'@typescript/typescript-netbsd-x64@7.0.2':
resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==}
engines: {node: '>=16.20.0'}
cpu: [x64]
os: [netbsd]
'@typescript/typescript-openbsd-arm64@7.0.2':
resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==}
engines: {node: '>=16.20.0'}
cpu: [arm64]
os: [openbsd]
'@typescript/typescript-openbsd-x64@7.0.2':
resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==}
engines: {node: '>=16.20.0'}
cpu: [x64]
os: [openbsd]
'@typescript/typescript-sunos-x64@7.0.2':
resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==}
engines: {node: '>=16.20.0'}
cpu: [x64]
os: [sunos]
'@typescript/typescript-win32-arm64@7.0.2':
resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==}
engines: {node: '>=16.20.0'}
cpu: [arm64]
os: [win32]
'@typescript/typescript-win32-x64@7.0.2':
resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==}
engines: {node: '>=16.20.0'}
cpu: [x64]
os: [win32]
'@vitest/expect@4.1.11':
resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==}
'@vitest/mocker@4.1.11':
resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==}
peerDependencies: peerDependencies:
msw: ^2.4.9 msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0 vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -748,20 +628,20 @@ packages:
vite: vite:
optional: true optional: true
'@vitest/pretty-format@4.1.11': '@vitest/pretty-format@4.1.10':
resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==}
'@vitest/runner@4.1.11': '@vitest/runner@4.1.10':
resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==}
'@vitest/snapshot@4.1.11': '@vitest/snapshot@4.1.10':
resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==}
'@vitest/spy@4.1.11': '@vitest/spy@4.1.10':
resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==}
'@vitest/utils@4.1.11': '@vitest/utils@4.1.10':
resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
accepts@2.0.0: accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
@@ -1105,9 +985,9 @@ packages:
inherits@2.0.4: inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
ioredis@6.0.0: ioredis@5.11.1:
resolution: {integrity: sha512-f+Dtubxfpf6KYFq7WVXJoOLn0bk4TJrMrN9SzeE+jrWrCWj7XX3fA6vkryafhADX+GMymRxgDJDOI33COkJc0w==} resolution: {integrity: sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A==}
engines: {node: '>=20.0.0'} engines: {node: '>=12.22.0'}
ipaddr.js@1.9.1: ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
@@ -1280,15 +1160,15 @@ packages:
peerDependencies: peerDependencies:
pg: '>=8.0' pg: '>=8.0'
pg-protocol@1.16.0: pg-protocol@1.15.0:
resolution: {integrity: sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==} resolution: {integrity: sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==}
pg-types@2.2.0: pg-types@2.2.0:
resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
engines: {node: '>=4'} engines: {node: '>=4'}
pg@8.23.0: pg@8.22.0:
resolution: {integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==} resolution: {integrity: sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==}
engines: {node: '>= 16.0.0'} engines: {node: '>= 16.0.0'}
peerDependencies: peerDependencies:
pg-native: '>=3.0.1' pg-native: '>=3.0.1'
@@ -1306,14 +1186,14 @@ packages:
resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
engines: {node: '>=12'} engines: {node: '>=12'}
pino-abstract-transport@3.0.0: pino-abstract-transport@2.0.0:
resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==} resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==}
pino-std-serializers@7.1.0: pino-std-serializers@7.1.0:
resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==}
pino@10.3.1: pino@9.14.0:
resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==} resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==}
hasBin: true hasBin: true
postcss@8.5.25: postcss@8.5.25:
@@ -1391,13 +1271,14 @@ packages:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
engines: {node: '>= 12.13.0'} engines: {node: '>= 12.13.0'}
real-require@1.0.0:
resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==}
redis-errors@1.2.0: redis-errors@1.2.0:
resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
engines: {node: '>=4'} engines: {node: '>=4'}
redis-parser@3.0.0:
resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==}
engines: {node: '>=4'}
rolldown@1.2.1: rolldown@1.2.1:
resolution: {integrity: sha512-4FKJhg8d3OiyQOA6Q1Q0hoFFpW9/OoX+VsHzpECsdsIZoOArrAK90gl59YK/Z+gnDel45bgJZK03ozH/9bCqEw==} resolution: {integrity: sha512-4FKJhg8d3OiyQOA6Q1Q0hoFFpW9/OoX+VsHzpECsdsIZoOArrAK90gl59YK/Z+gnDel45bgJZK03ozH/9bCqEw==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
@@ -1475,9 +1356,8 @@ packages:
tdigest@0.1.2: tdigest@0.1.2:
resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==}
thread-stream@4.2.0: thread-stream@3.2.0:
resolution: {integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==} resolution: {integrity: sha512-zLBvqpwr4Esa0kRjcrzGU6zL25lePWaCLMx0RQFrmteozIfeNdaMLpG5U7PeHzvlFkAWaRKA9/KVW4F60iB+qw==}
engines: {node: '>=20'}
tinybench@2.9.0: tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
@@ -1514,13 +1394,13 @@ packages:
resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==}
engines: {node: '>= 18'} engines: {node: '>= 18'}
typescript@7.0.2: typescript@5.9.3:
resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=16.20.0'} engines: {node: '>=14.17'}
hasBin: true hasBin: true
undici-types@8.3.0: undici-types@7.24.6:
resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}
unpipe@1.0.0: unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
@@ -1573,20 +1453,20 @@ packages:
yaml: yaml:
optional: true optional: true
vitest@4.1.11: vitest@4.1.10:
resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@edge-runtime/vm': '*' '@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0 '@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
'@vitest/browser-playwright': 4.1.11 '@vitest/browser-playwright': 4.1.10
'@vitest/browser-preview': 4.1.11 '@vitest/browser-preview': 4.1.10
'@vitest/browser-webdriverio': 4.1.11 '@vitest/browser-webdriverio': 4.1.10
'@vitest/coverage-istanbul': 4.1.11 '@vitest/coverage-istanbul': 4.1.10
'@vitest/coverage-v8': 4.1.11 '@vitest/coverage-v8': 4.1.10
'@vitest/ui': 4.1.11 '@vitest/ui': 4.1.10
happy-dom: '*' happy-dom: '*'
jsdom: '*' jsdom: '*'
vite: ^6.0.0 || ^7.0.0 || ^8.0.0 vite: ^6.0.0 || ^7.0.0 || ^8.0.0
@@ -1622,8 +1502,8 @@ packages:
wrappy@1.0.2: wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
ws@8.21.3: ws@8.21.1:
resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
peerDependencies: peerDependencies:
bufferutil: ^4.0.1 bufferutil: ^4.0.1
@@ -1643,39 +1523,39 @@ packages:
snapshots: snapshots:
'@biomejs/biome@2.5.10': '@biomejs/biome@2.5.8':
optionalDependencies: optionalDependencies:
'@biomejs/cli-darwin-arm64': 2.5.10 '@biomejs/cli-darwin-arm64': 2.5.8
'@biomejs/cli-darwin-x64': 2.5.10 '@biomejs/cli-darwin-x64': 2.5.8
'@biomejs/cli-linux-arm64': 2.5.10 '@biomejs/cli-linux-arm64': 2.5.8
'@biomejs/cli-linux-arm64-musl': 2.5.10 '@biomejs/cli-linux-arm64-musl': 2.5.8
'@biomejs/cli-linux-x64': 2.5.10 '@biomejs/cli-linux-x64': 2.5.8
'@biomejs/cli-linux-x64-musl': 2.5.10 '@biomejs/cli-linux-x64-musl': 2.5.8
'@biomejs/cli-win32-arm64': 2.5.10 '@biomejs/cli-win32-arm64': 2.5.8
'@biomejs/cli-win32-x64': 2.5.10 '@biomejs/cli-win32-x64': 2.5.8
'@biomejs/cli-darwin-arm64@2.5.10': '@biomejs/cli-darwin-arm64@2.5.8':
optional: true optional: true
'@biomejs/cli-darwin-x64@2.5.10': '@biomejs/cli-darwin-x64@2.5.8':
optional: true optional: true
'@biomejs/cli-linux-arm64-musl@2.5.10': '@biomejs/cli-linux-arm64-musl@2.5.8':
optional: true optional: true
'@biomejs/cli-linux-arm64@2.5.10': '@biomejs/cli-linux-arm64@2.5.8':
optional: true optional: true
'@biomejs/cli-linux-x64-musl@2.5.10': '@biomejs/cli-linux-x64-musl@2.5.8':
optional: true optional: true
'@biomejs/cli-linux-x64@2.5.10': '@biomejs/cli-linux-x64@2.5.8':
optional: true optional: true
'@biomejs/cli-win32-arm64@2.5.10': '@biomejs/cli-win32-arm64@2.5.8':
optional: true optional: true
'@biomejs/cli-win32-x64@2.5.10': '@biomejs/cli-win32-x64@2.5.8':
optional: true optional: true
'@discordjs/voice@0.19.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)': '@discordjs/voice@0.19.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)':
@@ -1685,7 +1565,7 @@ snapshots:
discord-api-types: 0.38.52 discord-api-types: 0.38.52
prism-media: 1.3.5 prism-media: 1.3.5
tslib: 2.8.1 tslib: 2.8.1
ws: 8.21.3 ws: 8.21.1
transitivePeerDependencies: transitivePeerDependencies:
- '@discordjs/opus' - '@discordjs/opus'
- '@emnapi/core' - '@emnapi/core'
@@ -1790,7 +1670,7 @@ snapshots:
'@esbuild/win32-x64@0.28.1': '@esbuild/win32-x64@0.28.1':
optional: true optional: true
'@ioredis/commands@2.0.0': {} '@ioredis/commands@1.10.0': {}
'@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/sourcemap-codec@1.5.5': {}
@@ -1823,7 +1703,7 @@ snapshots:
'@orpc/interop@1.15.0': {} '@orpc/interop@1.15.0': {}
'@orpc/server@1.15.0(@opentelemetry/api@1.9.1)(ws@8.21.3)': '@orpc/server@1.15.0(@opentelemetry/api@1.9.1)(ws@8.21.1)':
dependencies: dependencies:
'@orpc/client': 1.15.0(@opentelemetry/api@1.9.1) '@orpc/client': 1.15.0(@opentelemetry/api@1.9.1)
'@orpc/contract': 1.15.0(@opentelemetry/api@1.9.1) '@orpc/contract': 1.15.0(@opentelemetry/api@1.9.1)
@@ -1837,7 +1717,7 @@ snapshots:
'@orpc/standard-server-peer': 1.15.0(@opentelemetry/api@1.9.1) '@orpc/standard-server-peer': 1.15.0(@opentelemetry/api@1.9.1)
cookie: 1.1.1 cookie: 1.1.1
optionalDependencies: optionalDependencies:
ws: 8.21.3 ws: 8.21.1
transitivePeerDependencies: transitivePeerDependencies:
- '@opentelemetry/api' - '@opentelemetry/api'
- fastify - fastify
@@ -2026,7 +1906,7 @@ snapshots:
'@types/body-parser@1.19.6': '@types/body-parser@1.19.6':
dependencies: dependencies:
'@types/connect': 3.4.38 '@types/connect': 3.4.38
'@types/node': 26.2.0 '@types/node': 25.9.5
'@types/chai@5.2.3': '@types/chai@5.2.3':
dependencies: dependencies:
@@ -2035,7 +1915,7 @@ snapshots:
'@types/connect@3.4.38': '@types/connect@3.4.38':
dependencies: dependencies:
'@types/node': 26.2.0 '@types/node': 25.9.5
'@types/deep-eql@4.0.2': {} '@types/deep-eql@4.0.2': {}
@@ -2043,7 +1923,7 @@ snapshots:
'@types/express-serve-static-core@5.1.2': '@types/express-serve-static-core@5.1.2':
dependencies: dependencies:
'@types/node': 26.2.0 '@types/node': 25.9.5
'@types/qs': 6.15.1 '@types/qs': 6.15.1
'@types/range-parser': 1.2.7 '@types/range-parser': 1.2.7
'@types/send': 1.2.1 '@types/send': 1.2.1
@@ -2056,14 +1936,14 @@ snapshots:
'@types/http-errors@2.0.5': {} '@types/http-errors@2.0.5': {}
'@types/node@26.2.0': '@types/node@25.9.5':
dependencies: dependencies:
undici-types: 8.3.0 undici-types: 7.24.6
'@types/pg@8.23.1': '@types/pg@8.20.0':
dependencies: dependencies:
'@types/node': 26.2.0 '@types/node': 25.9.5
pg-protocol: 1.16.0 pg-protocol: 1.15.0
pg-types: 2.2.0 pg-types: 2.2.0
'@types/qs@6.15.1': {} '@types/qs@6.15.1': {}
@@ -2072,115 +1952,55 @@ snapshots:
'@types/send@1.2.1': '@types/send@1.2.1':
dependencies: dependencies:
'@types/node': 26.2.0 '@types/node': 25.9.5
'@types/serve-static@2.2.0': '@types/serve-static@2.2.0':
dependencies: dependencies:
'@types/http-errors': 2.0.5 '@types/http-errors': 2.0.5
'@types/node': 26.2.0 '@types/node': 25.9.5
'@types/ws@8.18.1': '@types/ws@8.18.1':
dependencies: dependencies:
'@types/node': 26.2.0 '@types/node': 25.9.5
'@typescript/typescript-aix-ppc64@7.0.2': '@vitest/expect@4.1.10':
optional: true
'@typescript/typescript-darwin-arm64@7.0.2':
optional: true
'@typescript/typescript-darwin-x64@7.0.2':
optional: true
'@typescript/typescript-freebsd-arm64@7.0.2':
optional: true
'@typescript/typescript-freebsd-x64@7.0.2':
optional: true
'@typescript/typescript-linux-arm64@7.0.2':
optional: true
'@typescript/typescript-linux-arm@7.0.2':
optional: true
'@typescript/typescript-linux-loong64@7.0.2':
optional: true
'@typescript/typescript-linux-mips64el@7.0.2':
optional: true
'@typescript/typescript-linux-ppc64@7.0.2':
optional: true
'@typescript/typescript-linux-riscv64@7.0.2':
optional: true
'@typescript/typescript-linux-s390x@7.0.2':
optional: true
'@typescript/typescript-linux-x64@7.0.2':
optional: true
'@typescript/typescript-netbsd-arm64@7.0.2':
optional: true
'@typescript/typescript-netbsd-x64@7.0.2':
optional: true
'@typescript/typescript-openbsd-arm64@7.0.2':
optional: true
'@typescript/typescript-openbsd-x64@7.0.2':
optional: true
'@typescript/typescript-sunos-x64@7.0.2':
optional: true
'@typescript/typescript-win32-arm64@7.0.2':
optional: true
'@typescript/typescript-win32-x64@7.0.2':
optional: true
'@vitest/expect@4.1.11':
dependencies: dependencies:
'@standard-schema/spec': 1.1.0 '@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3 '@types/chai': 5.2.3
'@vitest/spy': 4.1.11 '@vitest/spy': 4.1.10
'@vitest/utils': 4.1.11 '@vitest/utils': 4.1.10
chai: 6.2.2 chai: 6.2.2
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
'@vitest/mocker@4.1.11(vite@8.2.0(@types/node@26.2.0)(esbuild@0.28.1)(tsx@4.23.1))': '@vitest/mocker@4.1.10(vite@8.2.0(@types/node@25.9.5)(esbuild@0.28.1)(tsx@4.23.1))':
dependencies: dependencies:
'@vitest/spy': 4.1.11 '@vitest/spy': 4.1.10
estree-walker: 3.0.3 estree-walker: 3.0.3
magic-string: 0.30.21 magic-string: 0.30.21
optionalDependencies: optionalDependencies:
vite: 8.2.0(@types/node@26.2.0)(esbuild@0.28.1)(tsx@4.23.1) vite: 8.2.0(@types/node@25.9.5)(esbuild@0.28.1)(tsx@4.23.1)
'@vitest/pretty-format@4.1.11': '@vitest/pretty-format@4.1.10':
dependencies: dependencies:
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
'@vitest/runner@4.1.11': '@vitest/runner@4.1.10':
dependencies: dependencies:
'@vitest/utils': 4.1.11 '@vitest/utils': 4.1.10
pathe: 2.0.3 pathe: 2.0.3
'@vitest/snapshot@4.1.11': '@vitest/snapshot@4.1.10':
dependencies: dependencies:
'@vitest/pretty-format': 4.1.11 '@vitest/pretty-format': 4.1.10
'@vitest/utils': 4.1.11 '@vitest/utils': 4.1.10
magic-string: 0.30.21 magic-string: 0.30.21
pathe: 2.0.3 pathe: 2.0.3
'@vitest/spy@4.1.11': {} '@vitest/spy@4.1.10': {}
'@vitest/utils@4.1.11': '@vitest/utils@4.1.10':
dependencies: dependencies:
'@vitest/pretty-format': 4.1.11 '@vitest/pretty-format': 4.1.10
convert-source-map: 2.0.0 convert-source-map: 2.0.0
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
@@ -2277,11 +2097,11 @@ snapshots:
dotenv@17.4.2: {} dotenv@17.4.2: {}
drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.23.1)(pg@8.23.0): drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.20.0)(pg@8.22.0):
optionalDependencies: optionalDependencies:
'@opentelemetry/api': 1.9.1 '@opentelemetry/api': 1.9.1
'@types/pg': 8.23.1 '@types/pg': 8.20.0
pg: 8.23.0 pg: 8.22.0
dunder-proto@1.0.1: dunder-proto@1.0.1:
dependencies: dependencies:
@@ -2471,13 +2291,14 @@ snapshots:
inherits@2.0.4: {} inherits@2.0.4: {}
ioredis@6.0.0: ioredis@5.11.1:
dependencies: dependencies:
'@ioredis/commands': 2.0.0 '@ioredis/commands': 1.10.0
cluster-key-slot: 1.1.1 cluster-key-slot: 1.1.1
debug: 4.4.3 debug: 4.4.3
denque: 2.1.0 denque: 2.1.0
redis-errors: 1.2.0 redis-errors: 1.2.0
redis-parser: 3.0.0
standard-as-callback: 2.1.0 standard-as-callback: 2.1.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -2592,11 +2413,11 @@ snapshots:
pg-int8@1.0.1: {} pg-int8@1.0.1: {}
pg-pool@3.14.0(pg@8.23.0): pg-pool@3.14.0(pg@8.22.0):
dependencies: dependencies:
pg: 8.23.0 pg: 8.22.0
pg-protocol@1.16.0: {} pg-protocol@1.15.0: {}
pg-types@2.2.0: pg-types@2.2.0:
dependencies: dependencies:
@@ -2606,11 +2427,11 @@ snapshots:
postgres-date: 1.0.7 postgres-date: 1.0.7
postgres-interval: 1.2.0 postgres-interval: 1.2.0
pg@8.23.0: pg@8.22.0:
dependencies: dependencies:
pg-connection-string: 2.14.0 pg-connection-string: 2.14.0
pg-pool: 3.14.0(pg@8.23.0) pg-pool: 3.14.0(pg@8.22.0)
pg-protocol: 1.16.0 pg-protocol: 1.15.0
pg-types: 2.2.0 pg-types: 2.2.0
pgpass: 1.0.5 pgpass: 1.0.5
optionalDependencies: optionalDependencies:
@@ -2624,25 +2445,25 @@ snapshots:
picomatch@4.0.5: {} picomatch@4.0.5: {}
pino-abstract-transport@3.0.0: pino-abstract-transport@2.0.0:
dependencies: dependencies:
split2: 4.2.0 split2: 4.2.0
pino-std-serializers@7.1.0: {} pino-std-serializers@7.1.0: {}
pino@10.3.1: pino@9.14.0:
dependencies: dependencies:
'@pinojs/redact': 0.4.0 '@pinojs/redact': 0.4.0
atomic-sleep: 1.0.0 atomic-sleep: 1.0.0
on-exit-leak-free: 2.1.2 on-exit-leak-free: 2.1.2
pino-abstract-transport: 3.0.0 pino-abstract-transport: 2.0.0
pino-std-serializers: 7.1.0 pino-std-serializers: 7.1.0
process-warning: 5.1.0 process-warning: 5.1.0
quick-format-unescaped: 4.0.4 quick-format-unescaped: 4.0.4
real-require: 0.2.0 real-require: 0.2.0
safe-stable-stringify: 2.5.0 safe-stable-stringify: 2.5.0
sonic-boom: 4.2.1 sonic-boom: 4.2.1
thread-stream: 4.2.0 thread-stream: 3.2.0
postcss@8.5.25: postcss@8.5.25:
dependencies: dependencies:
@@ -2696,10 +2517,12 @@ snapshots:
real-require@0.2.0: {} real-require@0.2.0: {}
real-require@1.0.0: {}
redis-errors@1.2.0: {} redis-errors@1.2.0: {}
redis-parser@3.0.0:
dependencies:
redis-errors: 1.2.0
rolldown@1.2.1: rolldown@1.2.1:
dependencies: dependencies:
'@oxc-project/types': 0.142.0 '@oxc-project/types': 0.142.0
@@ -2814,9 +2637,9 @@ snapshots:
dependencies: dependencies:
bintrees: 1.0.2 bintrees: 1.0.2
thread-stream@4.2.0: thread-stream@3.2.0:
dependencies: dependencies:
real-require: 1.0.0 real-require: 0.2.0
tinybench@2.9.0: {} tinybench@2.9.0: {}
@@ -2849,36 +2672,15 @@ snapshots:
media-typer: 1.1.1 media-typer: 1.1.1
mime-types: 3.0.2 mime-types: 3.0.2
typescript@7.0.2: typescript@5.9.3: {}
optionalDependencies:
'@typescript/typescript-aix-ppc64': 7.0.2
'@typescript/typescript-darwin-arm64': 7.0.2
'@typescript/typescript-darwin-x64': 7.0.2
'@typescript/typescript-freebsd-arm64': 7.0.2
'@typescript/typescript-freebsd-x64': 7.0.2
'@typescript/typescript-linux-arm': 7.0.2
'@typescript/typescript-linux-arm64': 7.0.2
'@typescript/typescript-linux-loong64': 7.0.2
'@typescript/typescript-linux-mips64el': 7.0.2
'@typescript/typescript-linux-ppc64': 7.0.2
'@typescript/typescript-linux-riscv64': 7.0.2
'@typescript/typescript-linux-s390x': 7.0.2
'@typescript/typescript-linux-x64': 7.0.2
'@typescript/typescript-netbsd-arm64': 7.0.2
'@typescript/typescript-netbsd-x64': 7.0.2
'@typescript/typescript-openbsd-arm64': 7.0.2
'@typescript/typescript-openbsd-x64': 7.0.2
'@typescript/typescript-sunos-x64': 7.0.2
'@typescript/typescript-win32-arm64': 7.0.2
'@typescript/typescript-win32-x64': 7.0.2
undici-types@8.3.0: {} undici-types@7.24.6: {}
unpipe@1.0.0: {} unpipe@1.0.0: {}
vary@1.1.2: {} vary@1.1.2: {}
vite@8.2.0(@types/node@26.2.0)(esbuild@0.28.1)(tsx@4.23.1): vite@8.2.0(@types/node@25.9.5)(esbuild@0.28.1)(tsx@4.23.1):
dependencies: dependencies:
lightningcss: 1.33.0 lightningcss: 1.33.0
picomatch: 4.0.5 picomatch: 4.0.5
@@ -2886,20 +2688,20 @@ snapshots:
rolldown: 1.2.1 rolldown: 1.2.1
tinyglobby: 0.2.17 tinyglobby: 0.2.17
optionalDependencies: optionalDependencies:
'@types/node': 26.2.0 '@types/node': 25.9.5
esbuild: 0.28.1 esbuild: 0.28.1
fsevents: 2.3.3 fsevents: 2.3.3
tsx: 4.23.1 tsx: 4.23.1
vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.0(@types/node@26.2.0)(esbuild@0.28.1)(tsx@4.23.1)): vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@25.9.5)(vite@8.2.0(@types/node@25.9.5)(esbuild@0.28.1)(tsx@4.23.1)):
dependencies: dependencies:
'@vitest/expect': 4.1.11 '@vitest/expect': 4.1.10
'@vitest/mocker': 4.1.11(vite@8.2.0(@types/node@26.2.0)(esbuild@0.28.1)(tsx@4.23.1)) '@vitest/mocker': 4.1.10(vite@8.2.0(@types/node@25.9.5)(esbuild@0.28.1)(tsx@4.23.1))
'@vitest/pretty-format': 4.1.11 '@vitest/pretty-format': 4.1.10
'@vitest/runner': 4.1.11 '@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.11 '@vitest/snapshot': 4.1.10
'@vitest/spy': 4.1.11 '@vitest/spy': 4.1.10
'@vitest/utils': 4.1.11 '@vitest/utils': 4.1.10
es-module-lexer: 2.3.1 es-module-lexer: 2.3.1
expect-type: 1.4.0 expect-type: 1.4.0
magic-string: 0.30.21 magic-string: 0.30.21
@@ -2911,11 +2713,11 @@ snapshots:
tinyexec: 1.2.4 tinyexec: 1.2.4
tinyglobby: 0.2.17 tinyglobby: 0.2.17
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
vite: 8.2.0(@types/node@26.2.0)(esbuild@0.28.1)(tsx@4.23.1) vite: 8.2.0(@types/node@25.9.5)(esbuild@0.28.1)(tsx@4.23.1)
why-is-node-running: 2.3.0 why-is-node-running: 2.3.0
optionalDependencies: optionalDependencies:
'@opentelemetry/api': 1.9.1 '@opentelemetry/api': 1.9.1
'@types/node': 26.2.0 '@types/node': 25.9.5
transitivePeerDependencies: transitivePeerDependencies:
- msw - msw
@@ -2926,7 +2728,7 @@ snapshots:
wrappy@1.0.2: {} wrappy@1.0.2: {}
ws@8.21.3: {} ws@8.21.1: {}
xtend@4.0.2: {} xtend@4.0.2: {}
+11 -11
View File
@@ -28,30 +28,30 @@
"discord.js-selfbot-v13": "^3.7.1", "discord.js-selfbot-v13": "^3.7.1",
"dotenv": "^17.4.2", "dotenv": "^17.4.2",
"drizzle-orm": "^0.45.2", "drizzle-orm": "^0.45.2",
"ioredis": "^6.0.0", "ioredis": "^5.11.0",
"libsodium-wrappers": "^0.8.4", "libsodium-wrappers": "^0.8.4",
"lru-cache": "^11.5.1", "lru-cache": "^11.5.1",
"openai": "^7.5.0", "openai": "^6.38.0",
"opusscript": "^0.1.1", "opusscript": "^0.0.8",
"p-limit": "^7.3.0", "p-limit": "^7.3.0",
"p-retry": "^8.0.0", "p-retry": "^8.0.0",
"pg": "^8.23.0", "pg": "^8.21.0",
"pino": "^10.3.1", "pino": "^9.6.0",
"piscina": "^5.3.1", "piscina": "^5.1.4",
"prism-media": "2.0.0-alpha.0", "prism-media": "2.0.0-alpha.0",
"sharp": "^0.35.3", "sharp": "^0.34.5",
"tiktoken": "^1.0.22", "tiktoken": "^1.0.22",
"ws": "^8.21.3", "ws": "^8.20.1",
"zod": "^4.4.3" "zod": "^4.4.3"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "latest", "@biomejs/biome": "latest",
"@types/node": "^26.2.0", "@types/node": "^25.9.0",
"@types/pg": "^8.23.1", "@types/pg": "^8.20.0",
"@types/ws": "^8.18.1", "@types/ws": "^8.18.1",
"drizzle-kit": "^0.31.10", "drizzle-kit": "^0.31.10",
"tsx": "^4.22.2", "tsx": "^4.22.2",
"typescript": "^7.0.2", "typescript": "^5.9.3",
"vitest": "latest" "vitest": "latest"
} }
} }
+319 -544
View File
File diff suppressed because it is too large. Load diff
@@ -83,7 +83,7 @@ export async function callModerationLLM(
jsonResponse: { type: "json_object" }, jsonResponse: { type: "json_object" },
retries: 0, retries: 0,
signal, signal,
// Router (9router/omniroute) always streams SSE even when the // Router (9router / formerly omniroute) always streams SSE even when the
// request omits `stream`. In non-stream mode the OpenAI SDK waits // request omits `stream`. In non-stream mode the OpenAI SDK waits
// for the FULL body before parsing, so slow/long upstream streams // for the FULL body before parsing, so slow/long upstream streams
// hit the 30s/60s timeout and abort mid-generation. Streaming mode // hit the 30s/60s timeout and abort mid-generation. Streaming mode
@@ -149,8 +149,8 @@ export const configSchema = z
AI_LLM_BASE_URL: z AI_LLM_BASE_URL: z
.string() .string()
.url() .url()
.default("https://omniroute.imrnes.team/v1"), .default("https://9router.asepharyana.my.id/v1"),
AI_LLM_MODEL: z.string().default("text"), AI_LLM_MODEL: z.string().default("claude-opus-5"),
// Vision uses the SAME router/base URL as text moderation // Vision uses the SAME router/base URL as text moderation
// (AI_LLM_BASE_URL) but a different model alias. The dedicated NVIDIA // (AI_LLM_BASE_URL) but a different model alias. The dedicated NVIDIA
// multimodal endpoint was removed. // multimodal endpoint was removed.
+11 -11
View File
@@ -12,27 +12,27 @@
"dependencies": { "dependencies": {
"@orpc/client": "1.15.0", "@orpc/client": "1.15.0",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"lucide-react": "^1.33.0", "lucide-react": "^1.27.0",
"motion": "^13.1.1", "motion": "^12.0.0",
"next": "16.3.2", "next": "16.2.12",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"partysocket": "1.3.0", "partysocket": "1.3.0",
"react": "19.2.8", "react": "19.2.4",
"react-dom": "19.2.8", "react-dom": "19.2.4",
"swr": "^2.5.1", "swr": "^2.4.2",
"tailwind-merge": "^3.6.0", "tailwind-merge": "^3.6.0",
"three": "^0.185.1" "three": "^0.180.0"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "2.5.10", "@biomejs/biome": "2.2.0",
"@tailwindcss/postcss": "^4", "@tailwindcss/postcss": "^4",
"@types/node": "^26", "@types/node": "^20",
"@types/react": "^19", "@types/react": "^19",
"@types/react-dom": "^19", "@types/react-dom": "^19",
"@types/three": "^0.180.0", "@types/three": "^0.180.0",
"babel-plugin-react-compiler": "1.0.0", "babel-plugin-react-compiler": "1.0.0",
"puppeteer-core": "^25.8.0", "puppeteer-core": "^25.7.0",
"tailwindcss": "^4", "tailwindcss": "^4",
"typescript": "^7" "typescript": "^5"
} }
} }
+327 -556
View File
File diff suppressed because it is too large. Load diff