@@ -415,22 +415,29 @@ function formatPrBody({ version, packageEntries, serverEntries, rawBody, release
415415 */
416416async function getReleaseContext ( ) {
417417 const sourceBranch = process . env . SOURCE_BRANCH ;
418- if ( ! sourceBranch ) return null ;
418+ if ( ! sourceBranch ) return null ;
419419
420- // Look up current npm `latest` for the canonical package
420+ // Look up current npm `latest` for the canonical package
421421 let currentLatest = "0.0.0" ;
422- const out = await new Promise ( ( resolve , reject ) => {
423- execFile (
424- "npm" ,
425- [ "view" , "@trigger.dev/sdk" , "dist-tags.latest" ] ,
426- { maxBuffer : 1024 * 1024 } ,
427- ( err , stdout ) => ( err ? reject ( err ) : resolve ( stdout . trim ( ) ) )
428- ) ;
429- } ) ;
430- if ( out && out !== "undefined" ) currentLatest = out ;
422+ try {
423+ const out = await new Promise ( ( resolve ) => {
424+ execFile (
425+ "npm" ,
426+ [ "view" , "@trigger.dev/sdk" , "dist-tags.latest" ] ,
427+ { maxBuffer : 1024 * 1024 } ,
428+ ( err , stdout ) => resolve ( err ? "" : stdout . trim ( ) )
429+ ) ;
430+ } ) ;
431+ if ( out && out !== "undefined" ) currentLatest = out ;
432+ } catch {
433+ // fall through with default
434+ }
431435
432436 // Use semver-aware comparison - matches release.yml's sort -V exactly
433- const willBeLatest = version !== currentLatest && version > currentLatest ;
437+ // Split versions into parts and compare numerically
438+ const cmp = ( a , b ) =>
439+ a . split ( "." ) . map ( Number ) . reduce ( ( acc , n , i ) => acc || n - ( b . split ( "." ) . map ( Number ) [ i ] ?? 0 ) , 0 ) ;
440+ const willBeLatest = cmp ( version , currentLatest ) > 0 ;
434441
435442 const m = sourceBranch . match ( / ^ r e l e a s e \/ ( \d + \. \d + ) \. x $ / ) ;
436443 const lineMatch = m ? m [ 1 ] : null ;
0 commit comments