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.
Files changed (200) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +12 -2
  3. package/dist/agent-bin.js +5 -2
  4. package/dist/agent-bin.js.map +1 -1
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +38 -47
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config-security-env.d.ts +4 -0
  10. package/dist/config-security-env.d.ts.map +1 -0
  11. package/dist/config-security-env.js +64 -0
  12. package/dist/config-security-env.js.map +1 -0
  13. package/dist/config.d.ts +2 -2
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +4 -67
  16. package/dist/config.js.map +1 -1
  17. package/dist/connector-profile.d.ts +1 -1
  18. package/dist/connector-profile.d.ts.map +1 -1
  19. package/dist/detect.d.ts.map +1 -1
  20. package/dist/detect.js +226 -192
  21. package/dist/detect.js.map +1 -1
  22. package/dist/ensure-package-service.d.ts +9 -0
  23. package/dist/ensure-package-service.d.ts.map +1 -0
  24. package/dist/ensure-package-service.js +146 -0
  25. package/dist/ensure-package-service.js.map +1 -0
  26. package/dist/ensure-pkg.js +4 -4
  27. package/dist/ensure-pkg.js.map +1 -1
  28. package/dist/ensure.d.ts.map +1 -1
  29. package/dist/ensure.js +15 -144
  30. package/dist/ensure.js.map +1 -1
  31. package/dist/fs-sftp.js +1 -1
  32. package/dist/fs-sftp.js.map +1 -1
  33. package/dist/fs-stat.d.ts +10 -0
  34. package/dist/fs-stat.d.ts.map +1 -0
  35. package/dist/fs-stat.js +62 -0
  36. package/dist/fs-stat.js.map +1 -0
  37. package/dist/fs-tools.d.ts.map +1 -1
  38. package/dist/fs-tools.js +6 -58
  39. package/dist/fs-tools.js.map +1 -1
  40. package/dist/http-security.d.ts.map +1 -1
  41. package/dist/http-security.js +6 -6
  42. package/dist/http-security.js.map +1 -1
  43. package/dist/http-server-runtime.d.ts.map +1 -1
  44. package/dist/http-server-runtime.js +41 -7
  45. package/dist/http-server-runtime.js.map +1 -1
  46. package/dist/index.js +6 -23
  47. package/dist/index.js.map +1 -1
  48. package/dist/mcp-http-web.d.ts +8 -0
  49. package/dist/mcp-http-web.d.ts.map +1 -0
  50. package/dist/mcp-http-web.js +35 -0
  51. package/dist/mcp-http-web.js.map +1 -0
  52. package/dist/mcp.d.ts +6 -2
  53. package/dist/mcp.d.ts.map +1 -1
  54. package/dist/mcp.js +22 -14
  55. package/dist/mcp.js.map +1 -1
  56. package/dist/policy.d.ts +8 -0
  57. package/dist/policy.d.ts.map +1 -1
  58. package/dist/policy.js +147 -105
  59. package/dist/policy.js.map +1 -1
  60. package/dist/process.d.ts.map +1 -1
  61. package/dist/process.js +11 -7
  62. package/dist/process.js.map +1 -1
  63. package/dist/remote/agent-activity-log.d.ts +26 -0
  64. package/dist/remote/agent-activity-log.d.ts.map +1 -0
  65. package/dist/remote/agent-activity-log.js +211 -0
  66. package/dist/remote/agent-activity-log.js.map +1 -0
  67. package/dist/remote/agent-cli.d.ts.map +1 -1
  68. package/dist/remote/agent-cli.js +92 -25
  69. package/dist/remote/agent-cli.js.map +1 -1
  70. package/dist/remote/agent-executor.d.ts.map +1 -1
  71. package/dist/remote/agent-executor.js +22 -10
  72. package/dist/remote/agent-executor.js.map +1 -1
  73. package/dist/remote/agent-handler.d.ts +2 -0
  74. package/dist/remote/agent-handler.d.ts.map +1 -1
  75. package/dist/remote/agent-handler.js +4 -0
  76. package/dist/remote/agent-handler.js.map +1 -1
  77. package/dist/remote/config.d.ts.map +1 -1
  78. package/dist/remote/config.js +12 -1
  79. package/dist/remote/config.js.map +1 -1
  80. package/dist/remote/control-plane.d.ts +12 -0
  81. package/dist/remote/control-plane.d.ts.map +1 -1
  82. package/dist/remote/control-plane.js +164 -56
  83. package/dist/remote/control-plane.js.map +1 -1
  84. package/dist/remote/crypto.d.ts +9 -4
  85. package/dist/remote/crypto.d.ts.map +1 -1
  86. package/dist/remote/crypto.js +41 -9
  87. package/dist/remote/crypto.js.map +1 -1
  88. package/dist/remote/http-util.d.ts.map +1 -1
  89. package/dist/remote/http-util.js +14 -7
  90. package/dist/remote/http-util.js.map +1 -1
  91. package/dist/remote/mcp-tools.d.ts +7 -0
  92. package/dist/remote/mcp-tools.d.ts.map +1 -1
  93. package/dist/remote/mcp-tools.js +28 -0
  94. package/dist/remote/mcp-tools.js.map +1 -1
  95. package/dist/remote/oauth-handler.d.ts +30 -3
  96. package/dist/remote/oauth-handler.d.ts.map +1 -1
  97. package/dist/remote/oauth-handler.js +232 -18
  98. package/dist/remote/oauth-handler.js.map +1 -1
  99. package/dist/remote/policy.js +2 -2
  100. package/dist/remote/policy.js.map +1 -1
  101. package/dist/remote/schemas.d.ts +9 -9
  102. package/dist/remote/schemas.js +6 -6
  103. package/dist/remote/schemas.js.map +1 -1
  104. package/dist/remote/store.d.ts +38 -1
  105. package/dist/remote/store.d.ts.map +1 -1
  106. package/dist/remote/store.js +149 -11
  107. package/dist/remote/store.js.map +1 -1
  108. package/dist/remote/types.d.ts +14 -0
  109. package/dist/remote/types.d.ts.map +1 -1
  110. package/dist/remote/types.js.map +1 -1
  111. package/dist/remote/web-dashboard-client-config.d.ts +77 -0
  112. package/dist/remote/web-dashboard-client-config.d.ts.map +1 -0
  113. package/dist/remote/web-dashboard-client-config.js +81 -0
  114. package/dist/remote/web-dashboard-client-config.js.map +1 -0
  115. package/dist/remote/web-dashboard-html.d.ts +2 -0
  116. package/dist/remote/web-dashboard-html.d.ts.map +1 -0
  117. package/dist/remote/web-dashboard-html.js +433 -0
  118. package/dist/remote/web-dashboard-html.js.map +1 -0
  119. package/dist/remote/web-dashboard-oauth-users.d.ts +4 -0
  120. package/dist/remote/web-dashboard-oauth-users.d.ts.map +1 -0
  121. package/dist/remote/web-dashboard-oauth-users.js +78 -0
  122. package/dist/remote/web-dashboard-oauth-users.js.map +1 -0
  123. package/dist/remote/web-dashboard-static.d.ts +4 -0
  124. package/dist/remote/web-dashboard-static.d.ts.map +1 -0
  125. package/dist/remote/web-dashboard-static.js +19 -0
  126. package/dist/remote/web-dashboard-static.js.map +1 -0
  127. package/dist/remote/web-dashboard-styles.d.ts +2 -0
  128. package/dist/remote/web-dashboard-styles.d.ts.map +1 -0
  129. package/dist/remote/web-dashboard-styles.js +187 -0
  130. package/dist/remote/web-dashboard-styles.js.map +1 -0
  131. package/dist/remote/web-dashboard.d.ts +62 -0
  132. package/dist/remote/web-dashboard.d.ts.map +1 -0
  133. package/dist/remote/web-dashboard.js +467 -0
  134. package/dist/remote/web-dashboard.js.map +1 -0
  135. package/dist/retry.d.ts.map +1 -1
  136. package/dist/retry.js +6 -3
  137. package/dist/retry.js.map +1 -1
  138. package/dist/safety.d.ts.map +1 -1
  139. package/dist/safety.js +56 -6
  140. package/dist/safety.js.map +1 -1
  141. package/dist/session-auth.js +7 -7
  142. package/dist/session-auth.js.map +1 -1
  143. package/dist/session.d.ts +1 -0
  144. package/dist/session.d.ts.map +1 -1
  145. package/dist/session.js +44 -40
  146. package/dist/session.js.map +1 -1
  147. package/dist/shell.d.ts.map +1 -1
  148. package/dist/shell.js +5 -4
  149. package/dist/shell.js.map +1 -1
  150. package/dist/ssh-config.d.ts +2 -2
  151. package/dist/ssh-config.d.ts.map +1 -1
  152. package/dist/ssh-config.js +24 -20
  153. package/dist/ssh-config.js.map +1 -1
  154. package/dist/telemetry.d.ts.map +1 -1
  155. package/dist/telemetry.js +9 -2
  156. package/dist/telemetry.js.map +1 -1
  157. package/dist/tools/connector.provider.d.ts +1 -1
  158. package/dist/tools/connector.provider.d.ts.map +1 -1
  159. package/dist/tools/ensure.provider.d.ts +1 -1
  160. package/dist/tools/ensure.provider.d.ts.map +1 -1
  161. package/dist/tools/fs.provider.d.ts +1 -1
  162. package/dist/tools/fs.provider.d.ts.map +1 -1
  163. package/dist/tools/metadata.d.ts +1 -1
  164. package/dist/tools/metadata.d.ts.map +1 -1
  165. package/dist/tools/output-schemas.d.ts +27 -135
  166. package/dist/tools/output-schemas.d.ts.map +1 -1
  167. package/dist/tools/process.provider.d.ts +1 -1
  168. package/dist/tools/process.provider.d.ts.map +1 -1
  169. package/dist/tools/registry.d.ts +1 -1
  170. package/dist/tools/registry.d.ts.map +1 -1
  171. package/dist/tools/registry.js +16 -13
  172. package/dist/tools/registry.js.map +1 -1
  173. package/dist/tools/session.provider.d.ts +1 -1
  174. package/dist/tools/session.provider.d.ts.map +1 -1
  175. package/dist/tools/system.provider.d.ts +1 -1
  176. package/dist/tools/system.provider.d.ts.map +1 -1
  177. package/dist/tools/transfer.provider.d.ts +1 -1
  178. package/dist/tools/transfer.provider.d.ts.map +1 -1
  179. package/dist/tools/tunnel.provider.d.ts +1 -1
  180. package/dist/tools/tunnel.provider.d.ts.map +1 -1
  181. package/dist/tools/types.d.ts +1 -1
  182. package/dist/tools/types.d.ts.map +1 -1
  183. package/dist/transfer.js +2 -2
  184. package/dist/transfer.js.map +1 -1
  185. package/dist/types.js +1 -1
  186. package/dist/types.js.map +1 -1
  187. package/docs/adding-a-device.md +39 -17
  188. package/docs/agent-activity-monitor.md +34 -0
  189. package/docs/coolify.md +29 -0
  190. package/docs/development/dependency-management.md +1 -1
  191. package/docs/development/mcp-protocol-2026.md +33 -0
  192. package/docs/doppler-guide.md +34 -0
  193. package/docs/reference/compatibility.md +1 -1
  194. package/docs/security/dependency-audit-exceptions.md +3 -7
  195. package/docs/security/hosted-data-inventory.md +81 -0
  196. package/docs/sonarcloud-analysis.md +9 -0
  197. package/mcp.json +1 -1
  198. package/package.json +26 -21
  199. package/registry/ssh-mcp-pro/mcp.json +1 -1
  200. package/server.json +3 -3
