35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import vine from '@vinejs/vine'
|
|
|
|
export const chatSchema = vine.compile(
|
|
vine.object({
|
|
model: vine.string().trim().minLength(1),
|
|
messages: vine.array(
|
|
vine.object({
|
|
role: vine.enum(['system', 'user', 'assistant'] as const),
|
|
content: vine.string(),
|
|
})
|
|
),
|
|
stream: vine.boolean().optional(),
|
|
sessionId: vine.number().positive().optional(),
|
|
// Effective per-request thinking preference (per-model override or global default),
|
|
// resolved client-side. Omitted -> server falls back to the ai.autoThinking KV default.
|
|
think: vine.boolean().optional(),
|
|
})
|
|
)
|
|
|
|
export const unloadChatModelsSchema = vine.compile(
|
|
vine.object({
|
|
targetModel: vine.string().trim().minLength(1).nullable().optional(),
|
|
})
|
|
)
|
|
|
|
export const getAvailableModelsSchema = vine.compile(
|
|
vine.object({
|
|
sort: vine.enum(['pulls', 'name'] as const).optional(),
|
|
recommendedOnly: vine.boolean().optional(),
|
|
query: vine.string().trim().optional(),
|
|
limit: vine.number().positive().optional(),
|
|
force: vine.boolean().optional(),
|
|
})
|
|
)
|