@pyrokine/mcp-ssh 1.0.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/LICENSE +21 -0
- package/README.md +353 -0
- package/README_zh.md +353 -0
- package/dist/file-ops.d.ts +78 -0
- package/dist/file-ops.js +572 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +804 -0
- package/dist/session-manager.d.ts +193 -0
- package/dist/session-manager.js +792 -0
- package/dist/types.d.ts +111 -0
- package/dist/types.js +4 -0
- package/package.json +43 -0
- package/src/file-ops.ts +730 -0
- package/src/index.ts +938 -0
- package/src/session-manager.ts +982 -0
- package/src/types.ts +133 -0
- package/tsconfig.json +16 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSH MCP Pro - 类型定义
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface SSHConnectionConfig {
|
|
6
|
+
host: string;
|
|
7
|
+
port: number;
|
|
8
|
+
username: string;
|
|
9
|
+
password?: string;
|
|
10
|
+
privateKeyPath?: string;
|
|
11
|
+
privateKey?: string;
|
|
12
|
+
passphrase?: string;
|
|
13
|
+
alias?: string;
|
|
14
|
+
// 高级配置
|
|
15
|
+
keepaliveInterval?: number; // 心跳间隔(毫秒)
|
|
16
|
+
keepaliveCountMax?: number; // 最大心跳失败次数
|
|
17
|
+
readyTimeout?: number; // 连接超时(毫秒)
|
|
18
|
+
// 环境配置
|
|
19
|
+
env?: Record<string, string>; // 环境变量
|
|
20
|
+
lang?: string; // LANG 设置
|
|
21
|
+
shell?: string; // Shell 类型
|
|
22
|
+
// 跳板机
|
|
23
|
+
jumpHost?: SSHConnectionConfig;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface SSHSessionInfo {
|
|
27
|
+
alias: string;
|
|
28
|
+
host: string;
|
|
29
|
+
port: number;
|
|
30
|
+
username: string;
|
|
31
|
+
connected: boolean;
|
|
32
|
+
connectedAt: number;
|
|
33
|
+
lastUsedAt: number;
|
|
34
|
+
env?: Record<string, string>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface ExecOptions {
|
|
38
|
+
timeout?: number; // 命令超时(毫秒)
|
|
39
|
+
env?: Record<string, string>; // 额外环境变量
|
|
40
|
+
cwd?: string; // 工作目录
|
|
41
|
+
pty?: boolean; // 是否使用 PTY
|
|
42
|
+
maxOutputSize?: number; // 最大输出大小(字节),默认 10MB
|
|
43
|
+
// PTY 配置
|
|
44
|
+
rows?: number;
|
|
45
|
+
cols?: number;
|
|
46
|
+
term?: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface ExecResult {
|
|
50
|
+
success: boolean;
|
|
51
|
+
stdout: string;
|
|
52
|
+
stderr: string;
|
|
53
|
+
exitCode: number;
|
|
54
|
+
duration: number; // 执行时间(毫秒)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface FileInfo {
|
|
58
|
+
name: string;
|
|
59
|
+
path: string;
|
|
60
|
+
size: number;
|
|
61
|
+
isDirectory: boolean;
|
|
62
|
+
isFile: boolean;
|
|
63
|
+
isSymlink: boolean;
|
|
64
|
+
permissions: string;
|
|
65
|
+
owner: number;
|
|
66
|
+
group: number;
|
|
67
|
+
mtime: Date;
|
|
68
|
+
atime: Date;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface TransferProgress {
|
|
72
|
+
transferred: number;
|
|
73
|
+
total: number;
|
|
74
|
+
percent: number;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// 持久化存储的会话配置(不含敏感信息)
|
|
78
|
+
export interface PersistedSession {
|
|
79
|
+
alias: string;
|
|
80
|
+
host: string;
|
|
81
|
+
port: number;
|
|
82
|
+
username: string;
|
|
83
|
+
connectedAt: number;
|
|
84
|
+
env?: Record<string, string>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// PTY 会话配置
|
|
88
|
+
export interface PtyOptions {
|
|
89
|
+
rows?: number;
|
|
90
|
+
cols?: number;
|
|
91
|
+
term?: string;
|
|
92
|
+
env?: Record<string, string>;
|
|
93
|
+
cwd?: string;
|
|
94
|
+
bufferSize?: number; // 输出缓冲区大小,默认 1MB
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// PTY 会话信息
|
|
98
|
+
export interface PtySessionInfo {
|
|
99
|
+
id: string;
|
|
100
|
+
alias: string; // SSH 连接别名
|
|
101
|
+
command: string; // 启动命令
|
|
102
|
+
rows: number;
|
|
103
|
+
cols: number;
|
|
104
|
+
createdAt: number;
|
|
105
|
+
lastReadAt: number;
|
|
106
|
+
bufferSize: number; // 当前缓冲区大小
|
|
107
|
+
active: boolean;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 端口转发类型
|
|
111
|
+
export type ForwardType = 'local' | 'remote';
|
|
112
|
+
|
|
113
|
+
// 端口转发配置
|
|
114
|
+
export interface PortForwardConfig {
|
|
115
|
+
type: ForwardType;
|
|
116
|
+
localHost: string;
|
|
117
|
+
localPort: number;
|
|
118
|
+
remoteHost: string;
|
|
119
|
+
remotePort: number;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// 端口转发信息
|
|
123
|
+
export interface PortForwardInfo {
|
|
124
|
+
id: string;
|
|
125
|
+
alias: string; // SSH 连接别名
|
|
126
|
+
type: ForwardType;
|
|
127
|
+
localHost: string;
|
|
128
|
+
localPort: number;
|
|
129
|
+
remoteHost: string;
|
|
130
|
+
remotePort: number;
|
|
131
|
+
createdAt: number;
|
|
132
|
+
active: boolean;
|
|
133
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"rootDir": "./src",
|
|
8
|
+
"strict": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
"declaration": true
|
|
13
|
+
},
|
|
14
|
+
"include": ["src/**/*"],
|
|
15
|
+
"exclude": ["node_modules", "dist"]
|
|
16
|
+
}
|