@mako10k/shell-server 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/LICENSE +21 -0
- package/README.md +114 -0
- package/dist/backoffice/index.d.ts +2 -0
- package/dist/backoffice/index.d.ts.map +1 -0
- package/dist/backoffice/index.js +47 -0
- package/dist/backoffice/index.js.map +1 -0
- package/dist/backoffice/server.d.ts +45 -0
- package/dist/backoffice/server.d.ts.map +1 -0
- package/dist/backoffice/server.js +610 -0
- package/dist/backoffice/server.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +525 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/config-manager.d.ts +80 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +218 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/enhanced-history-manager.d.ts +84 -0
- package/dist/core/enhanced-history-manager.d.ts.map +1 -0
- package/dist/core/enhanced-history-manager.js +319 -0
- package/dist/core/enhanced-history-manager.js.map +1 -0
- package/dist/core/file-manager.d.ts +79 -0
- package/dist/core/file-manager.d.ts.map +1 -0
- package/dist/core/file-manager.js +338 -0
- package/dist/core/file-manager.js.map +1 -0
- package/dist/core/file-storage-subscriber.d.ts +38 -0
- package/dist/core/file-storage-subscriber.d.ts.map +1 -0
- package/dist/core/file-storage-subscriber.js +132 -0
- package/dist/core/file-storage-subscriber.js.map +1 -0
- package/dist/core/monitoring-manager.d.ts +32 -0
- package/dist/core/monitoring-manager.d.ts.map +1 -0
- package/dist/core/monitoring-manager.js +296 -0
- package/dist/core/monitoring-manager.js.map +1 -0
- package/dist/core/process-manager.d.ts +105 -0
- package/dist/core/process-manager.d.ts.map +1 -0
- package/dist/core/process-manager.js +1374 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/realtime-stream-subscriber.d.ts +93 -0
- package/dist/core/realtime-stream-subscriber.d.ts.map +1 -0
- package/dist/core/realtime-stream-subscriber.js +200 -0
- package/dist/core/realtime-stream-subscriber.js.map +1 -0
- package/dist/core/remote-http-client.d.ts +15 -0
- package/dist/core/remote-http-client.d.ts.map +1 -0
- package/dist/core/remote-http-client.js +60 -0
- package/dist/core/remote-http-client.js.map +1 -0
- package/dist/core/remote-process-service.d.ts +50 -0
- package/dist/core/remote-process-service.d.ts.map +1 -0
- package/dist/core/remote-process-service.js +20 -0
- package/dist/core/remote-process-service.js.map +1 -0
- package/dist/core/server-manager.d.ts +71 -0
- package/dist/core/server-manager.d.ts.map +1 -0
- package/dist/core/server-manager.js +680 -0
- package/dist/core/server-manager.js.map +1 -0
- package/dist/core/stream-publisher.d.ts +75 -0
- package/dist/core/stream-publisher.d.ts.map +1 -0
- package/dist/core/stream-publisher.js +127 -0
- package/dist/core/stream-publisher.js.map +1 -0
- package/dist/core/streaming-pipeline-reader.d.ts +67 -0
- package/dist/core/streaming-pipeline-reader.d.ts.map +1 -0
- package/dist/core/streaming-pipeline-reader.js +191 -0
- package/dist/core/streaming-pipeline-reader.js.map +1 -0
- package/dist/core/terminal-manager.d.ts +96 -0
- package/dist/core/terminal-manager.d.ts.map +1 -0
- package/dist/core/terminal-manager.js +515 -0
- package/dist/core/terminal-manager.js.map +1 -0
- package/dist/daemon/server.d.ts +8 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +416 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/uds-transport.d.ts +31 -0
- package/dist/daemon/uds-transport.d.ts.map +1 -0
- package/dist/daemon/uds-transport.js +149 -0
- package/dist/daemon/uds-transport.js.map +1 -0
- package/dist/executor/server.d.ts +20 -0
- package/dist/executor/server.d.ts.map +1 -0
- package/dist/executor/server.js +375 -0
- package/dist/executor/server.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/daemon-runtime.d.ts +4 -0
- package/dist/runtime/daemon-runtime.d.ts.map +1 -0
- package/dist/runtime/daemon-runtime.js +4 -0
- package/dist/runtime/daemon-runtime.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/tool-runtime.d.ts +52 -0
- package/dist/runtime/tool-runtime.d.ts.map +1 -0
- package/dist/runtime/tool-runtime.js +161 -0
- package/dist/runtime/tool-runtime.js.map +1 -0
- package/dist/security/chat-completion-adapter.d.ts +443 -0
- package/dist/security/chat-completion-adapter.d.ts.map +1 -0
- package/dist/security/chat-completion-adapter.js +475 -0
- package/dist/security/chat-completion-adapter.js.map +1 -0
- package/dist/security/enhanced-evaluator.d.ts +139 -0
- package/dist/security/enhanced-evaluator.d.ts.map +1 -0
- package/dist/security/enhanced-evaluator.js +1208 -0
- package/dist/security/enhanced-evaluator.js.map +1 -0
- package/dist/security/evaluator-types.d.ts +614 -0
- package/dist/security/evaluator-types.d.ts.map +1 -0
- package/dist/security/evaluator-types.js +124 -0
- package/dist/security/evaluator-types.js.map +1 -0
- package/dist/security/manager.d.ts +76 -0
- package/dist/security/manager.d.ts.map +1 -0
- package/dist/security/manager.js +445 -0
- package/dist/security/manager.js.map +1 -0
- package/dist/security/security-llm-prompt-generator.d.ts +105 -0
- package/dist/security/security-llm-prompt-generator.d.ts.map +1 -0
- package/dist/security/security-llm-prompt-generator.js +323 -0
- package/dist/security/security-llm-prompt-generator.js.map +1 -0
- package/dist/security/security-tools.d.ts +174 -0
- package/dist/security/security-tools.d.ts.map +1 -0
- package/dist/security/security-tools.js +159 -0
- package/dist/security/security-tools.js.map +1 -0
- package/dist/security/validator-criteria-manager.d.ts +47 -0
- package/dist/security/validator-criteria-manager.d.ts.map +1 -0
- package/dist/security/validator-criteria-manager.js +169 -0
- package/dist/security/validator-criteria-manager.js.map +1 -0
- package/dist/tools/shell-tools.d.ts +474 -0
- package/dist/tools/shell-tools.d.ts.map +1 -0
- package/dist/tools/shell-tools.js +861 -0
- package/dist/tools/shell-tools.js.map +1 -0
- package/dist/types/enhanced-security.d.ts +529 -0
- package/dist/types/enhanced-security.d.ts.map +1 -0
- package/dist/types/enhanced-security.js +286 -0
- package/dist/types/enhanced-security.js.map +1 -0
- package/dist/types/index.d.ts +282 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +158 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/quick-schemas.d.ts +177 -0
- package/dist/types/quick-schemas.d.ts.map +1 -0
- package/dist/types/quick-schemas.js +113 -0
- package/dist/types/quick-schemas.js.map +1 -0
- package/dist/types/response-schemas.d.ts +41 -0
- package/dist/types/response-schemas.d.ts.map +1 -0
- package/dist/types/response-schemas.js +41 -0
- package/dist/types/response-schemas.js.map +1 -0
- package/dist/types/schemas.d.ts +578 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +498 -0
- package/dist/types/schemas.js.map +1 -0
- package/dist/utils/criteria-manager.d.ts +47 -0
- package/dist/utils/criteria-manager.d.ts.map +1 -0
- package/dist/utils/criteria-manager.js +228 -0
- package/dist/utils/criteria-manager.js.map +1 -0
- package/dist/utils/errors.d.ts +27 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +67 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/helpers.d.ts +85 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +400 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/json-repair.d.ts +23 -0
- package/dist/utils/json-repair.d.ts.map +1 -0
- package/dist/utils/json-repair.js +208 -0
- package/dist/utils/json-repair.js.map +1 -0
- package/dist/utils/process-utils.d.ts +31 -0
- package/dist/utils/process-utils.d.ts.map +1 -0
- package/dist/utils/process-utils.js +217 -0
- package/dist/utils/process-utils.js.map +1 -0
- package/dist/utils/server-helpers.d.ts +4 -0
- package/dist/utils/server-helpers.d.ts.map +1 -0
- package/dist/utils/server-helpers.js +10 -0
- package/dist/utils/server-helpers.js.map +1 -0
- package/dist/utils/sse.d.ts +2 -0
- package/dist/utils/sse.d.ts.map +1 -0
- package/dist/utils/sse.js +6 -0
- package/dist/utils/sse.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IPty } from 'node-pty';
|
|
2
|
+
import { SystemProcessInfo, ForegroundProcessInfo } from '../types/index.js';
|
|
3
|
+
export declare class ProcessUtils {
|
|
4
|
+
private static processInfoCache;
|
|
5
|
+
private static readonly CACHE_TTL;
|
|
6
|
+
/**
|
|
7
|
+
* プロセス情報を取得する
|
|
8
|
+
*/
|
|
9
|
+
static getProcessInfo(pid: number): Promise<SystemProcessInfo | null>;
|
|
10
|
+
/**
|
|
11
|
+
* ターミナルのフォアグラウンドプロセスを取得する
|
|
12
|
+
*/
|
|
13
|
+
static getForegroundProcess(terminalPty: IPty): Promise<ForegroundProcessInfo>;
|
|
14
|
+
/**
|
|
15
|
+
* 指定されたPIDの最新の子プロセスを見つける
|
|
16
|
+
*/
|
|
17
|
+
private static findLatestChildProcess;
|
|
18
|
+
/**
|
|
19
|
+
* プログラムガードの条件をチェックする
|
|
20
|
+
*/
|
|
21
|
+
static checkProgramGuard(processInfo: SystemProcessInfo | undefined, sendTo: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* キャッシュをクリアする
|
|
24
|
+
*/
|
|
25
|
+
static clearCache(): void;
|
|
26
|
+
/**
|
|
27
|
+
* 古いキャッシュエントリを削除する
|
|
28
|
+
*/
|
|
29
|
+
static cleanupCache(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=process-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.d.ts","sourceRoot":"","sources":["../../src/utils/process-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAG3B;IACJ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAEzC;;OAEG;WACU,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiF3E;;OAEG;WACU,oBAAoB,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsDpF;;OAEG;mBACkB,sBAAsB;IAuC3C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IA6B7F;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAIzB;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,IAAI;CAQ5B"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
export class ProcessUtils {
|
|
4
|
+
static processInfoCache = new Map();
|
|
5
|
+
static CACHE_TTL = 1000; // 1秒のキャッシュ
|
|
6
|
+
/**
|
|
7
|
+
* プロセス情報を取得する
|
|
8
|
+
*/
|
|
9
|
+
static async getProcessInfo(pid) {
|
|
10
|
+
// キャッシュチェック
|
|
11
|
+
const cached = this.processInfoCache.get(pid);
|
|
12
|
+
if (cached && Date.now() - cached.timestamp < this.CACHE_TTL) {
|
|
13
|
+
return cached.info;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const statPath = `/proc/${pid}/stat`;
|
|
17
|
+
const commPath = `/proc/${pid}/comm`;
|
|
18
|
+
const exePath = `/proc/${pid}/exe`;
|
|
19
|
+
// プロセスが存在するかチェック
|
|
20
|
+
if (!fs.existsSync(statPath)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
// /proc/{pid}/stat からセッション情報を取得
|
|
24
|
+
const statContent = fs.readFileSync(statPath, 'utf8');
|
|
25
|
+
const statFields = statContent.split(' ');
|
|
26
|
+
if (statFields.length < 22) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const sessionId = parseInt(statFields[5] || '0');
|
|
30
|
+
const parentPid = parseInt(statFields[3] || '0');
|
|
31
|
+
// プロセス名を取得
|
|
32
|
+
let name = 'unknown';
|
|
33
|
+
try {
|
|
34
|
+
name = fs.readFileSync(commPath, 'utf8').trim();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// fallback: stat からプロセス名を抽出
|
|
38
|
+
const procName = statFields[1];
|
|
39
|
+
if (procName) {
|
|
40
|
+
const commMatch = procName.match(/^\((.+)\)$/);
|
|
41
|
+
if (commMatch && commMatch[1]) {
|
|
42
|
+
name = commMatch[1];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// フルパスを取得(シンボリックリンクを解決)
|
|
47
|
+
let fullPath;
|
|
48
|
+
try {
|
|
49
|
+
fullPath = fs.readlinkSync(exePath);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// パスが取得できない場合は undefined
|
|
53
|
+
}
|
|
54
|
+
const processInfo = {
|
|
55
|
+
pid,
|
|
56
|
+
name,
|
|
57
|
+
isSessionLeader: sessionId === pid,
|
|
58
|
+
};
|
|
59
|
+
// オプショナルプロパティを追加
|
|
60
|
+
if (fullPath) {
|
|
61
|
+
processInfo.path = fullPath;
|
|
62
|
+
}
|
|
63
|
+
if (sessionId > 0) {
|
|
64
|
+
processInfo.sessionId = sessionId;
|
|
65
|
+
}
|
|
66
|
+
if (parentPid > 0) {
|
|
67
|
+
processInfo.parentPid = parentPid;
|
|
68
|
+
}
|
|
69
|
+
// キャッシュに保存
|
|
70
|
+
this.processInfoCache.set(pid, {
|
|
71
|
+
info: processInfo,
|
|
72
|
+
timestamp: Date.now(),
|
|
73
|
+
});
|
|
74
|
+
return processInfo;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error(`Failed to get process info for PID ${pid}:`, error);
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* ターミナルのフォアグラウンドプロセスを取得する
|
|
83
|
+
*/
|
|
84
|
+
static async getForegroundProcess(terminalPty) {
|
|
85
|
+
try {
|
|
86
|
+
// pty の file descriptor を取得
|
|
87
|
+
const ptyWithFd = terminalPty;
|
|
88
|
+
const fd = ptyWithFd._fd || ptyWithFd.fd;
|
|
89
|
+
if (!fd) {
|
|
90
|
+
return {
|
|
91
|
+
available: false,
|
|
92
|
+
error: 'PTY file descriptor not available',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// tcgetpgrp() の代替として /proc/tty/drivers を使用
|
|
96
|
+
// まず、pty のデバイス番号を特定
|
|
97
|
+
let foregroundPid = null;
|
|
98
|
+
try {
|
|
99
|
+
// より直接的なアプローチ: pty のプロセスグループを探す
|
|
100
|
+
const ptyProcess = terminalPty.pid;
|
|
101
|
+
if (ptyProcess) {
|
|
102
|
+
// 子プロセスを探して、最も最近作成されたものをフォアグラウンドとみなす
|
|
103
|
+
foregroundPid = await this.findLatestChildProcess(ptyProcess);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error('Failed to get foreground process:', error);
|
|
108
|
+
}
|
|
109
|
+
if (!foregroundPid) {
|
|
110
|
+
return {
|
|
111
|
+
available: false,
|
|
112
|
+
error: 'Could not determine foreground process',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const processInfo = await this.getProcessInfo(foregroundPid);
|
|
116
|
+
if (!processInfo) {
|
|
117
|
+
return {
|
|
118
|
+
available: false,
|
|
119
|
+
error: `Process ${foregroundPid} not found`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
process: processInfo,
|
|
124
|
+
available: true,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
return {
|
|
129
|
+
available: false,
|
|
130
|
+
error: `Error getting foreground process: ${error}`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 指定されたPIDの最新の子プロセスを見つける
|
|
136
|
+
*/
|
|
137
|
+
static async findLatestChildProcess(parentPid) {
|
|
138
|
+
try {
|
|
139
|
+
const procDir = '/proc';
|
|
140
|
+
const entries = fs.readdirSync(procDir);
|
|
141
|
+
let latestChild = null;
|
|
142
|
+
for (const entry of entries) {
|
|
143
|
+
const pid = parseInt(entry);
|
|
144
|
+
if (isNaN(pid))
|
|
145
|
+
continue;
|
|
146
|
+
try {
|
|
147
|
+
const statPath = path.join(procDir, entry, 'stat');
|
|
148
|
+
const statContent = fs.readFileSync(statPath, 'utf8');
|
|
149
|
+
const statFields = statContent.split(' ');
|
|
150
|
+
if (statFields.length < 22)
|
|
151
|
+
continue;
|
|
152
|
+
const ppid = parseInt(statFields[3] || '0');
|
|
153
|
+
if (ppid === parentPid) {
|
|
154
|
+
// 子プロセス発見
|
|
155
|
+
const startTime = parseInt(statFields[21] || '0');
|
|
156
|
+
if (!latestChild || startTime > latestChild.startTime) {
|
|
157
|
+
latestChild = { pid, startTime };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// このプロセスはスキップ
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return latestChild ? latestChild.pid : null;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
console.error('Error finding child processes:', error);
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* プログラムガードの条件をチェックする
|
|
175
|
+
*/
|
|
176
|
+
static checkProgramGuard(processInfo, sendTo) {
|
|
177
|
+
if (sendTo === '*') {
|
|
178
|
+
return true; // 条件なし
|
|
179
|
+
}
|
|
180
|
+
if (!processInfo) {
|
|
181
|
+
return false; // プロセス情報がない場合は拒否
|
|
182
|
+
}
|
|
183
|
+
// セッションリーダーチェック
|
|
184
|
+
if (sendTo === 'sessionleader:' || sendTo === 'loginshell:') {
|
|
185
|
+
return processInfo.isSessionLeader;
|
|
186
|
+
}
|
|
187
|
+
// PIDチェック
|
|
188
|
+
if (sendTo.startsWith('pid:')) {
|
|
189
|
+
const targetPid = parseInt(sendTo.substring(4));
|
|
190
|
+
return processInfo.pid === targetPid;
|
|
191
|
+
}
|
|
192
|
+
// フルパスチェック
|
|
193
|
+
if (sendTo.startsWith('/')) {
|
|
194
|
+
return processInfo.path === sendTo;
|
|
195
|
+
}
|
|
196
|
+
// プロセス名チェック
|
|
197
|
+
return processInfo.name === sendTo;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* キャッシュをクリアする
|
|
201
|
+
*/
|
|
202
|
+
static clearCache() {
|
|
203
|
+
this.processInfoCache.clear();
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 古いキャッシュエントリを削除する
|
|
207
|
+
*/
|
|
208
|
+
static cleanupCache() {
|
|
209
|
+
const now = Date.now();
|
|
210
|
+
for (const [pid, cached] of this.processInfoCache.entries()) {
|
|
211
|
+
if (now - cached.timestamp > this.CACHE_TTL * 2) {
|
|
212
|
+
this.processInfoCache.delete(pid);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=process-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../src/utils/process-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/server-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function listenServer(server, host, port) {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
server.listen(port, host, () => resolve());
|
|
4
|
+
server.once('error', reject);
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
export function closeServer(server) {
|
|
8
|
+
return new Promise((resolve) => server.close(() => resolve()));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=server-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-helpers.js","sourceRoot":"","sources":["../../src/utils/server-helpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,IAAY,EAAE,IAAY;IAC1E,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/utils/sse.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,EAC7C,UAAU,SAAQ,GACjB,MAAM,CAAC,OAAO,CAIhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/utils/sse.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAC5B,KAA6C,EAC7C,UAAU,GAAG,KAAK;IAElB,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC,EAAE,UAAU,CAAC,CAAC;AACjB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mako10k/shell-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shell execution daemon and runtime utilities for MCP tools.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"shell-server": "dist/index.js",
|
|
10
|
+
"shell-server-cli": "dist/cli.js"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": "./dist/index.js",
|
|
14
|
+
"./runtime": "./dist/runtime/index.js",
|
|
15
|
+
"./tool-runtime": "./dist/runtime/tool-runtime.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/mako10k/shell-server"
|
|
25
|
+
},
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/mako10k/shell-server/issues"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/mako10k/shell-server#readme",
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc -p tsconfig.json",
|
|
36
|
+
"prepublishOnly": "npm run build",
|
|
37
|
+
"test:e2e": "npm run build && node --test test/e2e-shell-server-cli.test.mjs"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "1.17.2",
|
|
41
|
+
"node-jq": "^6.3.1",
|
|
42
|
+
"node-pty": "^1.0.0",
|
|
43
|
+
"uuid": "^10.0.0",
|
|
44
|
+
"zod": "^3.23.8",
|
|
45
|
+
"zod-to-json-schema": "^3.24.5"
|
|
46
|
+
}
|
|
47
|
+
}
|