ssh-mcp-pro 1.1.2 → 1.1.4

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +23 -1
  3. package/dist/config-parsers.d.ts +17 -0
  4. package/dist/config-parsers.d.ts.map +1 -0
  5. package/dist/config-parsers.js +86 -0
  6. package/dist/config-parsers.js.map +1 -0
  7. package/dist/config.d.ts +3 -2
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +5 -58
  10. package/dist/config.js.map +1 -1
  11. package/dist/ensure-pkg.d.ts +9 -0
  12. package/dist/ensure-pkg.d.ts.map +1 -0
  13. package/dist/ensure-pkg.js +105 -0
  14. package/dist/ensure-pkg.js.map +1 -0
  15. package/dist/ensure.d.ts.map +1 -1
  16. package/dist/ensure.js +5 -106
  17. package/dist/ensure.js.map +1 -1
  18. package/dist/fs-sftp.d.ts +58 -0
  19. package/dist/fs-sftp.d.ts.map +1 -0
  20. package/dist/fs-sftp.js +184 -0
  21. package/dist/fs-sftp.js.map +1 -0
  22. package/dist/fs-tools.d.ts.map +1 -1
  23. package/dist/fs-tools.js +2 -144
  24. package/dist/fs-tools.js.map +1 -1
  25. package/dist/mcp.d.ts +1 -1
  26. package/dist/mcp.js +1 -1
  27. package/dist/remote/agent-handler.d.ts +36 -0
  28. package/dist/remote/agent-handler.d.ts.map +1 -0
  29. package/dist/remote/agent-handler.js +255 -0
  30. package/dist/remote/agent-handler.js.map +1 -0
  31. package/dist/remote/control-plane.d.ts +4 -17
  32. package/dist/remote/control-plane.d.ts.map +1 -1
  33. package/dist/remote/control-plane.js +23 -657
  34. package/dist/remote/control-plane.js.map +1 -1
  35. package/dist/remote/http-util.d.ts +29 -0
  36. package/dist/remote/http-util.d.ts.map +1 -0
  37. package/dist/remote/http-util.js +159 -0
  38. package/dist/remote/http-util.js.map +1 -0
  39. package/dist/remote/oauth-handler.d.ts +47 -0
  40. package/dist/remote/oauth-handler.d.ts.map +1 -0
  41. package/dist/remote/oauth-handler.js +296 -0
  42. package/dist/remote/oauth-handler.js.map +1 -0
  43. package/dist/session-auth.d.ts +39 -0
  44. package/dist/session-auth.d.ts.map +1 -0
  45. package/dist/session-auth.js +148 -0
  46. package/dist/session-auth.js.map +1 -0
  47. package/dist/session.d.ts +25 -20
  48. package/dist/session.d.ts.map +1 -1
  49. package/dist/session.js +88 -159
  50. package/dist/session.js.map +1 -1
  51. package/dist/tunnel.d.ts.map +1 -1
  52. package/dist/tunnel.js +46 -9
  53. package/dist/tunnel.js.map +1 -1
  54. package/docs/audit/2026-06-05-ecosystem-audit.md +1 -1
  55. package/docs/governance/issue-taxonomy.json +5 -0
  56. package/mcp.json +1 -1
  57. package/package.json +21 -15
  58. package/registry/ssh-mcp-pro/mcp.json +1 -1
  59. package/server.json +3 -3
package/dist/ensure.js CHANGED
@@ -1,29 +1,8 @@
1
- import { createPackageManagerError, createSudoError, createFilesystemError, createPatchError, createBadRequestError, } from "./errors.js";
1
+ import { randomUUID } from "node:crypto";
2
+ import { createBadRequestError, createPackageManagerError, createSudoError, createFilesystemError, createPatchError, } from "./errors.js";
2
3
  import { logger } from "./logging.js";
