|
1 | 1 | import { db, generateId } from '../index'; |
2 | 2 | import { userEnabledModels, type UserEnabledModel } from '../schema'; |
3 | | -import { eq, and, inArray, not } from 'drizzle-orm'; |
| 3 | +import { eq, and, inArray, not, or } from 'drizzle-orm'; |
4 | 4 | import { Provider } from '$lib/types'; |
5 | 5 | import { getNanoGPTModels } from '$lib/backend/models/nano-gpt'; |
6 | 6 |
|
7 | 7 | const defaultNanoGptModels = [ |
8 | | - 'zai-org/glm-4.7', |
9 | | - 'zai-org/glm-4.6v', |
10 | | - 'minimax/minimax-m2.1', |
11 | | - 'moonshotai/kimi-k2-thinking', |
| 8 | + 'zai-org/glm-5', |
| 9 | + 'zai-org/glm-5:thinking', |
| 10 | + 'minimax/minimax-m2.7', |
| 11 | + 'moonshotai/kimi-k2.5', |
| 12 | + 'moonshotai/kimi-k2.5:thinking', |
| 13 | + 'deepseek/deepseek-v3.2-speciale', |
| 14 | + 'deepseek/deepseek-v3.2:thinking', |
12 | 15 | 'deepseek/deepseek-v3.2', |
| 16 | + 'qwen/qwen3.5-397b-a17b', |
| 17 | + 'qwen/qwen3.5-397b-a17b-thinking', |
| 18 | + 'google/gemma-4-31b-it', |
| 19 | + 'google/gemma-4-31b-it:thinking', |
| 20 | + 'google/gemma-4-26b-a4b-it', |
| 21 | + 'google/gemma-4-26b-a4b-it:thinking', |
| 22 | + 'nvidia/nemotron-3-super-120b-a12b', |
| 23 | + 'nvidia/nemotron-3-super-120b-a12b:thinking', |
| 24 | + 'openai/gpt-oss-120b', |
| 25 | + 'openai/gpt-oss-20b', |
13 | 26 | ]; |
14 | 27 |
|
15 | 28 | const nanoGptAllDisabledSentinel = { |
@@ -210,44 +223,36 @@ export async function enableInitialModels(userId: string): Promise<void> { |
210 | 223 |
|
211 | 224 | if (existingModels.length > 0) return; |
212 | 225 |
|
213 | | - const now = new Date(); |
214 | | - await db.insert(userEnabledModels).values( |
215 | | - defaultNanoGptModels.map((modelId) => ({ |
216 | | - id: generateId(), |
217 | | - userId, |
218 | | - provider: 'nanogpt', |
219 | | - modelId, |
220 | | - pinned: true, |
221 | | - createdAt: now, |
222 | | - updatedAt: now, |
223 | | - })) |
224 | | - ); |
| 226 | + await resetDefaultNanoGptModels(userId); |
225 | 227 | } |
226 | 228 |
|
227 | | -export async function enableDefaultModelsOnKeyAdd(userId: string): Promise<void> { |
| 229 | +export async function resetDefaultNanoGptModels(userId: string): Promise<void> { |
228 | 230 | const now = new Date(); |
229 | | - // Clean up anything else when adding a key |
230 | 231 | await db |
231 | 232 | .delete(userEnabledModels) |
232 | 233 | .where( |
233 | 234 | and( |
234 | 235 | eq(userEnabledModels.userId, userId), |
235 | | - not(inArray(userEnabledModels.modelId, defaultNanoGptModels)) |
| 236 | + or( |
| 237 | + eq(userEnabledModels.provider, Provider.NanoGPT), |
| 238 | + eq(userEnabledModels.provider, nanoGptAllDisabledSentinel.provider) |
| 239 | + ) |
236 | 240 | ) |
237 | 241 | ); |
238 | 242 |
|
239 | | - for (const modelId of defaultNanoGptModels) { |
240 | | - const existing = await getEnabledModel(userId, 'nanogpt', modelId); |
241 | | - if (existing) continue; |
242 | | - |
243 | | - await db.insert(userEnabledModels).values({ |
| 243 | + await db.insert(userEnabledModels).values( |
| 244 | + defaultNanoGptModels.map((modelId) => ({ |
244 | 245 | id: generateId(), |
245 | 246 | userId, |
246 | | - provider: 'nanogpt', |
| 247 | + provider: Provider.NanoGPT, |
247 | 248 | modelId, |
248 | 249 | pinned: true, |
249 | 250 | createdAt: now, |
250 | 251 | updatedAt: now, |
251 | | - }); |
252 | | - } |
| 252 | + })) |
| 253 | + ); |
| 254 | +} |
| 255 | + |
| 256 | +export async function enableDefaultModelsOnKeyAdd(userId: string): Promise<void> { |
| 257 | + await resetDefaultNanoGptModels(userId); |
253 | 258 | } |
0 commit comments