@@ -99,6 +99,7 @@ interface CdpBrowser {
9999 addedAt : number ;
100100}
101101let cdp_browser_pool : CdpBrowser [ ] = [ ] ;
102+ let cdpLastAssignedPort = 9223 ; // tracks the highest port ever assigned, never decreases
102103let cdpHealthCheckTimer : ReturnType < typeof setInterval > | null = null ;
103104
104105const CDP_POOL_FILE = path . join ( os . homedir ( ) , '.eigent' , 'cdp-browsers.json' ) ;
@@ -121,8 +122,12 @@ function loadCdpPool(): void {
121122 ...b ,
122123 isExternal : true ,
123124 } ) ) ;
125+ cdpLastAssignedPort = cdp_browser_pool . reduce (
126+ ( max , b ) => Math . max ( max , b . port ) ,
127+ cdpLastAssignedPort
128+ ) ;
124129 log . info (
125- `[CDP POOL] Loaded ${ cdp_browser_pool . length } browser(s) from disk`
130+ `[CDP POOL] Loaded ${ cdp_browser_pool . length } browser(s) from disk, lastAssignedPort= ${ cdpLastAssignedPort } `
126131 ) ;
127132 }
128133 } catch ( e ) {
@@ -759,18 +764,27 @@ function registerIpcHandlers() {
759764 // Launch CDP browser with automatic port assignment
760765 ipcMain . handle ( 'launch-cdp-browser' , async ( ) => {
761766 try {
762- // 1. Find available port (9224–9300) by checking no CDP browser is listening
767+ // 1. Always increment port from the last assigned port
763768 // Port 9223 is reserved for the login browser
764769 let port : number | null = null ;
765- for ( let p = 9224 ; p < 9300 ; p ++ ) {
766- if (
767- ! cdp_browser_pool . some ( ( b ) => b . port === p ) &&
768- ! ( await isCdpPortAlive ( p ) )
769- ) {
770+ for ( let p = cdpLastAssignedPort + 1 ; p < 9300 ; p ++ ) {
771+ if ( ! ( await isCdpPortAlive ( p ) ) ) {
770772 port = p ;
771773 break ;
772774 }
773775 }
776+ // Wrap around if we hit the ceiling
777+ if ( port === null ) {
778+ for ( let p = 9224 ; p <= cdpLastAssignedPort && p < 9300 ; p ++ ) {
779+ if (
780+ ! cdp_browser_pool . some ( ( b ) => b . port === p ) &&
781+ ! ( await isCdpPortAlive ( p ) )
782+ ) {
783+ port = p ;
784+ break ;
785+ }
786+ }
787+ }
774788 if ( port === null ) {
775789 return { success : false , error : 'No available port in 9224-9299' } ;
776790 }
@@ -905,6 +919,7 @@ function registerIpcHandlers() {
905919 addedAt : Date . now ( ) ,
906920 } ;
907921 cdp_browser_pool . push ( newBrowser ) ;
922+ cdpLastAssignedPort = port ;
908923 saveCdpPool ( ) ;
909924 notifyCdpPoolChanged ( ) ;
910925
0 commit comments