@ebowwa/sandbox 0.1.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.
Files changed (108) hide show
  1. package/dist/compilers/index.d.ts +24 -0
  2. package/dist/compilers/index.d.ts.map +1 -0
  3. package/dist/compilers/index.js +42 -0
  4. package/dist/compilers/index.js.map +1 -0
  5. package/dist/compilers/javascript.d.ts +117 -0
  6. package/dist/compilers/javascript.d.ts.map +1 -0
  7. package/dist/compilers/javascript.js +462 -0
  8. package/dist/compilers/javascript.js.map +1 -0
  9. package/dist/compilers/python.d.ts +140 -0
  10. package/dist/compilers/python.d.ts.map +1 -0
  11. package/dist/compilers/python.js +650 -0
  12. package/dist/compilers/python.js.map +1 -0
  13. package/dist/compilers/typescript.d.ts +99 -0
  14. package/dist/compilers/typescript.d.ts.map +1 -0
  15. package/dist/compilers/typescript.js +323 -0
  16. package/dist/compilers/typescript.js.map +1 -0
  17. package/dist/core/cell.d.ts +160 -0
  18. package/dist/core/cell.d.ts.map +1 -0
  19. package/dist/core/cell.js +319 -0
  20. package/dist/core/cell.js.map +1 -0
  21. package/dist/core/compiler.d.ts +126 -0
  22. package/dist/core/compiler.d.ts.map +1 -0
  23. package/dist/core/compiler.js +123 -0
  24. package/dist/core/compiler.js.map +1 -0
  25. package/dist/core/index.d.ts +19 -0
  26. package/dist/core/index.d.ts.map +1 -0
  27. package/dist/core/index.js +14 -0
  28. package/dist/core/index.js.map +1 -0
  29. package/dist/core/limits.d.ts +173 -0
  30. package/dist/core/limits.d.ts.map +1 -0
  31. package/dist/core/limits.js +440 -0
  32. package/dist/core/limits.js.map +1 -0
  33. package/dist/core/permissions.d.ts +103 -0
  34. package/dist/core/permissions.d.ts.map +1 -0
  35. package/dist/core/permissions.js +341 -0
  36. package/dist/core/permissions.js.map +1 -0
  37. package/dist/core/runtime.d.ts +127 -0
  38. package/dist/core/runtime.d.ts.map +1 -0
  39. package/dist/core/runtime.js +325 -0
  40. package/dist/core/runtime.js.map +1 -0
  41. package/dist/core/types.d.ts +380 -0
  42. package/dist/core/types.d.ts.map +1 -0
  43. package/dist/core/types.js +67 -0
  44. package/dist/core/types.js.map +1 -0
  45. package/dist/index.d.ts +145 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +279 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/multi/index.d.ts +9 -0
  50. package/dist/multi/index.d.ts.map +1 -0
  51. package/dist/multi/index.js +7 -0
  52. package/dist/multi/index.js.map +1 -0
  53. package/dist/multi/polyglot.d.ts +179 -0
  54. package/dist/multi/polyglot.d.ts.map +1 -0
  55. package/dist/multi/polyglot.js +319 -0
  56. package/dist/multi/polyglot.js.map +1 -0
  57. package/dist/runtimes/docker.d.ts +97 -0
  58. package/dist/runtimes/docker.d.ts.map +1 -0
  59. package/dist/runtimes/docker.js +368 -0
  60. package/dist/runtimes/docker.js.map +1 -0
  61. package/dist/runtimes/index.d.ts +11 -0
  62. package/dist/runtimes/index.d.ts.map +1 -0
  63. package/dist/runtimes/index.js +9 -0
  64. package/dist/runtimes/index.js.map +1 -0
  65. package/dist/runtimes/process.d.ts +47 -0
  66. package/dist/runtimes/process.d.ts.map +1 -0
  67. package/dist/runtimes/process.js +230 -0
  68. package/dist/runtimes/process.js.map +1 -0
  69. package/dist/session/index.d.ts +12 -0
  70. package/dist/session/index.d.ts.map +1 -0
  71. package/dist/session/index.js +9 -0
  72. package/dist/session/index.js.map +1 -0
  73. package/dist/session/kernel.d.ts +199 -0
  74. package/dist/session/kernel.d.ts.map +1 -0
  75. package/dist/session/kernel.js +400 -0
  76. package/dist/session/kernel.js.map +1 -0
  77. package/dist/session/notebook.d.ts +168 -0
  78. package/dist/session/notebook.d.ts.map +1 -0
  79. package/dist/session/notebook.js +499 -0
  80. package/dist/session/notebook.js.map +1 -0
  81. package/dist/session/repl.d.ts +159 -0
  82. package/dist/session/repl.d.ts.map +1 -0
  83. package/dist/session/repl.js +409 -0
  84. package/dist/session/repl.js.map +1 -0
  85. package/package.json +142 -0
  86. package/src/compilers/index.ts +80 -0
  87. package/src/compilers/javascript.ts +571 -0
  88. package/src/compilers/python.ts +785 -0
  89. package/src/compilers/typescript.ts +442 -0
  90. package/src/core/cell.ts +439 -0
  91. package/src/core/compiler.ts +250 -0
  92. package/src/core/index.ts +123 -0
  93. package/src/core/limits.ts +508 -0
  94. package/src/core/permissions.ts +409 -0
  95. package/src/core/runtime.ts +499 -0
  96. package/src/core/types.ts +528 -0
  97. package/src/global.d.ts +59 -0
  98. package/src/index.ts +515 -0
  99. package/src/multi/index.ts +22 -0
  100. package/src/multi/polyglot.ts +461 -0
  101. package/src/runtimes/docker.ts +501 -0
  102. package/src/runtimes/index.ts +21 -0
  103. package/src/runtimes/process.ts +316 -0
  104. package/src/session/index.ts +41 -0
  105. package/src/session/kernel.ts +553 -0
  106. package/src/session/notebook.ts +635 -0
  107. package/src/session/repl.ts +521 -0
  108. package/src/wasm2wasm.d.ts +35 -0
