1 /*
2  * SessionInfo.java
3  *
4  * Copyright (C) 2021 by RStudio, PBC
5  *
6  * Unless you have received this program directly from RStudio pursuant
7  * to the terms of a commercial license agreement with RStudio, then
8  * this program is licensed to you under the terms of version 3 of the
9  * GNU Affero General Public License. This program is distributed WITHOUT
10  * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
12  * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
13  *
14  */
15 package org.rstudio.studio.client.workbench.model;
16 
17 import org.rstudio.core.client.StringUtil;
18 import org.rstudio.core.client.files.FileSystemItem;
19 import org.rstudio.core.client.js.JsObject;
20 import org.rstudio.core.client.jsonrpc.RpcObjectList;
21 import org.rstudio.studio.client.application.ApplicationUtils;
22 import org.rstudio.studio.client.application.model.RVersionsInfo;
23 import org.rstudio.studio.client.application.model.SessionInitOptions;
24 import org.rstudio.studio.client.common.compilepdf.model.CompilePdfState;
25 import org.rstudio.studio.client.common.console.ConsoleProcessInfo;
26 import org.rstudio.studio.client.common.debugging.model.ErrorManagerState;
27 import org.rstudio.studio.client.common.dependencies.model.DependencyList;
28 import org.rstudio.studio.client.common.rnw.RnwWeave;
29 import org.rstudio.studio.client.quarto.model.QuartoConfig;
30 import org.rstudio.studio.client.workbench.addins.Addins.RAddins;
31 import org.rstudio.studio.client.workbench.prefs.model.PrefLayer;
32 import org.rstudio.studio.client.workbench.prefs.model.UserPrefs;
33 import org.rstudio.studio.client.workbench.prefs.model.UserState;
34 import org.rstudio.studio.client.workbench.views.buildtools.model.BuildState;
35 import org.rstudio.studio.client.workbench.views.connections.model.Connection;
36 import org.rstudio.studio.client.workbench.views.connections.model.ConnectionId;
37 import org.rstudio.studio.client.workbench.views.environment.model.EnvironmentContextData;
38 import org.rstudio.studio.client.workbench.views.environment.model.MemoryUsage;
39 import org.rstudio.studio.client.workbench.views.jobs.model.JobState;
40 import org.rstudio.studio.client.workbench.views.output.find.model.FindInFilesState;
41 import org.rstudio.studio.client.workbench.views.output.markers.model.MarkersState;
42 import org.rstudio.studio.client.workbench.views.packages.model.PackageProvidedExtensions;
43 import org.rstudio.studio.client.workbench.views.presentation.model.PresentationState;
44 import org.rstudio.studio.client.workbench.views.source.model.SourceDocument;
45 
46 import com.google.gwt.core.client.JavaScriptObject;
47 import com.google.gwt.core.client.JsArray;
48 import com.google.gwt.core.client.JsArrayString;
49 
50 public class SessionInfo extends JavaScriptObject
51 {
SessionInfo()52    protected SessionInfo()
53    {
54    }
55 
getClientId()56    public final native String getClientId() /*-{
57       return this.clientId;
58    }-*/;
59 
getClientVersion()60    public final native String getClientVersion() /*-{
61       return this.client_version;
62    }-*/;
63 
64 
getUserIdentity()65    public final native String getUserIdentity() /*-{
66       return this.userIdentity;
67    }-*/;
68 
getSystemUsername()69    public final native String getSystemUsername() /*-{
70       return this.systemUsername;
71    }-*/;
72 
getSessionId()73    public final native String getSessionId() /*-{
74       return this.session_id;
75    }-*/;
76 
getSessionLabel()77    public final native String getSessionLabel() /*-{
78       return this.session_label;
79    }-*/;
80 
getPrompt()81    public final native String getPrompt() /*-{
82       return this.prompt;
83    }-*/;
84 
getRnwWeaveTypes()85    public final native JsArray<RnwWeave> getRnwWeaveTypes() /*-{
86       return this.rnw_weave_types;
87    }-*/;
88 
getLatexProgramTypes()89    public final native JsArrayString getLatexProgramTypes() /*-{
90       return this.latex_program_types;
91    }-*/;
92 
getTexCapabilities()93    public final native TexCapabilities getTexCapabilities() /*-{
94       return this.tex_capabilities;
95    }-*/;
96 
getCompilePdfState()97    public final native CompilePdfState getCompilePdfState() /*-{
98       return this.compile_pdf_state;
99    }-*/;
100 
getFindInFilesState()101    public final native FindInFilesState getFindInFilesState() /*-{
102       return this.find_in_files_state;
103    }-*/;
104 
getMarkersState()105    public final native MarkersState getMarkersState() /*-{
106       return this.markers_state;
107    }-*/;
108 
getLogDir()109    public final native String getLogDir() /*-{
110       return this.log_dir;
111    }-*/;
112 
getScratchDir()113    public final native String getScratchDir() /*-{
114       return this.scratch_dir;
115    }-*/;
116 
getTempDir()117    public final native String getTempDir() /*-{
118       return this.temp_dir;
119    }-*/;
120 
getPrefs()121    public final native JsArray<PrefLayer> getPrefs() /*-{
122       if (!this.user_prefs)
123          this.user_prefs = [ {} ];
124       return this.user_prefs;
125    }-*/;
126 
getUserPrefs()127    public final JsObject getUserPrefs()
128    {
129       return getPrefs().get(Math.min(getPrefs().length(), UserPrefs.LAYER_USER)).getValues();
130    }
131 
getUserPrefLayer()132    public final PrefLayer getUserPrefLayer()
133    {
134       return getPrefs().get(Math.min(getPrefs().length(), UserPrefs.LAYER_USER));
135    }
136 
getUserState()137    public final native JsArray<PrefLayer> getUserState() /*-{
138       if (!this.user_state)
139          this.user_state = [ {} ];
140       return this.user_state;
141    }-*/;
142 
getUserStateLayer()143    public final PrefLayer getUserStateLayer()
144    {
145       return getUserState().get(Math.min(getPrefs().length(), UserState.LAYER_USER));
146    }
147 
148    public final static String DESKTOP_MODE = "desktop";
149    public final static String SERVER_MODE = "server";
150 
getMode()151    public final native String getMode() /*-{
152       return this.mode;
153    }-*/;
154 
getResumed()155    public final native boolean getResumed() /*-{
156       return this.resumed;
157    }-*/;
158 
getDefaultPrompt()159    public final native String getDefaultPrompt() /*-{
160       return this.prompt;
161    }-*/;
162 
getConsoleHistory()163    public final native JsArrayString getConsoleHistory() /*-{
164       return this.console_history;
165    }-*/;
166 
getConsoleHistoryCapacity()167    public final native int getConsoleHistoryCapacity() /*-{
168       return this.console_history_capacity;
169    }-*/;
170 
getConsoleActions()171    public final native RpcObjectList<ConsoleAction> getConsoleActions() /*-{
172       return this.console_actions;
173    }-*/;
174 
getConsoleActionsLimit()175    public final native int getConsoleActionsLimit() /*-{
176       return this.console_actions_limit;
177    }-*/;
178 
getConsoleLanguage()179    public final native String getConsoleLanguage() /*-{
180       return this.console_language;
181    }-*/;
182 
getClientState()183    public final native ClientInitState getClientState() /*-{
184       return this.client_state;
185    }-*/;
186 
getSourceDocuments()187    public final native JsArray<SourceDocument> getSourceDocuments() /*-{
188       return this.source_documents;
189    }-*/;
190 
setSourceDocuments(JsArray<SourceDocument> docs)191    public final native void setSourceDocuments(JsArray<SourceDocument> docs) /*-{
192       this.source_documents = docs;
193    }-*/;
194 
getLists()195    public final native WorkbenchLists getLists() /*-{
196       return this.lists;
197    }-*/;
198 
docsURL()199    public final native String docsURL() /*-{
200       return this.docsURL;
201    }-*/;
202 
getRstudioVersion()203    public final native String getRstudioVersion() /*-{
204       return this.rstudio_version;
205    }-*/;
206 
getSystemEncoding()207    public final native String getSystemEncoding() /*-{
208       return this.system_encoding;
209    }-*/;
210 
getLicenseMessage()211    public final native String getLicenseMessage() /*-{
212       return this.license_message;
213    }-*/;
214 
isVcsEnabled()215    public final boolean isVcsEnabled()
216    {
217       return !StringUtil.isNullOrEmpty(getVcsName());
218    }
219 
isVcsAvailable()220    public final boolean isVcsAvailable()
221    {
222       String[] availableVcs = getAvailableVCS();
223       return availableVcs.length > 0 && availableVcs[0].length() > 0;
224    }
225 
getAvailableVCS()226    public final String[] getAvailableVCS()
227    {
228       return this.<JsObject>cast().getString("vcs_available", true).split(",");
229    }
230 
getVcsName()231    public final native String getVcsName() /*-{
232       return this.vcs;
233    }-*/;
234 
isVcsAvailable(String id)235    public final boolean isVcsAvailable(String id)
236    {
237       String[] availableVcs = getAvailableVCS();
238       for (int i=0; i<availableVcs.length; i++)
239       {
240          if (availableVcs[i] == id)
241             return true;
242       }
243 
244       return false;
245    }
246 
getDefaultSSHKeyDir()247    public native final String getDefaultSSHKeyDir() /*-{
248       return this.default_ssh_key_dir;
249    }-*/;
250 
isGithubRepository()251    public native final boolean isGithubRepository() /*-{
252       return this.is_github_repo;
253    }-*/;
254 
255    // TODO: The check for null was for migration in the presence of
256    // sessions that couldn't suspend (3/21/2011). Remove this check
257    // once we are sufficiently clear of this date window.
getInitialWorkingDir()258    public final native String getInitialWorkingDir() /*-{
259       if (!this.initial_working_dir)
260          this.initial_working_dir = "~/";
261       return this.initial_working_dir;
262    }-*/;
263 
getDefaultWorkingDir()264    public final native String getDefaultWorkingDir() /*-{
265       return this.default_working_dir;
266    }-*/;
267 
getDefaultProjectDir()268    public final native String getDefaultProjectDir() /*-{
269       return this.default_project_dir;
270    }-*/;
271 
getActiveProjectFile()272    public final native String getActiveProjectFile() /*-{
273       return this.active_project_file;
274    }-*/;
275 
getActiveProjectDir()276    public final FileSystemItem getActiveProjectDir()
277    {
278       String projFile = getActiveProjectFile();
279       if (projFile != null)
280       {
281          return FileSystemItem.createFile(projFile).getParentPath();
282       }
283       else
284       {
285          return null;
286       }
287    }
288 
getProjectOpenDocs()289    public final native JsArrayString getProjectOpenDocs() /*-{
290       if (!this.project_open_docs)
291          this.project_open_docs = {};
292       return this.project_open_docs;
293    }-*/;
294 
projectSupportsSharing()295    public final native boolean projectSupportsSharing() /*-{
296       return !!this.project_supports_sharing;
297    }-*/;
298 
projectParentBrowseable()299    public final native boolean projectParentBrowseable() /*-{
300       return !!this.project_parent_browseable;
301    }-*/;
302 
getProjectUserDataDir()303    public final native String getProjectUserDataDir() /*-{
304       return this.project_user_data_directory;
305    }-*/;
306 
getConsoleProcesses()307    public final native JsArray<ConsoleProcessInfo> getConsoleProcesses() /*-{
308       return this.console_processes;
309    }-*/;
310 
getSumatraPdfExePath()311    public final native String getSumatraPdfExePath() /*-{
312       return this.sumatra_pdf_exe_path;
313    }-*/;
314 
getHTMLCapabilities()315    public final native HTMLCapabilities getHTMLCapabilities() /*-{
316       return this.html_capabilities;
317    }-*/;
318 
319    public final static String BUILD_TOOLS_NONE = "None";
320    public final static String BUILD_TOOLS_PACKAGE = "Package";
321    public final static String BUILD_TOOLS_MAKEFILE = "Makefile";
322    public final static String BUILD_TOOLS_WEBSITE = "Website";
323    public final static String BUILD_TOOLS_CUSTOM = "Custom";
324    public final static String BUILD_TOOLS_QUARTO = "Quarto";
325 
getBuildToolsType()326    public final native String getBuildToolsType() /*-{
327       return this.build_tools_type;
328    }-*/;
329 
getBuildToolsBookdownWebsite()330    public final native boolean getBuildToolsBookdownWebsite() /*-{
331       return this.build_tools_bookdown_website;
332    }-*/;
333 
getBuildTargetDir()334    public final native String getBuildTargetDir() /*-{
335       return this.build_target_dir;
336    }-*/;
337 
getBlogdownConfig()338    public final native BlogdownConfig getBlogdownConfig() /*-{
339       return this.blogdown_config;
340    }-*/;
341 
getIsBookdownProject()342    public final native boolean getIsBookdownProject() /*-{
343       return this.is_bookdown_project;
344    }-*/;
345 
getIsDistillProject()346    public final native boolean getIsDistillProject() /*-{
347       return this.is_distill_project;
348    }-*/;
349 
350    public final static String QUARTO_PROJECT_TYPE_SITE = "site";
351    public final static String QUARTO_PROJECT_TYPE_BOOK = "book";
352 
353 
getQuartoConfig()354    public final native QuartoConfig getQuartoConfig() /*-{
355       return this.quarto_config;
356    }-*/;
357 
getHasPackageSrcDir()358    public final native boolean getHasPackageSrcDir() /*-{
359       return this.has_pkg_src;
360    }-*/;
361 
getHasPackageVignetteDir()362    public final native boolean getHasPackageVignetteDir() /*-{
363       return this.has_pkg_vig;
364    }-*/;
365 
getPresentationName()366    public final String getPresentationName()
367    {
368       PresentationState state = getPresentationState();
369       if (state != null)
370          return state.getPaneCaption();
371       else
372          return "Presentation";
373    }
374 
getPresentationState()375    public final native PresentationState getPresentationState() /*-{
376       return this.presentation_state;
377    }-*/;
378 
getBuildState()379    public final native BuildState getBuildState() /*-{
380       return this.build_state;
381    }-*/;
382 
isDevtoolsInstalled()383    public final native boolean isDevtoolsInstalled() /*-{
384       return this.devtools_installed;
385    }-*/;
386 
isCairoPdfAvailable()387    public final native boolean isCairoPdfAvailable() /*-{
388       return this.have_cairo_pdf;
389    }-*/;
390 
getAllowVcsExeEdit()391    public final native boolean getAllowVcsExeEdit() /*-{
392       return this.allow_vcs_exe_edit;
393    }-*/;
394 
getAllowCRANReposEdit()395    public final native boolean getAllowCRANReposEdit() /*-{
396       return this.allow_cran_repos_edit;
397    }-*/;
398 
getAllowVcs()399    public final native boolean getAllowVcs() /*-{
400       return this.allow_vcs;
401    }-*/;
402 
getAllowPackageInstallation()403    public final native boolean getAllowPackageInstallation() /*-{
404       return this.allow_pkg_install;
405    }-*/;
406 
getAllowShell()407    public final native boolean getAllowShell() /*-{
408       return this.allow_shell;
409    }-*/;
410 
getAllowTerminalWebsockets()411    public final native boolean getAllowTerminalWebsockets() /*-{
412       return this.allow_terminal_websockets;
413    }-*/;
414 
getAllowFileDownloads()415    public final native boolean getAllowFileDownloads() /*-{
416       return this.allow_file_download;
417    }-*/;
418 
getAllowFileUploads()419    public final native boolean getAllowFileUploads() /*-{
420       return this.allow_file_upload;
421    }-*/;
422 
getAllowRemovePublicFolder()423    public final native boolean getAllowRemovePublicFolder() /*-{
424       return this.allow_remove_public_folder;
425    }-*/;
426 
getAllowFullUI()427    public final native boolean getAllowFullUI() /*-{
428       return this.allow_full_ui;
429    }-*/;
430 
getWebSocketPingInterval()431    public final native int getWebSocketPingInterval() /*-{
432       return this.websocket_ping_interval;
433    }-*/;
434 
getWebSocketConnectTimeout()435    public final native int getWebSocketConnectTimeout() /*-{
436       return this.websocket_connect_timeout;
437    }-*/;
438 
getAllowExternalPublish()439    public final native boolean getAllowExternalPublish() /*-{
440       return this.allow_external_publish;
441    }-*/;
442 
getAllowPublish()443    public final native boolean getAllowPublish() /*-{
444       return this.allow_publish;
445    }-*/;
446 
getAllowOpenSharedProjects()447    public final native boolean getAllowOpenSharedProjects() /*-{
448       return this.allow_open_shared_projects;
449    }-*/;
450 
getProjectSharingEnumerateServerUsers()451    public final native boolean getProjectSharingEnumerateServerUsers() /*-{
452       return this.project_sharing_enumerate_server_users;
453    }-*/;
454 
getLauncherSession()455    public final native boolean getLauncherSession() /*-{
456       return this.launcher_session;
457    }-*/;
458 
getCrashHandlerSettingsModifiable()459    public final native boolean getCrashHandlerSettingsModifiable() /*-{
460       return this.crash_handler_settings_modifiable;
461    }-*/;
462 
getPromptForCrashHandlerPermission()463    public final native boolean getPromptForCrashHandlerPermission() /*-{
464       return this.prompt_for_crash_handler_permission;
465    }-*/;
466 
getLaunchParameters()467    public final native JsObject getLaunchParameters() /*-{
468       return this.launch_parameters;
469    }-*/;
470 
getEnvironmentState()471    public final native EnvironmentContextData getEnvironmentState() /*-{
472       return this.environment_state;
473    }-*/;
474 
getDisablePackages()475    public final native boolean getDisablePackages() /*-{
476       return this.disable_packages;
477    }-*/;
478 
getErrorState()479    public final native ErrorManagerState getErrorState() /*-{
480       return this.error_state;
481    }-*/;
482 
getDisableCheckForUpdates()483    public final native boolean getDisableCheckForUpdates() /*-{
484       return this.disable_check_for_updates;
485    }-*/;
486 
getShowIdentity()487    public final native boolean getShowIdentity() /*-{
488       return this.show_identity;
489    }-*/;
490 
getHaveAdvancedStepCommands()491    public final native boolean getHaveAdvancedStepCommands() /*-{
492       return this.have_advanced_step_commands;
493    }-*/;
494 
getRMarkdownPackageAvailable()495    public final native boolean getRMarkdownPackageAvailable() /*-{
496       return this.rmarkdown_available;
497    }-*/;
498 
setRMarkdownPackageAvailable(boolean available)499    public final native void setRMarkdownPackageAvailable(boolean available) /*-{
500       this.rmarkdown_available = available;
501    }-*/;
502 
getKnitParamsAvailable()503    public final native boolean getKnitParamsAvailable()  /*-{
504       return this.knit_params_available;
505    }-*/;
506 
setKnitParamsAvailable(boolean available)507    public final native void setKnitParamsAvailable(boolean available) /*-{
508       this.knit_params_available = available;
509    }-*/;
510 
getKnitWorkingDirAvailable()511    public final native boolean getKnitWorkingDirAvailable() /*-{
512       return this.knit_working_dir_available;
513    }-*/;
514 
setKnitWorkingDirAvailable(boolean available)515    public final native void setKnitWorkingDirAvailable(boolean available) /*-{
516       this.knit_working_dir_available = available;
517    }-*/;
518 
getPptAvailable()519    public final native boolean getPptAvailable() /*-{
520       return this.ppt_available;
521    }-*/;
522 
setPptAvailable(boolean available)523    public final native void setPptAvailable(boolean available) /*-{
524       this.ppt_available = available;
525    }-*/;
526 
getClangAvailable()527    public final native boolean getClangAvailable() /*-{
528       return this.clang_available;
529    }-*/;
530 
getConnectionsEnabled()531    public final native boolean getConnectionsEnabled() /*-{
532       return this.connections_enabled;
533    }-*/;
534 
getActivateConnections()535    public final native boolean getActivateConnections() /*-{
536       return this.activate_connections;
537    }-*/;
538 
getConnectionList()539    public final native JsArray<Connection> getConnectionList() /*-{
540       return this.connection_list;
541    }-*/;
542 
getActiveConnections()543    public final native JsArray<ConnectionId> getActiveConnections() /*-{
544       return this.active_connections;
545    }-*/;
546 
getJobState()547    public final native JobState getJobState() /*-{
548       return this.job_state;
549    }-*/;
550 
getLauncherJobsEnabled()551    public final native boolean getLauncherJobsEnabled() /*-{
552       return this.launcher_jobs_enabled;
553    }-*/;
554 
getShowHelpHome()555    public final native boolean getShowHelpHome() /*-{
556       return this.show_help_home;
557    }-*/;
558 
getMultiSession()559    public final native boolean getMultiSession() /*-{
560       return this.multi_session;
561    }-*/;
562 
getActiveSessionCount()563    public final native int getActiveSessionCount() /*-{
564       return this.active_session_count;
565    }-*/;
566 
getRVersionsInfo()567    public final native RVersionsInfo getRVersionsInfo() /*-{
568       return this.r_versions_info;
569    }-*/;
570 
getPresentationCommands()571    public final native boolean getPresentationCommands() /*-{
572       return this.presentation_commands;
573    }-*/;
574 
getTutorialApiAvailable()575    public final native boolean getTutorialApiAvailable() /*-{
576       return this.tutorial_api_available;
577    }-*/;
578 
getTutorialApiParentNotifyAvailable()579    public final native boolean getTutorialApiParentNotifyAvailable() /*-{
580       return this.tutorial_api_parent_notify_available;
581    }-*/;
582 
getTutorialApiClientOrigin()583    public final native String getTutorialApiClientOrigin() /*-{
584       return this.tutorial_api_client_origin;
585    }-*/;
586 
getCloudFolderEnabled()587    public final native boolean getCloudFolderEnabled() /*-{
588       return this.cloud_folder_enabled;
589    }-*/;
590 
getPackratAvailable()591     public final native boolean getPackratAvailable() /*-{
592       return this.packrat_available;
593    }-*/;
594 
getRenvAvailable()595     public final native boolean getRenvAvailable() /*-{
596       return this.renv_available;
597    }-*/;
598 
getShowUserHomePage()599    public final native boolean getShowUserHomePage() /*-{
600       return this.show_user_home_page;
601    }-*/;
602 
getUserHomePageUrl()603    public final String getUserHomePageUrl()
604    {
605       String url = getUserHomePageUrlNative();
606       if (url != null)
607          url = ApplicationUtils.getHostPageBaseURLWithoutContext(false) + url;
608       return url;
609    }
610 
getUserHomePageUrlNative()611    private final native String getUserHomePageUrlNative() /*-{
612       return this.user_home_page_url;
613    }-*/;
614 
getAddins()615    public final native RAddins getAddins() /*-{
616       return this.r_addins;
617    }-*/;
618 
getPackageProvidedExtensions()619    public final native PackageProvidedExtensions.Data getPackageProvidedExtensions() /*-{
620       return this.package_provided_extensions;
621    }-*/;
622 
getSupportDriverLicensing()623    public final native boolean getSupportDriverLicensing() /*-{
624       return this.drivers_support_licensing;
625    }-*/;
626 
quitChildProcessesOnExit()627    public final native boolean quitChildProcessesOnExit() /*-{
628       return this.quit_child_processes_on_exit;
629    }-*/;
630 
getGitCommitLargeFileSize()631    public final native int getGitCommitLargeFileSize() /*-{
632       return this.git_commit_large_file_size;
633    }-*/;
634 
getDefaultRSConnectServer()635    public final native String getDefaultRSConnectServer() /*-{
636       return this.default_rsconnect_server;
637    }-*/;
638 
getRLibsUser()639    public final native String getRLibsUser() /*-{
640       return this.r_libs_user;
641    }-*/;
642 
getInitOptions()643    public final native SessionInitOptions getInitOptions() /*-{
644       return this.init_options;
645    }-*/;
646 
647    /**
648     * @return The list of R packages we depend on
649     */
getPackageDependencies()650    public final native DependencyList getPackageDependencies() /*-{
651       return this.package_dependencies;
652    }-*/;
653 
654    /**
655     * @return project identifier (only meaningful in RStudio Workbench)
656     */
getProjectId()657    public final native String getProjectId() /*-{
658       return this.project_id;
659    }-*/;
660 
getGraphicsBackends()661    public final native JsArrayString getGraphicsBackends() /*-{
662      return this.graphics_backends;
663    }-*/;
664 
getPythonInitialized()665    public final native boolean getPythonInitialized() /*-{
666       return this.python_initialized;
667    }-*/;
668 
getPythonReplActive()669    public final native boolean getPythonReplActive() /*-{
670       return this.python_repl_active;
671    }-*/;
672 
getSessionNode()673    public final native String getSessionNode() /*-{
674       return this.session_node;
675    }-*/;
676 
getReticulatePython()677    public final native String getReticulatePython() /*-{
678       return this.reticulate_python;
679    }-*/;
680 
getMemoryUsage()681    public final native MemoryUsage getMemoryUsage() /*-{
682       return this.memory_usage;
683    }-*/;
684 }
685