extonlawrence commited on
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
- customPrompts: z.record(z.string()).default({}),
 
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),