@@ -0,0 +1,499 @@
1
+ /**
2
+ * Notebook Primitive
3
+ *
4
+ * Multi-cell, multi-language document with sequential execution.
5
+ * Jupyter-style notebook with cell dependencies and state sharing.
6
+ */
7
+ import { CellRegistry, CellBuilder } from "../core/cell.js";
8
+ import { BaseKernel, KernelManager } from "./kernel.js";
9
+ import { createPermissions } from "../core/permissions.js";
10
+ import { v4 as uuid } from "uuid";
11
+ /**
12
+ * Base Notebook Implementation
13
+ */
14
+ export class BaseNotebook {
15
+ id;
16
+ metadata;
17
+ registry;
18
+ kernelManager;
19
+ kernelFactory;
20
+ kernels = new Map();
21
+ permissions;
22
+ limits;
23
+ state = "idle";
24
+ executionCount = 0;
25
+ events = {};
26
+ abortController;
27
+ constructor(options) {
28
+ this.id = options.id ?? uuid();
29
+ this.registry = new CellRegistry();
30
+ this.kernelManager = options.kernelManager ?? new KernelManager();
31
+ this.kernelFactory = options.kernelFactory;
32
+ this.permissions = options.permissions ?? {};
33
+ this.limits = options.limits ?? {};
34
+ this.metadata = {
35
+ name: options.name ?? "Untitled",
36
+ language: options.defaultLanguage ?? "javascript",
37
+ created: new Date(),
38
+ modified: new Date(),
39
+ };
40
+ // Add initial cells
41
+ if (options.cells) {
42
+ for (const cell of options.cells) {
43
+ this.addCell(cell);
44
+ }
45
+ }
46
+ }
47
+ /**
48
+ * Get current state
49
+ */
50
+ getState() {
51
+ return this.state;
52
+ }
53
+ /**
54
+ * Set event handlers
55
+ */
56
+ setEvents(events) {
57
+ this.events = { ...this.events, ...events };
58
+ }
59
+ /**
60
+ * Get all cells
61
+ */
62
+ get cells() {
63
+ return this.registry.getAll();
64
+ }
65
+ /**
66
+ * Add cell
67
+ */
68
+ addCell(cell) {
69
+ const executableCell = {
70
+ ...cell,
71
+ id: uuid(),
72
+ state: "idle",
73
+ metadata: {
74
+ ...cell.metadata,
75
+ index: this.registry.count,
76
+ },
77
+ };
78
+ this.registry.add(executableCell);
79
+ this.metadata.modified = new Date();
80
+ return executableCell;
81
+ }
82
+ /**
83
+ * Remove cell
84
+ */
85
+ removeCell(cellId) {
86
+ this.registry.remove(cellId);
87
+ this.metadata.modified = new Date();
88
+ }
89
+ /**
90
+ * Move cell
91
+ */
92
+ moveCell(cellId, newIndex) {
93
+ const cell = this.registry.get(cellId);
94
+ if (!cell)
95
+ return;
96
+ cell.metadata = { ...cell.metadata, index: newIndex };
97
+ this.metadata.modified = new Date();
98
+ }
99
+ /**
100
+ * Get cell by ID
101
+ */
102
+ getCell(cellId) {
103
+ return this.registry.get(cellId);
104
+ }
105
+ /**
106
+ * Update cell source
107
+ */
108
+ updateCell(cellId, source) {
109
+ const cell = this.registry.get(cellId);
110
+ if (!cell)
111
+ return;
112
+ cell.source = source;
113
+ cell.state = "idle"; // Reset state on edit
114
+ cell.result = undefined;
115
+ this.metadata.modified = new Date();
116
+ }
117
+ /**
118
+ * Get or create kernel for language
119
+ */
120
+ async getKernel(language) {
121
+ let kernel = this.kernels.get(language);
122
+ if (!kernel) {
123
+ if (this.kernelFactory) {
124
+ kernel = await this.kernelFactory(language);
125
+ }
126
+ else {
127
+ // Create a basic kernel - would need proper compiler/runtime
128
+ throw new Error(`No kernel available for language: ${language}`);
129
+ }
130
+ this.kernels.set(language, kernel);
131
+ }
132
+ return kernel;
133
+ }
134
+ /**
135
+ * Execute all cells
136
+ */
137
+ async runAll(options) {
138
+ if (this.state === "running") {
139
+ throw new Error("Notebook is already running");
140
+ }
141
+ this.state = "running";
142
+ this.abortController = new AbortController();
143
+ const results = [];
144
+ const executionOrder = this.registry.getExecutionOrder();
145
+ const total = executionOrder.length;
146
+ let completed = 0;
147
+ // Find start index
148
+ let startIndex = 0;
149
+ if (options?.continueFrom) {
150
+ startIndex = executionOrder.indexOf(options.continueFrom);
151
+ if (startIndex === -1)
152
+ startIndex = 0;
153
+ }
154
+ try {
155
+ for (let i = startIndex; i < executionOrder.length; i++) {
156
+ // Check for abort
157
+ if (this.abortController.signal.aborted) {
158
+ this.state = "cancelled";
159
+ break;
160
+ }
161
+ const cellId = executionOrder[i];
162
+ const result = await this.runCell(cellId, {
163
+ signal: this.abortController.signal,
164
+ });
165
+ results.push(result);
166
+ completed++;
167
+ this.events.onProgress?.(completed, total);
168
+ // Stop on error
169
+ if (!result.result.success && options?.stopOnError !== false) {
170
+ this.state = "error";
171
+ break;
172
+ }
173
+ }
174
+ if (this.state === "running") {
175
+ this.state = "idle";
176
+ }
177
+ this.events.onNotebookComplete?.(results);
178
+ return results;
179
+ }
180
+ catch (error) {
181
+ this.state = "error";
182
+ this.events.onNotebookError?.(error instanceof Error ? error : new Error(String(error)));
183
+ throw error;
184
+ }
185
+ }
186
+ /**
187
+ * Execute single cell
188
+ */
189
+ async runCell(cellId, options) {
190
+ const cell = this.registry.get(cellId);
191
+ if (!cell) {
192
+ throw new Error(`Cell not found: ${cellId}`);
193
+ }
194
+ cell.state = "queued";
195
+ this.events.onCellStart?.(cellId, cell);
196
+ try {
197
+ // Get kernel for language
198
+ const kernel = await this.getKernel(cell.language);
199
+ // Execute
200
+ cell.state = "running";
201
+ const result = await kernel.execute(cell.source, options);
202
+ // Update cell
203
+ cell.result = result;
204
+ cell.state = result.success ? "success" : "error";
205
+ cell.executionCount = ++this.executionCount;
206
+ cell.lastRun = new Date();
207
+ this.events.onCellComplete?.(cellId, result);
208
+ return {
209
+ cellId,
210
+ executionCount: cell.executionCount,
211
+ result,
212
+ timestamp: new Date(),
213
+ };
214
+ }
215
+ catch (error) {
216
+ cell.state = "error";
217
+ const err = error instanceof Error ? error : new Error(String(error));
218
+ this.events.onCellError?.(cellId, err);
219
+ const result = {
220
+ success: false,
221
+ error: {
222
+ message: err.message,
223
+ type: "runtime",
224
+ },
225
+ metrics: { duration: 0, memoryUsed: 0 },
226
+ output: { stdout: [], stderr: [], displays: [] },
227
+ };
228
+ cell.result = result;
229
+ return {
230
+ cellId,
231
+ executionCount: ++this.executionCount,
232
+ result,
233
+ timestamp: new Date(),
234
+ };
235
+ }
236
+ }
237
+ /**
238
+ * Execute cells from index
239
+ */
240
+ async runFrom(startIndex) {
241
+ const cells = this.registry
242
+ .getAll()
243
+ .sort((a, b) => (a.metadata?.index ?? 0) - (b.metadata?.index ?? 0));
244
+ if (startIndex >= cells.length) {
245
+ return [];
246
+ }
247
+ const startCell = cells[startIndex];
248
+ return this.runAll({ continueFrom: startCell.id });
249
+ }
250
+ /**
251
+ * Run cells that depend on a changed cell
252
+ */
253
+ async runDependents(cellId) {
254
+ const toReexecute = this.registry.getCellsToReexecute(cellId);
255
+ const results = [];
256
+ for (const depId of toReexecute) {
257
+ const result = await this.runCell(depId);
258
+ results.push(result);
259
+ if (!result.result.success) {
260
+ break;
261
+ }
262
+ }
263
+ return results;
264
+ }
265
+ /**
266
+ * Cancel execution
267
+ */
268
+ cancel() {
269
+ if (this.abortController) {
270
+ this.abortController.abort();
271
+ }
272
+ }
273
+ /**
274
+ * Clear all cell outputs
275
+ */
276
+ clearOutputs() {
277
+ for (const cell of this.registry.getAll()) {
278
+ cell.result = undefined;
279
+ cell.state = "idle";
280
+ }
281
+ this.executionCount = 0;
282
+ }
283
+ /**
284
+ * Restart all kernels
285
+ */
286
+ async restart() {
287
+ for (const kernel of this.kernels.values()) {
288
+ await kernel.restart();
289
+ }
290
+ this.clearOutputs();
291
+ }
292
+ /**
293
+ * Export notebook
294
+ */
295
+ export(format) {
296
+ switch (format) {
297
+ case "ipynb":
298
+ return this.toIpynb();
299
+ case "json":
300
+ return this.toJson();
301
+ case "markdown":
302
+ return this.toMarkdown();
303
+ }
304
+ }
305
+ /**
306
+ * Import notebook
307
+ */
308
+ static import(data, format) {
309
+ switch (format) {
310
+ case "ipynb":
311
+ return BaseNotebook.fromIpynb(data);
312
+ case "json":
313
+ return BaseNotebook.fromJson(data);
314
+ case "markdown":
315
+ return BaseNotebook.fromMarkdown(data);
316
+ }
317
+ }
318
+ /**
319
+ * Export to Jupyter format
320
+ */
321
+ toIpynb() {
322
+ const cells = this.registry.getAll().sort((a, b) => (a.metadata?.index ?? 0) - (b.metadata?.index ?? 0));
323
+ const ipynb = {
324
+ nbformat: 4,
325
+ nbformat_minor: 5,
326
+ metadata: {
327
+ kernelspec: {
328
+ display_name: this.metadata.name,
329
+ language: this.metadata.language,
330
+ name: this.metadata.language,
331
+ },
332
+ language_info: {
333
+ name: this.metadata.language,
334
+ },
335
+ },
336
+ cells: cells.map(cell => ({
337
+ id: cell.id,
338
+ cell_type: "code",
339
+ metadata: cell.metadata ?? {},
340
+ source: cell.source.split("\n"),
341
+ execution_count: cell.executionCount ?? null,
342
+ outputs: this.cellToOutputs(cell),
343
+ })),
344
+ };
345
+ return JSON.stringify(ipynb, null, 2);
346
+ }
347
+ /**
348
+ * Export to JSON
349
+ */
350
+ toJson() {
351
+ return JSON.stringify({
352
+ id: this.id,
353
+ metadata: this.metadata,
354
+ cells: this.registry.getAll(),
355
+ }, null, 2);
356
+ }
357
+ /**
358
+ * Export to Markdown
359
+ */
360
+ toMarkdown() {
361
+ const cells = this.registry.getAll().sort((a, b) => (a.metadata?.index ?? 0) - (b.metadata?.index ?? 0));
362
+ const lines = [
363
+ `# ${this.metadata.name}`,
364
+ "",
365
+ `> Language: ${this.metadata.language}`,
366
+ `> Created: ${this.metadata.created.toISOString()}`,
367
+ "",
368
+ ];
369
+ for (const cell of cells) {
370
+ const lang = cell.language === "javascript" ? "js" : cell.language;
371
+ lines.push(`\`\`\`${lang}`);
372
+ lines.push(cell.source);
373
+ lines.push("```");
374
+ lines.push("");
375
+ if (cell.result) {
376
+ if (cell.result.output.stdout.length > 0) {
377
+ lines.push("**Output:**");
378
+ lines.push("```");
379
+ lines.push(...cell.result.output.stdout);
380
+ lines.push("```");
381
+ lines.push("");
382
+ }
383
+ }
384
+ }
385
+ return lines.join("\n");
386
+ }
387
+ /**
388
+ * Import from Jupyter format
389
+ */
390
+ static fromIpynb(data) {
391
+ const ipynb = JSON.parse(data);
392
+ const cells = [];
393
+ for (const cell of ipynb.cells ?? []) {
394
+ if (cell.cell_type === "code") {
395
+ cells.push({
396
+ id: cell.id ?? uuid(),
397
+ language: ipynb.metadata?.language_info?.name ?? "python",
398
+ source: Array.isArray(cell.source)
399
+ ? cell.source.join("\n")
400
+ : cell.source,
401
+ metadata: cell.metadata,
402
+ });
403
+ }
404
+ }
405
+ return new BaseNotebook({
406
+ name: ipynb.metadata?.kernelspec?.display_name ?? "Imported Notebook",
407
+ defaultLanguage: ipynb.metadata?.language_info?.name,
408
+ cells,
409
+ });
410
+ }
411
+ /**
412
+ * Import from JSON
413
+ */
414
+ static fromJson(data) {
415
+ const obj = JSON.parse(data);
416
+ return new BaseNotebook({
417
+ id: obj.id,
418
+ name: obj.metadata?.name,
419
+ defaultLanguage: obj.metadata?.language,
420
+ cells: obj.cells,
421
+ });
422
+ }
423
+ /**
424
+ * Import from Markdown
425
+ */
426
+ static fromMarkdown(data) {
427
+ const cells = [];
428
+ const codeBlockRegex = /```(\w+)?\n([\s\S]*?)```/g;
429
+ let match;
430
+ let index = 0;
431
+ // Extract title
432
+ const titleMatch = data.match(/^#\s+(.+)$/m);
433
+ const name = titleMatch ? titleMatch[1] : "Imported Notebook";
434
+ while ((match = codeBlockRegex.exec(data)) !== null) {
435
+ const lang = match[1] ?? "javascript";
436
+ const source = match[2].trim();
437
+ cells.push({
438
+ id: uuid(),
439
+ language: lang,
440
+ source,
441
+ state: "idle",
442
+ metadata: { index: index++ },
443
+ });
444
+ }
445
+ const notebook = new BaseNotebook({ name, cells });
446
+ return notebook;
447
+ }
448
+ /**
449
+ * Convert cell outputs to Jupyter format
450
+ */
451
+ cellToOutputs(cell) {
452
+ const outputs = [];
453
+ if (!cell.result)
454
+ return outputs;
455
+ // stdout
456
+ if (cell.result.output.stdout.length > 0) {
457
+ outputs.push({
458
+ output_type: "stream",
459
+ name: "stdout",
460
+ text: cell.result.output.stdout,
461
+ });
462
+ }
463
+ // stderr
464
+ if (cell.result.output.stderr.length > 0) {
465
+ outputs.push({
466
+ output_type: "stream",
467
+ name: "stderr",
468
+ text: cell.result.output.stderr,
469
+ });
470
+ }
471
+ // displays
472
+ for (const display of cell.result.output.displays) {
473
+ outputs.push({
474
+ output_type: "execute_result",
475
+ data: {
476
+ [`text/${display.type}`]: display.data,
477
+ },
478
+ execution_count: cell.executionCount,
479
+ });
480
+ }
481
+ // error
482
+ if (cell.result.error) {
483
+ outputs.push({
484
+ output_type: "error",
485
+ ename: cell.result.error.type,
486
+ evalue: cell.result.error.message,
487
+ traceback: [cell.result.error.stack ?? ""],
488
+ });
489
+ }
490
+ return outputs;
491
+ }
492
+ }
493
+ /**
494
+ * Create a notebook
495
+ */
496
+ export function createNotebook(options) {
497
+ return new BaseNotebook(options);
498
+ }
499
+ //# sourceMappingURL=notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/session/notebook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * REPL Primitive
3
+ *
4
+ * Interactive Read-Eval-Print-Loop for multi-language execution.
5
+ * Provides terminal-style interactive coding experience.
6
+ */
7
+ import type { Language, ExecutionResult, Permissions, Limits } from "../core/types.js";
8
+ import { BaseKernel, KernelManager } from "./kernel.js";
9
+ /**
10
+ * REPL options
11
+ */
12
+ export interface REPLOptions {
13
+ /** Default language */
14
+ language?: Language;
15
+ /** Available languages */
16
+ languages?: Language[];
17
+ /** Permissions */
18
+ permissions?: Permissions;
19
+ /** Resource limits */
20
+ limits?: Limits;
21
+ /** Prompt string */
22
+ prompt?: string;
23
+ /** Continuation prompt */
24
+ continuationPrompt?: string;
25
+ /** Welcome message */
26
+ welcomeMessage?: string;
27
+ /** Kernel manager */
28
+ kernelManager?: KernelManager;
29
+ /** Kernel factory */
30
+ kernelFactory?: (language: Language) => Promise<BaseKernel>;
31
+ /** Output stream */
32
+ output?: NodeJS.WritableStream;
33
+ /** Input stream */
34
+ input?: NodeJS.ReadableStream;
35
+ }
36
+ /**
37
+ * REPL history entry
38
+ */
39
+ export interface REPLHistoryEntry {
40
+ /** Input code */
41
+ input: string;
42
+ /** Language */
43
+ language: Language;
44
+ /** Execution result */
45
+ result: ExecutionResult;
46
+ /** Timestamp */
47
+ timestamp: Date;
48
+ }
49
+ /**
50
+ * REPL state
51
+ */
52
+ export interface REPLState {
53
+ /** Current language */
54
+ language: Language;
55
+ /** Is reading multiline input */
56
+ inMultiline: boolean;
57
+ /** Current multiline buffer */
58
+ multilineBuffer: string[];
59
+ /** History */
60
+ history: REPLHistoryEntry[];
61
+ /** Variables */
62
+ variables: Map<string, unknown>;
63
+ }
64
+ /**
65
+ * Base REPL Implementation
66
+ */
67
+ export declare class BaseREPL {
68
+ private kernelManager;
69
+ private kernelFactory?;
70
+ private kernels;
71
+ private permissions;
72
+ private limits;
73
+ private prompt;
74
+ private continuationPrompt;
75
+ private welcomeMessage;
76
+ private languages;
77
+ private output;
78
+ private input;
79
+ private rl?;
80
+ state: REPLState;
81
+ constructor(options?: REPLOptions);
82
+ /**
83
+ * Start REPL
84
+ */
85
+ start(): Promise<void>;
86
+ /**
87
+ * Handle a line of input
88
+ */
89
+ handleLine(line: string): Promise<void>;
90
+ /**
91
+ * Execute code
92
+ */
93
+ execute(code: string): Promise<ExecutionResult>;
94
+ /**
95
+ * Handle REPL command
96
+ */
97
+ private handleCommand;
98
+ /**
99
+ * Get or create kernel for language
100
+ */
101
+ private getKernel;
102
+ /**
103
+ * Check if input should continue to next line
104
+ */
105
+ private shouldContinue;
106
+ /**
107
+ * Display execution result
108
+ */
109
+ private displayResult;
110
+ /**
111
+ * Format value for display
112
+ */
113
+ private formatValue;
114
+ /**
115
+ * Get prompt string
116
+ */
117
+ private getPrompt;
118
+ /**
119
+ * Get history as strings
120
+ */
121
+ private getHistoryStrings;
122
+ /**
123
+ * Show help
124
+ */
125
+ private showHelp;
126
+ /**
127
+ * Show history
128
+ */
129
+ private showHistory;
130
+ /**
131
+ * Show variables
132
+ */
133
+ private showVariables;
134
+ /**
135
+ * Reset session
136
+ */
137
+ private reset;
138
+ /**
139
+ * Save session
140
+ */
141
+ private save;
142
+ /**
143
+ * Load session
144
+ */
145
+ private load;
146
+ /**
147
+ * Print to output
148
+ */
149
+ private print;
150
+ /**
151
+ * Get default welcome message
152
+ */
153
+ private getDefaultWelcome;
154
+ }
155
+ /**
156
+ * Create a REPL
157
+ */
158
+ export declare function createREPL(options?: REPLOptions): BaseREPL;
159
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/session/repl.ts"],"names":[],"mappings":"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"}