nebula-notebook-mcp 0.1.0 → 0.3.0

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.
Files changed (62) hide show
  1. package/bin/nebula +5 -0
  2. package/bin/nebula.js +4 -0
  3. package/dist/cli/compute.d.ts +11 -0
  4. package/dist/cli/compute.d.ts.map +1 -0
  5. package/dist/cli/compute.js +405 -0
  6. package/dist/cli/compute.js.map +1 -0
  7. package/dist/cli/index.d.ts +12 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +87 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/kernel.d.ts +8 -0
  12. package/dist/cli/kernel.d.ts.map +1 -0
  13. package/dist/cli/kernel.js +102 -0
  14. package/dist/cli/kernel.js.map +1 -0
  15. package/dist/cli/nb.d.ts +8 -0
  16. package/dist/cli/nb.d.ts.map +1 -0
  17. package/dist/cli/nb.js +331 -0
  18. package/dist/cli/nb.js.map +1 -0
  19. package/dist/cli/run.d.ts +7 -0
  20. package/dist/cli/run.d.ts.map +1 -0
  21. package/dist/cli/run.js +120 -0
  22. package/dist/cli/run.js.map +1 -0
  23. package/dist/cli/session.d.ts +10 -0
  24. package/dist/cli/session.d.ts.map +1 -0
  25. package/dist/cli/session.js +111 -0
  26. package/dist/cli/session.js.map +1 -0
  27. package/dist/cli/shared.d.ts +67 -0
  28. package/dist/cli/shared.d.ts.map +1 -0
  29. package/dist/cli/shared.js +213 -0
  30. package/dist/cli/shared.js.map +1 -0
  31. package/dist/cli/skill.d.ts +12 -0
  32. package/dist/cli/skill.d.ts.map +1 -0
  33. package/dist/cli/skill.js +176 -0
  34. package/dist/cli/skill.js.map +1 -0
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +4 -2
  38. package/dist/index.js.map +1 -1
  39. package/dist/notebook/client.d.ts +127 -3
  40. package/dist/notebook/client.d.ts.map +1 -1
  41. package/dist/notebook/client.js +64 -4
  42. package/dist/notebook/client.js.map +1 -1
  43. package/dist/tools/compute.d.ts +62 -0
  44. package/dist/tools/compute.d.ts.map +1 -0
  45. package/dist/tools/compute.js +307 -0
  46. package/dist/tools/compute.js.map +1 -0
  47. package/dist/tools/files.js +1 -1
  48. package/dist/tools/files.js.map +1 -1
  49. package/dist/tools/index.d.ts +8 -0
  50. package/dist/tools/index.d.ts.map +1 -1
  51. package/dist/tools/index.js +9 -1
  52. package/dist/tools/index.js.map +1 -1
  53. package/dist/tools/notebook.d.ts +1 -0
  54. package/dist/tools/notebook.d.ts.map +1 -1
  55. package/dist/tools/notebook.js +12 -4
  56. package/dist/tools/notebook.js.map +1 -1
  57. package/dist/types.d.ts +6 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/utils/imageResize.d.ts.map +1 -1
  60. package/dist/utils/imageResize.js +18 -1
  61. package/dist/utils/imageResize.js.map +1 -1
  62. package/package.json +3 -2
