ssh-mcp-pro 1.2.3 → 1.4.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 +55 -0
- package/README.md +12 -2
- package/dist/agent-bin.js +5 -2
- package/dist/agent-bin.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +38 -47
- package/dist/cli.js.map +1 -1
- package/dist/config-security-env.d.ts +4 -0
- package/dist/config-security-env.d.ts.map +1 -0
- package/dist/config-security-env.js +64 -0
- package/dist/config-security-env.js.map +1 -0
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -67
- package/dist/config.js.map +1 -1
- package/dist/connector-profile.d.ts +1 -1
- package/dist/connector-profile.d.ts.map +1 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +226 -192
- package/dist/detect.js.map +1 -1
- package/dist/ensure-package-service.d.ts +9 -0
- package/dist/ensure-package-service.d.ts.map +1 -0
- package/dist/ensure-package-service.js +146 -0
- package/dist/ensure-package-service.js.map +1 -0
- package/dist/ensure-pkg.js +4 -4
- package/dist/ensure-pkg.js.map +1 -1
- package/dist/ensure.d.ts.map +1 -1
- package/dist/ensure.js +15 -144
- package/dist/ensure.js.map +1 -1
- package/dist/fs-sftp.js +1 -1
- package/dist/fs-sftp.js.map +1 -1
- package/dist/fs-stat.d.ts +10 -0
- package/dist/fs-stat.d.ts.map +1 -0
- package/dist/fs-stat.js +62 -0
- package/dist/fs-stat.js.map +1 -0
- package/dist/fs-tools.d.ts.map +1 -1
- package/dist/fs-tools.js +6 -58
- package/dist/fs-tools.js.map +1 -1
- package/dist/http-security.d.ts.map +1 -1
- package/dist/http-security.js +6 -6
- package/dist/http-security.js.map +1 -1
- package/dist/http-server-runtime.d.ts.map +1 -1
- package/dist/http-server-runtime.js +41 -7
- package/dist/http-server-runtime.js.map +1 -1
- package/dist/index.js +6 -23
- package/dist/index.js.map +1 -1
- package/dist/mcp-http-web.d.ts +8 -0
- package/dist/mcp-http-web.d.ts.map +1 -0
- package/dist/mcp-http-web.js +35 -0
- package/dist/mcp-http-web.js.map +1 -0
- package/dist/mcp.d.ts +6 -2
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +22 -14
- package/dist/mcp.js.map +1 -1
- package/dist/policy.d.ts +8 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +147 -105
- package/dist/policy.js.map +1 -1
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +11 -7
- package/dist/process.js.map +1 -1
- package/dist/remote/agent-activity-log.d.ts +26 -0
- package/dist/remote/agent-activity-log.d.ts.map +1 -0
- package/dist/remote/agent-activity-log.js +211 -0
- package/dist/remote/agent-activity-log.js.map +1 -0
- package/dist/remote/agent-cli.d.ts.map +1 -1
- package/dist/remote/agent-cli.js +92 -25
- package/dist/remote/agent-cli.js.map +1 -1
- package/dist/remote/agent-executor.d.ts.map +1 -1
- package/dist/remote/agent-executor.js +22 -10
- package/dist/remote/agent-executor.js.map +1 -1
- package/dist/remote/agent-handler.d.ts +2 -0
- package/dist/remote/agent-handler.d.ts.map +1 -1
- package/dist/remote/agent-handler.js +4 -0
- package/dist/remote/agent-handler.js.map +1 -1
- package/dist/remote/config.d.ts.map +1 -1
- package/dist/remote/config.js +12 -1
- package/dist/remote/config.js.map +1 -1
- package/dist/remote/control-plane.d.ts +12 -0
- package/dist/remote/control-plane.d.ts.map +1 -1
- package/dist/remote/control-plane.js +164 -56
- package/dist/remote/control-plane.js.map +1 -1
- package/dist/remote/crypto.d.ts +9 -4
- package/dist/remote/crypto.d.ts.map +1 -1
- package/dist/remote/crypto.js +41 -9
- package/dist/remote/crypto.js.map +1 -1
- package/dist/remote/http-util.d.ts.map +1 -1
- package/dist/remote/http-util.js +14 -7
- package/dist/remote/http-util.js.map +1 -1
- package/dist/remote/mcp-tools.d.ts +7 -0
- package/dist/remote/mcp-tools.d.ts.map +1 -1
- package/dist/remote/mcp-tools.js +28 -0
- package/dist/remote/mcp-tools.js.map +1 -1
- package/dist/remote/oauth-handler.d.ts +30 -3
- package/dist/remote/oauth-handler.d.ts.map +1 -1
- package/dist/remote/oauth-handler.js +232 -18
- package/dist/remote/oauth-handler.js.map +1 -1
- package/dist/remote/policy.js +2 -2
- package/dist/remote/policy.js.map +1 -1
- package/dist/remote/schemas.d.ts +9 -9
- package/dist/remote/schemas.js +6 -6
- package/dist/remote/schemas.js.map +1 -1
- package/dist/remote/store.d.ts +38 -1
- package/dist/remote/store.d.ts.map +1 -1
- package/dist/remote/store.js +149 -11
- package/dist/remote/store.js.map +1 -1
- package/dist/remote/types.d.ts +14 -0
- package/dist/remote/types.d.ts.map +1 -1
- package/dist/remote/types.js.map +1 -1
- package/dist/remote/web-dashboard-client-config.d.ts +77 -0
- package/dist/remote/web-dashboard-client-config.d.ts.map +1 -0
- package/dist/remote/web-dashboard-client-config.js +81 -0
- package/dist/remote/web-dashboard-client-config.js.map +1 -0
- package/dist/remote/web-dashboard-html.d.ts +2 -0
- package/dist/remote/web-dashboard-html.d.ts.map +1 -0
- package/dist/remote/web-dashboard-html.js +433 -0
- package/dist/remote/web-dashboard-html.js.map +1 -0
- package/dist/remote/web-dashboard-oauth-users.d.ts +4 -0
- package/dist/remote/web-dashboard-oauth-users.d.ts.map +1 -0
- package/dist/remote/web-dashboard-oauth-users.js +78 -0
- package/dist/remote/web-dashboard-oauth-users.js.map +1 -0
- package/dist/remote/web-dashboard-static.d.ts +4 -0
- package/dist/remote/web-dashboard-static.d.ts.map +1 -0
- package/dist/remote/web-dashboard-static.js +19 -0
- package/dist/remote/web-dashboard-static.js.map +1 -0
- package/dist/remote/web-dashboard-styles.d.ts +2 -0
- package/dist/remote/web-dashboard-styles.d.ts.map +1 -0
- package/dist/remote/web-dashboard-styles.js +187 -0
- package/dist/remote/web-dashboard-styles.js.map +1 -0
- package/dist/remote/web-dashboard.d.ts +62 -0
- package/dist/remote/web-dashboard.d.ts.map +1 -0
- package/dist/remote/web-dashboard.js +467 -0
- package/dist/remote/web-dashboard.js.map +1 -0
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +6 -3
- package/dist/retry.js.map +1 -1
- package/dist/safety.d.ts.map +1 -1
- package/dist/safety.js +56 -6
- package/dist/safety.js.map +1 -1
- package/dist/session-auth.js +7 -7
- package/dist/session-auth.js.map +1 -1
- package/dist/session.d.ts +1 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +44 -40
- package/dist/session.js.map +1 -1
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +5 -4
- package/dist/shell.js.map +1 -1
- package/dist/ssh-config.d.ts +2 -2
- package/dist/ssh-config.d.ts.map +1 -1
- package/dist/ssh-config.js +24 -20
- package/dist/ssh-config.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +9 -2
- package/dist/telemetry.js.map +1 -1
- package/dist/tools/connector.provider.d.ts +1 -1
- package/dist/tools/connector.provider.d.ts.map +1 -1
- package/dist/tools/ensure.provider.d.ts +1 -1
- package/dist/tools/ensure.provider.d.ts.map +1 -1
- package/dist/tools/fs.provider.d.ts +1 -1
- package/dist/tools/fs.provider.d.ts.map +1 -1
- package/dist/tools/metadata.d.ts +1 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/output-schemas.d.ts +27 -135
- package/dist/tools/output-schemas.d.ts.map +1 -1
- package/dist/tools/process.provider.d.ts +1 -1
- package/dist/tools/process.provider.d.ts.map +1 -1
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +16 -13
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/session.provider.d.ts +1 -1
- package/dist/tools/session.provider.d.ts.map +1 -1
- package/dist/tools/system.provider.d.ts +1 -1
- package/dist/tools/system.provider.d.ts.map +1 -1
- package/dist/tools/transfer.provider.d.ts +1 -1
- package/dist/tools/transfer.provider.d.ts.map +1 -1
- package/dist/tools/tunnel.provider.d.ts +1 -1
- package/dist/tools/tunnel.provider.d.ts.map +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/transfer.js +2 -2
- package/dist/transfer.js.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/docs/adding-a-device.md +39 -17
- package/docs/agent-activity-monitor.md +34 -0
- package/docs/coolify.md +29 -0
- package/docs/development/dependency-management.md +1 -1
- package/docs/development/mcp-protocol-2026.md +33 -0
- package/docs/doppler-guide.md +34 -0
- package/docs/reference/compatibility.md +1 -1
- package/docs/security/dependency-audit-exceptions.md +3 -7
- package/docs/security/hosted-data-inventory.md +81 -0
- package/docs/sonarcloud-analysis.md +9 -0
- package/mcp.json +1 -1
- package/package.json +26 -21
- package/registry/ssh-mcp-pro/mcp.json +1 -1
- package/server.json +3 -3
package/dist/detect.js
CHANGED
|
@@ -17,7 +17,7 @@ async function safeExec(ssh, command) {
|
|
|
17
17
|
function normalizeWindowsPath(path) {
|
|
18
18
|
if (!path)
|
|
19
19
|
return undefined;
|
|
20
|
-
return path.
|
|
20
|
+
return path.replaceAll("\\\\", "/").replaceAll("\\", "/");
|
|
21
21
|
}
|
|
22
22
|
function parseKeyValueLine(line) {
|
|
23
23
|
const separatorIndex = line.indexOf("=");
|
|
@@ -28,154 +28,244 @@ function parseKeyValueLine(line) {
|
|
|
28
28
|
key: line.slice(0, separatorIndex),
|
|
29
29
|
value: line
|
|
30
30
|
.slice(separatorIndex + 1)
|
|
31
|
-
.
|
|
31
|
+
.replaceAll('"', "")
|
|
32
32
|
.trim(),
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
+
async function detectArchitecture(ssh) {
|
|
36
|
+
// Detect architecture
|
|
37
|
+
const archResult = await safeExec(ssh, "uname -m");
|
|
38
|
+
let arch = archResult.stdout.trim();
|
|
39
|
+
if (!arch) {
|
|
40
|
+
const winArch = await safeExec(ssh, 'powershell -NoLogo -NoProfile -Command "$env:PROCESSOR_ARCHITECTURE"');
|
|
41
|
+
arch = winArch.stdout.trim();
|
|
42
|
+
}
|
|
43
|
+
if (!arch) {
|
|
44
|
+
arch = "unknown";
|
|
45
|
+
}
|
|
46
|
+
return arch;
|
|
47
|
+
}
|
|
48
|
+
async function detectPlatform(ssh) {
|
|
49
|
+
let platform = "unknown";
|
|
50
|
+
let version = "unknown";
|
|
51
|
+
const unameResult = await safeExec(ssh, "uname -s");
|
|
52
|
+
const uname = unameResult.stdout.trim().toLowerCase();
|
|
53
|
+
if (uname.includes("linux")) {
|
|
54
|
+
platform = "linux";
|
|
55
|
+
}
|
|
56
|
+
else if (uname.includes("darwin")) {
|
|
57
|
+
platform = "darwin";
|
|
58
|
+
}
|
|
59
|
+
else if (uname.includes("windows")) {
|
|
60
|
+
platform = "windows";
|
|
61
|
+
}
|
|
62
|
+
// Windows fallback detection (when uname is not available)
|
|
63
|
+
if (platform === "unknown") {
|
|
64
|
+
const winCheck = await safeExec(ssh, "cmd /c ver");
|
|
65
|
+
if (winCheck.code === 0 && winCheck.stdout) {
|
|
66
|
+
platform = "windows";
|
|
67
|
+
version = winCheck.stdout.trim();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// macOS detection fallback
|
|
71
|
+
if (platform === "unknown") {
|
|
72
|
+
const macCheck = await safeExec(ssh, "sw_vers -productName");
|
|
73
|
+
if (macCheck.code === 0 && macCheck.stdout.toLowerCase().includes("mac")) {
|
|
74
|
+
platform = "darwin";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return { platform, version };
|
|
78
|
+
}
|
|
79
|
+
async function detectWindows(ssh, arch, version) {
|
|
80
|
+
const platform = "windows";
|
|
81
|
+
const defaultShell = "powershell";
|
|
82
|
+
const psShell = await safeExec(ssh, "echo $env:SHELL");
|
|
83
|
+
const shell = psShell.stdout.trim();
|
|
84
|
+
const tempDir = normalizeWindowsPath((await safeExec(ssh, 'powershell -NoLogo -NoProfile -Command "$env:TEMP"')).stdout.trim()) ?? "C:/Windows/Temp";
|
|
85
|
+
let packageManager = "unknown";
|
|
86
|
+
const wingetCheck = await safeExec(ssh, 'powershell -NoLogo -NoProfile -Command "Get-Command winget -ErrorAction SilentlyContinue"');
|
|
87
|
+
if (wingetCheck.code === 0 && wingetCheck.stdout.toLowerCase().includes("winget")) {
|
|
88
|
+
packageManager = "winget";
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const chocoCheck = await safeExec(ssh, "choco -v");
|
|
92
|
+
if (chocoCheck.code === 0) {
|
|
93
|
+
packageManager = "choco";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const osInfo = {
|
|
97
|
+
platform,
|
|
98
|
+
distro: "windows",
|
|
99
|
+
version,
|
|
100
|
+
arch,
|
|
101
|
+
shell: shell !== "" ? shell : "powershell",
|
|
102
|
+
packageManager,
|
|
103
|
+
init: "windows-service",
|
|
104
|
+
defaultShell,
|
|
105
|
+
tempDir,
|
|
106
|
+
};
|
|
107
|
+
logger.debug("OS detection completed", osInfo);
|
|
108
|
+
return osInfo;
|
|
109
|
+
}
|
|
110
|
+
function readReleaseFields(stdout, distroKey, versionKey, lowerDistro) {
|
|
111
|
+
let distro = "unknown";
|
|
112
|
+
let version = "unknown";
|
|
113
|
+
for (const line of stdout.split("\n")) {
|
|
114
|
+
const parsedLine = parseKeyValueLine(line);
|
|
115
|
+
if (!parsedLine) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (parsedLine.key === distroKey) {
|
|
119
|
+
distro = lowerDistro ? parsedLine.value.toLowerCase() : parsedLine.value;
|
|
120
|
+
}
|
|
121
|
+
if (parsedLine.key === versionKey) {
|
|
122
|
+
version = parsedLine.value;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return { distro, version };
|
|
126
|
+
}
|
|
127
|
+
function isAsciiDigit(value, index) {
|
|
128
|
+
const code = value.codePointAt(index) ?? -1;
|
|
129
|
+
return code >= 48 && code <= 57;
|
|
130
|
+
}
|
|
131
|
+
function firstDottedVersion(value) {
|
|
132
|
+
for (let index = 0; index < value.length; index++) {
|
|
133
|
+
if (!isAsciiDigit(value, index)) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const start = index;
|
|
137
|
+
while (isAsciiDigit(value, index)) {
|
|
138
|
+
index++;
|
|
139
|
+
}
|
|
140
|
+
if (value[index] !== "." || !isAsciiDigit(value, index + 1)) {
|
|
141
|
+
index--;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
index++;
|
|
145
|
+
while (isAsciiDigit(value, index)) {
|
|
146
|
+
index++;
|
|
147
|
+
}
|
|
148
|
+
return value.slice(start, index);
|
|
149
|
+
}
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
function parseLinuxRelease(command, stdout) {
|
|
153
|
+
if (command === "cat /etc/os-release") {
|
|
154
|
+
return readReleaseFields(stdout, "ID", "VERSION_ID", false);
|
|
155
|
+
}
|
|
156
|
+
if (command === "cat /etc/lsb-release") {
|
|
157
|
+
return readReleaseFields(stdout, "DISTRIB_ID", "DISTRIB_RELEASE", true);
|
|
158
|
+
}
|
|
159
|
+
const output = stdout.toLowerCase();
|
|
160
|
+
if (output.includes("red hat") || output.includes("rhel") || output.includes("centos")) {
|
|
161
|
+
return { distro: "rhel", version: firstDottedVersion(stdout) ?? "unknown" };
|
|
162
|
+
}
|
|
163
|
+
if (output.includes("debian")) {
|
|
164
|
+
return { distro: "debian", version: stdout.trim() };
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
async function detectLinuxDistro(ssh) {
|
|
169
|
+
const commands = [
|
|
170
|
+
"cat /etc/os-release",
|
|
171
|
+
"cat /etc/lsb-release",
|
|
172
|
+
"cat /etc/redhat-release",
|
|
173
|
+
"cat /etc/debian_version",
|
|
174
|
+
];
|
|
175
|
+
for (const command of commands) {
|
|
176
|
+
const result = await safeExec(ssh, command);
|
|
177
|
+
if (result.code !== 0 || !result.stdout.trim()) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const parsed = parseLinuxRelease(command, result.stdout);
|
|
181
|
+
if (parsed) {
|
|
182
|
+
return parsed;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return { distro: "unknown", version: "unknown" };
|
|
186
|
+
}
|
|
187
|
+
async function detectPackageManager(ssh, platform) {
|
|
188
|
+
let packageManager = "unknown";
|
|
189
|
+
if (platform === "linux") {
|
|
190
|
+
const packageManagers = [
|
|
191
|
+
{
|
|
192
|
+
command: "command -v apt-get || which apt-get",
|
|
193
|
+
manager: "apt",
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
command: "command -v dnf || which dnf",
|
|
197
|
+
manager: "dnf",
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
command: "command -v yum || which yum",
|
|
201
|
+
manager: "yum",
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
command: "command -v pacman || which pacman",
|
|
205
|
+
manager: "pacman",
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
command: "command -v apk || which apk",
|
|
209
|
+
manager: "apk",
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
command: "command -v zypper || which zypper",
|
|
213
|
+
manager: "zypper",
|
|
214
|
+
},
|
|
215
|
+
];
|
|
216
|
+
for (const { command, manager } of packageManagers) {
|
|
217
|
+
const result = await safeExec(ssh, command);
|
|
218
|
+
if (result.code === 0) {
|
|
219
|
+
packageManager = manager;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
else if (platform === "darwin") {
|
|
225
|
+
const brewResult = await safeExec(ssh, "command -v brew || which brew");
|
|
226
|
+
if (brewResult.code === 0) {
|
|
227
|
+
packageManager = "brew";
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return packageManager;
|
|
231
|
+
}
|
|
232
|
+
async function detectInitSystem(ssh, platform) {
|
|
233
|
+
let init = "unknown";
|
|
234
|
+
if (platform === "linux") {
|
|
235
|
+
const systemctlResult = await safeExec(ssh, "command -v systemctl || which systemctl");
|
|
236
|
+
const serviceResult = await safeExec(ssh, "command -v service || which service");
|
|
237
|
+
if (systemctlResult.code === 0) {
|
|
238
|
+
init = "systemd";
|
|
239
|
+
}
|
|
240
|
+
else if (serviceResult.code === 0) {
|
|
241
|
+
init = "service";
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
else if (platform === "darwin") {
|
|
245
|
+
init = "launchd";
|
|
246
|
+
}
|
|
247
|
+
return init;
|
|
248
|
+
}
|
|
35
249
|
/**
|
|
36
250
|
* Detects OS information on the remote system
|
|
37
251
|
*/
|
|
38
252
|
export async function detectOS(ssh) {
|
|
39
253
|
logger.debug("Starting OS detection");
|
|
40
254
|
try {
|
|
41
|
-
|
|
42
|
-
const
|
|
43
|
-
let arch = archResult.stdout.trim();
|
|
44
|
-
if (!arch) {
|
|
45
|
-
const winArch = await safeExec(ssh, 'powershell -NoLogo -NoProfile -Command "$env:PROCESSOR_ARCHITECTURE"');
|
|
46
|
-
arch = winArch.stdout.trim();
|
|
47
|
-
}
|
|
48
|
-
if (!arch) {
|
|
49
|
-
arch = "unknown";
|
|
50
|
-
}
|
|
51
|
-
// Detect platform/kernel
|
|
52
|
-
let platform = "unknown";
|
|
255
|
+
const arch = await detectArchitecture(ssh);
|
|
256
|
+
const { platform, version: initialVersion } = await detectPlatform(ssh);
|
|
53
257
|
let distro = "unknown";
|
|
54
|
-
let version =
|
|
258
|
+
let version = initialVersion;
|
|
55
259
|
let defaultShell = "unknown";
|
|
56
260
|
let tempDir;
|
|
57
|
-
const unameResult = await safeExec(ssh, "uname -s");
|
|
58
|
-
const uname = unameResult.stdout.trim().toLowerCase();
|
|
59
|
-
if (uname.includes("linux")) {
|
|
60
|
-
platform = "linux";
|
|
61
|
-
}
|
|
62
|
-
else if (uname.includes("darwin")) {
|
|
63
|
-
platform = "darwin";
|
|
64
|
-
}
|
|
65
|
-
else if (uname.includes("windows")) {
|
|
66
|
-
platform = "windows";
|
|
67
|
-
}
|
|
68
|
-
// Windows fallback detection (when uname is not available)
|
|
69
|
-
if (platform === "unknown") {
|
|
70
|
-
const winCheck = await safeExec(ssh, "cmd /c ver");
|
|
71
|
-
if (winCheck.code === 0 && winCheck.stdout) {
|
|
72
|
-
platform = "windows";
|
|
73
|
-
version = winCheck.stdout.trim();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// macOS detection fallback
|
|
77
|
-
if (platform === "unknown") {
|
|
78
|
-
const macCheck = await safeExec(ssh, "sw_vers -productName");
|
|
79
|
-
if (macCheck.code === 0 && macCheck.stdout.toLowerCase().includes("mac")) {
|
|
80
|
-
platform = "darwin";
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
261
|
// Detect shell
|
|
84
262
|
if (platform === "windows") {
|
|
85
|
-
|
|
86
|
-
const psShell = await safeExec(ssh, "echo $env:SHELL");
|
|
87
|
-
const shell = psShell.stdout.trim();
|
|
88
|
-
tempDir =
|
|
89
|
-
normalizeWindowsPath((await safeExec(ssh, 'powershell -NoLogo -NoProfile -Command "$env:TEMP"')).stdout.trim()) ?? "C:/Windows/Temp";
|
|
90
|
-
let packageManager = "unknown";
|
|
91
|
-
const wingetCheck = await safeExec(ssh, 'powershell -NoLogo -NoProfile -Command "Get-Command winget -ErrorAction SilentlyContinue"');
|
|
92
|
-
if (wingetCheck.code === 0 && wingetCheck.stdout.toLowerCase().includes("winget")) {
|
|
93
|
-
packageManager = "winget";
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
const chocoCheck = await safeExec(ssh, "choco -v");
|
|
97
|
-
if (chocoCheck.code === 0) {
|
|
98
|
-
packageManager = "choco";
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
const osInfo = {
|
|
102
|
-
platform,
|
|
103
|
-
distro: "windows",
|
|
104
|
-
version,
|
|
105
|
-
arch,
|
|
106
|
-
shell: shell !== "" ? shell : "powershell",
|
|
107
|
-
packageManager,
|
|
108
|
-
init: "windows-service",
|
|
109
|
-
defaultShell,
|
|
110
|
-
tempDir,
|
|
111
|
-
};
|
|
112
|
-
logger.debug("OS detection completed", osInfo);
|
|
113
|
-
return osInfo;
|
|
263
|
+
return await detectWindows(ssh, arch, version);
|
|
114
264
|
}
|
|
115
265
|
const shellResult = await safeExec(ssh, "echo $SHELL");
|
|
116
266
|
const shell = shellResult.stdout.trim().split("/").pop() ?? "unknown";
|
|
117
|
-
// Linux distro detection
|
|
118
267
|
if (platform === "linux") {
|
|
119
|
-
|
|
120
|
-
"cat /etc/os-release",
|
|
121
|
-
"cat /etc/lsb-release",
|
|
122
|
-
"cat /etc/redhat-release",
|
|
123
|
-
"cat /etc/debian_version",
|
|
124
|
-
];
|
|
125
|
-
for (const cmd of detectionCommands) {
|
|
126
|
-
const result = await safeExec(ssh, cmd);
|
|
127
|
-
if (result.code !== 0 || !result.stdout.trim()) {
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
const output = result.stdout.toLowerCase();
|
|
131
|
-
if (cmd === "cat /etc/os-release") {
|
|
132
|
-
const lines = result.stdout.split("\n");
|
|
133
|
-
for (const line of lines) {
|
|
134
|
-
const parsedLine = parseKeyValueLine(line);
|
|
135
|
-
if (!parsedLine) {
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
if (parsedLine.key === "ID") {
|
|
139
|
-
distro = parsedLine.value;
|
|
140
|
-
}
|
|
141
|
-
if (parsedLine.key === "VERSION_ID") {
|
|
142
|
-
version = parsedLine.value;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
else if (cmd === "cat /etc/lsb-release") {
|
|
148
|
-
const lines = result.stdout.split("\n");
|
|
149
|
-
for (const line of lines) {
|
|
150
|
-
const parsedLine = parseKeyValueLine(line);
|
|
151
|
-
if (!parsedLine) {
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
if (parsedLine.key === "DISTRIB_ID") {
|
|
155
|
-
distro = parsedLine.value.toLowerCase();
|
|
156
|
-
}
|
|
157
|
-
if (parsedLine.key === "DISTRIB_RELEASE") {
|
|
158
|
-
version = parsedLine.value;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
else if (output.includes("red hat") ||
|
|
164
|
-
output.includes("rhel") ||
|
|
165
|
-
output.includes("centos")) {
|
|
166
|
-
distro = "rhel";
|
|
167
|
-
const versionMatch = result.stdout.match(/(\d+\.\d+)/);
|
|
168
|
-
if (versionMatch?.[1]) {
|
|
169
|
-
version = versionMatch[1];
|
|
170
|
-
}
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
else if (output.includes("debian")) {
|
|
174
|
-
distro = "debian";
|
|
175
|
-
version = result.stdout.trim();
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
268
|
+
({ distro, version } = await detectLinuxDistro(ssh));
|
|
179
269
|
}
|
|
180
270
|
// macOS distro detection
|
|
181
271
|
if (platform === "darwin") {
|
|
@@ -187,68 +277,12 @@ export async function detectOS(ssh) {
|
|
|
187
277
|
version = productVersionValue !== "" ? productVersionValue : "unknown";
|
|
188
278
|
defaultShell = shell.includes("zsh") ? "sh" : "bash";
|
|
189
279
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
if (platform === "linux") {
|
|
193
|
-
const packageManagers = [
|
|
194
|
-
{
|
|
195
|
-
command: "command -v apt-get || which apt-get",
|
|
196
|
-
manager: "apt",
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
command: "command -v dnf || which dnf",
|
|
200
|
-
manager: "dnf",
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
command: "command -v yum || which yum",
|
|
204
|
-
manager: "yum",
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
command: "command -v pacman || which pacman",
|
|
208
|
-
manager: "pacman",
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
command: "command -v apk || which apk",
|
|
212
|
-
manager: "apk",
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
command: "command -v zypper || which zypper",
|
|
216
|
-
manager: "zypper",
|
|
217
|
-
},
|
|
218
|
-
];
|
|
219
|
-
for (const { command, manager } of packageManagers) {
|
|
220
|
-
const result = await safeExec(ssh, command);
|
|
221
|
-
if (result.code === 0) {
|
|
222
|
-
packageManager = manager;
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
else if (platform === "darwin") {
|
|
228
|
-
const brewResult = await safeExec(ssh, "command -v brew || which brew");
|
|
229
|
-
if (brewResult.code === 0) {
|
|
230
|
-
packageManager = "brew";
|
|
231
|
-
}
|
|
232
|
-
defaultShell = shell.includes("zsh") ? "sh" : "bash";
|
|
233
|
-
}
|
|
234
|
-
// Init system detection
|
|
235
|
-
let init = "unknown";
|
|
236
|
-
if (platform === "linux") {
|
|
237
|
-
const systemctlResult = await safeExec(ssh, "command -v systemctl || which systemctl");
|
|
238
|
-
const serviceResult = await safeExec(ssh, "command -v service || which service");
|
|
239
|
-
if (systemctlResult.code === 0) {
|
|
240
|
-
init = "systemd";
|
|
241
|
-
}
|
|
242
|
-
else if (serviceResult.code === 0) {
|
|
243
|
-
init = "service";
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
else if (platform === "darwin") {
|
|
247
|
-
init = "launchd";
|
|
248
|
-
}
|
|
280
|
+
const packageManager = await detectPackageManager(ssh, platform);
|
|
281
|
+
const init = await detectInitSystem(ssh, platform);
|
|
249
282
|
tempDir = platform === "darwin" || platform === "linux" ? "/tmp" : tempDir;
|
|
250
|
-
defaultShell
|
|
251
|
-
defaultShell
|
|
283
|
+
if (defaultShell === "unknown") {
|
|
284
|
+
defaultShell = shell.includes("bash") ? "bash" : "sh";
|
|
285
|
+
}
|
|
252
286
|
const osInfo = {
|
|
253
287
|
platform,
|
|
254
288
|
distro,
|
package/dist/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,KAAK,UAAU,QAAQ,CACrB,GAAY,EACZ,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;SAC5B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAwB;IACpD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProcessService } from "./process.js";
|
|
2
|
+
import type { SessionManager } from "./session.js";
|
|
3
|
+
import type { PackageResult } from "./types.js";
|
|
4
|
+
/** Package-specific orchestration; public EnsureService entry point remains unchanged. */
|
|
5
|
+
export declare function createPackageEnsure({ sessionManager, processService, }: {
|
|
6
|
+
sessionManager: Pick<SessionManager, "getSession" | "getOSInfo">;
|
|
7
|
+
processService: Pick<ProcessService, "execCommand" | "execSudo">;
|
|
8
|
+
}): (sessionId: string, packageName: string, state?: "present" | "absent") => Promise<PackageResult>;
|
|
9
|
+
//# sourceMappingURL=ensure-package-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-package-service.d.ts","sourceRoot":"","sources":["../src/ensure-package-service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,cAAc,GACf,EAAE;IACD,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,CAAC,CAAC;CAClE,eAoBc,MAAM,eACJ,MAAM,UACZ,SAAS,GAAG,QAAQ,KAC1B,OAAO,CAAC,aAAa,CAAC,CA6J1B"}
|