@@ -10,6 +10,7 @@ various messages related to working with Jupyter.
10
10
11
11
import { get_existing_kernel } from "@cocalc/jupyter/kernel" ;
12
12
import { get_kernel_data } from "@cocalc/jupyter/kernel/kernel-data" ;
13
+ import { bufferToBase64 } from "@cocalc/util/base64" ;
13
14
14
15
export async function handleApiRequest (
15
16
path : string ,
@@ -37,15 +38,20 @@ export async function handleApiRequest(
37
38
case "save_ipynb_file" :
38
39
await kernel . save_ipynb_file ( ) ;
39
40
return { } ;
41
+
40
42
case "signal" :
41
43
kernel . signal ( query . signal ) ;
42
44
return { } ;
45
+
43
46
case "kernel_info" :
44
47
return await kernel . kernel_info ( ) ;
48
+
45
49
case "more_output" :
46
50
return kernel . more_output ( query . id ) ;
51
+
47
52
case "complete" :
48
53
return await kernel . complete ( get_code_and_cursor_pos ( query ) ) ;
54
+
49
55
case "introspect" :
50
56
const { code, cursor_pos } = get_code_and_cursor_pos ( query ) ;
51
57
let detail_level = 0 ;
@@ -64,6 +70,7 @@ export async function handleApiRequest(
64
70
cursor_pos,
65
71
detail_level,
66
72
} ) ;
73
+
67
74
case "store" :
68
75
const { key, value } = query ;
69
76
if ( value === undefined ) {
@@ -77,8 +84,21 @@ export async function handleApiRequest(
77
84
kernel . store . set ( key , value ) ;
78
85
return { } ;
79
86
}
87
+
80
88
case "comm" :
81
89
return kernel . send_comm_message_to_kernel ( query ) ;
90
+
91
+ case "ipywidgets-get-buffer" :
92
+ const { model_id, buffer_path } = query ;
93
+ const buffer = kernel . ipywidgetsGetBuffer ( model_id , buffer_path ) ;
94
+ if ( buffer == null ) {
95
+ throw Error (
96
+ `no buffer for model=${ model_id } , buffer_path=${ JSON . stringify (
97
+ buffer_path ,
98
+ ) } `,
99
+ ) ;
100
+ }
101
+ return { buffer64 : bufferToBase64 ( buffer ) } ;
82
102
default :
83
103
throw Error ( `unknown endpoint "${ endpoint } "` ) ;
84
104
}
0 commit comments