@@ -14,14 +14,14 @@ import { UserInput } from '../schema/OpeySchema'
1414
1515export class OpeyController {
1616 constructor (
17- private obpClientService : OBPClientService ,
18- private opeyClientService : OpeyClientService ,
17+ public obpClientService : OBPClientService ,
18+ public opeyClientService : OpeyClientService ,
1919 ) { }
2020
2121 @Get ( '/' )
2222 async getStatus (
2323 @Res ( ) response : Response
24- ) : Response {
24+ ) : Promise < Response | any > {
2525
2626 try {
2727 const opeyStatus = await this . opeyClientService . getOpeyStatus ( )
@@ -67,33 +67,57 @@ export class OpeyController {
6767 callback ( ) ;
6868 }
6969 } )
70+
71+ let nodeStream : NodeJS . ReadableStream | null = null
7072
7173 try {
72- const nodeStream = await this . opeyClientService . stream ( user_input )
73- console . log ( `Stream received from OpeyClientService.stream: ${ nodeStream . readable } ` )
74- nodeStream . pipe ( streamMiddlewareTransform ) . pipe ( response )
74+ // Read stream from OpeyClientService
75+ nodeStream = await this . opeyClientService . stream ( user_input )
76+ console . debug ( `Stream received readable: ${ nodeStream . readable } ` )
77+
78+ } catch ( error ) {
79+ console . error ( "Error reading stream: " , error )
80+ response . status ( 500 ) . json ( { error : 'Internal Server Error' } )
81+ return
82+ }
83+
84+ if ( ! nodeStream || ! nodeStream . readable ) {
85+ console . error ( "Stream is not readable" )
86+ response . status ( 500 ) . json ( { error : 'Internal Server Error' } )
87+ return
88+ }
89+
90+ try {
91+ // response.writeHead(200, {
92+ // 'Content-Type': "text/event-stream",
93+ // 'Cache-Control': "no-cache",
94+ // 'Connection': "keep-alive"
95+ // });
7596
76- response . status ( 200 )
7797 response . setHeader ( 'Content-Type' , 'text/event-stream' )
7898 response . setHeader ( 'Cache-Control' , 'no-cache' )
7999 response . setHeader ( 'Connection' , 'keep-alive' )
80100
81- // nodeStream.on('data', (chunk) => {
82- // const data = chunk.toString()
83- // console.log(`data: ${data}`)
84- // response.write(`data: ${data}\n\n`)
85- // })
86- // nodeStream.on('end', () => {
87- // console.log('Stream ended')
88- // response.end()
89- // })
90- // nodeStream.on('error', (error) => {
91- // console.error(error)
92- // response.write(`data: Error reading stream\n\n`)
93- // response.end()
94- // })
101+ let data : any [ ] = [ ]
102+
103+ nodeStream . on ( 'data' , ( chunk ) => {
104+ const bufferChunk = Buffer . isBuffer ( chunk ) ? chunk : Buffer . from ( chunk ) ;
105+ data . push ( bufferChunk ) ;
106+ response . write ( `data: ${ chunk . toString ( ) } \n\n` )
107+ } )
108+ nodeStream . on ( 'end' , ( ) => {
109+ //console.log('Stream ended')
110+ const totalData = Buffer . concat ( data )
111+ response . write ( totalData )
112+ response . end ( )
113+ } )
114+ nodeStream . on ( 'error' , ( error ) => {
115+ console . error ( error )
116+ response . write ( `data: Error reading stream\n\n` )
117+ response . end ( )
118+ } )
95119 } catch ( error ) {
96- console . error ( error )
120+ console . error ( "Error writing data: " , error )
97121 response . status ( 500 ) . json ( { error : 'Internal Server Error' } )
98122 }
99123 }
@@ -103,7 +127,7 @@ export class OpeyController {
103127 @Session ( ) session : any ,
104128 @Req ( ) request : Request ,
105129 @Res ( ) response : Response
106- ) : Response {
130+ ) : Promise < Response | any > {
107131
108132 let user_input : UserInput
109133 try {
@@ -113,14 +137,14 @@ export class OpeyController {
113137 "is_tool_call_approval" : request . body . is_tool_call_approval
114138 }
115139 } catch ( error ) {
116- console . error ( "Error in stream endpoint, could not parse into UserInput: " , error )
140+ console . error ( "Error in invoke endpoint, could not parse into UserInput: " , error )
117141 return response . status ( 500 ) . json ( { error : 'Internal Server Error' } )
118142 }
119143
120144 try {
121145 const opey_response = await this . opeyClientService . invoke ( user_input )
122146
123- console . log ( "Opey response: " , opey_response )
147+ // console.log("Opey response: ", opey_response)
124148 return response . status ( 200 ) . json ( opey_response )
125149 } catch ( error ) {
126150 console . error ( error )
@@ -136,7 +160,7 @@ export class OpeyController {
136160 @Session ( ) session : any ,
137161 @Req ( ) request : Request ,
138162 @Res ( ) response : Response
139- ) : Response {
163+ ) : Promise < Response | any > {
140164 try {
141165 console . log ( "Getting consent from OBP" )
142166 // Check if consent is already in session
@@ -190,7 +214,7 @@ export class OpeyController {
190214 @Session ( ) session : any ,
191215 @Req ( ) request : Request ,
192216 @Res ( ) response : Response
193- ) : Response {
217+ ) : Promise < Response | any > {
194218 try {
195219 const oauthConfig = session [ 'clientConfig' ]
196220 const version = this . obpClientService . getOBPVersion ( )
0 commit comments