nebula-notebook 0.1.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.
- package/README.md +222 -0
- package/bin/nebula-notebook.js +33 -0
- package/dist/assets/index-C1h_sArD.css +32 -0
- package/dist/assets/index-CDSTBon8.js +658 -0
- package/dist/favicon.svg +11 -0
- package/dist/index.html +73 -0
- package/node-server/dist/app.d.ts +5 -0
- package/node-server/dist/app.js +38 -0
- package/node-server/dist/auth/auth-middleware.d.ts +24 -0
- package/node-server/dist/auth/auth-middleware.js +276 -0
- package/node-server/dist/auth/auth-service.d.ts +84 -0
- package/node-server/dist/auth/auth-service.js +265 -0
- package/node-server/dist/auth/index.d.ts +3 -0
- package/node-server/dist/auth/index.js +8 -0
- package/node-server/dist/cluster/client-registration.d.ts +43 -0
- package/node-server/dist/cluster/client-registration.js +217 -0
- package/node-server/dist/cluster/cluster-secret.d.ts +11 -0
- package/node-server/dist/cluster/cluster-secret.js +90 -0
- package/node-server/dist/cluster/kernel-proxy.d.ts +100 -0
- package/node-server/dist/cluster/kernel-proxy.js +361 -0
- package/node-server/dist/cluster/server-registry.d.ts +109 -0
- package/node-server/dist/cluster/server-registry.js +217 -0
- package/node-server/dist/config/output-limits.d.ts +7 -0
- package/node-server/dist/config/output-limits.js +10 -0
- package/node-server/dist/discovery/discovery-service.d.ts +198 -0
- package/node-server/dist/discovery/discovery-service.js +811 -0
- package/node-server/dist/discovery/index.d.ts +5 -0
- package/node-server/dist/discovery/index.js +21 -0
- package/node-server/dist/discovery/types.d.ts +48 -0
- package/node-server/dist/discovery/types.js +24 -0
- package/node-server/dist/fs/fs-service.d.ts +218 -0
- package/node-server/dist/fs/fs-service.js +1422 -0
- package/node-server/dist/fs/index.d.ts +5 -0
- package/node-server/dist/fs/index.js +21 -0
- package/node-server/dist/fs/types.d.ts +132 -0
- package/node-server/dist/fs/types.js +5 -0
- package/node-server/dist/index.d.ts +13 -0
- package/node-server/dist/index.js +556 -0
- package/node-server/dist/kernel/default-kernel.d.ts +5 -0
- package/node-server/dist/kernel/default-kernel.js +138 -0
- package/node-server/dist/kernel/index.d.ts +7 -0
- package/node-server/dist/kernel/index.js +23 -0
- package/node-server/dist/kernel/kernel-service.d.ts +290 -0
- package/node-server/dist/kernel/kernel-service.js +1714 -0
- package/node-server/dist/kernel/kernelspec.d.ts +29 -0
- package/node-server/dist/kernel/kernelspec.js +210 -0
- package/node-server/dist/kernel/session-store.d.ts +87 -0
- package/node-server/dist/kernel/session-store.js +303 -0
- package/node-server/dist/kernel/types.d.ts +143 -0
- package/node-server/dist/kernel/types.js +17 -0
- package/node-server/dist/llm/index.d.ts +5 -0
- package/node-server/dist/llm/index.js +21 -0
- package/node-server/dist/llm/llm-service.d.ts +77 -0
- package/node-server/dist/llm/llm-service.js +454 -0
- package/node-server/dist/llm/types.d.ts +40 -0
- package/node-server/dist/llm/types.js +15 -0
- package/node-server/dist/notebook/cell-metadata.d.ts +27 -0
- package/node-server/dist/notebook/cell-metadata.js +76 -0
- package/node-server/dist/notebook/headless-handler.d.ts +127 -0
- package/node-server/dist/notebook/headless-handler.js +1530 -0
- package/node-server/dist/notebook/notebook-websocket.d.ts +12 -0
- package/node-server/dist/notebook/notebook-websocket.js +103 -0
- package/node-server/dist/notebook/operation-router.d.ts +115 -0
- package/node-server/dist/notebook/operation-router.js +641 -0
- package/node-server/dist/notebook/undoRedoManager.d.ts +194 -0
- package/node-server/dist/notebook/undoRedoManager.js +558 -0
- package/node-server/dist/output/display-data.d.ts +14 -0
- package/node-server/dist/output/display-data.js +134 -0
- package/node-server/dist/resources/resource-service.d.ts +69 -0
- package/node-server/dist/resources/resource-service.js +363 -0
- package/node-server/dist/routes/auth.d.ts +5 -0
- package/node-server/dist/routes/auth.js +61 -0
- package/node-server/dist/routes/cluster.d.ts +7 -0
- package/node-server/dist/routes/cluster.js +94 -0
- package/node-server/dist/routes/fs.d.ts +7 -0
- package/node-server/dist/routes/fs.js +392 -0
- package/node-server/dist/routes/kernel.d.ts +13 -0
- package/node-server/dist/routes/kernel.js +637 -0
- package/node-server/dist/routes/llm.d.ts +8 -0
- package/node-server/dist/routes/llm.js +105 -0
- package/node-server/dist/routes/notebook.d.ts +10 -0
- package/node-server/dist/routes/notebook.js +335 -0
- package/node-server/dist/routes/python.d.ts +8 -0
- package/node-server/dist/routes/python.js +187 -0
- package/node-server/dist/routes/resources.d.ts +7 -0
- package/node-server/dist/routes/resources.js +77 -0
- package/node-server/dist/scripts/show-auth-qr.d.ts +1 -0
- package/node-server/dist/scripts/show-auth-qr.js +81 -0
- package/node-server/dist/terminal/pty-manager.d.ts +100 -0
- package/node-server/dist/terminal/pty-manager.js +246 -0
- package/node-server/dist/terminal/server.d.ts +19 -0
- package/node-server/dist/terminal/server.js +254 -0
- package/node-server/dist/terminal/types.d.ts +50 -0
- package/node-server/dist/terminal/types.js +9 -0
- package/node-server/package.json +45 -0
- package/package.json +99 -0
- package/scripts/postinstall.cjs +26 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel Service Types
|
|
3
|
+
*
|
|
4
|
+
* Types for Jupyter kernel management in Node.js
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Jupyter kernelspec definition (from kernel.json files)
|
|
8
|
+
*/
|
|
9
|
+
export interface KernelSpec {
|
|
10
|
+
name: string;
|
|
11
|
+
displayName: string;
|
|
12
|
+
language: string;
|
|
13
|
+
path: string;
|
|
14
|
+
argv?: string[];
|
|
15
|
+
env?: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Jupyter connection configuration
|
|
19
|
+
* Contains port information for ZeroMQ channels
|
|
20
|
+
*/
|
|
21
|
+
export interface ConnectionConfig {
|
|
22
|
+
ip: string;
|
|
23
|
+
transport: string;
|
|
24
|
+
signatureScheme: string;
|
|
25
|
+
key: string;
|
|
26
|
+
shellPort: number;
|
|
27
|
+
stdinPort: number;
|
|
28
|
+
controlPort: number;
|
|
29
|
+
iopubPort: number;
|
|
30
|
+
hbPort: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Active kernel session
|
|
34
|
+
*/
|
|
35
|
+
export interface KernelSession {
|
|
36
|
+
id: string;
|
|
37
|
+
kernelName: string;
|
|
38
|
+
filePath: string | null;
|
|
39
|
+
status: KernelStatus;
|
|
40
|
+
executionCount: number;
|
|
41
|
+
pid: number | null;
|
|
42
|
+
connectionFile: string | null;
|
|
43
|
+
connectionConfig: ConnectionConfig | null;
|
|
44
|
+
createdAt: number;
|
|
45
|
+
lastActivity: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Kernel status
|
|
49
|
+
*/
|
|
50
|
+
export type KernelStatus = 'starting' | 'idle' | 'busy' | 'dead';
|
|
51
|
+
/**
|
|
52
|
+
* Persisted session for SQLite storage
|
|
53
|
+
*/
|
|
54
|
+
export interface PersistedSession {
|
|
55
|
+
sessionId: string;
|
|
56
|
+
kernelName: string;
|
|
57
|
+
filePath: string | null;
|
|
58
|
+
kernelPid: number | null;
|
|
59
|
+
serverId?: string | null;
|
|
60
|
+
serverInstanceId?: string | null;
|
|
61
|
+
kernelStartTime?: string | null;
|
|
62
|
+
status: 'active' | 'orphaned' | 'terminated';
|
|
63
|
+
createdAt: number;
|
|
64
|
+
lastHeartbeat: number;
|
|
65
|
+
connectionFile: string | null;
|
|
66
|
+
connectionConfig: string | null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Kernel output types (matching Jupyter message types)
|
|
70
|
+
*/
|
|
71
|
+
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
72
|
+
[key: string]: JsonValue;
|
|
73
|
+
};
|
|
74
|
+
export type OutputType = 'stdout' | 'stderr' | 'image' | 'html' | 'error' | 'display_data';
|
|
75
|
+
export type MimeBundle = Record<string, JsonValue>;
|
|
76
|
+
/**
|
|
77
|
+
* Kernel output message
|
|
78
|
+
*/
|
|
79
|
+
export interface KernelOutput {
|
|
80
|
+
type: OutputType;
|
|
81
|
+
content: string;
|
|
82
|
+
mimeBundle?: MimeBundle;
|
|
83
|
+
metadata?: Record<string, JsonValue>;
|
|
84
|
+
preferredMimeType?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface SequencedKernelOutput {
|
|
87
|
+
seq: number;
|
|
88
|
+
output: KernelOutput;
|
|
89
|
+
cellId?: string | null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Execution queue metadata for a kernel session.
|
|
93
|
+
*/
|
|
94
|
+
export interface ExecutionQueueInfo {
|
|
95
|
+
/** Zero-based position of this request in the session queue. */
|
|
96
|
+
queuePosition: number;
|
|
97
|
+
/** Total number of requests queued for the session at enqueue time (includes this request). */
|
|
98
|
+
queueLength: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Execution result
|
|
102
|
+
*/
|
|
103
|
+
export interface ExecutionResult {
|
|
104
|
+
status: 'ok' | 'error';
|
|
105
|
+
executionCount: number | null;
|
|
106
|
+
error?: string;
|
|
107
|
+
queuePosition?: number;
|
|
108
|
+
queueLength?: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Options for starting a kernel
|
|
112
|
+
*/
|
|
113
|
+
export interface StartKernelOptions {
|
|
114
|
+
kernelName?: string;
|
|
115
|
+
cwd?: string;
|
|
116
|
+
filePath?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Session info returned by API
|
|
120
|
+
*/
|
|
121
|
+
export interface SessionInfo {
|
|
122
|
+
id: string;
|
|
123
|
+
kernelName: string;
|
|
124
|
+
filePath: string | null;
|
|
125
|
+
status: KernelStatus;
|
|
126
|
+
executionCount: number;
|
|
127
|
+
memoryMb: number | null;
|
|
128
|
+
pid: number | null;
|
|
129
|
+
createdAt: number;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Kernel service configuration
|
|
133
|
+
*/
|
|
134
|
+
export interface KernelServiceConfig {
|
|
135
|
+
startupTimeoutSeconds?: number;
|
|
136
|
+
shutdownTimeoutSeconds?: number;
|
|
137
|
+
messageTimeoutSeconds?: number;
|
|
138
|
+
pollingIntervalSeconds?: number;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Default configuration values
|
|
142
|
+
*/
|
|
143
|
+
export declare const DEFAULT_CONFIG: Required<KernelServiceConfig>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Kernel Service Types
|
|
4
|
+
*
|
|
5
|
+
* Types for Jupyter kernel management in Node.js
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DEFAULT_CONFIG = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* Default configuration values
|
|
11
|
+
*/
|
|
12
|
+
exports.DEFAULT_CONFIG = {
|
|
13
|
+
startupTimeoutSeconds: 60,
|
|
14
|
+
shutdownTimeoutSeconds: 10,
|
|
15
|
+
messageTimeoutSeconds: 5,
|
|
16
|
+
pollingIntervalSeconds: 0.1,
|
|
17
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM Service Module
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
__exportStar(require("./llm-service"), exports);
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Provider LLM Service
|
|
3
|
+
*
|
|
4
|
+
* Supports Google Gemini, OpenAI, and Anthropic.
|
|
5
|
+
* Node.js port of the Python LLMService.
|
|
6
|
+
*/
|
|
7
|
+
import { LLMConfig, LLMProvider, GenerateOptions, ChatOptions, GenerateStructuredOptions } from './types';
|
|
8
|
+
export declare class LLMService {
|
|
9
|
+
private googleClient;
|
|
10
|
+
private openaiClient;
|
|
11
|
+
private anthropicClient;
|
|
12
|
+
/**
|
|
13
|
+
* Get or create Google GenAI client
|
|
14
|
+
*/
|
|
15
|
+
private getGoogleClient;
|
|
16
|
+
/**
|
|
17
|
+
* Get or create OpenAI client
|
|
18
|
+
*/
|
|
19
|
+
private getOpenaiClient;
|
|
20
|
+
/**
|
|
21
|
+
* Get or create Anthropic client
|
|
22
|
+
*/
|
|
23
|
+
private getAnthropicClient;
|
|
24
|
+
/**
|
|
25
|
+
* Get available providers based on configured API keys
|
|
26
|
+
*/
|
|
27
|
+
getAvailableProviders(): Partial<Record<LLMProvider, string[]>>;
|
|
28
|
+
/**
|
|
29
|
+
* Normalize config with defaults
|
|
30
|
+
*/
|
|
31
|
+
normalizeConfig(config: LLMConfig): Required<Omit<LLMConfig, 'apiKey'>> & {
|
|
32
|
+
apiKey?: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Repair common JSON formatting issues
|
|
36
|
+
*/
|
|
37
|
+
repairJson(s: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Parse JSON with automatic repair on failure
|
|
40
|
+
*/
|
|
41
|
+
private parseJsonWithRepair;
|
|
42
|
+
/**
|
|
43
|
+
* Extract JSON from a response that may contain markdown code blocks
|
|
44
|
+
*/
|
|
45
|
+
extractJsonFromResponse(response: string): unknown;
|
|
46
|
+
/**
|
|
47
|
+
* Generate response from Google Gemini
|
|
48
|
+
*/
|
|
49
|
+
private generateGoogle;
|
|
50
|
+
/**
|
|
51
|
+
* Generate response from OpenAI
|
|
52
|
+
*/
|
|
53
|
+
private generateOpenai;
|
|
54
|
+
/**
|
|
55
|
+
* Generate response from Anthropic Claude
|
|
56
|
+
*/
|
|
57
|
+
private generateAnthropic;
|
|
58
|
+
/**
|
|
59
|
+
* Generate a response from the LLM
|
|
60
|
+
*/
|
|
61
|
+
generate(options: GenerateOptions): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
* Generate structured JSON response
|
|
64
|
+
*/
|
|
65
|
+
generateStructured(options: GenerateStructuredOptions): Promise<unknown>;
|
|
66
|
+
private generateStructuredGoogle;
|
|
67
|
+
private generateStructuredOpenai;
|
|
68
|
+
private generateStructuredAnthropic;
|
|
69
|
+
/**
|
|
70
|
+
* Chat with conversation history
|
|
71
|
+
*/
|
|
72
|
+
chat(options: ChatOptions): Promise<string>;
|
|
73
|
+
private chatGoogle;
|
|
74
|
+
private chatOpenai;
|
|
75
|
+
private chatAnthropic;
|
|
76
|
+
}
|
|
77
|
+
export declare const llmService: LLMService;
|