nebula-notebook-mcp 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `nebula fs …` — file operations on the Nebula SERVER's filesystem
3
+ * (list / cat / write / rm / mv / download / upload).
4
+ *
5
+ * For agents running in a terminal ON the server, plain shell commands are
6
+ * simpler — this group exists for remote agents (laptop ↔ server) and for
7
+ * parity with the MCP file tools. Thin wrappers over the same NebulaClient
8
+ * methods the MCP server uses.
9
+ */
10
+ export declare function cmdFs(argv: string[]): Promise<number>;
11
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/cli/fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmCH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB3D"}
package/dist/cli/fs.js ADDED
@@ -0,0 +1,282 @@
1
+ /**
2
+ * `nebula fs …` — file operations on the Nebula SERVER's filesystem
3
+ * (list / cat / write / rm / mv / download / upload).
4
+ *
5
+ * For agents running in a terminal ON the server, plain shell commands are
6
+ * simpler — this group exists for remote agents (laptop ↔ server) and for
7
+ * parity with the MCP file tools. Thin wrappers over the same NebulaClient
8
+ * methods the MCP server uses.
9
+ */
10
+ import * as fs from 'node:fs';
11
+ import * as path from 'node:path';
12
+ import { CliError, EXIT, makeClient, parse, printHint, printJson, requirePositional, resolveContentInput, resolveUrl, toCliError, } from './shared.js';
13
+ const FS_HELP = `usage: nebula fs <ls|cat|write|rm|mv|download|upload> …
14
+
15
+ Paths are paths on the Nebula SERVER (in a Nebula terminal that is the local
16
+ filesystem — prefer plain shell commands there; this group is for remote use).
17
+
18
+ examples:
19
+ nebula fs ls data/
20
+ nebula fs cat results/summary.csv
21
+ echo 'hello' | nebula fs write notes.txt -
22
+ nebula fs mv old.csv archive/old.csv
23
+ nebula fs rm scratch.txt --force
24
+ nebula fs download results/fig1.pdf ./fig1.pdf
25
+ nebula fs upload ./local.csv data/
26
+
27
+ Run 'nebula fs <subcommand> --help' for details.`;
28
+ export async function cmdFs(argv) {
29
+ const [sub, ...rest] = argv;
30
+ switch (sub) {
31
+ case 'ls':
32
+ return fsLs(rest);
33
+ case 'cat':
34
+ return fsCat(rest);
35
+ case 'write':
36
+ return fsWrite(rest);
37
+ case 'rm':
38
+ return fsRm(rest);
39
+ case 'mv':
40
+ return fsMv(rest);
41
+ case 'download':
42
+ return fsDownload(rest);
43
+ case 'upload':
44
+ return fsUpload(rest);
45
+ case undefined:
46
+ case '--help':
47
+ case '-h':
48
+ console.log(FS_HELP);
49
+ return sub === undefined ? EXIT.USAGE : EXIT.OK;
50
+ default:
51
+ throw new CliError(`unknown fs subcommand: ${sub}`, EXIT.USAGE, "run 'nebula fs --help' for the list");
52
+ }
53
+ }
54
+ function clientFor(values) {
55
+ return makeClient(resolveUrl(values.url));
56
+ }
57
+ // =============================================================================
58
+ // fs ls
59
+ // =============================================================================
60
+ const LS_HELP = `usage: nebula fs ls [path]
61
+
62
+ Lists a directory on the server (defaults to the server's root directory).
63
+
64
+ examples:
65
+ nebula fs ls
66
+ nebula fs ls data/raw`;
67
+ async function fsLs(argv) {
68
+ const { values, positionals } = parse(argv);
69
+ if (values.help) {
70
+ console.log(LS_HELP);
71
+ return EXIT.OK;
72
+ }
73
+ const dirPath = positionals[0] ?? '.';
74
+ const result = await clientFor(values).listFiles(dirPath);
75
+ if (!result.success)
76
+ throw toCliError(result.error);
77
+ const items = result.data ?? [];
78
+ if (values.json) {
79
+ printJson(items);
80
+ return EXIT.OK;
81
+ }
82
+ for (const item of items) {
83
+ console.log(item.type === 'directory' ? `${item.name}/` : item.name);
84
+ }
85
+ if (items.length === 0) {
86
+ console.log('(empty)');
87
+ }
88
+ printHint('read a file with: nebula fs cat <path>', values);
89
+ return EXIT.OK;
90
+ }
91
+ // =============================================================================
92
+ // fs cat
93
+ // =============================================================================
94
+ const CAT_HELP = `usage: nebula fs cat <path>
95
+
96
+ Prints a text file from the server. Binary files error — use fs download.
97
+
98
+ examples:
99
+ nebula fs cat results/summary.csv`;
100
+ async function fsCat(argv) {
101
+ const { values, positionals } = parse(argv);
102
+ if (values.help) {
103
+ console.log(CAT_HELP);
104
+ return EXIT.OK;
105
+ }
106
+ const filePath = requirePositional(positionals, 0, 'path', 'nebula fs cat <path>');
107
+ const result = await clientFor(values).readFile(filePath);
108
+ if (!result.success)
109
+ throw toCliError(result.error);
110
+ if (values.json) {
111
+ printJson({ path: filePath, content: result.data.content });
112
+ return EXIT.OK;
113
+ }
114
+ process.stdout.write(result.data.content);
115
+ if (!result.data.content.endsWith('\n'))
116
+ process.stdout.write('\n');
117
+ return EXIT.OK;
118
+ }
119
+ // =============================================================================
120
+ // fs write
121
+ // =============================================================================
122
+ const WRITE_HELP = `usage: nebula fs write <path> (--content <str> | --content-file <f> | -)
123
+
124
+ Writes a text file on the server (creates or overwrites).
125
+
126
+ examples:
127
+ nebula fs write notes.txt --content 'hello'
128
+ cat local.csv | nebula fs write data/upload.csv -`;
129
+ async function fsWrite(argv) {
130
+ const { values, positionals } = parse(argv, {
131
+ content: { type: 'string' },
132
+ 'content-file': { type: 'string' },
133
+ });
134
+ if (values.help) {
135
+ console.log(WRITE_HELP);
136
+ return EXIT.OK;
137
+ }
138
+ const usage = 'nebula fs write <path> (--content <str> | --content-file <f> | -)';
139
+ const filePath = requirePositional(positionals, 0, 'path', usage);
140
+ const stdinMarker = positionals[1] === '-';
141
+ const content = await resolveContentInput(values.content, values['content-file'], stdinMarker);
142
+ const result = await clientFor(values).writeFile(filePath, content);
143
+ if (!result.success)
144
+ throw toCliError(result.error);
145
+ if (values.json) {
146
+ printJson({ path: filePath, bytes: Buffer.byteLength(content), written: true });
147
+ return EXIT.OK;
148
+ }
149
+ console.log(`wrote ${filePath} (${Buffer.byteLength(content)} bytes)`);
150
+ printHint(`verify with: nebula fs cat ${filePath}`, values);
151
+ return EXIT.OK;
152
+ }
153
+ // =============================================================================
154
+ // fs rm
155
+ // =============================================================================
156
+ const RM_HELP = `usage: nebula fs rm <path> --force
157
+
158
+ Deletes a file (or directory) on the server — --force is required.
159
+
160
+ examples:
161
+ nebula fs rm scratch.txt --force`;
162
+ async function fsRm(argv) {
163
+ const { values, positionals } = parse(argv, { force: { type: 'boolean' } });
164
+ if (values.help) {
165
+ console.log(RM_HELP);
166
+ return EXIT.OK;
167
+ }
168
+ const filePath = requirePositional(positionals, 0, 'path', 'nebula fs rm <path> --force');
169
+ if (!values.force) {
170
+ throw new CliError('fs rm deletes server files — pass --force to confirm', EXIT.USAGE);
171
+ }
172
+ const result = await clientFor(values).deleteFile(filePath);
173
+ if (!result.success)
174
+ throw toCliError(result.error);
175
+ if (values.json) {
176
+ printJson({ path: filePath, deleted: true });
177
+ return EXIT.OK;
178
+ }
179
+ console.log(`deleted ${filePath}`);
180
+ return EXIT.OK;
181
+ }
182
+ // =============================================================================
183
+ // fs mv
184
+ // =============================================================================
185
+ const MV_HELP = `usage: nebula fs mv <old-path> <new-path>
186
+
187
+ Renames/moves a file or directory on the server.
188
+
189
+ examples:
190
+ nebula fs mv old.csv archive/old.csv`;
191
+ async function fsMv(argv) {
192
+ const { values, positionals } = parse(argv);
193
+ if (values.help) {
194
+ console.log(MV_HELP);
195
+ return EXIT.OK;
196
+ }
197
+ const usage = 'nebula fs mv <old-path> <new-path>';
198
+ const oldPath = requirePositional(positionals, 0, 'old-path', usage);
199
+ const newPath = requirePositional(positionals, 1, 'new-path', usage);
200
+ const result = await clientFor(values).renameFile(oldPath, newPath);
201
+ if (!result.success)
202
+ throw toCliError(result.error);
203
+ if (values.json) {
204
+ printJson({ from: oldPath, to: newPath, moved: true });
205
+ return EXIT.OK;
206
+ }
207
+ console.log(`moved ${oldPath} -> ${newPath}`);
208
+ return EXIT.OK;
209
+ }
210
+ // =============================================================================
211
+ // fs download
212
+ // =============================================================================
213
+ const DOWNLOAD_HELP = `usage: nebula fs download <server-path> <local-path>
214
+
215
+ Downloads a file from the server to THIS machine (text or binary).
216
+
217
+ examples:
218
+ nebula fs download results/fig1.pdf ./fig1.pdf`;
219
+ async function fsDownload(argv) {
220
+ const { values, positionals } = parse(argv);
221
+ if (values.help) {
222
+ console.log(DOWNLOAD_HELP);
223
+ return EXIT.OK;
224
+ }
225
+ const usage = 'nebula fs download <server-path> <local-path>';
226
+ const serverPath = requirePositional(positionals, 0, 'server-path', usage);
227
+ const localPath = requirePositional(positionals, 1, 'local-path', usage);
228
+ const result = await clientFor(values).downloadFile(serverPath);
229
+ if (!result.success)
230
+ throw toCliError(result.error);
231
+ const target = localPath.endsWith('/') || (fs.existsSync(localPath) && fs.statSync(localPath).isDirectory())
232
+ ? path.join(localPath, path.basename(serverPath))
233
+ : localPath;
234
+ fs.mkdirSync(path.dirname(path.resolve(target)), { recursive: true });
235
+ fs.writeFileSync(target, result.data.content);
236
+ if (values.json) {
237
+ printJson({ from: serverPath, to: target, bytes: result.data.content.length });
238
+ return EXIT.OK;
239
+ }
240
+ console.log(`downloaded ${serverPath} -> ${target} (${result.data.content.length} bytes)`);
241
+ return EXIT.OK;
242
+ }
243
+ // =============================================================================
244
+ // fs upload
245
+ // =============================================================================
246
+ const UPLOAD_HELP = `usage: nebula fs upload <local-path> <server-dir> [--name NAME]
247
+
248
+ Uploads a local file into a directory on the server (text or binary).
249
+
250
+ examples:
251
+ nebula fs upload ./local.csv data/
252
+ nebula fs upload ./local.csv data/ --name renamed.csv`;
253
+ async function fsUpload(argv) {
254
+ const { values, positionals } = parse(argv, { name: { type: 'string' } });
255
+ if (values.help) {
256
+ console.log(UPLOAD_HELP);
257
+ return EXIT.OK;
258
+ }
259
+ const usage = 'nebula fs upload <local-path> <server-dir> [--name NAME]';
260
+ const localPath = requirePositional(positionals, 0, 'local-path', usage);
261
+ const serverDir = requirePositional(positionals, 1, 'server-dir', usage);
262
+ let content;
263
+ try {
264
+ content = fs.readFileSync(localPath);
265
+ }
266
+ catch (e) {
267
+ throw new CliError(`cannot read ${localPath}: ${e instanceof Error ? e.message : String(e)}`, EXIT.USAGE);
268
+ }
269
+ const filename = values.name ?? path.basename(localPath);
270
+ const result = await clientFor(values).uploadFile(serverDir, content, filename);
271
+ if (!result.success)
272
+ throw toCliError(result.error);
273
+ const dest = `${serverDir.replace(/\/+$/, '')}/${filename}`;
274
+ if (values.json) {
275
+ printJson({ from: localPath, to: dest, bytes: content.length });
276
+ return EXIT.OK;
277
+ }
278
+ console.log(`uploaded ${localPath} -> ${dest} (${content.length} bytes)`);
279
+ printHint(`verify with: nebula fs ls ${serverDir}`, values);
280
+ return EXIT.OK;
281
+ }
282
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/cli/fs.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -14,24 +14,28 @@ import { cmdRun } from './run.js';
14
14
  import { cmdKernel } from './kernel.js';