package/bin/nebula ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bash
2
+ # Extensionless launcher so `nebula` resolves via PATH (e.g. in Nebula's
3
+ # built-in terminals, where this bin dir is prepended to PATH). npm installs
4
+ # get the name via the package.json bin map instead.
5
+ exec node "$(dirname "$0")/nebula.js" "$@"
package/bin/nebula.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ // Agent-facing CLI for Nebula Notebook — thin shim over the compiled CLI.
3
+ // Run `nebula --help` for the command list; requires NEBULA_URL or --url.
4
+ await import('../dist/cli/index.js');
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `nebula compute …` — scheduler-backed compute allocations (HPC clusters).
3
+ *
4
+ * Detection-gated: servers without a scheduler (laptops, plain workstations)
5
+ * report enabled=false and every other subcommand fails fast with a clear
6
+ * message. Same AXI conventions as the rest of the CLI: --json/--quiet,
7
+ * one hint line, `--wait` FOLLOWS the allocation internally (the agent never
8
+ * writes its own poll loop — the process exiting is the signal).
9
+ */
10
+ export declare function cmdCompute(argv: string[]): Promise<number>;
11
+ //# sourceMappingURL=compute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../src/cli/compute.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+DH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBhE"}
@@ -0,0 +1,405 @@
1
+ /**
2
+ * `nebula compute …` — scheduler-backed compute allocations (HPC clusters).
3
+ *
4
+ * Detection-gated: servers without a scheduler (laptops, plain workstations)
5
+ * report enabled=false and every other subcommand fails fast with a clear
6
+ * message. Same AXI conventions as the rest of the CLI: --json/--quiet,
7
+ * one hint line, `--wait` FOLLOWS the allocation internally (the agent never
8
+ * writes its own poll loop — the process exiting is the signal).
9
+ */
10
+ import { CliError, EXIT, makeClient, parse, parseIntFlag, printHint, printJson, requirePositional, resolveUrl, toCliError, } from './shared.js';
11
+ const COMPUTE_HELP = `usage: nebula compute <status|queues|alloc|ls|use|cancel> …
12
+
13
+ Scheduler-backed compute (HPC clusters). Optional: servers without a
14
+ scheduler report "no scheduler on this server" — check status first.
15
+
16
+ compute status scheduler present? enabled?
17
+ compute queues partitions + QoS + idle CPUs/GPUs + backlog
18
+ compute alloc --partition P [...] request an allocation
19
+ [--qos Q] [--cpus N] [--mem GB] [--gpus N] [--gpu-type T]
20
+ [--walltime H] [--name NAME] [--idle-timeout MIN] [--wait] [--max-wait S]
21
+ --idle-timeout MIN auto-ends the allocation after MIN minutes with no
22
+ kernel or terminal activity (the node's server exits itself) — a safety
23
+ net against forgotten allocations; recommended for agent-created ones.
24
+ --wait BLOCKS until the allocation is active (internal polling; run it
25
+ as a background shell task for long queue waits). Exit 1 on failure,
26
+ exit 3 if --max-wait (default 3600s) expires while still queued.
27
+ compute ls list allocations
28
+ compute use <alloc-id|name> <notebook-path>
29
+ bind the notebook's kernels to the
30
+ allocation's server (must be active);
31
+ after this, nebula run executes there
32
+ compute cancel <id> cancel an allocation (frees the nodes)
33
+
34
+ Etiquette: allocations consume real cluster resources — request modest sizes,
35
+ cancel what you created when done, never cancel allocations you didn't create,
36
+ and add --idle-timeout 60 as a safety net in case you forget.
37
+
38
+ examples:
39
+ nebula compute queues
40
+ nebula compute alloc --partition gpu --gpus 1 --walltime 2 --idle-timeout 60 --wait
41
+ nebula compute use a1b2c3d4 analysis.ipynb
42
+ nebula compute cancel a1b2c3d4`;
43
+ /** --wait polling: starts quick, backs off to ~5s (same philosophy as nebula run). */
44
+ const POLL_START_MS = 1_000;
45
+ const POLL_MAX_MS = 5_000;
46
+ const TERMINAL_STATES = new Set(['ended', 'failed', 'cancelled']);
47
+ function sleep(ms) {
48
+ return new Promise((resolve) => setTimeout(resolve, ms));
49
+ }
50
+ export async function cmdCompute(argv) {
51
+ const [sub, ...rest] = argv;
52
+ if (sub === undefined || sub === '--help' || sub === '-h') {
53
+ console.log(COMPUTE_HELP);
54
+ return sub === undefined ? EXIT.USAGE : EXIT.OK;
55
+ }
56
+ switch (sub) {
57
+ case 'status':
58
+ return computeStatus(rest);
59
+ case 'queues':
60
+ return computeQueues(rest);
61
+ case 'alloc':
62
+ return computeAlloc(rest);
63
+ case 'ls':
64
+ return computeLs(rest);
65
+ case 'use':
66
+ return computeUse(rest);
67
+ case 'cancel':
68
+ return computeCancel(rest);
69
+ default:
70
+ throw new CliError(`unknown compute subcommand: ${sub}`, EXIT.USAGE, "run 'nebula compute --help' for the list");
71
+ }
72
+ }
73
+ function noScheduler() {
74
+ return new CliError('no scheduler on this server — compute allocations are unavailable', EXIT.ERROR, 'kernels run directly on the server; check availability with: nebula compute status');
75
+ }
76
+ // =============================================================================
77
+ // compute status
78
+ // =============================================================================
79
+ async function computeStatus(argv) {
80
+ const { values } = parse(argv);
81
+ if (values.help) {
82
+ console.log(COMPUTE_HELP);
83
+ return EXIT.OK;
84
+ }
85
+ const client = makeClient(resolveUrl(values.url));
86
+ const result = await client.computeStatus();
87
+ if (!result.success)
88
+ throw toCliError(result.error);
89
+ const { enabled, scheduler } = result.data;
90
+ if (values.json) {
91
+ printJson(result.data);
92
+ return EXIT.OK;
93
+ }
94
+ console.log(`enabled: ${enabled}`);
95
+ console.log(`scheduler: ${scheduler ?? '-'}`);
96
+ if (enabled) {
97
+ printHint('see partitions and load with: nebula compute queues', values);
98
+ }
99
+ else {
100
+ printHint('no scheduler here — notebooks execute directly on this server', values);
101
+ }
102
+ return EXIT.OK;
103
+ }
104
+ // =============================================================================
105
+ // compute queues
106
+ // =============================================================================
107
+ function pad(s, w) {
108
+ return s.length >= w ? s : s + ' '.repeat(w - s.length);
109
+ }
110
+ function table(rows) {
111
+ if (rows.length === 0)
112
+ return [];
113
+ const widths = rows[0].map((_, col) => Math.max(...rows.map((r) => (r[col] ?? '').length)));
114
+ return rows.map((r) => r.map((cell, col) => pad(cell ?? '', widths[col])).join(' ').trimEnd());
115
+ }
116
+ async function computeQueues(argv) {
117
+ const { values } = parse(argv);
118
+ if (values.help) {
119
+ console.log(COMPUTE_HELP);
120
+ return EXIT.OK;
121
+ }
122
+ const client = makeClient(resolveUrl(values.url));
123
+ const result = await client.listPartitions();
124
+ if (!result.success)
125
+ throw toCliError(result.error);
126
+ const data = result.data;
127
+ if (!data.enabled)
128
+ throw noScheduler();
129
+ if (values.json) {
130
+ printJson(data);
131
+ return EXIT.OK;
132
+ }
133
+ const allowed = new Set(data.associations?.partitions ?? []);
134
+ const partitions = data.load?.partitions ?? [];
135
+ const rows = [
136
+ ['PARTITION', 'STATE', 'TIMELIMIT', 'CPUS idle/tot', 'GPUS idle/tot (type)', 'PENDING', 'RUNNING'],
137
+ ];
138
+ for (const p of partitions) {
139
+ rows.push([
140
+ p.name + (allowed.size > 0 && !allowed.has(p.name) ? ' *' : ''),
141
+ p.up ? 'up' : 'down',
142
+ p.timeLimit,
143
+ `${p.cpus.idle}/${p.cpus.total}`,
144
+ p.gpus ? `${p.gpus.idle}/${p.gpus.total} (${p.gpus.type})` : '-',
145
+ String(p.jobs.pending),
146
+ String(p.jobs.running),
147
+ ]);
148
+ }
149
+ for (const line of table(rows))
150
+ console.log(line);
151
+ if (allowed.size > 0 && partitions.some((p) => !allowed.has(p.name))) {
152
+ console.log('(* = you cannot submit to this partition)');
153
+ }
154
+ const qoses = data.load?.qoses ?? [];
155
+ if (qoses.length > 0) {
156
+ console.log('');
157
+ const qosRows = [['QOS', 'PRIORITY', 'MAX WALL', 'PREEMPTIBLE', 'PENDING', 'RUNNING']];
158
+ for (const q of qoses) {
159
+ qosRows.push([
160
+ q.name + (q.name === data.associations?.defaultQos ? ' (default)' : ''),
161
+ String(q.priority),
162
+ q.maxWall ?? '-',
163
+ q.preemptible ? 'yes' : 'no',
164
+ String(q.jobs.pending),
165
+ String(q.jobs.running),
166
+ ]);
167
+ }
168
+ for (const line of table(qosRows))
169
+ console.log(line);
170
+ }
171
+ printHint('request one with: nebula compute alloc --partition <P> [--wait]', values);
172
+ return EXIT.OK;
173
+ }
174
+ // =============================================================================
175
+ // compute alloc
176
+ // =============================================================================
177
+ async function computeAlloc(argv) {
178
+ const { values } = parse(argv, {
179
+ partition: { type: 'string' },
180
+ qos: { type: 'string' },
181
+ cpus: { type: 'string' },
182
+ mem: { type: 'string' },
183
+ gpus: { type: 'string' },
184
+ 'gpu-type': { type: 'string' },
185
+ walltime: { type: 'string' },
186
+ name: { type: 'string' },
187
+ 'idle-timeout': { type: 'string' },
188
+ wait: { type: 'boolean' },
189
+ 'max-wait': { type: 'string' },
190
+ });
191
+ if (values.help) {
192
+ console.log(COMPUTE_HELP);
193
+ return EXIT.OK;
194
+ }
195
+ const partition = typeof values.partition === 'string' ? values.partition : '';
196
+ if (!partition) {
197
+ throw new CliError('--partition is required', EXIT.USAGE, 'see available partitions with: nebula compute queues');
198
+ }
199
+ const spec = { partition };
200
+ if (typeof values.qos === 'string')
201
+ spec.qos = values.qos;
202
+ if (values.cpus !== undefined)
203
+ spec.cpus = parseIntFlag(values.cpus, '--cpus', 1);
204
+ if (values.mem !== undefined)
205
+ spec.memGb = parseIntFlag(values.mem, '--mem', 4);
206
+ if (values.gpus !== undefined)
207
+ spec.gpus = parseIntFlag(values.gpus, '--gpus', 0);
208
+ if (typeof values['gpu-type'] === 'string')
209
+ spec.gpuType = values['gpu-type'];
210
+ if (values.walltime !== undefined) {
211
+ const hours = Number(values.walltime);
212
+ if (Number.isNaN(hours) || hours <= 0) {
213
+ throw new CliError(`--walltime must be a positive number of hours, got "${String(values.walltime)}"`, EXIT.USAGE);
214
+ }
215
+ spec.walltimeMinutes = Math.round(hours * 60);
216
+ }
217
+ if (typeof values.name === 'string')
218
+ spec.jobName = values.name;
219
+ if (values['idle-timeout'] !== undefined) {
220
+ const minutes = parseIntFlag(values['idle-timeout'], '--idle-timeout', 60);
221
+ if (minutes <= 0) {
222
+ throw new CliError(`--idle-timeout must be a positive number of minutes, got "${String(values['idle-timeout'])}"`, EXIT.USAGE);
223
+ }
224
+ spec.idleTimeoutMinutes = minutes;
225
+ }
226
+ const maxWait = parseIntFlag(values['max-wait'], '--max-wait', 3600);
227
+ const client = makeClient(resolveUrl(values.url));
228
+ // Fail fast with a friendly message when the server has no scheduler.
229
+ const status = await client.computeStatus();
230
+ if (status.success && !status.data.enabled)
231
+ throw noScheduler();
232
+ const created = await client.createAllocation(spec);
233
+ if (!created.success)
234
+ throw toCliError(created.error);
235
+ let alloc = created.data;
236
+ if (!values.wait) {
237
+ if (values.json) {
238
+ printJson(alloc);
239
+ return EXIT.OK;
240
+ }
241
+ console.log(`allocation: ${alloc.id}`);
242
+ console.log(`state: ${alloc.state}`);
243
+ printHint(`follow with: nebula compute ls; when active: nebula compute use ${alloc.id} <notebook.ipynb>`, values);
244
+ return EXIT.OK;
245
+ }
246
+ // --wait: FOLLOW the allocation until active or terminal. Internal polling
247
+ // only — launch as a background shell task; process exit is the signal.
248
+ const deadline = maxWait <= 0 ? Number.POSITIVE_INFINITY : Date.now() + maxWait * 1000;
249
+ let pollMs = POLL_START_MS;
250
+ while (alloc.state !== 'active' && !TERMINAL_STATES.has(alloc.state) && Date.now() < deadline) {
251
+ await sleep(Math.min(pollMs, Math.max(0, deadline - Date.now())));
252
+ pollMs = Math.min(pollMs * 1.5, POLL_MAX_MS);
253
+ try {
254
+ const list = await client.listAllocations();
255
+ if (list.success) {
256
+ const found = list.data.find((a) => a.id === alloc.id);
257
+ if (found)
258
+ alloc = found;
259
+ }
260
+ }
261
+ catch {
262
+ // transient network blip — keep following
263
+ }
264
+ }
265
+ if (values.json) {
266
+ printJson(alloc);
267
+ return alloc.state === 'active' ? EXIT.OK : TERMINAL_STATES.has(alloc.state) ? EXIT.ERROR : EXIT.RUNNING;
268
+ }
269
+ console.log(`allocation: ${alloc.id}`);
270
+ console.log(`state: ${alloc.state}`);
271
+ if (alloc.state === 'active') {
272
+ console.log(`server: ${alloc.serverId}`);
273
+ console.log(`node: ${alloc.nodes?.join(',') || '-'}`);
274
+ printHint(`bind a notebook to it with: nebula compute use ${alloc.id} <notebook.ipynb>`, values);
275
+ return EXIT.OK;
276
+ }
277
+ if (TERMINAL_STATES.has(alloc.state)) {
278
+ console.error(`error: allocation ${alloc.id} ${alloc.state}${alloc.reason ? ` (${alloc.reason})` : ''}`);
279
+ return EXIT.ERROR;
280
+ }
281
+ printHint(`still ${alloc.state} after ${maxWait}s (exit 3); keep following with: nebula compute ls`, values);
282
+ return EXIT.RUNNING;
283
+ }
284
+ // =============================================================================
285
+ // compute ls
286
+ // =============================================================================
287
+ async function computeLs(argv) {
288
+ const { values } = parse(argv);
289
+ if (values.help) {
290
+ console.log(COMPUTE_HELP);
291
+ return EXIT.OK;
292
+ }
293
+ const client = makeClient(resolveUrl(values.url));
294
+ const result = await client.listAllocations();
295
+ if (!result.success)
296
+ throw toCliError(result.error);
297
+ const allocations = result.data;
298
+ if (values.json) {
299
+ printJson(allocations);
300
+ return EXIT.OK;
301
+ }
302
+ if (allocations.length === 0) {
303
+ console.log('(no allocations)');
304
+ printHint('request one with: nebula compute alloc --partition <P> --wait', values);
305
+ return EXIT.OK;
306
+ }
307
+ const rows = [['ID', 'STATE', 'PARTITION', 'QOS', 'CPUS', 'MEM', 'GPUS', 'NODE', 'NAME']];
308
+ for (const a of allocations) {
309
+ rows.push([
310
+ a.id,
311
+ a.state,
312
+ a.spec.partition,
313
+ a.spec.qos ?? '-',
314
+ String(a.spec.cpus),
315
+ `${a.spec.memGb}G`,
316
+ a.spec.gpus ? `${a.spec.gpus}${a.spec.gpuType ? ` (${a.spec.gpuType})` : ''}` : '-',
317
+ a.nodes?.join(',') || '-',
318
+ a.spec.jobName,
319
+ ]);
320
+ }
321
+ for (const line of table(rows))
322
+ console.log(line);
323
+ printHint('bind a notebook to an active one: nebula compute use <id> <notebook.ipynb>', values);
324
+ return EXIT.OK;
325
+ }
326
+ // =============================================================================
327
+ // compute use
328
+ // =============================================================================
329
+ async function findAllocation(client, idOrName) {
330
+ const result = await client.listAllocations();
331
+ if (!result.success)
332
+ throw toCliError(result.error);
333
+ const allocations = result.data;
334
+ const found = allocations.find((a) => a.id === idOrName) ??
335
+ allocations.find((a) => a.spec.jobName === idOrName);
336
+ if (!found) {
337
+ throw new CliError(`allocation not found: ${idOrName}`, EXIT.ERROR, 'list allocations with: nebula compute ls');
338
+ }
339
+ return found;
340
+ }
341
+ async function computeUse(argv) {
342
+ const { values, positionals } = parse(argv, {
343
+ kernel: { type: 'string' },
344
+ });
345
+ if (values.help) {
346
+ console.log(COMPUTE_HELP);
347
+ return EXIT.OK;
348
+ }
349
+ const usage = 'nebula compute use <alloc-id|name> <notebook-path>';
350
+ const idOrName = requirePositional(positionals, 0, 'alloc-id|name', usage);
351
+ const nbPath = requirePositional(positionals, 1, 'notebook-path', usage);
352
+ const url = resolveUrl(values.url);
353
+ const client = makeClient(url, nbPath);
354
+ const alloc = await findAllocation(client, idOrName);
355
+ if (alloc.state !== 'active' || !alloc.serverId) {
356
+ throw new CliError(`allocation ${alloc.id} is not active (state: ${alloc.state}) — kernels need an active allocation`, EXIT.ERROR, alloc.state === 'pending' || alloc.state === 'running'
357
+ ? `it is still coming up; check with: nebula compute ls`
358
+ : `request a new one with: nebula compute alloc --partition ${alloc.spec.partition} --wait`);
359
+ }
360
+ const kernelName = typeof values.kernel === 'string' ? values.kernel : undefined;
361
+ const bound = await client.getOrCreateKernelForFile(nbPath, kernelName, alloc.serverId);
362
+ if (!bound.success)
363
+ throw toCliError(bound.error, nbPath);
364
+ if (values.json) {
365
+ printJson({
366
+ allocationId: alloc.id,
367
+ serverId: alloc.serverId,
368
+ sessionId: bound.data.sessionId,
369
+ kernelName: bound.data.kernelName,
370
+ path: nbPath,
371
+ });
372
+ return EXIT.OK;
373
+ }
374
+ console.log(`bound: ${nbPath} → allocation ${alloc.id} (server ${alloc.serverId})`);
375
+ console.log(`session: ${bound.data.sessionId} (${bound.data.kernelName})`);
376
+ printHint(`nebula run ${nbPath} <cell-id> now executes on the allocation; cancel it when done: nebula compute cancel ${alloc.id}`, values);
377
+ return EXIT.OK;
378
+ }
379
+ // =============================================================================
380
+ // compute cancel
381
+ // =============================================================================
382
+ async function computeCancel(argv) {
383
+ const { values, positionals } = parse(argv);
384
+ if (values.help) {
385
+ console.log(COMPUTE_HELP);
386
+ return EXIT.OK;
387
+ }
388
+ const id = requirePositional(positionals, 0, 'id', 'nebula compute cancel <id>');
389
+ const client = makeClient(resolveUrl(values.url));
390
+ const result = await client.cancelAllocation(id);
391
+ if (!result.success) {
392
+ if (/not found/i.test(result.error ?? '')) {
393
+ throw new CliError(`allocation not found: ${id}`, EXIT.ERROR, 'list allocations with: nebula compute ls');
394
+ }
395
+ throw toCliError(result.error);
396
+ }
397
+ if (values.json) {
398
+ printJson({ cancelled: true, id });
399
+ return EXIT.OK;
400
+ }
401
+ console.log(`cancelled: ${id}`);
402
+ printHint('notebooks bound to it fall back to a new kernel on next use', values);
403
+ return EXIT.OK;
404
+ }
405
+ //# sourceMappingURL=compute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.js","sourceRoot":"","sources":["../../src/cli/compute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * nebula — agent-facing CLI for Nebula Notebook.
3
+ *
4
+ * A thin layer over the shared NebulaClient / tools code (the same code the
5
+ * MCP server uses). Design follows AXI (https://axi.md): compact plain-text
6
+ * output, combined operations, one contextual hint per command, --json for
7
+ * raw output, distinct exit codes.
8
+ *
9
+ * Exit codes: 0 ok · 1 error · 2 usage · 7 kernel dead/not-found · 9 OCC conflict
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * nebula — agent-facing CLI for Nebula Notebook.
3
+ *
4
+ * A thin layer over the shared NebulaClient / tools code (the same code the
5
+ * MCP server uses). Design follows AXI (https://axi.md): compact plain-text
6
+ * output, combined operations, one contextual hint per command, --json for
7
+ * raw output, distinct exit codes.
8
+ *
9
+ * Exit codes: 0 ok · 1 error · 2 usage · 7 kernel dead/not-found · 9 OCC conflict
10
+ */
11
+ import { CliError, EXIT } from './shared.js';
12
+ import { cmdNb } from './nb.js';
13
+ import { cmdRun } from './run.js';
14
+ import { cmdKernel } from './kernel.js';
15
+ import { cmdSession } from './session.js';
16
+ import { cmdCompute } from './compute.js';
17
+ import { cmdSetupSkill } from './skill.js';
18
+ const ROOT_HELP = `nebula — work with notebooks on a running Nebula server
19
+
20
+ Server URL required: --url <url> on any command, or export NEBULA_URL.
21
+
22
+ usage: nebula <command> …
23
+
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)
29
+ run <path> <cell-id> execute a cell + print output tail (--tail)
30
+ kernel status|restart|interrupt <path>
31
+ session start|end <path> hold/release the agent lock across invocations
32
+ compute status|queues|alloc|ls|use|cancel
33
+ cluster compute allocations (HPC; optional —
34
+ absent unless the server has a scheduler)
35
+ setup-skill install the Claude Code skill (for agents outside Nebula terminals)
36
+
37
+ Every command accepts --json (raw output) and --quiet (no hint line).
38
+ Run 'nebula <command> --help' for examples.`;
39
+ async function main(argv) {
40
+ const [cmd, ...rest] = argv;
41
+ if (cmd === undefined || cmd === '--help' || cmd === '-h' || cmd === 'help') {
42
+ console.log(ROOT_HELP);
43
+ return EXIT.OK;
44
+ }
45
+ switch (cmd) {
46
+ case 'nb':
47
+ return cmdNb(rest);
48
+ case 'run':
49
+ return cmdRun(rest);
50
+ case 'kernel':
51
+ return cmdKernel(rest);
52
+ case 'session':
53
+ return cmdSession(rest);
54
+ case 'compute':
55
+ return cmdCompute(rest);
56
+ case 'setup-skill':
57
+ return cmdSetupSkill(rest);
58
+ default:
59
+ throw new CliError(`unknown command: ${cmd}`, EXIT.USAGE, "run 'nebula --help' for the command list");
60
+ }
61
+ }
62
+ /** Exit only after stdout/stderr are flushed (they can be async on pipes). */
63
+ function finish(code) {
64
+ let pending = 2;
65
+ const done = () => {
66
+ pending -= 1;
67
+ if (pending === 0)
68
+ process.exit(code);
69
+ };
70
+ process.stdout.write('', done);
71
+ process.stderr.write('', done);
72
+ }
73
+ main(process.argv.slice(2))
74
+ .then(finish)
75
+ .catch((e) => {
76
+ if (e instanceof CliError) {
77
+ console.error(`error: ${e.message}`);
78
+ if (e.hintText)
79
+ console.error(`hint: ${e.hintText}`);
80
+ finish(e.code);
81
+ }
82
+ else {
83
+ console.error(`error: ${e instanceof Error ? e.message : String(e)}`);
84
+ finish(EXIT.ERROR);
85
+ }
86
+ });
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `nebula kernel …` — kernel status / restart / interrupt for a notebook.
3
+ *
4
+ * Uses the shared NebulaClient kernel-session helpers (same logic as the
5
+ * MCP kernel tools, but addressed by notebook path per invocation).
6
+ */
7
+ export declare function cmdKernel(argv: string[]): Promise<number>;
8
+ //# sourceMappingURL=kernel.d.ts.map
@@ -0,0 +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"}