@@ -191,32 +191,60 @@ export async function openRemoteConnect(
191191 void vscode . window . showErrorMessage ( ConnectFromRemoteWorkspaceMessage )
192192 return
193193 }
194+
195+ const spaceName = node . spaceApp . SpaceName !
194196 await tryRefreshNode ( node )
197+
198+ // for Stopped SM spaces - check instance type before showing progress
195199 if ( node . getStatus ( ) === 'Stopped' ) {
196200 // In case of SMUS, we pass in a SM Client and for SM AI, it creates a new SM Client.
197201 const client = sageMakerClient ? sageMakerClient : new SagemakerClient ( node . regionCode )
198202
199203 try {
200- await client . startSpace ( node . spaceApp . SpaceName ! , node . spaceApp . DomainId ! )
204+ await client . startSpace ( spaceName , node . spaceApp . DomainId ! )
201205 await tryRefreshNode ( node )
202206 const appType = node . spaceApp . SpaceSettingsSummary ?. AppType
203207 if ( ! appType ) {
204208 throw new ToolkitError ( 'AppType is undefined for the selected space. Cannot start remote connection.' , {
205209 code : 'undefinedAppType' ,
206210 } )
207211 }
208- await client . waitForAppInService ( node . spaceApp . DomainId ! , node . spaceApp . SpaceName ! , appType )
209- await tryRemoteConnection ( node , ctx )
212+
213+ // Only start showing progress after instance type validation
214+ return await vscode . window . withProgress (
215+ {
216+ location : vscode . ProgressLocation . Notification ,
217+ cancellable : false ,
218+ title : `Connecting to ${ spaceName } ` ,
219+ } ,
220+ async ( progress ) => {
221+ progress . report ( { message : 'Starting the space.' } )
222+ await client . waitForAppInService ( node . spaceApp . DomainId ! , spaceName , appType )
223+ await tryRemoteConnection ( node , ctx , progress )
224+ }
225+ )
210226 } catch ( err : any ) {
211227 // Ignore InstanceTypeError since it means the user decided not to use an instanceType with more memory
212- if ( err . code !== InstanceTypeError ) {
213- throw new ToolkitError ( `Remote connection failed: ${ ( err as Error ) . message } ` , {
214- cause : err as Error ,
215- code : err . code ,
216- } )
228+ // just return without showing progress
229+ if ( err . code === InstanceTypeError ) {
230+ return
217231 }
232+ throw new ToolkitError ( `Remote connection failed: ${ ( err as Error ) . message } ` , {
233+ cause : err as Error ,
234+ code : err . code ,
235+ } )
218236 }
219237 } else if ( node . getStatus ( ) === 'Running' ) {
220- await tryRemoteConnection ( node , ctx )
238+ // For running spaces, show progress
239+ return await vscode . window . withProgress (
240+ {
241+ location : vscode . ProgressLocation . Notification ,
242+ cancellable : false ,
243+ title : `Connecting to ${ spaceName } ` ,
244+ } ,
245+ async ( progress ) => {
246+ await tryRemoteConnection ( node , ctx , progress )
247+ }
248+ )
221249 }
222250}
0 commit comments