@@ -195,7 +195,34 @@ function linkNodeSDKToBindings(nodeSDK: string, nodeBindings: string): boolean {
195195 fs . symlinkSync ( relativeBindingsPath , symlinkTarget ) ;
196196 console . log ( `✅ node-sdk-${ nodeSDK } → node-bindings-${ nodeBindings } ` ) ;
197197 return true ;
198- } catch ( error ) {
198+ } catch ( error : any ) {
199+ // Handle EEXIST error specifically - the target might still exist
200+ if ( error ?. code === "EEXIST" ) {
201+ // Try one more time to remove it
202+ try {
203+ if ( fs . existsSync ( symlinkTarget ) ) {
204+ const stats = fs . lstatSync ( symlinkTarget ) ;
205+ if ( stats . isSymbolicLink ( ) ) {
206+ fs . unlinkSync ( symlinkTarget ) ;
207+ } else {
208+ fs . rmSync ( symlinkTarget , { recursive : true , force : true } ) ;
209+ }
210+ }
211+ // Retry creating the symlink
212+ const relativeBindingsPath = path . relative (
213+ sdkNodeModulesXmtpDir ,
214+ bindingsDir ,
215+ ) ;
216+ fs . symlinkSync ( relativeBindingsPath , symlinkTarget ) ;
217+ console . log ( `✅ node-sdk-${ nodeSDK } → node-bindings-${ nodeBindings } ` ) ;
218+ return true ;
219+ } catch ( retryError ) {
220+ console . error (
221+ `❌ Error linking node-sdk-${ nodeSDK } to node-bindings-${ nodeBindings } after retry: ${ String ( retryError ) } ` ,
222+ ) ;
223+ return false ;
224+ }
225+ }
199226 console . error (
200227 `❌ Error linking node-sdk-${ nodeSDK } to node-bindings-${ nodeBindings } : ${ String ( error ) } ` ,
201228 ) ;
@@ -301,7 +328,34 @@ function linkAgentSDKToNodeSDK(agentSDK: string, nodeSDK: string): boolean {
301328 fs . symlinkSync ( relativeNodeSDKPath , symlinkTarget ) ;
302329 console . log ( `✅ agent-sdk-${ agentSDK } → node-sdk-${ nodeSDK } ` ) ;
303330 return true ;
304- } catch ( error ) {
331+ } catch ( error : any ) {
332+ // Handle EEXIST error specifically - the target might still exist
333+ if ( error ?. code === "EEXIST" ) {
334+ // Try one more time to remove it
335+ try {
336+ if ( fs . existsSync ( symlinkTarget ) ) {
337+ const stats = fs . lstatSync ( symlinkTarget ) ;
338+ if ( stats . isSymbolicLink ( ) ) {
339+ fs . unlinkSync ( symlinkTarget ) ;
340+ } else {
341+ fs . rmSync ( symlinkTarget , { recursive : true , force : true } ) ;
342+ }
343+ }
344+ // Retry creating the symlink
345+ const relativeNodeSDKPath = path . relative (
346+ agentSDKNodeModulesXmtpDir ,
347+ nodeSDKDir ,
348+ ) ;
349+ fs . symlinkSync ( relativeNodeSDKPath , symlinkTarget ) ;
350+ console . log ( `✅ agent-sdk-${ agentSDK } → node-sdk-${ nodeSDK } ` ) ;
351+ return true ;
352+ } catch ( retryError ) {
353+ console . error (
354+ `❌ Error linking agent-sdk-${ agentSDK } to node-sdk-${ nodeSDK } after retry: ${ String ( retryError ) } ` ,
355+ ) ;
356+ return false ;
357+ }
358+ }
305359 console . error (
306360 `❌ Error linking agent-sdk-${ agentSDK } to node-sdk-${ nodeSDK } : ${ String ( error ) } ` ,
307361 ) ;
0 commit comments