@@ -437,12 +437,15 @@ export class Commands {
437437if ( ! baseUrl ) {
438438throw new Error ( "You are not logged in" ) ;
439439}
440+ if ( treeItem . primaryAgentName === undefined ) {
441+ return ;
442+ }
440443await openWorkspace (
441444baseUrl ,
442445treeItem . workspaceOwner ,
443446treeItem . workspaceName ,
444- treeItem . workspaceAgent ,
445- treeItem . workspaceFolderPath ,
447+ treeItem . primaryAgentName ,
448+ treeItem . primaryAgentFolderPath ,
446449true ,
447450) ;
448451} else {
@@ -525,6 +528,8 @@ export class Commands {
525528let folderPath :string | undefined ;
526529let openRecent :boolean | undefined ;
527530
531+ let workspace :Workspace | undefined ;
532+
528533const baseUrl = this . restClient . getAxiosInstance ( ) . defaults . baseURL ;
529534if ( ! baseUrl ) {
530535throw new Error ( "You are not logged in" ) ;
@@ -571,7 +576,7 @@ export class Commands {
571576} ) ;
572577} ) ;
573578quickPick . show ( ) ;
574- const workspace = await new Promise < Workspace | undefined > ( ( resolve ) => {
579+ workspace = await new Promise < Workspace | undefined > ( ( resolve ) => {
575580quickPick . onDidHide ( ( ) => {
576581resolve ( undefined ) ;
577582} ) ;
@@ -590,20 +595,31 @@ export class Commands {
590595}
591596workspaceOwner = workspace . owner_name ;
592597workspaceName = workspace . name ;
598+ } else {
599+ workspaceOwner = args [ 0 ] as string ;
600+ workspaceName = args [ 1 ] as string ;
601+ workspaceAgent = args [ 2 ] as string | undefined ;
602+ folderPath = args [ 3 ] as string | undefined ;
603+ openRecent = args [ 4 ] as boolean | undefined ;
604+ }
605+
606+ if ( ! workspaceAgent ) {
607+ if ( workspace === undefined ) {
608+ workspace = await this . restClient . getWorkspaceByOwnerAndName (
609+ workspaceOwner ,
610+ workspaceName ,
611+ ) ;
612+ }
593613
594614const agent = await this . maybeAskAgent ( workspace ) ;
595615if ( ! agent ) {
596616// User declined to pick an agent.
597617return ;
598618}
599- folderPath = agent . expanded_directory ;
619+ if ( ! folderPath ) {
620+ folderPath = agent . expanded_directory ;
621+ }
600622workspaceAgent = agent . name ;
601- } else {
602- workspaceOwner = args [ 0 ] as string ;
603- workspaceName = args [ 1 ] as string ;
604- workspaceAgent = args [ 2 ] as string | undefined ;
605- folderPath = args [ 3 ] as string | undefined ;
606- openRecent = args [ 4 ] as boolean | undefined ;
607623}
608624
609625await openWorkspace (
@@ -679,7 +695,7 @@ async function openWorkspace(
679695baseUrl :string ,
680696workspaceOwner :string ,
681697workspaceName :string ,
682- workspaceAgent :string | undefined ,
698+ workspaceAgent :string ,
683699folderPath :string | undefined ,
684700openRecent :boolean | undefined ,
685701) {