Andrew commited on
Commit
8293c27
·
1 Parent(s): a1d1276

feat(server): update message preprocessing to handle tree structure

Browse files
src/lib/server/endpoints/preprocessMessages.ts CHANGED
@@ -9,7 +9,34 @@ export async function preprocessMessages(
9
  ): Promise<EndpointMessage[]> {
10
  return Promise.resolve(messages)
11
  .then((msgs) => downloadFiles(msgs, convId))
12
- .then((msgs) => injectClipboardFiles(msgs));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
14
 
15
  async function downloadFiles(messages: Message[], convId: ObjectId): Promise<EndpointMessage[]> {
 
9
  ): Promise<EndpointMessage[]> {
10
  return Promise.resolve(messages)
11
  .then((msgs) => downloadFiles(msgs, convId))
12
+ .then((msgs) => injectClipboardFiles(msgs))
13
+ .then((msgs) => expandPersonaResponses(msgs));
14
+ }
15
+
16
+ /**
17
+ * Expand messages with personaResponses into the content field
18
+ * For multi-persona messages, concatenate all persona responses
19
+ * This ensures all personas see what others said in previous turns
20
+ */
21
+ function expandPersonaResponses(messages: EndpointMessage[]): EndpointMessage[] {
22
+ return messages.map((message) => {
23
+ // If message has persona responses, format them into content
24
+ if (message.personaResponses && message.personaResponses.length > 0) {
25
+ const personaContents = message.personaResponses
26
+ .map((pr) => {
27
+ // Format: "[PersonaName]: content"
28
+ const name = pr.personaName || pr.personaId;
29
+ return `[${name}]: ${pr.content}`;
30
+ })
31
+ .join("\n\n");
32
+
33
+ return {
34
+ ...message,
35
+ content: personaContents,
36
+ };
37
+ }
38
+ return message;
39
+ });
40
  }
41
 
42
  async function downloadFiles(messages: Message[], convId: ObjectId): Promise<EndpointMessage[]> {