lit-shell.js 0.1.4 → 1.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/CHANGELOG.md +45 -0
- package/dist/client/browser-bundle.js +240 -4
- package/dist/client/browser-bundle.js.map +2 -2
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/terminal-client.d.ts +78 -3
- package/dist/client/terminal-client.d.ts.map +1 -1
- package/dist/client/terminal-client.js +237 -4
- package/dist/client/terminal-client.js.map +1 -1
- package/dist/server/circular-buffer.d.ts +55 -0
- package/dist/server/circular-buffer.d.ts.map +1 -0
- package/dist/server/circular-buffer.js +91 -0
- package/dist/server/circular-buffer.js.map +1 -0
- package/dist/server/index.d.ts +4 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/session-manager.d.ts +195 -0
- package/dist/server/session-manager.d.ts.map +1 -0
- package/dist/server/session-manager.js +448 -0
- package/dist/server/session-manager.js.map +1 -0
- package/dist/server/terminal-server.d.ts +75 -5
- package/dist/server/terminal-server.d.ts.map +1 -1
- package/dist/server/terminal-server.js +496 -79
- package/dist/server/terminal-server.js.map +1 -1
- package/dist/shared/types.d.ts +179 -2
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/ui/browser-bundle.js +240 -4
- package/dist/ui/browser-bundle.js.map +3 -3
- package/package.json +9 -4
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Server-side terminal handler using node-pty
|
|
3
3
|
*
|
|
4
4
|
* Manages PTY sessions and WebSocket connections for web-based terminals.
|
|
5
|
+
* Supports session multiplexing - multiple clients can connect to the same session.
|
|
5
6
|
*/
|
|
6
7
|
import { WebSocket } from 'ws';
|
|
7
8
|
import type { Server as HttpServer } from 'http';
|
|
8
|
-
import type { ServerConfig, SessionInfo } from '../shared/types.js';
|
|
9
|
+
import type { ServerConfig, SessionInfo, SharedSessionInfo, SessionListFilter } from '../shared/types.js';
|
|
9
10
|
/**
|
|
10
11
|
* Terminal server options
|
|
11
12
|
*/
|
|
@@ -18,17 +19,38 @@ export interface TerminalServerOptions extends ServerConfig {
|
|
|
18
19
|
port?: number;
|
|
19
20
|
/** Enable verbose logging */
|
|
20
21
|
verbose?: boolean;
|
|
22
|
+
/** Path to Docker CLI (default: 'docker') */
|
|
23
|
+
dockerPath?: string;
|
|
24
|
+
/** Maximum clients per session (default: 10) */
|
|
25
|
+
maxClientsPerSession?: number;
|
|
26
|
+
/** Orphan session timeout in ms (default: 60000) */
|
|
27
|
+
orphanTimeout?: number;
|
|
28
|
+
/** History buffer size in characters (default: 50000) */
|
|
29
|
+
historySize?: number;
|
|
30
|
+
/** Enable session history (default: true) */
|
|
31
|
+
historyEnabled?: boolean;
|
|
32
|
+
/** Maximum total sessions (default: 100) */
|
|
33
|
+
maxSessionsTotal?: number;
|
|
21
34
|
}
|
|
22
35
|
/**
|
|
23
|
-
* Terminal server class
|
|
36
|
+
* Terminal server class with session multiplexing support
|
|
24
37
|
*/
|
|
25
38
|
export declare class TerminalServer {
|
|
26
39
|
private config;
|
|
27
|
-
private
|
|
40
|
+
private sessionManager;
|
|
28
41
|
private wss;
|
|
29
42
|
private pty;
|
|
30
43
|
private cleanupInterval;
|
|
44
|
+
private clientIds;
|
|
31
45
|
constructor(options?: TerminalServerOptions);
|
|
46
|
+
/**
|
|
47
|
+
* Generate a unique client ID
|
|
48
|
+
*/
|
|
49
|
+
private generateClientId;
|
|
50
|
+
/**
|
|
51
|
+
* Get or create client ID for a WebSocket
|
|
52
|
+
*/
|
|
53
|
+
private getClientId;
|
|
32
54
|
/**
|
|
33
55
|
* Initialize node-pty (lazy load)
|
|
34
56
|
*/
|
|
@@ -54,6 +76,18 @@ export declare class TerminalServer {
|
|
|
54
76
|
* Handle message from client
|
|
55
77
|
*/
|
|
56
78
|
private handleMessage;
|
|
79
|
+
/**
|
|
80
|
+
* Handle list sessions request
|
|
81
|
+
*/
|
|
82
|
+
private handleListSessions;
|
|
83
|
+
/**
|
|
84
|
+
* Handle join session request
|
|
85
|
+
*/
|
|
86
|
+
private handleJoinSession;
|
|
87
|
+
/**
|
|
88
|
+
* Handle leave session request
|
|
89
|
+
*/
|
|
90
|
+
private handleLeaveSession;
|
|
57
91
|
/**
|
|
58
92
|
* Validate shell path
|
|
59
93
|
*/
|
|
@@ -62,10 +96,26 @@ export declare class TerminalServer {
|
|
|
62
96
|
* Validate working directory
|
|
63
97
|
*/
|
|
64
98
|
private isCwdAllowed;
|
|
99
|
+
/**
|
|
100
|
+
* Validate container name/ID against allowed patterns
|
|
101
|
+
*/
|
|
102
|
+
private isContainerAllowed;
|
|
103
|
+
/**
|
|
104
|
+
* Spawn a Docker exec session
|
|
105
|
+
*/
|
|
106
|
+
private spawnDockerExecSession;
|
|
107
|
+
/**
|
|
108
|
+
* Spawn a Docker attach session (connects to container's main process)
|
|
109
|
+
*/
|
|
110
|
+
private spawnDockerAttachSession;
|
|
65
111
|
/**
|
|
66
112
|
* Spawn a new terminal session
|
|
67
113
|
*/
|
|
68
114
|
private spawnSession;
|
|
115
|
+
/**
|
|
116
|
+
* Setup PTY event handlers for a session
|
|
117
|
+
*/
|
|
118
|
+
private setupSessionHandlers;
|
|
69
119
|
/**
|
|
70
120
|
* Write data to session
|
|
71
121
|
*/
|
|
@@ -75,7 +125,7 @@ export declare class TerminalServer {
|
|
|
75
125
|
*/
|
|
76
126
|
private resizeSession;
|
|
77
127
|
/**
|
|
78
|
-
* Close session
|
|
128
|
+
* Close session (only owner can close, or force close)
|
|
79
129
|
*/
|
|
80
130
|
private closeSession;
|
|
81
131
|
/**
|
|
@@ -91,9 +141,29 @@ export declare class TerminalServer {
|
|
|
91
141
|
*/
|
|
92
142
|
private log;
|
|
93
143
|
/**
|
|
94
|
-
*
|
|
144
|
+
* Send server info to client
|
|
145
|
+
*/
|
|
146
|
+
private sendServerInfo;
|
|
147
|
+
/**
|
|
148
|
+
* List available Docker containers
|
|
149
|
+
*/
|
|
150
|
+
private listContainers;
|
|
151
|
+
/**
|
|
152
|
+
* Get all active sessions (for external access)
|
|
95
153
|
*/
|
|
96
154
|
getSessions(): SessionInfo[];
|
|
155
|
+
/**
|
|
156
|
+
* Get all active sessions with multiplexing info
|
|
157
|
+
*/
|
|
158
|
+
getSharedSessions(filter?: SessionListFilter): SharedSessionInfo[];
|
|
159
|
+
/**
|
|
160
|
+
* Get session manager statistics
|
|
161
|
+
*/
|
|
162
|
+
getStats(): {
|
|
163
|
+
sessionCount: number;
|
|
164
|
+
clientCount: number;
|
|
165
|
+
orphanedCount: number;
|
|
166
|
+
};
|
|
97
167
|
/**
|
|
98
168
|
* Close all sessions and stop server
|
|
99
169
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-server.d.ts","sourceRoot":"","sources":["../../src/server/terminal-server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"terminal-server.d.ts","sourceRoot":"","sources":["../../src/server/terminal-server.ts"],"names":[],"mappings":"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"}
|