Spaces:
Sleeping
Sleeping
Commit ·
65df4d4
1
Parent(s): 2c24731
Replace customPrompts with personas and activePersona in user settings API with validation schema
Browse files
src/lib/server/api/routes/groups/user.ts
CHANGED
|
@@ -7,6 +7,17 @@ import { models, validateModel } from "$lib/server/models";
|
|
| 7 |
import { DEFAULT_SETTINGS, type SettingsEditable } from "$lib/types/Settings";
|
| 8 |
import { z } from "zod";
|
| 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
export const userGroup = new Elysia()
|
| 11 |
.use(authPlugin)
|
| 12 |
.get("/login", () => {
|
|
@@ -63,6 +74,8 @@ export const userGroup = new Elysia()
|
|
| 63 |
welcomeModalSeenAt: settings?.welcomeModalSeenAt ?? null,
|
| 64 |
|
| 65 |
activeModel: settings?.activeModel ?? DEFAULT_SETTINGS.activeModel,
|
|
|
|
|
|
|
| 66 |
disableStream: settings?.disableStream ?? DEFAULT_SETTINGS.disableStream,
|
| 67 |
directPaste: settings?.directPaste ?? DEFAULT_SETTINGS.directPaste,
|
| 68 |
hidePromptExamples: settings?.hidePromptExamples ?? DEFAULT_SETTINGS.hidePromptExamples,
|
|
@@ -70,7 +83,6 @@ export const userGroup = new Elysia()
|
|
| 70 |
settings?.shareConversationsWithModelAuthors ??
|
| 71 |
DEFAULT_SETTINGS.shareConversationsWithModelAuthors,
|
| 72 |
|
| 73 |
-
customPrompts: settings?.customPrompts ?? {},
|
| 74 |
multimodalOverrides: settings?.multimodalOverrides ?? {},
|
| 75 |
};
|
| 76 |
})
|
|
@@ -84,7 +96,8 @@ export const userGroup = new Elysia()
|
|
| 84 |
.default(DEFAULT_SETTINGS.shareConversationsWithModelAuthors),
|
| 85 |
welcomeModalSeen: z.boolean().optional(),
|
| 86 |
activeModel: z.string().default(DEFAULT_SETTINGS.activeModel),
|
| 87 |
-
|
|
|
|
| 88 |
multimodalOverrides: z.record(z.boolean()).default({}),
|
| 89 |
disableStream: z.boolean().default(false),
|
| 90 |
directPaste: z.boolean().default(false),
|
|
|
|
| 7 |
import { DEFAULT_SETTINGS, type SettingsEditable } from "$lib/types/Settings";
|
| 8 |
import { z } from "zod";
|
| 9 |
|
| 10 |
+
const personaSchema = z.object({
|
| 11 |
+
id: z.string().min(1),
|
| 12 |
+
name: z.string().min(1).max(100),
|
| 13 |
+
occupation: z.string().max(200).default(""),
|
| 14 |
+
stance: z.string().max(200).default(""),
|
| 15 |
+
prompt: z.string().max(10000).default(""),
|
| 16 |
+
isDefault: z.boolean(),
|
| 17 |
+
createdAt: z.coerce.date(),
|
| 18 |
+
updatedAt: z.coerce.date(),
|
| 19 |
+
});
|
| 20 |
+
|
| 21 |
export const userGroup = new Elysia()
|
| 22 |
.use(authPlugin)
|
| 23 |
.get("/login", () => {
|
|
|
|
| 74 |
welcomeModalSeenAt: settings?.welcomeModalSeenAt ?? null,
|
| 75 |
|
| 76 |
activeModel: settings?.activeModel ?? DEFAULT_SETTINGS.activeModel,
|
| 77 |
+
activePersona: settings?.activePersona ?? DEFAULT_SETTINGS.activePersona,
|
| 78 |
+
personas: settings?.personas ?? DEFAULT_SETTINGS.personas,
|
| 79 |
disableStream: settings?.disableStream ?? DEFAULT_SETTINGS.disableStream,
|
| 80 |
directPaste: settings?.directPaste ?? DEFAULT_SETTINGS.directPaste,
|
| 81 |
hidePromptExamples: settings?.hidePromptExamples ?? DEFAULT_SETTINGS.hidePromptExamples,
|
|
|
|
| 83 |
settings?.shareConversationsWithModelAuthors ??
|
| 84 |
DEFAULT_SETTINGS.shareConversationsWithModelAuthors,
|
| 85 |
|
|
|
|
| 86 |
multimodalOverrides: settings?.multimodalOverrides ?? {},
|
| 87 |
};
|
| 88 |
})
|
|
|
|
| 96 |
.default(DEFAULT_SETTINGS.shareConversationsWithModelAuthors),
|
| 97 |
welcomeModalSeen: z.boolean().optional(),
|
| 98 |
activeModel: z.string().default(DEFAULT_SETTINGS.activeModel),
|
| 99 |
+
activePersona: z.string().default(DEFAULT_SETTINGS.activePersona),
|
| 100 |
+
personas: z.array(personaSchema).min(1).default(DEFAULT_SETTINGS.personas),
|
| 101 |
multimodalOverrides: z.record(z.boolean()).default({}),
|
| 102 |
disableStream: z.boolean().default(false),
|
| 103 |
directPaste: z.boolean().default(false),
|