@wunderio/wdrmcp 0.1.4 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA2CtD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoB/C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA4CtD"}
package/dist/config.js CHANGED
@@ -15,6 +15,7 @@ Environment variables:
15
15
  DDEV_PROJECT DDEV project name (default: "default-project")
16
16
  HOST_PROJECT_ROOT Host filesystem project root (default: /workspace)
17
17
  CONTAINER_PROJECT_ROOT Container filesystem project root (default: /var/www/html)
18
+ SSH_USER SSH user for container connections (default: $USER)
18
19
  `);
19
20
  }
20
21
  export function parseArgs(argv) {
@@ -54,6 +55,7 @@ export function parseArgs(argv) {
54
55
  logFile,
55
56
  hostProjectRoot: process.env.HOST_PROJECT_ROOT ?? "/workspace",
56
57
  containerProjectRoot: process.env.CONTAINER_PROJECT_ROOT ?? "/var/www/html",
58
+ sshUser: process.env.SSH_USER ?? process.env.USER,
57
59
  };
58
60
  }
59
61
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC;;;;;;;;;;;;;CAaf,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;IAEzD,IAAI,eAAmC,CAAC;IACxC,IAAI,QAAQ,GAA6B,MAAM,CAAC;IAChD,IAAI,OAAO,GAAuB,iBAAiB,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,gBAAgB;gBACnB,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAA6B,CAAC;gBACjD,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB;gBACE,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9C,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO;QACL,eAAe;QACf,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,iBAAiB;QAC1D,QAAQ;QACR,OAAO;QACP,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,YAAY;QAC9D,oBAAoB,EAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,eAAe;KACxD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC;;;;;;;;;;;;;;CAcf,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;IAEzD,IAAI,eAAmC,CAAC;IACxC,IAAI,QAAQ,GAA6B,MAAM,CAAC;IAChD,IAAI,OAAO,GAAuB,iBAAiB,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,gBAAgB;gBACnB,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAA6B,CAAC;gBACjD,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB;gBACE,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9C,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO;QACL,eAAe;QACf,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,iBAAiB;QAC1D,QAAQ;QACR,OAAO;QACP,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,YAAY;QAC9D,oBAAoB,EAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,eAAe;QACvD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI;KAClD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Environment variable resolution utilities.
3
+ *
4
+ * Supports two placeholder syntaxes:
5
+ * - {VAR} - simple placeholder (legacy)
6
+ * - ${VAR} - environment variable (new)
7
+ */
8
+ /**
9
+ * Resolve environment variables and placeholders in a template string.
10
+ *
11
+ * Supports:
12
+ * - {DDEV_PROJECT} → from BridgeConfig or env
13
+ * - ${DDEV_SSH_USER} → from process.env
14
+ * - ${HOME} → from process.env
15
+ *
16
+ * @param template The template string to resolve
17
+ * @param envVars Optional custom environment variables (defaults to process.env)
18
+ * @param bridgeVars Optional bridge-specific variables like ddevProject
19
+ * @returns Resolved string
20
+ */
21
+ export declare function resolveEnvVars(template: string, envVars?: Record<string, string | undefined>, bridgeVars?: Record<string, string>): string;
22
+ /**
23
+ * Resolve environment variables in an object recursively.
24
+ * Strings are resolved for placeholders, other types are returned as-is.
25
+ */
26
+ export declare function resolveEnvVarsInObject(obj: Record<string, unknown>, envVars?: Record<string, string | undefined>, bridgeVars?: Record<string, string>): Record<string, unknown>;
27
+ //# sourceMappingURL=env-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-resolve.d.ts","sourceRoot":"","sources":["../src/env-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAyC,EACnF,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACtC,MAAM,CAyBR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC5C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Environment variable resolution utilities.
3
+ *
4
+ * Supports two placeholder syntaxes:
5
+ * - {VAR} - simple placeholder (legacy)
6
+ * - ${VAR} - environment variable (new)
7
+ */
8
+ import { getLogger } from "./logger.js";
9
+ /**
10
+ * Resolve environment variables and placeholders in a template string.
11
+ *
12
+ * Supports:
13
+ * - {DDEV_PROJECT} → from BridgeConfig or env
14
+ * - ${DDEV_SSH_USER} → from process.env
15
+ * - ${HOME} → from process.env
16
+ *
17
+ * @param template The template string to resolve
18
+ * @param envVars Optional custom environment variables (defaults to process.env)
19
+ * @param bridgeVars Optional bridge-specific variables like ddevProject
20
+ * @returns Resolved string
21
+ */
22
+ export function resolveEnvVars(template, envVars = process.env, bridgeVars = {}) {
23
+ const log = getLogger();
24
+ let result = template;
25
+ // Resolve ${VAR} syntax first (environment variables)
26
+ result = result.replace(/\$\{(\w+)\}/g, (match, varName) => {
27
+ const value = envVars[varName];
28
+ if (!value) {
29
+ log.warn(`Environment variable not found: ${varName}, keeping placeholder`);
30
+ return match;
31
+ }
32
+ return value;
33
+ });
34
+ // Resolve {VAR} syntax (bridge-specific variables)
35
+ result = result.replace(/\{(\w+)\}/g, (match, varName) => {
36
+ const value = bridgeVars[varName];
37
+ if (!value) {
38
+ log.warn(`Bridge variable not found: ${varName}, keeping placeholder`);
39
+ return match;
40
+ }
41
+ return value;
42
+ });
43
+ return result;
44
+ }
45
+ /**
46
+ * Resolve environment variables in an object recursively.
47
+ * Strings are resolved for placeholders, other types are returned as-is.
48
+ */
49
+ export function resolveEnvVarsInObject(obj, envVars, bridgeVars) {
50
+ const result = {};
51
+ for (const [key, value] of Object.entries(obj)) {
52
+ if (typeof value === "string") {
53
+ result[key] = resolveEnvVars(value, envVars, bridgeVars);
54
+ }
55
+ else {
56
+ result[key] = value;
57
+ }
58
+ }
59
+ return result;
60
+ }
61
+ //# sourceMappingURL=env-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-resolve.js","sourceRoot":"","sources":["../src/env-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,UAA8C,OAAO,CAAC,GAA6B,EACnF,aAAqC,EAAE;IAEvC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,MAAM,GAAG,QAAQ,CAAC;IAEtB,sDAAsD;IACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,mCAAmC,OAAO,uBAAuB,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,8BAA8B,OAAO,uBAAuB,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAA4B,EAC5B,OAA4C,EAC5C,UAAmC;IAEnC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,30 +1,26 @@
1
1
  /**
2
- * CommandToolExecutor — executes shell commands in Docker containers
2
+ * CommandToolExecutor — executes shell commands via SSH
3
3
  * with argument substitution ({placeholder} syntax).
4
- *
5
- * Refactored from the Python version with these improvements:
6
- * - Static safety checks happen at construction time (not per-call)
7
- * - Container validation and UID resolution are cached in docker.ts
8
- * - Path normalization is an external preprocessor (not baked in)
9
- * - No abstract base class; implements ToolExecutor interface directly
10
4
  */
11
- import type { ToolExecutionResult, ToolExecutor, ValidationRule } from "../types.js";
5
+ import type { ToolExecutionResult, ToolExecutor, ValidationRule, ContainerExecutor } from "../types.js";
12
6
  export interface CommandExecutorOptions {
13
7
  commandTemplate: string;
14
- container: string;
15
- ddevProject: string;
16
- user?: string;
8
+ host: string;
9
+ executor: ContainerExecutor;
10
+ sshUser?: string;
17
11
  shell?: string;
12
+ workingDir?: string;
18
13
  defaultArgs?: Record<string, string>;
19
14
  disallowedCommands?: string[];
20
15
  validationRules?: ValidationRule[];
21
16
  }
22
17
  export declare class CommandToolExecutor implements ToolExecutor {
23
18
  private readonly commandTemplate;
24
- private readonly container;
25
- private readonly ddevProject;
26
- private readonly user;
19
+ private readonly host;
20
+ private readonly executor;
21
+ private readonly sshUser?;
27
22
  private readonly shell;
23
+ private readonly workingDir?;
28
24
  private readonly defaultArgs;
29
25
  private readonly disallowedCommands;
30
26
  private readonly validationRules;
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAc;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,OAAO,EAAE,sBAAsB;IAcrC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsD1E,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiBtD,6EAA6E;IAC7E,OAAO,CAAC,UAAU;CAQnB"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExG,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAc;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;gBAEvC,OAAO,EAAE,sBAAsB;IAYrC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6C1E,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiBtD,6EAA6E;IAC7E,OAAO,CAAC,UAAU;CAQnB"}
@@ -1,40 +1,31 @@
1
1
  /**
2
- * CommandToolExecutor — executes shell commands in Docker containers
2
+ * CommandToolExecutor — executes shell commands via SSH
3
3
  * with argument substitution ({placeholder} syntax).
4
- *
5
- * Refactored from the Python version with these improvements:
6
- * - Static safety checks happen at construction time (not per-call)
7
- * - Container validation and UID resolution are cached in docker.ts
8
- * - Path normalization is an external preprocessor (not baked in)
9
- * - No abstract base class; implements ToolExecutor interface directly
10
4
  */
11
- import { dockerExec, validateContainer, validateStaticSafety, resolveContainerUser, } from "../docker.js";
12
5
  import { getLogger } from "../logger.js";
13
6
  export class CommandToolExecutor {
14
7
  commandTemplate;
15
- container;
16
- ddevProject;
17
- user;
8
+ host;
9
+ executor;
10
+ sshUser;
18
11
  shell;
12
+ workingDir;
19
13
  defaultArgs;
20
14
  disallowedCommands;
21
15
  validationRules;
22
16
  constructor(options) {
23
17
  this.commandTemplate = options.commandTemplate;
24
- this.container = options.container;
25
- this.ddevProject = options.ddevProject;
26
- this.user = options.user ?? "www-data";
18
+ this.host = options.host;
19
+ this.executor = options.executor;
20
+ this.sshUser = options.sshUser;
27
21
  this.shell = options.shell ?? "/bin/bash";
22
+ this.workingDir = options.workingDir;
28
23
  this.defaultArgs = options.defaultArgs ?? {};
29
24
  this.disallowedCommands = new Set(options.disallowedCommands ?? []);
30
25
  this.validationRules = options.validationRules ?? [];
31
- // Static safety: validate shell and flag at construction, not per-call.
32
- validateStaticSafety([this.shell, "-c"]);
33
26
  }
34
27
  async execute(args) {
35
28
  const log = getLogger();
36
- // Resolve user (cached after first call).
37
- const user = await resolveContainerUser(this.user, this.container);
38
29
  // Merge with defaults.
39
30
  const mergedArgs = { ...this.defaultArgs, ...args };
40
31
  // Check disallowed commands.
@@ -59,21 +50,15 @@ export class CommandToolExecutor {
59
50
  if (ruleError) {
60
51
  return { content: `Validation error: ${ruleError}`, isError: true };
61
52
  }
62
- // Validate container ownership (cached after first call).
53
+ // Execute via injected executor (SSH or other).
63
54
  try {
64
- await validateContainer(this.container, this.ddevProject);
65
- }
66
- catch (e) {
67
- log.warn(`Container validation: ${e.message}`);
68
- }
69
- // Execute in Docker container.
70
- try {
71
- log.info(`EXEC: ${this.container} as ${user}: ${this.shell} -c ...`);
72
- const output = await dockerExec({
73
- container: this.container,
55
+ log.info(`EXEC: ${this.host} via ${this.executor.constructor.name}`);
56
+ const output = await this.executor.execute({
57
+ host: this.host,
74
58
  command: [cmdStr],
75
- user,
59
+ user: this.sshUser,
76
60
  shell: this.shell,
61
+ workingDir: this.workingDir,
77
62
  });
78
63
  return { content: output.trim() };
79
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ContainerExecutor } from "../types.js";
2
+ /**
3
+ * Executes commands on SSH hosts.
4
+ * Assumes SSH keys are configured and available (e.g. via homeadditions).
5
+ */
6
+ export declare class SshExecutor implements ContainerExecutor {
7
+ private readonly defaultUser;
8
+ constructor(defaultUser?: string);
9
+ execute(options: {
10
+ host: string;
11
+ command: string[];
12
+ user?: string;
13
+ shell?: string;
14
+ workingDir?: string;
15
+ }): Promise<string>;
16
+ /**
17
+ * Resolve the SSH user to connect as.
18
+ * - If user is a simple string (username), use it
19
+ * - Otherwise use configured default or $USER env var
20
+ */
21
+ private resolveSshUser;
22
+ /**
23
+ * Escape a shell command for safe execution via SSH.
24
+ * Wraps the entire command in single quotes and escapes any embedded single quotes.
25
+ */
26
+ private escapeShellCommand;
27
+ }
28
+ //# sourceMappingURL=ssh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/executors/ssh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;GAGG;AACH,qBAAa,WAAY,YAAW,iBAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAErC,WAAW,CAAC,EAAE,MAAM;IAI1B,OAAO,CAAC,OAAO,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDnB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAOtB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAK3B"}
@@ -0,0 +1,67 @@
1
+ import { execFile } from "node:child_process";
2
+ import { getLogger } from "../logger.js";
3
+ /**
4
+ * Executes commands on SSH hosts.
5
+ * Assumes SSH keys are configured and available (e.g. via homeadditions).
6
+ */
7
+ export class SshExecutor {
8
+ defaultUser;
9
+ constructor(defaultUser) {
10
+ this.defaultUser = defaultUser ?? process.env.USER;
11
+ }
12
+ async execute(options) {
13
+ const { host, command, user, shell = "/bin/bash", workingDir } = options;
14
+ const log = getLogger();
15
+ // Determine the SSH user to connect as
16
+ const sshUser = this.resolveSshUser(user);
17
+ // Escape the command for safe shell execution
18
+ const escapedCmd = this.escapeShellCommand(command.join(" "));
19
+ // Build the full command, optionally with working directory change
20
+ let remoteCmd = escapedCmd;
21
+ if (workingDir) {
22
+ const escapedDir = this.escapeShellCommand(workingDir);
23
+ remoteCmd = `cd ${escapedDir} && ${escapedCmd}`;
24
+ }
25
+ const fullCmd = `${shell} -c ${remoteCmd}`;
26
+ // Build SSH destination: "user@hostname" or just "hostname"
27
+ const sshDestination = sshUser ? `${sshUser}@${host}` : host;
28
+ const sshArgs = [
29
+ "-o", "StrictHostKeyChecking=no",
30
+ "-o", "UserKnownHostsFile=/dev/null",
31
+ "-o", "LogLevel=ERROR",
32
+ sshDestination,
33
+ fullCmd
34
+ ];
35
+ log.debug(`SSH Exec: ssh ${sshArgs.join(" ")}`);
36
+ return new Promise((resolve, reject) => {
37
+ execFile("ssh", sshArgs, { maxBuffer: 10 * 1024 * 1024, timeout: 120_000 }, (error, stdout, stderr) => {
38
+ if (error) {
39
+ reject(new Error(`SSH command failed: ssh ${sshDestination} ${fullCmd}\n${stderr?.trim() || error.message}`));
40
+ return;
41
+ }
42
+ resolve(stdout);
43
+ });
44
+ });
45
+ }
46
+ /**
47
+ * Resolve the SSH user to connect as.
48
+ * - If user is a simple string (username), use it
49
+ * - Otherwise use configured default or $USER env var
50
+ */
51
+ resolveSshUser(user) {
52
+ if (user) {
53
+ return user;
54
+ }
55
+ return this.defaultUser;
56
+ }
57
+ /**
58
+ * Escape a shell command for safe execution via SSH.
59
+ * Wraps the entire command in single quotes and escapes any embedded single quotes.
60
+ */
61
+ escapeShellCommand(cmd) {
62
+ // Escape single quotes by replacing ' with '\''
63
+ const escaped = cmd.replace(/'/g, "'\\''");
64
+ return `'${escaped}'`;
65
+ }
66
+ }
67
+ //# sourceMappingURL=ssh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/executors/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC;;;GAGG;AACH,MAAM,OAAO,WAAW;IACL,WAAW,CAAqB;IAEjD,YAAY,WAAoB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAMb;QACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QACzE,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QAExB,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1C,8CAA8C;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE9D,mEAAmE;QACnE,IAAI,SAAS,GAAG,UAAU,CAAC;QAC3B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACvD,SAAS,GAAG,MAAM,UAAU,OAAO,UAAU,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,KAAK,OAAO,SAAS,EAAE,CAAC;QAE3C,4DAA4D;QAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,gBAAgB;YACtB,cAAc;YACd,OAAO;SACR,CAAC;QAEF,GAAG,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,QAAQ,CACN,KAAK,EACL,OAAO,EACP,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EACjD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACxB,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CACJ,IAAI,KAAK,CACP,2BAA2B,cAAc,IAAI,OAAO,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAC3F,CACF,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,IAAwB;QAC7C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,GAAW;QACpC,gDAAgD;QAChD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC;CACF"}
@@ -13,6 +13,7 @@ export declare class ToolRegistry {
13
13
  private readonly config;
14
14
  private readonly tools;
15
15
  private readonly argPreprocessor;
16
+ private readonly containerExecutor;
16
17
  constructor(toolsConfigDir: string, config: BridgeConfig);
17
18
  /**
18
19
  * Load all tools from YAML config files. Returns tool count.
@@ -24,7 +25,6 @@ export declare class ToolRegistry {
24
25
  * No "originalName" tracking needed — the binding is in the executor itself.
25
26
  */
26
27
  private loadRemoteMcpTools;
27
- private interpolateContainerName;
28
28
  private createExecutor;
29
29
  getToolNames(): string[];
30
30
  getTool(name: string): RegisteredTool | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EACV,YAAY,EAIZ,mBAAmB,EACnB,cAAc,EAIf,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAEtC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAWxD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAgCpB,cAAc;IAoB5B;;;OAGG;YACW,kBAAkB;IAmDhC,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,cAAc;IAgDtB,YAAY,IAAI,MAAM,EAAE;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IACjD,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAE1C;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwB5F;;OAEG;IACH,OAAO,CAAC,cAAc;CAsBvB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EACV,YAAY,EAIZ,mBAAmB,EACnB,cAAc,EAKf,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAexD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAgCpB,cAAc;IAoB5B;;;OAGG;YACW,kBAAkB;IAmDhC,OAAO,CAAC,cAAc;IAyDtB,YAAY,IAAI,MAAM,EAAE;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IACjD,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAE1C;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwB5F;;OAEG;IACH,OAAO,CAAC,cAAc;CAsBvB"}
package/dist/registry.js CHANGED
@@ -12,6 +12,8 @@ import { resolve, join } from "node:path";
12
12
  import { globSync } from "glob";
13
13
  import yaml from "js-yaml";
14
14
  import { getLogger } from "./logger.js";
15
+ import { resolveEnvVars } from "./env-resolve.js";
16
+ import { SshExecutor } from "./executors/ssh.js";
15
17
  import { CommandToolExecutor } from "./executors/command.js";
16
18
  import { McpProxyExecutor, BoundRemoteToolExecutor } from "./executors/mcp-proxy.js";
17
19
  export class ToolRegistry {
@@ -19,9 +21,13 @@ export class ToolRegistry {
19
21
  config;
20
22
  tools = new Map();
21
23
  argPreprocessor;
24
+ containerExecutor;
22
25
  constructor(toolsConfigDir, config) {
23
26
  this.toolsConfigDir = resolve(toolsConfigDir);
24
27
  this.config = config;
28
+ // Initialize standard container executor (now SSH based)
29
+ // Pass the configured SSH user or fall back to environment
30
+ this.containerExecutor = new SshExecutor(config.sshUser);
25
31
  // Path normalization as a composable preprocessor.
26
32
  // Converts devcontainer paths (e.g. /workspace/...) to container paths (/var/www/html/...).
27
33
  const hostRoot = config.hostProjectRoot;
@@ -132,11 +138,6 @@ export class ToolRegistry {
132
138
  return 0;
133
139
  }
134
140
  }
135
- interpolateContainerName(container) {
136
- return container?.includes("{DDEV_PROJECT}")
137
- ? container.replace(/\{DDEV_PROJECT\}/g, this.config.ddevProject)
138
- : container;
139
- }
140
141
  createExecutor(toolConfig) {
141
142
  const log = getLogger();
142
143
  const type = toolConfig.type ?? "command";
@@ -148,12 +149,23 @@ export class ToolRegistry {
148
149
  log.error(`Tool ${name}: missing command_template`);
149
150
  return null;
150
151
  }
152
+ if (!cfg.ssh_target) {
153
+ log.error(`Tool ${name}: missing ssh_target`);
154
+ return null;
155
+ }
156
+ // Resolve environment variables and bridge placeholders
157
+ const sshTarget = resolveEnvVars(cfg.ssh_target, process.env, {
158
+ DDEV_PROJECT: this.config.ddevProject,
159
+ });
160
+ const sshUser = cfg.ssh_user ? resolveEnvVars(cfg.ssh_user) : undefined;
161
+ const workingDir = cfg.working_dir ? resolveEnvVars(cfg.working_dir) : undefined;
151
162
  return new CommandToolExecutor({
152
163
  commandTemplate: cfg.command_template,
153
- container: this.interpolateContainerName(cfg.container),
154
- ddevProject: this.config.ddevProject,
155
- user: cfg.user,
164
+ host: sshTarget,
165
+ executor: this.containerExecutor, // Inject SSH executor
166
+ sshUser,
156
167
  shell: cfg.shell,
168
+ workingDir,
157
169
  defaultArgs: cfg.default_args,
158
170
  disallowedCommands: cfg.disallowed_commands,
159
171
  validationRules: cfg.validation_rules,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAcrF,MAAM,OAAO,YAAY;IACN,cAAc,CAAS;IACvB,MAAM,CAAe;IACrB,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC/C,eAAe,CAAkB;IACjC,iBAAiB,CAAoB;IAEtD,YAAY,cAAsB,EAAE,MAAoB;QACtD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,yDAAyD;QACzD,2DAA2D;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzD,mDAAmD;QACnD,4FAA4F;QAC5F,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;QACxC,MAAM,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAA2B,CAAC;gBAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACtE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAEjF,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBAC1C,WAAW,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,UAAU,WAAW,QAAQ,CAAC,CAAC;QACxC,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,UAAsB;QACjD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAChE,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAEnF,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAE5E,+EAA+E;QAC/E,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,IAAK,UAAkC,CAAC,mBAAmB,EAAE,CAAC;YAChG,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAiC,EAAE,QAA4B,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC9B,WAAgC,EAChC,KAAuB;QAEvB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;YACnD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACrC,KAAK,CAAC,gBAAgB,EAAE;gBACxB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CACzF;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAE/E,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC;YAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI;oBAAE,SAAS;gBAE3B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAEnE,qFAAqF;gBACrF,MAAM,aAAa,GAAG,IAAI,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEtE,MAAM,aAAa,GAAwB;oBACzC,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;oBACrC,IAAI,EAAE,YAAY;oBAClB,YAAY,EAAE,MAAM,CAAC,WAAyC;oBAC9D,UAAU,EAAE,WAAW,CAAC,UAAU;iBACnC,CAAC;gBAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC9E,GAAG,CAAC,IAAI,CAAC,uBAAuB,SAAS,UAAU,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;gBACnE,KAAK,EAAE,CAAC;YACV,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,eAAe,SAAS,EAAE,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,oCAAoC,SAAS,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,UAAsB;QAC3C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC;QAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAE7B,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,UAA+B,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,4BAA4B,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAChG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAEpF,wDAAwD;gBACxD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,GAA6B,EAAE;oBACtF,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;iBACtC,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxE,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEjF,OAAO,IAAI,mBAAmB,CAAC;oBAC7B,eAAe,EAAE,GAAG,CAAC,gBAAgB;oBACrC,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,sBAAsB;oBACxD,OAAO;oBACP,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,UAAU;oBACV,WAAW,EAAE,GAAG,CAAC,YAAY;oBAC7B,kBAAkB,EAAE,GAAG,CAAC,mBAAmB;oBAC3C,eAAe,EAAE,GAAG,CAAC,gBAAgB;iBACtC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,UAAiC,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAEpF,OAAO,IAAI,gBAAgB,CAAC;oBAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,WAAW,EAAE,GAAG,CAAC,YAAY;oBAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,YAAY,EAAE,GAAG,CAAC,aAAa;oBAC/B,YAAY,EAAE,GAAG,CAAC,aAAa;oBAC/B,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;oBACpC,SAAS,EAAE,GAAG,CAAC,UAAU;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,+BAA+B,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,qBAAqB;IAErB,YAAY,KAAe,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAY,IAAgC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,WAAW,KAAkC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjE;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAA6B;QAC3D,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAEpF,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;QAEhC,IAAI,CAAC;YACH,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,qBAAsB,CAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QAED,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,EAAE,OAAO,EAAE,UAAW,CAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,KAA8B,EAC9B,QAAgB,EAChB,aAAqB;QAErB,MAAM,SAAS,GAAG,CAAC,CAAU,EAAW,EAAE;YACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC;oBACjC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC1C,CAAC,CAAC,CAAC,CAAC;YACR,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,MAAM,GAA4B,EAAE,CAAC;gBAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACrE,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,OAAO,SAAS,CAAC,KAAK,CAA4B,CAAC;IACrD,CAAC;CACF"}
package/dist/types.d.ts CHANGED
@@ -28,12 +28,13 @@ export interface JsonSchemaProperty {
28
28
  enum?: string[];
29
29
  default?: unknown;
30
30
  }
31
- /** Configuration for a command-type tool (docker exec). */
31
+ /** Configuration for a command-type tool (SSH execution). */
32
32
  export interface CommandToolConfig extends BaseToolConfig {
33
33
  type: "command";
34
34
  command_template: string;
35
- container: string;
36
- user?: string;
35
+ ssh_target: string;
36
+ ssh_user?: string;
37
+ working_dir?: string;
37
38
  shell?: string;
38
39
  default_args?: Record<string, string>;
39
40
  disallowed_commands?: string[];
@@ -94,5 +95,17 @@ export interface BridgeConfig {
94
95
  hostProjectRoot: string;
95
96
  /** Container project root for path normalization. */
96
97
  containerProjectRoot: string;
98
+ /** SSH user for container connections (defaults to current user). */
99
+ sshUser?: string;
100
+ }
101
+ /** Interface for executing commands via SSH. */
102
+ export interface ContainerExecutor {
103
+ execute(options: {
104
+ host: string;
105
+ command: string[];
106
+ user?: string;
107
+ shell?: string;
108
+ workingDir?: string;
109
+ }): Promise<string>;
97
110
  }
98
111
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAEhD,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;CACrC;AAED,kDAAkD;AAClD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEjE,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrE,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7B,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,oBAAoB,EAAE,MAAM,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@wunderio/wdrmcp",
3
3
  "mcpName": "io.github.wunderio/wdrmcp",
4
- "version": "0.1.4",
5
- "description": "A generic MCP server that dynamically loads tool definitions from YAML configuration files and executes them in Docker containers or proxies them to remote MCP servers.",
4
+ "version": "0.1.5",
5
+ "description": "A generic MCP server that dynamically loads tool definitions from YAML configuration files and executes them via SSH on remote hosts or proxies them to remote MCP servers.",
6
6
  "type": "module",
7
7
  "bin": {
8
8
  "wdrmcp": "dist/index.js"
@@ -48,4 +48,4 @@
48
48
  "@types/node": "^22.0.0",
49
49
  "typescript": "^5.7.0"
50
50
  }
51
- }
51
+ }