66 * As of the Change Date specified in that file, in accordance with the Business Source License, use of this software will be governed by the Apache License, version 2.0.
77 */
88
9- import type { MessageEvent } from './gql/client/graphql'
109import process from 'node:process'
10+ import { createGraphQLClient , GraphQL } from '@badaitech/badai-api'
1111import { print } from 'graphql'
12- import {
13- createClient ,
14-
15- } from 'graphql-ws'
12+ import { createClient } from 'graphql-ws'
1613import { generatePrivateKey , privateKeyToAccount } from 'viem/accounts'
17- import { createGraphQLClient } from './gql/client'
18- import { Event } from './gql/client/graphql'
19- // import { SubscribeMessagesDocument } from './gql/client/graphql'
20- import { GraphQL } from './index'
2114
22- const restApiUrl = process . env . REST_API_URL ?? 'http://localhost:9151/graphql'
15+ const restApiUrl = process . env . REST_API_URL ?? 'http://localhost:9151/graphql' // ?? 'http://localhost:9151/graphql'
2316const wsApiUrl = process . env . WS_API_URL ?? 'ws://localhost:9151/graphql'
17+ const agentId = process . env . AGENT_ID ?? ''
2418
2519let activeSocket : WebSocket | null = null
2620let pingTimeout : ReturnType < typeof setTimeout > | null = null
@@ -176,6 +170,7 @@ async function main() {
176170 GraphQL . CreateChatRoomDocument ,
177171 {
178172 session,
173+ agents : [ agentId ] ,
179174 } ,
180175 )
181176
@@ -187,6 +182,8 @@ async function main() {
187182 resolveMessageFinished = resolve
188183 } )
189184
185+ let agentResponse = ''
186+
190187 const cancel = wsClient . subscribe (
191188 {
192189 query : print ( GraphQL . SubscribeMessagesDocument ) ,
@@ -197,16 +194,51 @@ async function main() {
197194 } ,
198195 } ,
199196 {
200- next : ( { data } ) => {
201- console . log ( 'Subscription data:' , JSON . stringify ( data , null , 2 ) )
197+ next : async ( { data } ) => {
198+ // console.log('Subscription data:', JSON.stringify(data, null, 2))
202199 if ( ! data ?. subscribeMessages )
203200 return
204201
205- const event = data . subscribeMessages as MessageEvent
202+ const event = data . subscribeMessages as GraphQL . MessageEvent
206203
207204 switch ( event . event ) {
208- case Event . MessageFinished :
209- resolveMessageFinished ( )
205+ case GraphQL . Event . Subscribed : {
206+ // send message to the chat room from the user we just created
207+ console . log ( 'Subscription confirmed, sending message...' )
208+ const { sendMessage } = await restClient . request (
209+ GraphQL . SendMessageDocument ,
210+ {
211+ session,
212+ chat_id : createChatRoom . id ,
213+ message : {
214+ is_system : false ,
215+ finished : true ,
216+ need_answer : true ,
217+ text : 'Find in the web the current weather in Paris.' ,
218+ } ,
219+ } ,
220+ )
221+
222+ console . log ( 'Sent Message:' , sendMessage )
223+ }
224+ break
225+
226+ case GraphQL . Event . MessageCreated :
227+ console . log ( `Message Created by @${ event . message ?. participant ?. username } : ${ event . message ?. text || '<no text>' } with version ${ event . message ?. version } ` )
228+ break
229+
230+ case GraphQL . Event . MessageDeltaAdd :
231+ if ( event . message ?. participant ?. is_agent ) {
232+ console . log ( `Message Delta Add by @${ event . message ?. participant ?. username } [${ event . message ?. version } ]: ${ event . message ?. text } ` )
233+ }
234+ break
235+
236+ case GraphQL . Event . MessageFinished :
237+ if ( event . message ?. participant ?. is_agent ) {
238+ agentResponse = event . message . text
239+ resolveMessageFinished ( )
240+ }
241+
210242 break
211243 }
212244 } ,
@@ -221,28 +253,14 @@ async function main() {
221253 } ,
222254 )
223255
224- // send message to the chat room
225- const { sendMessage } = await restClient . request (
226- GraphQL . SendMessageDocument ,
227- {
228- session,
229- chat_id : createChatRoom . id ,
230- message : {
231- is_system : false ,
232- finished : true ,
233- need_answer : true ,
234- text : 'Hello, world!' ,
235- } ,
236- } ,
237- )
238-
239- console . log ( 'Sent Message:' , sendMessage )
240-
241256 // Wait for MessageFinished event
242257 console . log ( 'Waiting for MessageFinished event...' )
243258 await onMessageFinishedPromise
244259 console . log ( 'MessageFinished event received, shutting down gracefully...' )
245260
261+ console . log ( '\n\n--- Summary ---' )
262+ console . log ( 'Agent response:' , agentResponse )
263+
246264 // Clean up
247265 cancel ( )
248266 wsClient . dispose ( )
0 commit comments