11import { AssistantFunctionHandler , OpenAI , OpenAIAssistant , OpenAINewAssistant } from '../../../types/openAI' ;
2- import { OpenAIAssistantUtils , UploadedFile } from '.. /utils/openAIAssistantUtils' ;
2+ import { OpenAIAssistantUtils , UploadedFile } from './utils/openAIAssistantUtils' ;
33import { MessageStream } from '../../../views/chat/messages/stream/messageStream' ;
44import { FileMessageUtils } from '../../../views/chat/messages/fileMessageUtils' ;
55import { OpenAIConverseBodyInternal } from '../../../types/openAIInternal' ;
@@ -37,16 +37,15 @@ type FileAttachments = {
3737 tools : { type : OpenAIAssistant [ 'files_tool_type' ] } [ ] ;
3838} [ ] ;
3939
40- type URLSegments = {
41- prefix : string ;
42- posfix : string ;
40+ export type URLSegments = {
41+ threadsPrefix : string ;
42+ threadsPosfix : string ;
4343 newAssistantUrl : string ;
44- createMessageUrlPostfix : string ;
45- listMessagesUrlPostfix : string ;
46- storeFilesUrl : string ;
47- getFilesUrl : string ;
48- getFilesPrefixUrl : string ;
49- getFilesPostfixUrl : string ;
44+ createMessagePostfix : string ;
45+ listMessagesPostfix : string ;
46+ storeFiles : string ;
47+ getFilesPrefix : string ;
48+ getFilesPostfix : string ;
5049} ;
5150
5251export class OpenAIAssistantIOI extends DirectServiceIO {
@@ -179,12 +178,12 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
179178 this . messages = messages ;
180179 if ( this . sessionId ) {
181180 // https://platform.openai.com/docs/api-reference/messages/createMessage
182- this . url = `${ this . urlSegments . prefix } /${ this . sessionId } /messages${ this . urlSegments . createMessageUrlPostfix } ` ;
181+ this . url = `${ this . urlSegments . threadsPrefix } /${ this . sessionId } /messages${ this . urlSegments . createMessagePostfix } ` ;
183182 const body = this . processMessage ( pMessages , uploadedFiles ) ;
184183 HTTPRequest . request ( this , body , messages ) ;
185184 } else {
186185 // https://platform.openai.com/docs/api-reference/runs/createThreadAndRun
187- this . url = `${ this . urlSegments . prefix } /runs${ this . urlSegments . prefix } ` ;
186+ this . url = `${ this . urlSegments . threadsPrefix } /runs${ this . urlSegments . threadsPosfix } ` ;
188187 const body = this . createNewThreadMessages ( this . rawBody , pMessages , uploadedFiles ) ;
189188 if ( this . isSSEStream ) {
190189 this . createStreamRun ( body ) ;
@@ -200,7 +199,9 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
200199 this . rawBody . assistant_id ??= this . config . assistant_id || ( await this . createNewAssistant ( ) ) ;
201200 // here instead of constructor as messages may be loaded later
202201 if ( ! this . searchedForThreadId ) this . searchPreviousMessagesForThreadId ( messages . messages ) ;
203- const uploadedFiles = files ? await OpenAIAssistantUtils . storeFiles ( this , messages , files ) : undefined ;
202+ const uploadedFiles = files
203+ ? await OpenAIAssistantUtils . storeFiles ( this , messages , files , this . urlSegments . storeFiles )
204+ : undefined ;
204205 this . connectSettings . method = 'POST' ;
205206 this . callService ( messages , pMessages , uploadedFiles ) ;
206207 }
@@ -238,7 +239,7 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
238239 }
239240 await this . assignThreadAndRun ( result ) ;
240241 // https://platform.openai.com/docs/api-reference/runs/getRun
241- const url = `${ this . urlSegments . prefix } /${ this . sessionId } /runs/${ this . run_id } ${ this . urlSegments . posfix } ` ;
242+ const url = `${ this . urlSegments . threadsPrefix } /${ this . sessionId } /runs/${ this . run_id } ${ this . urlSegments . threadsPosfix } ` ;
242243 const requestInit = { method : 'GET' , headers : this . connectSettings ?. headers } ;
243244 HTTPRequest . executePollRequest ( this , url , requestInit , this . messages as Messages ) ; // poll for run status
244245 return { makingAnotherRequest : true } ;
@@ -247,7 +248,7 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
247248 private async assignThreadAndRun ( result : OpenAIAssistantInitReqResult ) {
248249 if ( this . sessionId ) {
249250 // https://platform.openai.com/docs/api-reference/runs/createRun
250- this . url = `${ this . urlSegments . prefix } /${ this . sessionId } /runs${ this . urlSegments . posfix } ` ;
251+ this . url = `${ this . urlSegments . threadsPrefix } /${ this . sessionId } /runs${ this . urlSegments . threadsPosfix } ` ;
251252 const runObj = await OpenAIUtils . directFetch ( this , JSON . parse ( JSON . stringify ( this . rawBody ) ) , 'POST' ) ;
252253 this . run_id = runObj . id ;
253254 } else {
@@ -263,12 +264,12 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
263264
264265 private async getThreadMessages ( thread_id : string , isHistory = false ) {
265266 // https://platform.openai.com/docs/api-reference/messages/listMessages
266- this . url = `${ this . urlSegments . prefix } /${ thread_id } /messages?${ this . urlSegments . listMessagesUrlPostfix } ` ;
267+ this . url = `${ this . urlSegments . threadsPrefix } /${ thread_id } /messages?${ this . urlSegments . listMessagesPostfix } ` ;
267268 let threadMessages = ( await OpenAIUtils . directFetch ( this , { } , 'GET' ) ) as OpenAIAssistantMessagesResult ;
268269 if ( ! isHistory && this . deepChat . responseInterceptor ) {
269270 threadMessages = ( await this . deepChat . responseInterceptor ?.( threadMessages ) ) as OpenAIAssistantMessagesResult ;
270271 }
271- return OpenAIAssistantUtils . processAPIMessages ( this , threadMessages , isHistory ) ;
272+ return OpenAIAssistantUtils . processAPIMessages ( this , threadMessages , isHistory , this . urlSegments ) ;
272273 }
273274
274275 async extractPollResultData ( result : OpenAIRunResult ) : PollResult {
@@ -312,8 +313,8 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
312313 return { tool_call_id : toolCalls [ index ] . id , output : resp } ;
313314 } ) ;
314315 // https://platform.openai.com/docs/api-reference/runs/submitToolOutputs
315- const prefix = `${ this . urlSegments . prefix } /${ this . sessionId } ` ;
316- const postfix = `/runs/${ this . run_id } /submit_tool_outputs${ this . urlSegments . posfix } ` ;
316+ const prefix = `${ this . urlSegments . threadsPrefix } /${ this . sessionId } ` ;
317+ const postfix = `/runs/${ this . run_id } /submit_tool_outputs${ this . urlSegments . threadsPosfix } ` ;
317318 this . url = `${ prefix } ${ postfix } ` ;
318319 if ( this . isSSEStream ) {
319320 await this . createStreamRun ( { tool_outputs} ) ;
@@ -334,7 +335,7 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
334335 }
335336 if ( this . isSSEStream && this . sessionId ) {
336337 // https://platform.openai.com/docs/api-reference/runs/createRun
337- this . url = `${ this . urlSegments . prefix } /${ this . sessionId } /runs${ this . urlSegments . posfix } ` ;
338+ this . url = `${ this . urlSegments . threadsPrefix } /${ this . sessionId } /runs${ this . urlSegments . threadsPosfix } ` ;
338339 const newBody = JSON . parse ( JSON . stringify ( this . rawBody ) ) ;
339340 this . createStreamRun ( newBody ) ;
340341 }
@@ -349,7 +350,7 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
349350 if ( textContent ?. text ?. annotations && textContent . text . annotations . length > 0 ) {
350351 const textFileFirst = result . content . find ( ( content ) => ! ! content . text ) || result . content [ 0 ] ;
351352 const downloadCb = OpenAIAssistantUtils . getFilesAndText . bind ( this ,
352- this , { role : 'assistant' , content : result . content } , textFileFirst ) ;
353+ this , { role : 'assistant' , content : result . content } , this . urlSegments , textFileFirst ) ;
353354 this . messageStream ?. endStreamAfterFileDownloaded ( this . messages , downloadCb ) ;
354355 return { text : '' } ;
355356 }
@@ -359,7 +360,7 @@ export class OpenAIAssistantIOI extends DirectServiceIO {
359360 // if file is included and there is no annotation/link in text, process during the stream
360361 const textContent = result . delta . content . find ( ( content ) => content . text ) ;
361362 if ( textContent ?. text ?. annotations && textContent . text . annotations . length === 0 ) {
362- const messages = await OpenAIAssistantUtils . processStreamMessages ( this , result . delta . content ) ;
363+ const messages = await OpenAIAssistantUtils . processStreamMessages ( this , result . delta . content , this . urlSegments ) ;
363364 return { text : messages [ 0 ] . text , files : messages [ 1 ] . files } ;
364365 }
365366 }
0 commit comments