4
+ import { SUPPORTED_PACKAGE_MANAGERS_HINT, sanitizePackageName, getRemoveCommand, getInstallCommand, getPackageCheckCommand, usesDirectPackageCommand, } from "./ensure-pkg.js";
3
5
  import { resolveRemoteTempDir } from "./shell.js";
4
- const SUPPORTED_PACKAGE_MANAGERS = [
5
- "apt",
6
- "dnf",
7
- "yum",
8
- "pacman",
9
- "apk",
10
- "zypper",
11
- "brew",
12
- "winget",
13
- "choco",
14
- ];
15
- const SUPPORTED_PACKAGE_MANAGERS_HINT = `Supported package managers: ${SUPPORTED_PACKAGE_MANAGERS.join(", ")}`;
16
- function sanitizePackageName(name) {
17
- const validPackageName = /^[a-zA-Z0-9][a-zA-Z0-9._+-]*$/;
18
- if (!validPackageName.test(name)) {
19
- throw createBadRequestError(`Invalid package name: ${name}`, "Package names must start with alphanumeric and contain only letters, numbers, dots, dashes, underscores, or plus signs");
20
- }
21
- const dangerousChars = /[;&|`$(){}\[\]<>\\\"'\n\r]/;
22
- if (dangerousChars.test(name)) {
23
- throw createBadRequestError("Package name contains potentially dangerous characters", "Remove any shell special characters from the package name");
24
- }
25
- return name;
26
- }
27
6
  function sanitizeServiceName(name) {
28
7
  const validServiceName = /^[a-zA-Z0-9][a-zA-Z0-9_.@:-]*$/;
29
8
  if (!validServiceName.test(name)) {
@@ -34,12 +13,6 @@ function sanitizeServiceName(name) {
34
13
  function shellQuote(value) {
35
14
  return `'${String(value).replace(/'/g, `'"'"'`)}'`;
36
15
  }
