@@ -13,6 +13,17 @@ const isGeminiModel = (modelID: string): boolean => {
1313 return lowerModelID . includes ( "gemini" )
1414}
1515
16+ export const isDeepSeekOrKimi = ( providerID : string , modelID : string ) : boolean => {
17+ const lowerProviderID = providerID . toLowerCase ( )
18+ const lowerModelID = modelID . toLowerCase ( )
19+ return (
20+ lowerProviderID . includes ( "deepseek" ) ||
21+ lowerProviderID . includes ( "kimi" ) ||
22+ lowerModelID . includes ( "deepseek" ) ||
23+ lowerModelID . includes ( "kimi" )
24+ )
25+ }
26+
1627export const createSyntheticUserMessage = (
1728 baseMessage : WithParts ,
1829 content : string ,
@@ -45,6 +56,47 @@ export const createSyntheticUserMessage = (
4556 }
4657}
4758
59+ export const createSyntheticAssistantMessage = (
60+ baseMessage : WithParts ,
61+ content : string ,
62+ variant ?: string ,
63+ ) : WithParts => {
64+ const userInfo = baseMessage . info as UserMessage
65+ const now = Date . now ( )
66+ const messageId = generateUniqueId ( "msg" )
67+ const partId = generateUniqueId ( "prt" )
68+
69+ return {
70+ info : {
71+ id : messageId ,
72+ sessionID : userInfo . sessionID ,
73+ role : "assistant" as const ,
74+ agent : userInfo . agent || "code" ,
75+ parentID : userInfo . id ,
76+ modelID : userInfo . model . modelID ,
77+ providerID : userInfo . model . providerID ,
78+ mode : "default" ,
79+ path : {
80+ cwd : "/" ,
81+ root : "/" ,
82+ } ,
83+ time : { created : now , completed : now } ,
84+ cost : 0 ,
85+ tokens : { input : 0 , output : 0 , reasoning : 0 , cache : { read : 0 , write : 0 } } ,
86+ ...( variant !== undefined && { variant } ) ,
87+ } ,
88+ parts : [
89+ {
90+ id : partId ,
91+ sessionID : userInfo . sessionID ,
92+ messageID : messageId ,
93+ type : "text" as const ,
94+ text : content ,
95+ } ,
96+ ] ,
97+ }
98+ }
99+
48100export const createSyntheticTextPart = ( baseMessage : WithParts , content : string ) => {
49101 const userInfo = baseMessage . info as UserMessage
50102 const partId = generateUniqueId ( "prt" )
0 commit comments