55 */
66
77import type { ChatMessage } from "./types" ;
8- import type { Memory } from "./memory" ;
9- import type { ThreadMessage } from "@/storage/types" ;
108export {
119 denyPendingApprovals ,
1210 processConversation ,
@@ -25,45 +23,3 @@ export function splitRequestMessages(messages: ChatMessage[]): {
2523 const requestMessage = messages . find ( ( m ) => m . role !== "system" ) ! ;
2624 return { systemMessages, requestMessage } ;
2725}
28-
29- async function loadMemory ( memory : Memory , windowSize : number ) {
30- const threadMessages = await memory . loadHistory ( windowSize ) ;
31- return threadMessages ;
32- }
33-
34- function mergeMessages (
35- threadMessages : ThreadMessage [ ] ,
36- requestMessage ?: ChatMessage ,
37- ) : ChatMessage [ ] {
38- // Filter out messages with empty parts to prevent bricked threads
39- // (e.g. assistant messages saved after an LLM error before any content was generated)
40- const validMessages = threadMessages . filter (
41- ( m ) => m . parts && m . parts . length > 0 ,
42- ) ;
43- if ( ! requestMessage ) {
44- return validMessages as ChatMessage [ ] ;
45- }
46- const matchIndex = validMessages . findIndex ( ( m ) => m . id === requestMessage . id ) ;
47- const conversation =
48- matchIndex >= 0
49- ? [ ...validMessages . slice ( 0 , matchIndex ) , requestMessage ]
50- : [ ...validMessages , requestMessage ] ;
51- return conversation ;
52- }
53-
54- export async function loadAndMergeMessages (
55- memory : Memory ,
56- requestMessage : ChatMessage | undefined ,
57- systemMessages : ChatMessage [ ] ,
58- windowSize : number ,
59- /** Subagent runs start FRESH: skip the thread's history and send only the
60- * system prompt + the request (the subtask prompt). */
61- skipHistory = false ,
62- ) : Promise < ChatMessage [ ] > {
63- const threadMessages = skipHistory
64- ? [ ]
65- : await loadMemory ( memory , windowSize ) ;
66- const conversation = mergeMessages ( threadMessages , requestMessage ) ;
67- const allMessages : ChatMessage [ ] = [ ...systemMessages , ...conversation ] ;
68- return allMessages ;
69- }
0 commit comments