11import { stream } from "fetch-event-stream" ;
22import type { NebulaTxData , NebulaUserMessage } from "./types" ;
33
4- // Mock URL for playground - you'll need to configure this
5- const NEBULA_URL = process . env . NEXT_PUBLIC_NEBULA_URL || "https://nebula-api.thirdweb-dev.com" ;
4+ const API_URL = `https://${ process . env . NEXT_PUBLIC_API_URL || "api.thirdweb.com" } ` ;
65
76export type NebulaContext = {
87 chainIds : string [ ] | null ;
98 walletAddress : string | null ;
10- networks : "mainnet" | "testnet" | "all" | null ;
9+ sessionId : string | null ;
1110} ;
1211
1312export type NebulaSwapData = {
@@ -44,30 +43,31 @@ export type NebulaSwapData = {
4443
4544export async function promptNebula ( params : {
4645 message : NebulaUserMessage ;
47- sessionId : string ;
4846 authToken : string ;
4947 handleStream : ( res : ChatStreamedResponse ) => void ;
5048 abortController : AbortController ;
5149 context : undefined | NebulaContext ;
5250} ) {
5351 const body : Record < string , string | boolean | object > = {
5452 messages : [ params . message ] ,
55- session_id : params . sessionId ,
5653 stream : true ,
5754 } ;
5855
5956 if ( params . context ) {
6057 body . context = {
61- chain_ids : params . context . chainIds || [ ] ,
62- networks : params . context . networks ,
58+ chain_ids : params . context . chainIds ?. map ( Number ) || [ ] ,
59+ session_id : params . context . sessionId ?? undefined ,
6360 wallet_address : params . context . walletAddress ,
6461 } ;
6562 }
6663
67- const events = await stream ( `${ NEBULA_URL } /chat` , {
64+ const events = await stream ( `${ API_URL } /ai /chat` , {
6865 body : JSON . stringify ( body ) ,
6966 headers : {
70- Authorization : `Bearer ${ params . authToken } ` ,
67+ "x-client-id" : process . env . NEXT_PUBLIC_THIRDWEB_CLIENT_ID ! ,
68+ // FIXME REMOVE
69+ "x-secret-key" :
70+ "7NFrTzBN9Y2Eca6Rl60uxT3Dwew4D9YaYHjoD_3Y2GDvkaejLFiodFDcuzGJqu0mc8PVCAi9M4Y3j6Ql_ZVRyQ" ,
7171 "Content-Type" : "application/json" ,
7272 } ,
7373 method : "POST" ,
@@ -192,7 +192,7 @@ export async function promptNebula(params: {
192192 const contextData = JSON . parse ( data . data ) as {
193193 wallet_address : string ;
194194 chain_ids : number [ ] ;
195- networks : NebulaContext [ "networks" ] ;
195+ session_id : string ;
196196 } ;
197197
198198 params . handleStream ( {
@@ -262,7 +262,7 @@ type ChatStreamedResponse =
262262 data : {
263263 wallet_address : string ;
264264 chain_ids : number [ ] ;
265- networks : NebulaContext [ "networks" ] ;
265+ session_id : string ;
266266 } ;
267267 }
268268 | {
@@ -306,4 +306,4 @@ type ChatStreamedEvent =
306306 | {
307307 event : "ping" ;
308308 data : string ;
309- } ;
309+ } ;
0 commit comments