// Only call from InitializeAgentConnectionAsync async Task DoInitalizeAgentConnectionAsync() { try { ResetAgentConnection(); using (ViewControllers.Messages.PushMessage( Message.CreateInfoStatus( Catalog.GetString("Connecting to agent…"), showSpinner: true))) await ConnectToAgentAsync(CancellationToken); using (ViewControllers.Messages.PushMessage( Message.CreateInfoStatus( Catalog.GetString("Preparing workspace…"), showSpinner: true))) { await InitializeCompilationWorkspaceAsync(CancellationToken); if (EvaluationService == null) { var evaluationService = new EvaluationService( CompilationWorkspace, new EvaluationEnvironment(WorkingDirectory)); evaluationService.NotifyEvaluationContextManagerChanged(Agent.Api.EvaluationContextManager); EvaluationService = evaluationService; } if (SessionKind == ClientSessionKind.Workbook) { PackageManager = new PackageManagerService( CompilationWorkspace.Configuration.DependencyResolver, EvaluationService, async(refreshForAgentIntegration, cancellationToken) => { if (refreshForAgentIntegration) { await RefreshForAgentIntegration(); } return(Agent); }); } else { PackageManager = null; } } } catch (Exception e) { Log.Error(TAG, e); ViewControllers.Messages.PushMessage(WithReconnectSessionAction(e .ToAlertMessage(Catalog.GetString("Unable to connect")))); return; } try { using (ViewControllers.Messages.PushMessage( Message.CreateInfoStatus( Catalog.GetString("Restoring packages…"), showSpinner: true))) await PackageManager?.InitializeAsync( WorkbookApp.Sdk, Workbook .Pages .SelectMany(page => page.Packages), CancellationToken); } catch (Exception e) { Log.Error(TAG, e); ViewControllers.Messages.PushMessage(e .ToAlertMessage(Catalog.GetString("Unable to restore packages"))); } }