15
15
  import { cmdSession } from './session.js';
16
16
  import { cmdCompute } from './compute.js';
17
+ import { cmdFs } from './fs.js';
17
18
  import { cmdSetupSkill } from './skill.js';
18
19
  const ROOT_HELP = `nebula — work with notebooks on a running Nebula server
19
20
 
20
21
  Server URL required: --url <url> on any command, or export NEBULA_URL.
22
+ Not installed? npx -p nebula-notebook-mcp nebula … (or: npm i -g nebula-notebook-mcp)
21
23
 
22
24
  usage: nebula <command> …
23
25
 
24
- nb read <path> list cells (--cells, --outputs, --full)
25
- nb edit <path> <cell-id> … update a cell (OCC-checked; conflict → exit 9)
26
- nb insert <path> --index N … insert a cell
27
- nb delete <path> <cell-id> delete a cell
28
- nb search <path> <query> search cell sources (--limit)
26
+ nb read|edit|insert|delete|search <path>
27
+ cells: read/OCC-checked edit (conflict → exit 9)/
28
+ insert/delete/search see 'nebula nb --help'
29
+ nb create|move|duplicate|clear-outputs|clear|meta <path>
30
+ create notebooks, reorder/copy cells, outputs, metadata
29
31
  run <path> <cell-id> execute a cell + print output tail (--tail)
30
- kernel status|restart|interrupt <path>
32
+ kernel ls available kernels on the server
33
+ kernel status|start|stop|restart|interrupt <path>
31
34
  session start|end <path> hold/release the agent lock across invocations
32
35
  compute status|queues|alloc|ls|use|cancel
33
- cluster compute allocations (HPC; optional
34
- absent unless the server has a scheduler)
36
+ cluster compute allocations (HPC; optional)
37
+ fs ls|cat|write|rm|mv|download|upload
38
+ SERVER files (remote agents; in a Nebula terminal use the shell)
35
39
  setup-skill install the Claude Code skill (for agents outside Nebula terminals)
36
40
 
37
41
  Every command accepts --json (raw output) and --quiet (no hint line).
@@ -53,6 +57,8 @@ async function main(argv) {
53
57
  return cmdSession(rest);
54
58
  case 'compute':
55
59
  return cmdCompute(rest);
60
+ case 'fs':
61
+ return cmdFs(rest);
56
62
  case 'setup-skill':
57
63
  return cmdSetupSkill(rest);
58
64
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;4CAoB0B,CAAC;AAE7C,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,IAAI;YACP,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7B;YACE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,OAAO,IAAI,CAAC,CAAC;QACb,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB,IAAI,CAAC,MAAM,CAAC;KACZ,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IACpB,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/cli/kernel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB/D"}
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/cli/kernel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC/D"}
@@ -5,10 +5,15 @@
5
5
  * MCP kernel tools, but addressed by notebook path per invocation).
6
6
  */
7
7
  import { CliError, EXIT, makeClient, parse, printHint, printJson, requirePositional, resolveUrl, toCliError, } from './shared.js';
8
- const KERNEL_HELP = `usage: nebula kernel <status|restart|interrupt> <path>
8
+ const KERNEL_HELP = `usage: nebula kernel <status|start|stop|restart|interrupt> <path>
9
+ nebula kernel ls
9
10
 
10
11
  examples:
12
+ nebula kernel ls # available kernels on the server
11
13
  nebula kernel status analysis.ipynb # session id, kernel, state
14
+ nebula kernel start analysis.ipynb # start (kernel from notebook metadata)
15
+ nebula kernel start analysis.ipynb --name ir
16
+ nebula kernel stop analysis.ipynb # shut the session down
12
17
  nebula kernel interrupt analysis.ipynb # stop the running cell
13
18
  nebula kernel restart analysis.ipynb # fresh kernel (variables cleared)
14
19
 
@@ -19,17 +24,25 @@ export async function cmdKernel(argv) {
19
24
  console.log(KERNEL_HELP);
20
25
  return sub === undefined ? EXIT.USAGE : EXIT.OK;
21
26
  }
22
- const { values, positionals } = parse(rest);
27
+ const { values, positionals } = parse(rest, { name: { type: 'string' } });
23
28
  if (values.help) {
24
29
  console.log(KERNEL_HELP);
25
30
  return EXIT.OK;
26
31
  }
32
+ // Path-less subcommands
33
+ if (sub === 'ls') {
34
+ return kernelLs(makeClient(resolveUrl(values.url)), values);
35
+ }
27
36
  const nbPath = requirePositional(positionals, 0, 'path', `nebula kernel ${sub} <path>`);
28
37
  const url = resolveUrl(values.url);
29
38
  const client = makeClient(url, nbPath);
30
39
  switch (sub) {
31
40
  case 'status':
32
41
  return kernelStatus(client, nbPath, values);
42
+ case 'start':
43
+ return kernelStart(client, nbPath, values);
44
+ case 'stop':
45
+ return kernelStop(client, nbPath, values);
33
46
  case 'restart':
34
47
  return kernelRestart(client, nbPath, values);
35
48
  case 'interrupt':
@@ -38,6 +51,56 @@ export async function cmdKernel(argv) {
38
51
  throw new CliError(`unknown kernel subcommand: ${sub}`, EXIT.USAGE, "run 'nebula kernel --help' for the list");
39
52
  }
40
53
  }
54
+ async function kernelLs(client, values) {
55
+ const result = await client.listKernels();
56
+ if (!result.success)
57
+ throw toCliError(result.error);
58
+ const kernels = result.data ?? [];
59
+ if (values.json) {
60
+ printJson(kernels);
61
+ return EXIT.OK;
62
+ }
63
+ if (kernels.length === 0) {
64
+ console.log('no kernels discovered on the server');
65
+ return EXIT.OK;
66
+ }
67
+ const nameWidth = Math.max(...kernels.map((k) => k.name.length), 4);
68
+ console.log(`${'NAME'.padEnd(nameWidth)} LANGUAGE DISPLAY NAME`);
69
+ for (const k of kernels) {
70
+ console.log(`${k.name.padEnd(nameWidth)} ${(k.language || '-').padEnd(8)} ${k.displayName}`);
71
+ }
72
+ printHint('start one for a notebook with: nebula kernel start <path> --name <NAME>', values);
73
+ return EXIT.OK;
74
+ }
75
+ async function kernelStart(client, nbPath, values) {
76
+ // No --name → the server resolves the kernel from the notebook's kernelspec.
77
+ const started = await client.getOrCreateKernelForFile(nbPath, values.name);
78
+ if (!started.success)
79
+ throw toCliError(started.error, nbPath);
80
+ if (values.json) {
81
+ printJson({ sessionId: started.data.sessionId, kernelName: started.data.kernelName });
82
+ return EXIT.OK;
83
+ }
84
+ console.log(`kernel session: ${started.data.sessionId} (${started.data.kernelName})`);
85
+ printHint(`execute a cell with: nebula run ${nbPath} <cell-id>`, values);
86
+ return EXIT.OK;
87
+ }
88
+ async function kernelStop(client, nbPath, values) {
89
+ const session = await client.resolveKernelSessionIdForNotebook(nbPath, { createIfMissing: false });
90
+ if (!session.success) {
91
+ throw new CliError(`no kernel session for ${nbPath}`, EXIT.KERNEL);
92
+ }
93
+ const result = await client.shutdownKernel(session.data.sessionId);
94
+ if (!result.success)
95
+ throw toCliError(result.error, nbPath);
96
+ if (values.json) {
97
+ printJson({ stopped: true, sessionId: session.data.sessionId });
98
+ return EXIT.OK;
99
+ }
100
+ console.log('kernel stopped');
101
+ printHint(`start a fresh one with: nebula kernel start ${nbPath}`, values);
102
+ return EXIT.OK;
103
+ }
41
104
  async function kernelStatus(client, nbPath, values) {
42
105
  const sessions = await client.listSessions();
43
106
  if (!sessions.success)
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/cli/kernel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,UAAU,GAEX,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,GAAG;;;;;;;6DAOyC,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;IACxF,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEvC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD;YACE,MAAM,IAAI,QAAQ,CAAC,8BAA8B,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAC;IACnH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAoB,EAAE,MAAc,EAAE,MAA4B;IAC5F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAChB,yBAAyB,MAAM,EAAE,EACjC,IAAI,CAAC,MAAM,EACX,2CAA2C,MAAM,YAAY,CAC9D,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE9C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,SAAS,CAAC,qCAAqC,MAAM,8CAA8C,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IACrH,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAoB,EAAE,MAAc,EAAE,MAA4B;IAC7F,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACpG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAK,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE9D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,IAAK,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,IAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACzG,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,IAAK,CAAC,SAAS,KAAK,OAAO,CAAC,IAAK,CAAC,UAAU,GAAG,CAAC,CAAC;IAC1F,SAAS,CAAC,mEAAmE,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAoB,EAAE,MAAc,EAAE,MAA4B;IAC/F,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACnG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,yBAAyB,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAK,CAAC,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,IAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,SAAS,CAAC,0CAA0C,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/cli/kernel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nb.d.ts","sourceRoot":"","sources":["../../src/cli/nb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuCH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB3D"}
1
+ {"version":3,"file":"nb.d.ts","sourceRoot":"","sources":["../../src/cli/nb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4CH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC3D"}