37
- function powerShellQuote(value) {
38
- return `'${value.replace(/'/g, "''")}'`;
39
- }
40
- function escapeRegExp(value) {
41
- return value.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
42
- }
43
16
  function describeError(error) {
44
17
  if (error instanceof Error && error.message) {
45
18
  return error.message;
@@ -54,80 +27,6 @@ function isPermissionError(error) {
54
27
  }
55
28
  return /\b(EACCES|EPERM|permission|permission denied|access denied|operation not permitted)\b/iu.test(describeError(error));
56
29
  }
57
- function getRemoveCommand(pm, packageName) {
58
- switch (pm) {
59
- case "apt":
60
- return `apt-get remove -y ${packageName}`;
61
- case "dnf":
62
- return `dnf remove -y ${packageName}`;
63
- case "yum":
64
- return `yum remove -y ${packageName}`;
65
- case "pacman":
66
- return `pacman -R --noconfirm ${packageName}`;
67
- case "apk":
68
- return `apk del ${packageName}`;
69
- case "zypper":
70
- return `zypper remove -y ${packageName}`;
71
- case "brew":
72
- return `brew uninstall ${packageName}`;
73
- case "winget":
74
- return `winget uninstall --id ${packageName} --exact --silent --accept-source-agreements --disable-interactivity`;
75
- case "choco":
76
- return `choco uninstall ${packageName} -y --no-progress`;
77
- default:
78
- throw createPackageManagerError(`Unsupported package manager: ${pm}`);
79
- }
80
- }
81
- function getInstallCommand(pm, packageName) {
82
- switch (pm) {
83
- case "apt":
84
- return `apt-get update && apt-get install -y ${packageName}`;
85
- case "dnf":
86
- return `dnf install -y ${packageName}`;
87
- case "yum":
88
- return `yum install -y ${packageName}`;
89
- case "pacman":
90
- return `pacman -S --noconfirm ${packageName}`;
91
- case "apk":
92
- return `apk add ${packageName}`;
93
- case "zypper":
94
- return `zypper install -y ${packageName}`;
95
- case "brew":
96
- return `brew install ${packageName}`;
97
- case "winget":
98
- return `winget install --id ${packageName} --exact --silent --accept-source-agreements --accept-package-agreements --disable-interactivity`;
99
- case "choco":
100
- return `choco install ${packageName} -y --no-progress`;
101
- default:
102
- throw createPackageManagerError(`Unsupported package manager: ${pm}`);
103
- }
104
- }
105
- function getPackageCheckCommand(pm, packageName) {
106
- switch (pm) {
107
- case "apt":
108
- return `dpkg -l ${packageName} | grep -q '^ii'`;
109
- case "dnf":
110
- case "yum":
111
- return `${pm} list installed ${packageName}`;
112
- case "pacman":
113
- return `pacman -Q ${packageName}`;
114
- case "apk":
115
- return `apk info -e ${packageName}`;
116
- case "zypper":
117
- return `zypper se -i ${packageName}`;
118
- case "brew":
119
- return `brew list --versions ${packageName}`;
120
- case "winget":
121
- return `$idPattern = ${powerShellQuote(`(^|\\s)${escapeRegExp(packageName)}(\\s|$)`)}; $package = winget list --id ${powerShellQuote(packageName)} --exact --disable-interactivity; if ($LASTEXITCODE -eq 0 -and ($package -match $idPattern)) { exit 0 } exit 1`;
122
- case "choco":
123
- return `$package = choco list --exact ${powerShellQuote(packageName)} --limit-output; if ($LASTEXITCODE -eq 0 -and ($package -like ${powerShellQuote(`${packageName}|*`)})) { exit 0 } exit 1`;
124
- default:
125
- return undefined;
126
- }
127
- }
128
- function usesDirectPackageCommand(pm) {
129
- return pm === "brew" || pm === "winget" || pm === "choco";
130
- }
131
30
  export function createEnsureService({ sessionManager, processService, fsService, }) {
132
31
  async function checkPackageInstalled(sessionId, packageName, pm) {
133
32
  const checkCommand = getPackageCheckCommand(pm, packageName);
@@ -380,7 +279,7 @@ export function createEnsureService({ sessionManager, processService, fsService,
380
279
  }
381
280
  const tempDir = resolveRemoteTempDir(osInfo);
382
281
  const baseTempDir = tempDir.replace(/\/+$/, "");
383
- const tempFile = `${baseTempDir}/ssh-mcp-${Date.now()}.tmp`;
282
+ const tempFile = `${baseTempDir}/ssh-mcp-${randomUUID()}.tmp`;
384
283
  try {
385
284
  await fsService.writeFile(sessionId, tempFile, content);
386
285
  }
@@ -467,7 +366,7 @@ export function createEnsureService({ sessionManager, processService, fsService,
467
366
  }
468
367
  const tempDir = resolveRemoteTempDir(osInfo);
469
368
  const baseTempDir = tempDir.replace(/\/+$/, "");
470
- const tempPatchFile = `${baseTempDir}/ssh-mcp-patch-${Date.now()}.patch`;
369
+ const tempPatchFile = `${baseTempDir}/ssh-mcp-patch-${randomUUID()}.patch`;
471
370
  await fsService.writeFile(sessionId, tempPatchFile, diff);
472
371
  try {
473
372
  const testResult = await processService.execCommand(sessionId, `patch --dry-run -p0 ${shellQuote(filePath)} < ${shellQuote(tempPatchFile)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"ensure.js","sourceRoot":"","sources":["../src/ensure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensure.js","sourceRoot":"","sources":["../src/ensure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { SFTPWrapper, Stats, FileEntry } from "ssh2";
2
+ /**
3
+ * Check whether a session has an active SFTP subsystem.
4
+ */
5
+ export declare function hasSftp(session: {
6
+ sftp?: unknown;
7
+ } | undefined): boolean;
8
+ /**
9
+ * Get the SFTP wrapper from a session or throw if unavailable.
10
+ */
11
+ export declare function getSftpOrThrow(session: {
12
+ sftp?: SFTPWrapper;
13
+ }): SFTPWrapper;
14
+ /**
15
+ * Read a file via SFTP.
16
+ */
17
+ export declare function sftpReadFile(sftp: SFTPWrapper, path: string): Promise<Buffer>;
18
+ /**
19
+ * Write a file via SFTP.
20
+ */
21
+ export declare function sftpWriteFile(sftp: SFTPWrapper, path: string, data: Buffer): Promise<void>;
22
+ /**
23
+ * Stat a path via SFTP.
24
+ */
25
+ export declare function sftpStat(sftp: SFTPWrapper, path: string): Promise<Stats>;
26
+ /**
27
+ * Read directory entries via SFTP.
28
+ */
29
+ export declare function sftpReaddir(sftp: SFTPWrapper, path: string): Promise<FileEntry[]>;
30
+ /**
31
+ * Create a directory via SFTP.
32
+ */
33
+ export declare function sftpMkdir(sftp: SFTPWrapper, path: string): Promise<void>;
34
+ /**
35
+ * Remove a directory via SFTP.
36
+ */
37
+ export declare function sftpRmdir(sftp: SFTPWrapper, path: string): Promise<void>;
38
+ /**
39
+ * Delete a file via SFTP.
40
+ */
41
+ export declare function sftpUnlink(sftp: SFTPWrapper, path: string): Promise<void>;
42
+ /**
43
+ * Rename a file via SFTP.
44
+ */
45
+ export declare function sftpRename(sftp: SFTPWrapper, oldPath: string, newPath: string): Promise<void>;
46
+ /**
47
+ * Change file mode via SFTP.
48
+ */
49
+ export declare function sftpChmod(sftp: SFTPWrapper, path: string, mode: number): Promise<void>;
50
+ /**
51
+ * Recursively create directories via SFTP.
52
+ */
53
+ export declare function sftpMkdirRecursive(sftp: SFTPWrapper, dirPath: string): Promise<void>;
54
+ /**
55
+ * Recursively remove a directory and its contents via SFTP.
56
+ */
57
+ export declare function sftpRmdirRecursive(sftp: SFTPWrapper, dirPath: string): Promise<void>;
58
+ //# sourceMappingURL=fs-sftp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-sftp.d.ts","sourceRoot":"","sources":["../src/fs-sftp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAG1D;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,WAAW,CAM3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1F;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAUjF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB1F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB1F"}
@@ -0,0 +1,184 @@
1
+ import { createFilesystemError } from "./errors.js";
2
+ /**
3
+ * Check whether a session has an active SFTP subsystem.
4
+ */
5
+ export function hasSftp(session) {
6
+ return !!session?.sftp;
7
+ }
8
+ /**
9
+ * Get the SFTP wrapper from a session or throw if unavailable.
10
+ */
11
+ export function getSftpOrThrow(session) {
12
+ if (!session.sftp) {
13
+ throw createFilesystemError("SFTP subsystem is unavailable for this session");
14
+ }
15
+ return session.sftp;
16
+ }
17
+ /**
18
+ * Read a file via SFTP.
19
+ */
20
+ export function sftpReadFile(sftp, path) {
21
+ return new Promise((resolve, reject) => {
22
+ sftp.readFile(path, (err, data) => {
23
+ if (err) {
24
+ reject(err);
25
+ return;
26
+ }
27
+ resolve(data);
28
+ });
29
+ });
30
+ }
31
+ /**
32
+ * Write a file via SFTP.
33
+ */
34
+ export function sftpWriteFile(sftp, path, data) {
35
+ return new Promise((resolve, reject) => {
36
+ sftp.writeFile(path, data, {}, (err) => {
37
+ if (err) {
38
+ reject(err);
39
+ return;
40
+ }
41
+ resolve();
42
+ });
43
+ });
44
+ }
45
+ /**
46
+ * Stat a path via SFTP.
47
+ */
48
+ export function sftpStat(sftp, path) {
49
+ return new Promise((resolve, reject) => {
50
+ sftp.stat(path, (err, stats) => {
51
+ if (err) {
52
+ reject(err);
53
+ return;
54
+ }
55
+ resolve(stats);
56
+ });
57
+ });
58
+ }
59
+ /**
60
+ * Read directory entries via SFTP.
61
+ */
62
+ export function sftpReaddir(sftp, path) {
63
+ return new Promise((resolve, reject) => {
64
+ sftp.readdir(path, (err, list) => {
65
+ if (err) {
66
+ reject(err);
67
+ return;
68
+ }
69
+ resolve(list);
70
+ });
71
+ });
72
+ }
73
+ /**
74
+ * Create a directory via SFTP.
75
+ */
76
+ export function sftpMkdir(sftp, path) {
77
+ return new Promise((resolve, reject) => {
78
+ sftp.mkdir(path, (err) => {
79
+ if (err) {
80
+ reject(err);
81
+ return;
82
+ }
83
+ resolve();
84
+ });
85
+ });
86
+ }
87
+ /**
88
+ * Remove a directory via SFTP.
89
+ */
90
+ export function sftpRmdir(sftp, path) {
91
+ return new Promise((resolve, reject) => {
92
+ sftp.rmdir(path, (err) => {
93
+ if (err) {
94
+ reject(err);
95
+ return;
96
+ }
97
+ resolve();
98
+ });
99
+ });
100
+ }
101
+ /**
102
+ * Delete a file via SFTP.
103
+ */
104
+ export function sftpUnlink(sftp, path) {
105
+ return new Promise((resolve, reject) => {
106
+ sftp.unlink(path, (err) => {
107
+ if (err) {
108
+ reject(err);
109
+ return;
110
+ }
111
+ resolve();
112
+ });
113
+ });
114
+ }
115
+ /**
116
+ * Rename a file via SFTP.
117
+ */
118
+ export function sftpRename(sftp, oldPath, newPath) {
119
+ return new Promise((resolve, reject) => {
120
+ sftp.rename(oldPath, newPath, (err) => {
121
+ if (err) {
122
+ reject(err);
123
+ return;
124
+ }
125
+ resolve();
126
+ });
127
+ });
128
+ }
129
+ /**
130
+ * Change file mode via SFTP.
131
+ */
132
+ export function sftpChmod(sftp, path, mode) {
133
+ return new Promise((resolve, reject) => {
134
+ sftp.chmod(path, mode, (err) => {
135
+ if (err) {
136
+ reject(err);
137
+ return;
138
+ }
139
+ resolve();
140
+ });
141
+ });
142
+ }
143
+ /**
144
+ * Recursively create directories via SFTP.
145
+ */
146
+ export async function sftpMkdirRecursive(sftp, dirPath) {
147
+ const parts = dirPath.split("/").filter((part) => part);
148
+ let currentPath = dirPath.startsWith("/") ? "" : ".";
149
+ for (const part of parts) {
150
+ currentPath = currentPath === "" ? `/${part}` : `${currentPath}/${part}`;
151
+ try {
152
+ await sftpStat(sftp, currentPath);
153
+ }
154
+ catch {
155
+ try {
156
+ await sftpMkdir(sftp, currentPath);
157
+ }
158
+ catch (mkdirErr) {
159
+ if (mkdirErr?.code !== 4) {
160
+ throw mkdirErr;
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Recursively remove a directory and its contents via SFTP.
168
+ */
169
+ export async function sftpRmdirRecursive(sftp, dirPath) {
170
+ const entries = await sftpReaddir(sftp, dirPath);
171
+ for (const entry of entries) {
172
+ const entryPath = `${dirPath}/${entry.filename}`;
173
+ const mode = entry.attrs.mode ?? 0;
174
+ const isDir = (mode & 0o170000) === 0o040000;
175
+ if (isDir) {
176
+ await sftpRmdirRecursive(sftp, entryPath);
177
+ }
178
+ else {
179
+ await sftpUnlink(sftp, entryPath);
180
+ }
181
+ }
182
+ await sftpRmdir(sftp, dirPath);
183
+ }
184
+ //# sourceMappingURL=fs-sftp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-sftp.js","sourceRoot":"","sources":["../src/fs-sftp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fs-tools.d.ts","sourceRoot":"","sources":["../src/fs-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,CAAC;IAC3F,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,mBAAmB,CAAC,CAAC;IAChE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;CAC7C;AAqLD,wBAAgB,eAAe,CAAC,EAC9B,cAAc,EACd,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,SAAS,CAmiB3B"}
1
+ {"version":3,"file":"fs-tools.d.ts","sourceRoot":"","sources":["../src/fs-tools.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,CAAC;IAC3F,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,mBAAmB,CAAC,CAAC;IAChE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;CAC7C;AAuBD,wBAAgB,eAAe,CAAC,EAC9B,cAAc,EACd,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,SAAS,CAmiB3B"}
package/dist/fs-tools.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { createFilesystemError, createLimitError, wrapError } from "./errors.js";
2
+ import { hasSftp, getSftpOrThrow, sftpReadFile, sftpWriteFile, sftpStat, sftpReaddir, sftpUnlink, sftpRename, sftpChmod, sftpMkdirRecursive, sftpRmdirRecursive, } from "./fs-sftp.js";
3
+ import { createLimitError, wrapError } from "./errors.js";
3
4
  import { logger } from "./logging.js";
4
5
  import { buildRemoteCommand } from "./shell.js";
5
6
  import { ErrorCode } from "./types.js";
@@ -9,9 +10,6 @@ function shellQuote(value) {
9
10
  function createDirListResult(entries, nextToken) {
10
11
  return nextToken ? { entries, nextToken } : { entries };
11
12
  }
12
- function hasSftp(session) {
13
- return !!session?.sftp;
14
- }
15
13
  function tempPathFor(targetPath) {
16
14
  const normalizedPath = targetPath.replace(/\\/g, "/");
17
15
  const slashIndex = normalizedPath.lastIndexOf("/");
@@ -20,146 +18,6 @@ function tempPathFor(targetPath) {
20
18
  const safeBaseName = baseName.length > 0 ? baseName : "write";
21
19
  return `${directory}.${safeBaseName}.${randomUUID()}.tmp`;
22
20
  }
23
- function getSftpOrThrow(session) {
24
- if (!session.sftp) {
25
- throw createFilesystemError("SFTP subsystem is unavailable for this session");
26
- }
27
- return session.sftp;
28
- }
29
- function sftpReadFile(sftp, path) {
30
- return new Promise((resolve, reject) => {
31
- sftp.readFile(path, (err, data) => {
32
- if (err) {
33
- reject(err);
34
- return;
35
- }
36
- resolve(data);
37
- });
38
- });
39
- }
40
- function sftpWriteFile(sftp, path, data) {
41
- return new Promise((resolve, reject) => {
42
- sftp.writeFile(path, data, {}, (err) => {
43
- if (err) {
44
- reject(err);
45
- return;
46
- }
47
- resolve();
48
- });
49
- });
50
- }
51
- function sftpStat(sftp, path) {
52
- return new Promise((resolve, reject) => {
53
- sftp.stat(path, (err, stats) => {
54
- if (err) {
55
- reject(err);
56
- return;
57
- }
58
- resolve(stats);
59
- });
60
- });
61
- }
62
- function sftpReaddir(sftp, path) {
63
- return new Promise((resolve, reject) => {
64
- sftp.readdir(path, (err, list) => {
65
- if (err) {
66
- reject(err);
67
- return;
68
- }
69
- resolve(list);
70
- });
71
- });
72
- }
73
- function sftpMkdir(sftp, path) {
74
- return new Promise((resolve, reject) => {
75
- sftp.mkdir(path, (err) => {
76
- if (err) {
77
- reject(err);
78
- return;
79
- }
80
- resolve();
81
- });
82
- });
83
- }
84
- function sftpRmdir(sftp, path) {
85
- return new Promise((resolve, reject) => {
86
- sftp.rmdir(path, (err) => {
87
- if (err) {
88
- reject(err);
89
- return;
90
- }
91
- resolve();
92
- });
93
- });
94
- }
95
- function sftpUnlink(sftp, path) {
96
- return new Promise((resolve, reject) => {
97
- sftp.unlink(path, (err) => {
98
- if (err) {
99
- reject(err);
100
- return;
101
- }
102
- resolve();
103
- });
104
- });
105
- }
106
- function sftpRename(sftp, oldPath, newPath) {
107
- return new Promise((resolve, reject) => {
108
- sftp.rename(oldPath, newPath, (err) => {
109
- if (err) {
110
- reject(err);
111
- return;
112
- }
113
- resolve();
114
- });
115
- });
116
- }
117
- function sftpChmod(sftp, path, mode) {
118
- return new Promise((resolve, reject) => {
119
- sftp.chmod(path, mode, (err) => {
120
- if (err) {
121
- reject(err);
122
- return;
123
- }
124
- resolve();
125
- });
126
- });
127
- }
128
- async function sftpMkdirRecursive(sftp, dirPath) {
129
- const parts = dirPath.split("/").filter((part) => part);
130
- let currentPath = dirPath.startsWith("/") ? "" : ".";
131
- for (const part of parts) {
132
- currentPath = currentPath === "" ? `/${part}` : `${currentPath}/${part}`;
133
- try {
134
- await sftpStat(sftp, currentPath);
135
- }
136
- catch {
137
- try {
138
- await sftpMkdir(sftp, currentPath);
139
- }
140
- catch (mkdirErr) {
141
- if (mkdirErr?.code !== 4) {
142
- throw mkdirErr;
143
- }
144
- }
145
- }
146
- }
147
- }
148
- async function sftpRmdirRecursive(sftp, dirPath) {
149
- const entries = await sftpReaddir(sftp, dirPath);
150
- for (const entry of entries) {
151
- const entryPath = `${dirPath}/${entry.filename}`;
152
- const mode = entry.attrs.mode ?? 0;
153
- const isDir = (mode & 0o170000) === 0o040000;
154
- if (isDir) {
155
- await sftpRmdirRecursive(sftp, entryPath);
156
- }
157
- else {
158
- await sftpUnlink(sftp, entryPath);
159
- }
160
- }
161
- await sftpRmdir(sftp, dirPath);
162
- }
163
21
  const PORTABLE_STAT_FIELDS_COMMAND = 'type=other; if [ -L "$target" ]; then type=symlink; elif [ -d "$target" ]; then type=directory; elif [ -f "$target" ]; then type=file; fi; size=$( (stat -c %s "$target" 2>/dev/null || stat -f %z "$target" 2>/dev/null || wc -c < "$target" 2>/dev/null) | tr -d " " | head -n 1); mtime=$( (stat -c %Y "$target" 2>/dev/null || stat -f %m "$target" 2>/dev/null || echo 0) | head -n 1); mode=$( (stat -c %a "$target" 2>/dev/null || stat -f %Lp "$target" 2>/dev/null || echo 0) | head -n 1)';
164
22
  const PORTABLE_STAT_COMMAND = `${PORTABLE_STAT_FIELDS_COMMAND}; printf "%s\\t%s\\t%s\\t%s" "$type" "\${size:-0}" "\${mtime:-0}" "\${mode:-0}"`;
165
23
  export function createFsService({ sessionManager, metrics, config, policy, }) {