@@ -17,9 +17,14 @@ type ThreadState = {
17
17
deleteAllThreads : ( ) => void
18
18
unstarAllThreads : ( ) => void
19
19
setCurrentThreadId : ( threadId ?: string ) => void
20
- createThread : ( model : ThreadModel , title ?: string ) => Promise < Thread >
20
+ createThread : (
21
+ model : ThreadModel ,
22
+ title ?: string ,
23
+ assistant ?: Assistant
24
+ ) => Promise < Thread >
21
25
updateCurrentThreadModel : ( model : ThreadModel ) => void
22
26
getFilteredThreads : ( searchTerm : string ) => Thread [ ]
27
+ updateCurrentThreadAssistant : ( assistant : Assistant ) => void
23
28
searchIndex : Fuse < Thread > | null
24
29
}
25
30
@@ -152,18 +157,18 @@ export const useThreads = create<ThreadState>()(
152
157
setCurrentThreadId : ( threadId ) => {
153
158
set ( { currentThreadId : threadId } )
154
159
} ,
155
- createThread : async ( model , title ) => {
160
+ createThread : async ( model , title , assistant ) => {
156
161
const newThread : Thread = {
157
162
id : ulid ( ) ,
158
163
title : title ?? 'New Thread' ,
159
164
model,
160
165
order : 1 ,
161
166
updated : Date . now ( ) / 1000 ,
167
+ assistants : assistant ? [ assistant ] : [ ] ,
162
168
}
163
169
set ( ( state ) => ( {
164
170
searchIndex : new Fuse ( Object . values ( state . threads ) , fuseOptions ) ,
165
171
} ) )
166
- console . log ( 'newThread' , newThread )
167
172
return await createThread ( newThread ) . then ( ( createdThread ) => {
168
173
set ( ( state ) => ( {
169
174
threads : {
@@ -175,6 +180,26 @@ export const useThreads = create<ThreadState>()(
175
180
return createdThread
176
181
} )
177
182
} ,
183
+ updateCurrentThreadAssistant : ( assistant ) => {
184
+ set ( ( state ) => {
185
+ if ( ! state . currentThreadId ) return { ...state }
186
+ const currentThread = state . getCurrentThread ( )
187
+ if ( currentThread )
188
+ updateThread ( {
189
+ ...currentThread ,
190
+ assistants : [ { ...assistant , model : currentThread . model } ] ,
191
+ } )
192
+ return {
193
+ threads : {
194
+ ...state . threads ,
195
+ [ state . currentThreadId as string ] : {
196
+ ...state . threads [ state . currentThreadId as string ] ,
197
+ assistants : [ assistant ] ,
198
+ } ,
199
+ } ,
200
+ }
201
+ } )
202
+ } ,
178
203
updateCurrentThreadModel : ( model ) => {
179
204
set ( ( state ) => {
180
205
if ( ! state . currentThreadId ) return { ...state }
0 commit comments