@@ -0,0 +1,146 @@
1
+ import { createPackageManagerError } from "./errors.js";
2
+ import { logger } from "./logging.js";
3
+ import { SUPPORTED_PACKAGE_MANAGERS_HINT, sanitizePackageName, getRemoveCommand, getInstallCommand, getPackageCheckCommand, usesDirectPackageCommand, } from "./ensure-pkg.js";
4
+ /** Package-specific orchestration; public EnsureService entry point remains unchanged. */
5
+ export function createPackageEnsure({ sessionManager, processService, }) {
6
+ async function checkPackageInstalled(sessionId, packageName, pm) {
7
+ const checkCommand = getPackageCheckCommand(pm, packageName);
8
+ if (!checkCommand) {
9
+ return false;
10
+ }
11
+ try {
12
+ const result = await processService.execCommand(sessionId, checkCommand);
13
+ return result.code === 0;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ async function ensurePackage(sessionId, packageName, state = "present") {
20
+ const safePackageName = sanitizePackageName(packageName);
21
+ logger.debug("Ensuring package state", {
22
+ sessionId,
23
+ packageName: safePackageName,
24
+ state,
25
+ });
26
+ const session = sessionManager.getSession(sessionId);
27
+ if (!session) {
28
+ throw new Error(`Session ${sessionId} not found or expired`);
29
+ }
30
+ try {
31
+ const osInfo = await sessionManager.getOSInfo(sessionId);
32
+ const pm = osInfo.packageManager;
33
+ if (pm === "unknown") {
34
+ throw createPackageManagerError("No supported package manager found", SUPPORTED_PACKAGE_MANAGERS_HINT);
35
+ }
36
+ logger.debug("Detected package manager", { sessionId, pm });
37
+ const isInstalled = await checkPackageInstalled(sessionId, safePackageName, pm);
38
+ if (state === "absent") {
39
+ if (!isInstalled) {
40
+ logger.info("Package already not installed", {
41
+ sessionId,
42
+ packageName: safePackageName,
43
+ });
44
+ return {
45
+ ok: true,
46
+ pm,
47
+ code: 0,
48
+ stdout: `Package ${safePackageName} is not installed`,
49
+ stderr: "",
50
+ };
51
+ }
52
+ const removeCommand = getRemoveCommand(pm, safePackageName);
53
+ logger.debug("Removing package", {
54
+ sessionId,
55
+ packageName: safePackageName,
56
+ command: removeCommand,
57
+ });
58
+ const result = usesDirectPackageCommand(pm)
59
+ ? await processService.execCommand(sessionId, removeCommand)
60
+ : await processService.execSudo(sessionId, removeCommand, undefined, undefined, undefined, {
61
+ policyAction: "ensure.package",
62
+ rawSudo: false,
63
+ destructive: true,
64
+ });
65
+ const packageResult = {
66
+ ok: result.code === 0,
67
+ pm,
68
+ code: result.code,
69
+ stdout: result.stdout,
70
+ stderr: result.stderr,
71
+ };
72
+ if (result.code === 0) {
73
+ logger.info("Package removed successfully", {
74
+ sessionId,
75
+ packageName: safePackageName,
76
+ });
77
+ }
78
+ else {
79
+ logger.error("Package removal failed", {
80
+ sessionId,
81
+ packageName: safePackageName,
82
+ code: result.code,
83
+ });
84
+ }
85
+ return packageResult;
86
+ }
87
+ if (isInstalled) {
88
+ logger.info("Package already installed", {
89
+ sessionId,
90
+ packageName: safePackageName,
91
+ });
92
+ return {
93
+ ok: true,
94
+ pm,
95
+ code: 0,
96
+ stdout: `Package ${safePackageName} is already installed`,
97
+ stderr: "",
98
+ };
99
+ }
100
+ const installCommand = getInstallCommand(pm, safePackageName);
101
+ logger.debug("Installing package", {
102
+ sessionId,
103
+ packageName: safePackageName,
104
+ command: installCommand,
105
+ });
106
+ const result = usesDirectPackageCommand(pm)
107
+ ? await processService.execCommand(sessionId, installCommand)
108
+ : await processService.execSudo(sessionId, installCommand, undefined, undefined, undefined, {
109
+ policyAction: "ensure.package",
110
+ rawSudo: false,
111
+ });
112
+ const packageResult = {
113
+ ok: result.code === 0,
114
+ pm,
115
+ code: result.code,
116
+ stdout: result.stdout,
117
+ stderr: result.stderr,
118
+ };
119
+ if (result.code === 0) {
120
+ logger.info("Package installed successfully", {
121
+ sessionId,
122
+ packageName: safePackageName,
123
+ });
124
+ }
125
+ else {
126
+ logger.error("Package installation failed", {
127
+ sessionId,
128
+ packageName: safePackageName,
129
+ code: result.code,
130
+ });
131
+ }
132
+ return packageResult;
133
+ }
134
+ catch (error) {
135
+ logger.error("Failed to ensure package", {
136
+ sessionId,
137
+ packageName,
138
+ state,
139
+ error,
140
+ });
141
+ throw error;
142
+ }
143
+ }
144
+ return ensurePackage;
145
+ }
146
+ //# sourceMappingURL=ensure-package-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-package-service.js","sourceRoot":"","sources":["../src/ensure-package-service.ts"],"names":[],"mappings":"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"}
@@ -16,17 +16,17 @@ export function sanitizePackageName(name) {
16
16
  if (!validPackageName.test(name)) {
17
17
  throw createBadRequestError(`Invalid package name: ${name}`, "Package names must start with alphanumeric and contain only letters, numbers, dots, dashes, underscores, or plus signs");
18
18
  }
19
- const dangerousChars = /[;&|`$(){}\[\]<>\\\"'\n\r]/;
19
+ const dangerousChars = /[;&|`$(){}[\]<>\\"'\n\r]/;
20
20
  if (dangerousChars.test(name)) {
21
21
  throw createBadRequestError("Package name contains potentially dangerous characters", "Remove any shell special characters from the package name");
22
22
  }
23
23
  return name;
24
24
  }
25
25
  function powerShellQuote(value) {
26
- return `'${value.replace(/'/g, "''")}'`;
26
+ return `'${value.replaceAll("'", "''")}'`;
27
27
  }
28
28
  function escapeRegExp(value) {
29
- return value.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
29
+ return value.replace(/[\\^$.*+?()[\]{}|]/g, String.raw `\$&`);
30
30
  }
31
31
  export function getRemoveCommand(pm, packageName) {
32
32
  switch (pm) {
@@ -92,7 +92,7 @@ export function getPackageCheckCommand(pm, packageName) {
92
92
  case "brew":
93
93
  return `brew list --versions ${packageName}`;
94
94
  case "winget":
95
- 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`;
95
+ return `$idPattern = ${powerShellQuote(String.raw `(^|\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`;
96
96
  case "choco":
97
97
  return `$package = choco list --exact ${powerShellQuote(packageName)} --limit-output; if ($LASTEXITCODE -eq 0 -and ($package -like ${powerShellQuote(`${packageName}|*`)})) { exit 0 } exit 1`;
98
98
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-pkg.js","sourceRoot":"","sources":["../src/ensure-pkg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensure-pkg.js","sourceRoot":"","sources":["../src/ensure-pkg.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensure.d.ts","sourceRoot":"","sources":["../src/ensure.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAClE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,eAAe,CAAC,EAAE,OAAO,EACzB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC,CAAC;IACnF,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;CACrE;AAsCD,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,cAAc,EACd,SAAS,GACV,EAAE,iBAAiB,GAAG,aAAa,CAohBnC"}
1
+ {"version":3,"file":"ensure.d.ts","sourceRoot":"","sources":["../src/ensure.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/F,MAAM,WAAW,aAAa;IAC5B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAClE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,eAAe,CAAC,EAAE,OAAO,EACzB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC,CAAC;IACnF,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;CACrE;AA+CD,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,cAAc,EACd,SAAS,GACV,EAAE,iBAAiB,GAAG,aAAa,CAoWnC"}
package/dist/ensure.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { createBadRequestError, createPackageManagerError, createSudoError, createFilesystemError, createPatchError, } from "./errors.js";
2
+ import { createBadRequestError, createSudoError, createFilesystemError, createPatchError, } from "./errors.js";
3
3
  import { logger } from "./logging.js";
4
- import { SUPPORTED_PACKAGE_MANAGERS_HINT, sanitizePackageName, getRemoveCommand, getInstallCommand, getPackageCheckCommand, usesDirectPackageCommand, } from "./ensure-pkg.js";
4
+ import { createPackageEnsure } from "./ensure-package-service.js";
5
5
  import { resolveRemoteTempDir } from "./shell.js";
6
6
  function sanitizeServiceName(name) {
7
7
  const validServiceName = /^[a-zA-Z0-9][a-zA-Z0-9_.@:-]*$/;
@@ -11,14 +11,15 @@ function sanitizeServiceName(name) {
11
11
  return name;
12
12
  }
13
13
  function shellQuote(value) {
14
- return `'${String(value).replace(/'/g, `'"'"'`)}'`;
14
+ const escaped = String(value).replaceAll("'", "'\"'\"'");
15
+ return `'${escaped}'`;
15
16
  }
16
17
  function describeError(error) {
17
18
  if (error instanceof Error && error.message) {
18
19
  return error.message;
19
20
  }
20
21
  const code = error?.code;
21
- return code ? String(code) : "unknown error";
22
+ return typeof code === "string" || typeof code === "number" ? String(code) : "unknown error";
22
23
  }
23
24
  function isPermissionError(error) {
24
25
  const code = error?.code;
@@ -27,145 +28,15 @@ function isPermissionError(error) {
27
28
  }
28
29
  return /\b(EACCES|EPERM|permission|permission denied|access denied|operation not permitted)\b/iu.test(describeError(error));
29
30
  }
30
- export function createEnsureService({ sessionManager, processService, fsService, }) {
31
- async function checkPackageInstalled(sessionId, packageName, pm) {
32
- const checkCommand = getPackageCheckCommand(pm, packageName);
33
- if (!checkCommand) {
34
- return false;
35
- }
36
- try {
37
- const result = await processService.execCommand(sessionId, checkCommand);
38
- return result.code === 0;
39
- }
40
- catch {
41
- return false;
42
- }
43
- }
44
- async function ensurePackage(sessionId, packageName, state = "present") {
45
- const safePackageName = sanitizePackageName(packageName);
46
- logger.debug("Ensuring package state", {
47
- sessionId,
48
- packageName: safePackageName,
49
- state,
50
- });
51
- const session = sessionManager.getSession(sessionId);
52
- if (!session) {
53
- throw new Error(`Session ${sessionId} not found or expired`);
54
- }
55
- try {
56
- const osInfo = await sessionManager.getOSInfo(sessionId);
57
- const pm = osInfo.packageManager;
58
- if (pm === "unknown") {
59
- throw createPackageManagerError("No supported package manager found", SUPPORTED_PACKAGE_MANAGERS_HINT);
60
- }
61
- logger.debug("Detected package manager", { sessionId, pm });
62
- const isInstalled = await checkPackageInstalled(sessionId, safePackageName, pm);
63
- if (state === "absent") {
64
- if (!isInstalled) {
65
- logger.info("Package already not installed", {
66
- sessionId,
67
- packageName: safePackageName,
68
- });
69
- return {
70
- ok: true,
71
- pm,
72
- code: 0,
73
- stdout: `Package ${safePackageName} is not installed`,
74
- stderr: "",
75
- };
76
- }
77
- const removeCommand = getRemoveCommand(pm, safePackageName);
78
- logger.debug("Removing package", {
79
- sessionId,
80
- packageName: safePackageName,
81
- command: removeCommand,
82
- });
83
- const result = usesDirectPackageCommand(pm)
84
- ? await processService.execCommand(sessionId, removeCommand)
85
- : await processService.execSudo(sessionId, removeCommand, undefined, undefined, undefined, {
86
- policyAction: "ensure.package",
87
- rawSudo: false,
88
- destructive: true,
89
- });
90
- const packageResult = {
91
- ok: result.code === 0,
92
- pm,
93
- code: result.code,
94
- stdout: result.stdout,
95
- stderr: result.stderr,
96
- };
97
- if (result.code === 0) {
98
- logger.info("Package removed successfully", {
99
- sessionId,
100
- packageName: safePackageName,
101
- });
102
- }
103
- else {
104
- logger.error("Package removal failed", {
105
- sessionId,
106
- packageName: safePackageName,
107
- code: result.code,
108
- });
109
- }
110
- return packageResult;
111
- }
112
- if (isInstalled) {
113
- logger.info("Package already installed", {
114
- sessionId,
115
- packageName: safePackageName,
116
- });
117
- return {
118
- ok: true,
119
- pm,
120
- code: 0,
121
- stdout: `Package ${safePackageName} is already installed`,
122
- stderr: "",
123
- };
124
- }
125
- const installCommand = getInstallCommand(pm, safePackageName);
126
- logger.debug("Installing package", {
127
- sessionId,
128
- packageName: safePackageName,
129
- command: installCommand,
130
- });
131
- const result = usesDirectPackageCommand(pm)
132
- ? await processService.execCommand(sessionId, installCommand)
133
- : await processService.execSudo(sessionId, installCommand, undefined, undefined, undefined, {
134
- policyAction: "ensure.package",
135
- rawSudo: false,
136
- });
137
- const packageResult = {
138
- ok: result.code === 0,
139
- pm,
140
- code: result.code,
141
- stdout: result.stdout,
142
- stderr: result.stderr,
143
- };
144
- if (result.code === 0) {
145
- logger.info("Package installed successfully", {
146
- sessionId,
147
- packageName: safePackageName,
148
- });
149
- }
150
- else {
151
- logger.error("Package installation failed", {
152
- sessionId,
153
- packageName: safePackageName,
154
- code: result.code,
155
- });
156
- }
157
- return packageResult;
158
- }
159
- catch (error) {
160
- logger.error("Failed to ensure package", {
161
- sessionId,
162
- packageName,
163
- state,
164
- error,
165
- });
166
- throw error;
167
- }
31
+ function removeTrailingSlashes(value) {
32
+ let end = value.length;
33
+ while (end > 0 && value[end - 1] === "/") {
34
+ end--;
168
35
  }
36
+ return value.slice(0, end);
37
+ }
38
+ export function createEnsureService({ sessionManager, processService, fsService, }) {
39
+ const ensurePackage = createPackageEnsure({ sessionManager, processService });
169
40
  async function ensureService(sessionId, serviceName, state) {
170
41
  const safeServiceName = sanitizeServiceName(serviceName);
171
42
  logger.debug("Ensuring service state", { sessionId, serviceName: safeServiceName, state });
@@ -278,7 +149,7 @@ export function createEnsureService({ sessionManager, processService, fsService,
278
149
  throw directWriteError;
279
150
  }
280
151
  const tempDir = resolveRemoteTempDir(osInfo);
281
- const baseTempDir = tempDir.replace(/\/+$/, "");
152
+ const baseTempDir = removeTrailingSlashes(tempDir);
282
153
  const tempFile = `${baseTempDir}/ssh-mcp-${randomUUID()}.tmp`;
283
154
  try {
284
155
  await fsService.writeFile(sessionId, tempFile, content);
@@ -365,7 +236,7 @@ export function createEnsureService({ sessionManager, processService, fsService,
365
236
  throw createPatchError("patch command not found on remote system", "Install patch utility or apply changes manually");
366
237
  }
367
238
  const tempDir = resolveRemoteTempDir(osInfo);
368
- const baseTempDir = tempDir.replace(/\/+$/, "");
239
+ const baseTempDir = removeTrailingSlashes(tempDir);
369
240
  const tempPatchFile = `${baseTempDir}/ssh-mcp-patch-${randomUUID()}.patch`;
370
241
  await fsService.writeFile(sessionId, tempPatchFile, diff);
371
242
  try {
@@ -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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA+BlD,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;IAE1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,qBAAqB,CACzB,yBAAyB,IAAI,EAAE,EAC/B,qHAAqH,CACtH,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,GAAG,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,GAAI,KAAwC,EAAE,IAAI,CAAC;IAC7D,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AAC/F,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,IAAI,GAAI,KAAwC,EAAE,IAAI,CAAC;IAC7D,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,yFAAyF,CAAC,IAAI,CACnG,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACzC,GAAG,EAAE,CAAC;IACR,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAClC,cAAc,EACd,cAAc,EACd,SAAS,GACS;IAClB,MAAM,aAAa,GAAG,mBAAmB,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC;IAE9E,KAAK,UAAU,aAAa,CAC1B,SAAiB,EACjB,WAAmB,EACnB,KAAmE;QAEnE,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3F,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,uBAAuB,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YAE/B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,eAAe,CACnB,+CAA+C,EAC/C,uCAAuC,CACxC,CAAC;YACJ,CAAC;YAED,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;gBACrC,MAAM,eAAe,CACnB,+CAA+C,EAC/C,qDAAqD,CACtD,CAAC;YACJ,CAAC;YAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,eAAe,CACnB,gCAAgC,EAChC,0CAA0C,CAC3C,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAEhE,IAAI,OAAe,CAAC;YACpB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,QAAQ,KAAK,EAAE,CAAC;oBACd,KAAK,SAAS;wBACZ,OAAO,GAAG,mBAAmB,eAAe,EAAE,CAAC;wBAC/C,MAAM;oBACR,KAAK,SAAS;wBACZ,OAAO,GAAG,kBAAkB,eAAe,EAAE,CAAC;wBAC9C,MAAM;oBACR,KAAK,WAAW;wBACd,OAAO,GAAG,qBAAqB,eAAe,EAAE,CAAC;wBACjD,MAAM;oBACR,KAAK,SAAS;wBACZ,OAAO,GAAG,oBAAoB,eAAe,EAAE,CAAC;wBAChD,MAAM;oBACR,KAAK,UAAU;wBACb,OAAO,GAAG,qBAAqB,eAAe,EAAE,CAAC;wBACjD,MAAM;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,KAAK,EAAE,CAAC;oBACd,KAAK,SAAS;wBACZ,OAAO,GAAG,WAAW,eAAe,QAAQ,CAAC;wBAC7C,MAAM;oBACR,KAAK,SAAS;wBACZ,OAAO,GAAG,WAAW,eAAe,OAAO,CAAC;wBAC5C,MAAM;oBACR,KAAK,WAAW;wBACd,OAAO,GAAG,WAAW,eAAe,UAAU,CAAC;wBAC/C,MAAM;oBACR,KAAK,SAAS;wBACZ,OAAO,GAAG,aAAa,eAAe,sBAAsB,eAAe,SAAS,CAAC;wBACrF,MAAM;oBACR,KAAK,UAAU;wBACb,OAAO,GAAG,aAAa,eAAe,uBAAuB,eAAe,UAAU,CAAC;wBACvF,MAAM;gBACV,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAC1C,SAAS,EACT,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;aAClE,CACF,CAAC;YACF,MAAM,aAAa,GAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAE/D,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;oBAChD,SAAS;oBACT,WAAW,EAAE,eAAe;oBAC5B,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;oBAC1C,SAAS;oBACT,WAAW,EAAE,eAAe;oBAC5B,KAAK;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gBAC7C,SAAS;gBACT,WAAW,EAAE,eAAe;gBAC5B,KAAK;gBACL,KAAK;aACN,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,iBAAiB,CAC9B,SAAiB,EACjB,QAAgB,EAChB,KAAe,EACf,eAAe,GAAG,IAAI,EACtB,QAA8B,SAAS;QAEvC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YACrC,SAAS;YACT,QAAQ;YACR,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAEzD,KAAK,UAAU,8BAA8B,CAC3C,OAAe,EACf,WAAoB;gBAEpB,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBAAC,OAAO,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACzC,MAAM,gBAAgB,CAAC;oBACzB,CAAC;oBAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;oBAC7C,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;oBACnD,MAAM,QAAQ,GAAG,GAAG,WAAW,YAAY,UAAU,EAAE,MAAM,CAAC;oBAE9D,IAAI,CAAC;wBACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC1D,CAAC;oBAAC,OAAO,cAAc,EAAE,CAAC;wBACxB,MAAM,qBAAqB,CACzB,sCAAsC,QAAQ,EAAE,EAChD,4BAA4B,aAAa,CACvC,gBAAgB,CACjB,iCAAiC,aAAa,CAAC,cAAc,CAAC,EAAE,CAClE,CAAC;oBACJ,CAAC;oBAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,CAC9C,SAAS,EACT,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,EACpD,SAAS,EACT,SAAS,EACT,SAAS,EACT;wBACE,YAAY,EAAE,cAAc;wBAC5B,OAAO,EAAE,KAAK;wBACd,IAAI,EAAE,QAAQ;wBACd,WAAW;qBACZ,CACF,CAAC;oBAEF,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBAC1B,MAAM,qBAAqB,CACzB,oCAAoC,QAAQ,EAAE,EAC9C,wCAAwC,CACzC,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,IAAI,MAAM,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACpD,UAAU,GAAG,IAAI,CAAC;gBAClB,WAAW,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC9D,CAAC;iBAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE;oBACvD,SAAS;oBACT,QAAQ;iBACT,CAAC,CAAC;gBACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAChC,CAAC;iBAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,qBAAqB,CAAC,QAAQ,QAAQ,8CAA8C,CAAC,CAAC;YAC9F,CAAC;YAED,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE5E,IAAI,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACrE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAChC,CAAC;gBAED,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;gBACjE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE5C,MAAM,8BAA8B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAEvD,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE;oBAClD,SAAS;oBACT,QAAQ;oBACR,OAAO,EAAE,YAAY;iBACtB,CAAC,CAAC;gBACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAChC,CAAC;YAED,MAAM,UAAU,GAAG,UAAU;gBAC3B,CAAC,CAAC,GAAG,WAAW,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9C,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5B,MAAM,8BAA8B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAEvD,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;gBAC9C,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,YAAY,CAAC,MAAM;aAC3B,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gBAC7C,SAAS;gBACT,QAAQ;gBACR,KAAK;gBACL,KAAK;aACN,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,UAAU,CACvB,SAAiB,EACjB,QAAgB,EAChB,IAAY;QAEZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,gBAAgB,CACpB,0CAA0C,EAC1C,iDAAiD,CAClD,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,aAAa,GAAG,GAAG,WAAW,kBAAkB,UAAU,EAAE,QAAQ,CAAC;YAC3E,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YAE1D,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,CACjD,SAAS,EACT,uBAAuB,UAAU,CAAC,QAAQ,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,CAC7E,CAAC;gBAEF,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,gBAAgB,CACpB,2BAA2B,EAC3B,sBAAsB,UAAU,CAAC,MAAM,EAAE,CAC1C,CAAC;gBACJ,CAAC;gBAED,MAAM,YAAY,GAAG,aAAa,UAAU,CAAC,QAAQ,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxF,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC/E,MAAM,MAAM,GACV,YAAY,CAAC,IAAI,KAAK,CAAC;oBACrB,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,MAAM,cAAc,CAAC,QAAQ,CAC3B,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT;wBACE,YAAY,EAAE,aAAa;wBAC3B,OAAO,EAAE,KAAK;wBACd,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,IAAI;qBAClB,CACF,CAAC;gBAER,MAAM,WAAW,GAAgB;oBAC/B,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC;oBACrB,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC;iBAC3B,CAAC;gBAEF,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;wBACvC,SAAS;wBACT,QAAQ;wBACR,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,WAAW,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC;oBACH,MAAM,cAAc,GAClB,MAAM,CAAC,QAAQ,KAAK,SAAS;wBAC3B,CAAC,CAAC,qBAAqB,UAAU,CAAC,aAAa,CAAC,uCAAuC;wBACvF,CAAC,CAAC,SAAS,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC3C,MAAM,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAC9D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;wBACrD,aAAa;wBACb,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,UAAU;KACX,CAAC;AACJ,CAAC"}
package/dist/fs-sftp.js CHANGED
@@ -144,7 +144,7 @@ export function sftpChmod(sftp, path, mode) {
144
144
  * Recursively create directories via SFTP.
145
145
  */
146
146
  export async function sftpMkdirRecursive(sftp, dirPath) {
147
- const parts = dirPath.split("/").filter((part) => part);
147
+ const parts = dirPath.split("/").filter(Boolean);
148
148
  let currentPath = dirPath.startsWith("/") ? "" : ".";
149
149
  for (const part of parts) {
150
150
  currentPath = currentPath === "" ? `/${part}` : `${currentPath}/${part}`;
@@ -1 +1 @@
1
- {"version":3,"file":"fs-sftp.js","sourceRoot":"","sources":["../src/fs-sftp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs-sftp.js","sourceRoot":"","sources":["../src/fs-sftp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SessionManager } from "./session.js";
2
+ import type { FileStatInfo } from "./types.js";
3
+ export declare 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)";
4
+ /** Resolve file metadata over SFTP, falling back to a portable remote shell stat. */
5
+ export declare function createStatFileInternal({ sessionManager, execFallback, shellQuote, }: {
6
+ sessionManager: Pick<SessionManager, "getSession">;
7
+ execFallback: (sessionId: string, command: string) => Promise<string>;
8
+ shellQuote: (value: string) => string;
9
+ }): (sessionId: string, path: string) => Promise<FileStatInfo>;
10
+ //# sourceMappingURL=fs-stat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-stat.d.ts","sourceRoot":"","sources":["../src/fs-stat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,4BAA4B,8fAC8b,CAAC;AAGxe,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,EACrC,cAAc,EACd,YAAY,EACZ,UAAU,GACX,EAAE;IACD,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACnD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC,eAC4C,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,YAAY,CAAC,CA4DxF"}
@@ -0,0 +1,62 @@
1
+ import { getSftpOrThrow, hasSftp, sftpStat } from "./fs-sftp.js";
2
+ import { logger } from "./logging.js";
3
+ export 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)';
4
+ const PORTABLE_STAT_COMMAND = `${PORTABLE_STAT_FIELDS_COMMAND}; printf "%s\\t%s\\t%s\\t%s" "$type" "\${size:-0}" "\${mtime:-0}" "\${mode:-0}"`;
5
+ /** Resolve file metadata over SFTP, falling back to a portable remote shell stat. */
6
+ export function createStatFileInternal({ sessionManager, execFallback, shellQuote, }) {
7
+ async function statFileInternal(sessionId, path) {
8
+ const session = sessionManager.getSession(sessionId);
9
+ if (!session) {
10
+ throw new Error(`Session ${sessionId} not found or expired`);
11
+ }
12
+ if (!hasSftp(session)) {
13
+ const output = await execFallback(sessionId, `target=${shellQuote(path)}; ${PORTABLE_STAT_COMMAND}`);
14
+ const [type = "other", size = "0", mtime = "0", mode = "0"] = output.trim().split("\t");
15
+ return {
16
+ size: Number(size),
17
+ mtime: new Date(Number(mtime) * 1000),
18
+ mode: Number.parseInt(mode, 8),
19
+ type: type,
20
+ };
21
+ }
22
+ const sftp = getSftpOrThrow(session);
23
+ const stats = await sftpStat(sftp, path);
24
+ let type = "other";
25
+ const mode = stats.mode ?? 0;
26
+ if ((mode & 0o170000) === 0o100000) {
27
+ type = "file";
28
+ }
29
+ else if ((mode & 0o170000) === 0o040000) {
30
+ type = "directory";
31
+ }
32
+ else if ((mode & 0o170000) === 0o120000) {
33
+ type = "symlink";
34
+ }
35
+ else if (typeof stats.isFile === "function") {
36
+ if (stats.isFile()) {
37
+ type = "file";
38
+ }
39
+ else if (stats.isDirectory()) {
40
+ type = "directory";
41
+ }
42
+ else if (stats.isSymbolicLink?.()) {
43
+ type = "symlink";
44
+ }
45
+ }
46
+ const statInfo = {
47
+ size: stats.size ?? 0,
48
+ mtime: new Date(typeof stats.mtime === "number" ? stats.mtime * 1000 : Date.now()),
49
+ mode,
50
+ type,
51
+ };
52
+ logger.debug("File stats retrieved", {
53
+ sessionId,
54
+ path,
55
+ type,
56
+ size: stats.size,
57
+ });
58
+ return statInfo;
59
+ }
60
+ return statFileInternal;
61
+ }
62
+ //# sourceMappingURL=fs-stat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-stat.js","sourceRoot":"","sources":["../src/fs-stat.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":"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"}
1
+ {"version":3,"file":"fs-tools.d.ts","sourceRoot":"","sources":["../src/fs-tools.ts"],"names":[],"mappings":"AAmBA,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;AAoBD,wBAAgB,eAAe,CAAC,EAC9B,cAAc,EACd,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,SAAS,CA0e3B"}