staff-mcp 1.3.0 → 2.0.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 (94) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +152 -55
  3. package/README_zh.md +155 -53
  4. package/dist/src/data/HttpDataSession.d.ts +22 -0
  5. package/dist/src/data/HttpDataSession.js +925 -0
  6. package/dist/src/data/HttpDataSession.js.map +1 -0
  7. package/dist/src/data/node.d.ts +4 -0
  8. package/dist/src/data/node.js +93 -0
  9. package/dist/src/data/node.js.map +1 -0
  10. package/dist/src/data/types.d.ts +54 -0
  11. package/dist/src/data/types.js +2 -0
  12. package/dist/src/data/types.js.map +1 -0
  13. package/dist/src/data-stdio-docker.d.ts +10 -0
  14. package/dist/src/data-stdio-docker.js +140 -0
  15. package/dist/src/data-stdio-docker.js.map +1 -0
  16. package/dist/src/docker-proxy.d.ts +6 -1
  17. package/dist/src/docker-proxy.js +324 -147
  18. package/dist/src/docker-proxy.js.map +1 -1
  19. package/dist/src/extensions/apps.d.ts +12 -0
  20. package/dist/src/extensions/apps.js +85 -0
  21. package/dist/src/extensions/apps.js.map +1 -0
  22. package/dist/src/extensions/config.d.ts +27 -0
  23. package/dist/src/extensions/config.js +91 -0
  24. package/dist/src/extensions/config.js.map +1 -0
  25. package/dist/src/extensions/protocol.d.ts +35 -0
  26. package/dist/src/extensions/protocol.js +47 -0
  27. package/dist/src/extensions/protocol.js.map +1 -0
  28. package/dist/src/extensions/runtime.d.ts +16 -0
  29. package/dist/src/extensions/runtime.js +266 -0
  30. package/dist/src/extensions/runtime.js.map +1 -0
  31. package/dist/src/file-manager/extension.d.ts +21 -0
  32. package/dist/src/file-manager/extension.js +514 -0
  33. package/dist/src/file-manager/extension.js.map +1 -0
  34. package/dist/src/file-manager/file-core.d.ts +128 -0
  35. package/dist/src/file-manager/file-core.js +750 -0
  36. package/dist/src/file-manager/file-core.js.map +1 -0
  37. package/dist/src/file-manager/transfers.d.ts +423 -0
  38. package/dist/src/file-manager/transfers.js +540 -0
  39. package/dist/src/file-manager/transfers.js.map +1 -0
  40. package/dist/src/file-manager/ui/index.html +81 -0
  41. package/dist/src/index.js +276 -131
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/reverse/SseTransport.d.ts +34 -0
  44. package/dist/src/reverse/SseTransport.js +215 -0
  45. package/dist/src/reverse/SseTransport.js.map +1 -0
  46. package/dist/src/reverse/http.d.ts +7 -0
  47. package/dist/src/reverse/http.js +85 -0
  48. package/dist/src/reverse/http.js.map +1 -0
  49. package/dist/src/server.d.ts +4 -2
  50. package/dist/src/server.js +80 -18
  51. package/dist/src/server.js.map +1 -1
  52. package/dist/src/terminal/extension.d.ts +4 -0
  53. package/dist/src/terminal/extension.js +108 -0
  54. package/dist/src/terminal/extension.js.map +1 -0
  55. package/dist/src/terminal/pty.d.ts +14 -0
  56. package/dist/src/terminal/pty.js +121 -0
  57. package/dist/src/terminal/pty.js.map +1 -0
  58. package/dist/src/terminal/session.d.ts +136 -0
  59. package/dist/src/terminal/session.js +422 -0
  60. package/dist/src/terminal/session.js.map +1 -0
  61. package/dist/src/terminal/ui/index.html +183 -0
  62. package/dist/src/tools/file-tools.d.ts +2 -1
  63. package/dist/src/tools/file-tools.js +19 -7
  64. package/dist/src/tools/file-tools.js.map +1 -1
  65. package/dist/src/tools/mcp-client-tools.js +243 -103
  66. package/dist/src/tools/mcp-client-tools.js.map +1 -1
  67. package/dist/src/tools/shell-tools.js +1 -1
  68. package/dist/src/tools/shell-tools.js.map +1 -1
  69. package/dist/src/tools/skills.js +26 -1
  70. package/dist/src/tools/skills.js.map +1 -1
  71. package/dist/src/transports/http.d.ts +15 -2
  72. package/dist/src/transports/http.js +244 -65
  73. package/dist/src/transports/http.js.map +1 -1
  74. package/dist/src/transports/reverse.d.ts +23 -19
  75. package/dist/src/transports/reverse.js +130 -74
  76. package/dist/src/transports/reverse.js.map +1 -1
  77. package/dist/src/transports/stdio.d.ts +5 -2
  78. package/dist/src/transports/stdio.js +130 -20
  79. package/dist/src/transports/stdio.js.map +1 -1
  80. package/dist/src/utils/proxy.d.ts +2 -2
  81. package/dist/src/utils/proxy.js +84 -62
  82. package/dist/src/utils/proxy.js.map +1 -1
  83. package/dist/src/utils/server-activity.d.ts +6 -0
  84. package/dist/src/utils/server-activity.js +46 -0
  85. package/dist/src/utils/server-activity.js.map +1 -0
  86. package/dist/src/utils/server-lifecycle.d.ts +5 -0
  87. package/dist/src/utils/server-lifecycle.js +51 -0
  88. package/dist/src/utils/server-lifecycle.js.map +1 -0
  89. package/docs/file-manager.md +179 -0
  90. package/docs/terminal.md +66 -0
  91. package/package.json +28 -6
  92. package/dist/src/transports/fte-lifecycle.d.ts +0 -13
  93. package/dist/src/transports/fte-lifecycle.js +0 -76
  94. package/dist/src/transports/fte-lifecycle.js.map +0 -1
package/dist/src/index.js CHANGED
@@ -1,67 +1,163 @@
1
1
  #!/usr/bin/env node
2
- import { Command, InvalidArgumentError } from "commander";
3
- import * as path from "path";
4
- import * as os from "os";
5
- import { createServerFactory } from "./server.js";
6
- import { buildDockerNameHint, runDockerProxy, validateAdditionalDockerArgs } from "./docker-proxy.js";
7
- import { STAFF_MCP_PACKAGE_ROOT, STAFF_MCP_VERSION } from "./package-info.js";
8
- import { redirectStdioLogsToStderr, startStdioServer } from "./transports/stdio.js";
9
- import { getHttpAuthToken, startHttpServer } from "./transports/http.js";
10
- import { startReverseServer } from "./transports/reverse.js";
11
- import { ensureStaffDirs, STAFF_SKILLS_DIR, STAFF_PROFILES_DIR } from "./utils/paths.js";
12
- import { ensureRipgrep } from "./utils/tool-utils.js";
13
- import { configureGlobalProxy } from "./utils/proxy.js";
2
+ import { Command, InvalidArgumentError, Option } from 'commander';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import { mkdirSync } from 'node:fs';
6
+ import { createServerFactory } from './server.js';
7
+ import { buildDockerNameHint, runDockerProxy, preflightDockerExtensions, } from './docker-proxy.js';
8
+ import { STAFF_MCP_PACKAGE_ROOT, STAFF_MCP_VERSION } from './package-info.js';
9
+ import { redirectStdioLogsToStderr, startStdioServer, } from './transports/stdio.js';
10
+ import { getHttpAuthToken, startHttpServer, resolveHttpSessionPolicy, HTTP_MAX_SESSIONS, HTTP_SESSION_IDLE_MS, } from './transports/http.js';
11
+ import { startReverseServer } from './transports/reverse.js';
12
+ import { ensureStaffDirs, STAFF_TOOLS_DIR, STAFF_SKILLS_DIR, STAFF_PROFILES_DIR, } from './utils/paths.js';
13
+ import { ensureRipgrep } from './utils/tool-utils.js';
14
+ import { configureGlobalProxy } from './utils/proxy.js';
15
+ import { dockerPrivatePaths, parseExtensions, parseFileRoot, resolveExtensionOptions, } from './extensions/config.js';
14
16
  // Global error handlers to prevent the MCP server from crashing due to unhandled child process errors
15
- process.on("uncaughtException", (err) => {
16
- if (err.code === "ENOENT" && err.syscall && err.syscall.startsWith("spawn")) {
17
+ process.on('uncaughtException', (err) => {
18
+ if (err.code === 'ENOENT' &&
19
+ err.syscall &&
20
+ err.syscall.startsWith('spawn')) {
17
21
  console.error(`[staff-mcp] Captured unhandled spawn error: ${err.message}. A background tool failed to start.`);
18
22
  }
19
23
  else {
20
- console.error("[staff-mcp] Uncaught Exception:", err);
24
+ console.error('[staff-mcp] Uncaught Exception:', err);
21
25
  }
22
26
  });
23
- process.on("unhandledRejection", (reason, promise) => {
24
- console.error("[staff-mcp] Unhandled Rejection at:", promise, "reason:", reason);
27
+ process.on('unhandledRejection', (reason, promise) => {
28
+ console.error('[staff-mcp] Unhandled Rejection at:', promise, 'reason:', reason);
25
29
  });
26
30
  function milliseconds(value, minimum = 1) {
27
31
  const parsed = Number(value);
28
- if (!Number.isInteger(parsed) || parsed < minimum || parsed > 2_147_483_647) {
32
+ if (!Number.isInteger(parsed) ||
33
+ parsed < minimum ||
34
+ parsed > 2_147_483_647) {
29
35
  throw new InvalidArgumentError(`Expected milliseconds between ${minimum} and 2147483647.`);
30
36
  }
31
37
  return parsed;
32
38
  }
39
+ /** CLI owns process exit; transports own and await their session resources. */
40
+ async function runHostService(start, watchHostPipe) {
41
+ const starting = start();
42
+ let stopping = false;
43
+ const shutdown = async (code) => {
44
+ if (stopping)
45
+ return;
46
+ stopping = true;
47
+ try {
48
+ const service = await starting;
49
+ await service.stop();
50
+ }
51
+ catch {
52
+ console.error('[staff-mcp] Startup or shutdown cleanup failed.');
53
+ code = 1;
54
+ }
55
+ process.exit(code);
56
+ };
57
+ const stop = () => void shutdown(0);
58
+ const failed = () => void shutdown(1);
59
+ process.once('SIGINT', stop);
60
+ process.once('SIGTERM', stop);
61
+ process.once('SIGHUP', stop);
62
+ if (watchHostPipe) {
63
+ process.stdin.once('end', stop);
64
+ process.stdin.once('close', stop);
65
+ process.stdin.once('error', failed);
66
+ process.stdin.resume();
67
+ }
68
+ try {
69
+ const service = await starting;
70
+ void service.closed?.then(stop, failed);
71
+ if (watchHostPipe &&
72
+ (process.stdin.readableEnded || process.stdin.destroyed))
73
+ stop();
74
+ }
75
+ catch (error) {
76
+ console.error('[staff-mcp] Transport startup failed:', error);
77
+ await shutdown(1);
78
+ }
79
+ }
33
80
  const program = new Command();
34
81
  program
35
- .name("staff-mcp")
36
- .description("MCP Server with file, shell, and LSP capabilities.")
82
+ .name('staff-mcp')
83
+ .description('MCP Server with file, shell, and LSP capabilities.')
37
84
  .version(STAFF_MCP_VERSION)
38
- .option("-t, --transport <type>", "Transport type (stdio, http, reverse)", "stdio")
39
- .option("-p, --port <number>", "Port for HTTP server", "3000")
40
- .option("-h, --host <address>", "Host for HTTP server", "127.0.0.1")
41
- .option("--ht, --http-token <token>", "Optional bearer token for HTTP transport")
42
- .option("--ru, --reverse-url <url>", "URL for Reverse MCP Gateway (e.g. http://localhost:3000/api/mcp-reverse)")
43
- .option("--rt, --reverse-token <token>", "Security token for Reverse MCP")
44
- .option("--rn, --reverse-name <name>", "Server name for Reverse MCP")
45
- .option("--reverse-connect-timeout <ms>", "SSE connection timeout (0 disables it)", value => milliseconds(value, 0), 15000)
46
- .option("--reverse-initialization-timeout <ms>", "MCP initialization timeout after SSE opens", value => milliseconds(value), 15000)
47
- .option("--reverse-read-timeout <ms>", "SSE inactivity timeout, independent of tool duration", value => milliseconds(value), 45000)
48
- .option("--reverse-stable-time <ms>", "Connection lifetime required to reset reconnect backoff", value => milliseconds(value, 0), 30000)
49
- .option("-w, --working-dir <path>", "Working directory for the server (defaults to current execution path)", process.cwd())
50
- .option("-d, --allowed-dir <paths...>", "Additional directories allowed for sandbox", [])
51
- .option("-r, --profile <name>", "The active profile for skills and instructions (e.g., android-reverse, default)", "default")
52
- .option("-m, --max-mcp-sessions <number>", "Maximum number of concurrent MCP sessions allowed", "5")
53
- .option("--enable-lsp", "Enable LSP capabilities (disabled by default)", false)
54
- .option("--docker <image>", "Run the MCP server inside a Docker container using the specified image")
55
- .option("-D, --docker-args <args...>", "Additional arguments to pass to the docker run command (e.g., -e ADB_SERVER_SOCKET=...)")
56
- .option("--proxy <url>", "HTTP(S) proxy for outbound requests (e.g. http://127.0.0.1:8080); defaults to honoring HTTP_PROXY/HTTPS_PROXY/NO_PROXY env vars")
57
- .allowUnknownOption()
85
+ .option('-t, --transport <type>', 'Transport type (stdio, http, reverse)', 'stdio')
86
+ .option('-p, --port <number>', 'Port for HTTP server', '3000')
87
+ .option('-h, --host <address>', 'Host for HTTP server', '127.0.0.1')
88
+ .option('--ht, --http-token <token>', 'Optional bearer token for HTTP transport')
89
+ .option('--http-max-sessions <count>', 'Maximum HTTP sessions per listener, including startup and cleanup', (value) => {
90
+ const count = Number(value);
91
+ if (!Number.isSafeInteger(count) || count <= 0)
92
+ throw new InvalidArgumentError('Expected a positive safe integer.');
93
+ return count;
94
+ }, HTTP_MAX_SESSIONS)
95
+ .option('--http-session-idle-ms <ms>', 'HTTP session idle timeout; active operations and resources prevent eviction', (value) => milliseconds(value), HTTP_SESSION_IDLE_MS)
96
+ .option('--ru, --reverse-url <url>', 'HTTP(S) Web reverse endpoint (e.g. https://web.example/api/mcp/reverse)')
97
+ .option('--rt, --reverse-token <token>', 'Security token for Reverse MCP')
98
+ .option('--rn, --reverse-name <name>', 'Server name for Reverse MCP')
99
+ .option('--reverse-connect-timeout <ms>', 'SSE connection timeout (0 disables it)', (value) => milliseconds(value, 0), 15000)
100
+ .option('--reverse-initialization-timeout <ms>', 'MCP initialization timeout after reverse pairing', (value) => milliseconds(value), 15000)
101
+ .option('--reverse-read-timeout <ms>', 'SSE heartbeat read timeout, independent of tool duration', (value) => milliseconds(value), 45000)
102
+ .option('--reverse-stable-time <ms>', 'Connection lifetime required to reset reconnect backoff', (value) => milliseconds(value, 0), 30000)
103
+ .option('-w, --working-dir <path>', 'Working directory for the server (defaults to current execution path)', process.cwd())
104
+ .option('-d, --allowed-dir <paths...>', 'Additional directories allowed for sandbox', [])
105
+ .option('-r, --profile <name>', 'The active profile for skills and instructions (e.g., android-reverse, default)', 'default')
106
+ .option('-m, --max-mcp-sessions <number>', 'Maximum number of concurrent MCP sessions allowed', '5')
107
+ .option('--enable-lsp', 'Enable LSP capabilities (disabled by default)', false)
108
+ .option('--extensions <features>', 'Enable files and/or terminal (comma-separated; all disabled by default)', (value) => {
109
+ try {
110
+ return parseExtensions(value);
111
+ }
112
+ catch (error) {
113
+ throw new InvalidArgumentError(error.message);
114
+ }
115
+ })
116
+ .option('--file-root <id=path>', 'Files root (repeatable; defaults to main=workspace; system=/ explicitly allows the full filesystem)', (value, previous = []) => {
117
+ try {
118
+ const root = parseFileRoot(value);
119
+ if (previous.some((item) => item.rootId === root.rootId))
120
+ throw new Error('Duplicate file root id');
121
+ return [...previous, root];
122
+ }
123
+ catch (error) {
124
+ throw new InvalidArgumentError(error.message);
125
+ }
126
+ })
127
+ .option('--shell <path>', 'Terminal shell (default: executable $SHELL or /bin/bash)')
128
+ .addOption(new Option('--internal-file-private-path <path>')
129
+ .hideHelp()
130
+ .argParser((value, previous = []) => {
131
+ if (!path.posix.isAbsolute(value) || value.includes('\0'))
132
+ throw new InvalidArgumentError('Private path must be absolute');
133
+ return [...previous, value];
134
+ }))
135
+ .option('--docker <image>', 'Run the MCP server inside a Docker container using the specified image')
136
+ .option('-D, --docker-args <args...>', 'Additional arguments to pass to the docker run command (e.g., -e ADB_SERVER_SOCKET=...)')
137
+ .option('--proxy <url>', 'HTTP(S) proxy for outbound requests (e.g. http://127.0.0.1:8080); defaults to honoring HTTP_PROXY/HTTPS_PROXY/NO_PROXY env vars')
58
138
  .action(async (options, command) => {
59
- if (options.transport === "stdio") {
139
+ if (options.transport === 'stdio') {
60
140
  redirectStdioLogsToStderr();
61
141
  }
62
- if (options.transport === "http") {
142
+ let extensions;
143
+ try {
144
+ extensions = resolveExtensionOptions({
145
+ enabled: options.extensions,
146
+ fileRoots: options.fileRoot,
147
+ shell: options.shell,
148
+ }, path.resolve(options.workingDir));
149
+ }
150
+ catch (error) {
151
+ command.error(error.message);
152
+ return;
153
+ }
154
+ if (options.transport === 'http') {
63
155
  try {
64
156
  getHttpAuthToken(options.httpToken);
157
+ resolveHttpSessionPolicy({
158
+ maxSessions: options.httpMaxSessions,
159
+ idleTimeoutMs: options.httpSessionIdleMs,
160
+ });
65
161
  }
66
162
  catch (error) {
67
163
  console.error(`[staff-mcp] ${error instanceof Error ? error.message : String(error)}`);
@@ -76,118 +172,162 @@ program
76
172
  // Docker Transparent Proxy Mode
77
173
  // -------------------------------------------------------------
78
174
  if (options.docker) {
175
+ const additionalDockerArgs = [];
176
+ for (const arg of options.dockerArgs ?? []) {
177
+ // Preserve backslashes in Windows bind paths; only unwrap quotes.
178
+ const parts = arg.match(/(?:[^\s"']+|"[^"]*"|'[^']*')+/g) || [arg];
179
+ for (const part of parts) {
180
+ additionalDockerArgs.push(part.replace(/^['"]|['"]$/g, ''));
181
+ }
182
+ }
183
+ try {
184
+ extensions = {
185
+ ...extensions,
186
+ enabled: await preflightDockerExtensions(extensions.enabled, options.transport, additionalDockerArgs),
187
+ };
188
+ }
189
+ catch (error) {
190
+ command.error(error.message);
191
+ return;
192
+ }
193
+ const dataAuto = options.transport === 'stdio' && extensions.enabled.length > 0;
79
194
  // 1. Locate the package root (where package.json is)
80
195
  const pkgRoot = STAFF_MCP_PACKAGE_ROOT;
81
196
  // 2. Cross-platform path normalizer for Volume Mounts
82
197
  const toDockerVolumePath = (p) => {
83
- if (os.platform() === "win32") {
84
- return p.replace(/^([a-zA-Z]):/, (_, drive) => `/${drive.toLowerCase()}`).replace(/\\/g, "/");
198
+ if (os.platform() === 'win32') {
199
+ return p
200
+ .replace(/^([a-zA-Z]):/, (_, drive) => `/${drive.toLowerCase()}`)
201
+ .replace(/\\/g, '/');
85
202
  }
86
203
  return p;
87
204
  };
88
205
  const hostCwd = path.resolve(options.workingDir);
89
- const dockerArgs = ["run", "-i", "--rm"];
206
+ const dockerArgs = ['run', '-i', '--rm'];
207
+ const binds = [];
208
+ const bind = (source, target, readOnly = false) => {
209
+ binds.push({ source, target });
210
+ dockerArgs.push('-v', `${toDockerVolumePath(source)}:${target}${readOnly ? ':ro' : ''}`);
211
+ };
90
212
  // 3. Mount working directory and package source
91
- dockerArgs.push("-v", `${toDockerVolumePath(hostCwd)}:/workspace`);
92
- dockerArgs.push("-w", "/workspace");
93
- dockerArgs.push("-v", `${toDockerVolumePath(pkgRoot)}:/opt/staff-mcp:ro`);
213
+ bind(hostCwd, '/workspace');
214
+ dockerArgs.push('-w', '/workspace');
215
+ bind(pkgRoot, '/opt/staff-mcp', true);
94
216
  // 3.5 Check if we are nested inside a node_modules folder (npx/pnpm global scenario)
95
217
  // If yes, map the parent node_modules into the container as well so dependencies can be resolved
96
- const isNestedInNodeModules = pkgRoot.includes("node_modules");
218
+ const isNestedInNodeModules = pkgRoot.includes('node_modules');
97
219
  if (isNestedInNodeModules) {
98
220
  // By mapping the parent directory of staff-mcp's pkgRoot to /opt/node_modules,
99
221
  // Node.js inside the container can look up and find shared dependencies.
100
- const outerNodeModules = path.resolve(pkgRoot, "..");
101
- dockerArgs.push("-v", `${toDockerVolumePath(outerNodeModules)}:/opt/node_modules:ro`);
222
+ const outerNodeModules = path.resolve(pkgRoot, '..');
223
+ bind(outerNodeModules, '/opt/node_modules', true);
102
224
  }
103
- // 3.8 Mount Host User-Level Skills and Profiles
104
- // Do not mount the entire ~/.staff to avoid cross-platform binary conflicts (e.g., native extensions, ripgrep)
105
- ensureStaffDirs(); // Ensure host directories exist to avoid Docker creating them with root permissions
106
- // Mount to a fixed, safe path in the container and point the containerized staff-mcp to it
107
- // This avoids making any assumptions about the container's user or HOME directory
108
- const containerStaffDir = "/opt/.staff";
109
- dockerArgs.push("-e", `STAFF_GLOBAL_DIR=${containerStaffDir}`);
110
- dockerArgs.push("-v", `${toDockerVolumePath(STAFF_SKILLS_DIR)}:${containerStaffDir}/skills`);
111
- dockerArgs.push("-v", `${toDockerVolumePath(STAFF_PROFILES_DIR)}:${containerStaffDir}/profiles`);
225
+ // 3.8 Keep Docker-installed tools separate from host-native binaries.
226
+ // Keep the existing container identity and host permissions unchanged.
227
+ const dockerToolsDir = path.join(STAFF_TOOLS_DIR, 'docker');
228
+ try {
229
+ // Create as the host caller, never let Docker create root-owned dirs.
230
+ ensureStaffDirs();
231
+ mkdirSync(dockerToolsDir, { recursive: true });
232
+ }
233
+ catch {
234
+ command.error('Cannot prepare Docker user directories/tools cache.');
235
+ return;
236
+ }
237
+ // Fixed paths do not assume the image's user or HOME directory.
238
+ const containerStaffDir = '/opt/.staff';
239
+ dockerArgs.push('-e', `STAFF_GLOBAL_DIR=${containerStaffDir}`);
240
+ bind(dockerToolsDir, `${containerStaffDir}/tools`);
241
+ bind(STAFF_SKILLS_DIR, `${containerStaffDir}/skills`);
242
+ bind(STAFF_PROFILES_DIR, `${containerStaffDir}/profiles`);
112
243
  // 4. Mount additional allowed directories
113
244
  if (options.allowedDir && options.allowedDir.length > 0) {
114
245
  options.allowedDir.forEach((dir) => {
115
246
  const absDir = path.resolve(dir);
116
- dockerArgs.push("-v", `${toDockerVolumePath(absDir)}:${absDir}`);
247
+ bind(absDir, absDir);
117
248
  });
118
249
  }
119
- // 5. Handle HTTP port forwarding
120
- if (options.transport === "http") {
121
- dockerArgs.push("-p", `${options.port}:${options.port}`);
122
- }
123
- // 6. Inject advanced custom args (e.g., ADB pass-through, network configs)
124
- if (options.dockerArgs && options.dockerArgs.length > 0) {
125
- const additionalDockerArgs = [];
126
- // commander parses varargs as an array of strings
127
- options.dockerArgs.forEach((arg) => {
128
- // simple split by space if the user quoted them (e.g., "-e FOO=1")
129
- // If the user uses standard bash expansion, commander already handles it.
130
- const parts = arg.match(/(?:[^\s"']+|"[^"]*"|'[^']*')+/g) || [arg];
131
- parts.forEach((part) => additionalDockerArgs.push(part.replace(/^['"]|['"]$/g, "")));
132
- });
133
- try {
134
- validateAdditionalDockerArgs(additionalDockerArgs);
250
+ const dockerRoots = options.fileRoot?.map((root) => {
251
+ const directory = `/opt/staff-file-roots/${root.rootId}`;
252
+ if (extensions.enabled.includes('files')) {
253
+ bind(root.directory, directory);
135
254
  }
136
- catch (error) {
137
- const message = error instanceof Error ? error.message : String(error);
138
- console.error(`[staff-mcp] Invalid Docker arguments: ${message}`);
139
- process.exit(1);
140
- }
141
- dockerArgs.push(...additionalDockerArgs);
255
+ return { rootId: root.rootId, directory };
256
+ });
257
+ // 5. Handle HTTP port forwarding
258
+ if (options.transport === 'http') {
259
+ dockerArgs.push('-p', `${options.port}:${options.port}`);
142
260
  }
261
+ // 6. Inject the already validated custom Docker options.
262
+ dockerArgs.push(...additionalDockerArgs);
263
+ // Only wrapper-owned mounts are known here, not arbitrary -D mounts.
264
+ // A bind of a staging descendant is protected in its entirety.
265
+ const privateAliases = dockerPrivatePaths(hostCwd, binds);
143
266
  // 7. Inject environment variable to detect docker proxy mode
144
- dockerArgs.push("-e", "STAFF_MCP_IS_DOCKER=1");
267
+ dockerArgs.push('-e', 'STAFF_MCP_IS_DOCKER=1');
145
268
  // 8. Specify the target image
146
269
  dockerArgs.push(options.docker);
147
270
  // 9. Reconstruct the command inside the container
148
- dockerArgs.push("node", "/opt/staff-mcp/dist/src/index.js");
149
- dockerArgs.push("-t", options.transport);
150
- if (options.transport === "reverse") {
271
+ dockerArgs.push('node', '/opt/staff-mcp/dist/src/index.js');
272
+ dockerArgs.push('-t', options.transport);
273
+ if (options.transport === 'reverse') {
151
274
  if (options.reverseUrl)
152
- dockerArgs.push("--ru", options.reverseUrl);
275
+ dockerArgs.push('--ru', options.reverseUrl);
153
276
  if (options.reverseToken)
154
- dockerArgs.push("--rt", options.reverseToken);
277
+ dockerArgs.push('--rt', options.reverseToken);
155
278
  if (options.reverseName)
156
- dockerArgs.push("--rn", options.reverseName);
157
- dockerArgs.push("--reverse-connect-timeout", String(options.reverseConnectTimeout));
158
- dockerArgs.push("--reverse-initialization-timeout", String(options.reverseInitializationTimeout));
159
- dockerArgs.push("--reverse-read-timeout", String(options.reverseReadTimeout));
160
- dockerArgs.push("--reverse-stable-time", String(options.reverseStableTime));
279
+ dockerArgs.push('--rn', options.reverseName);
280
+ dockerArgs.push('--reverse-connect-timeout', String(options.reverseConnectTimeout));
281
+ dockerArgs.push('--reverse-initialization-timeout', String(options.reverseInitializationTimeout));
282
+ dockerArgs.push('--reverse-read-timeout', String(options.reverseReadTimeout));
283
+ dockerArgs.push('--reverse-stable-time', String(options.reverseStableTime));
161
284
  }
162
285
  else {
163
- dockerArgs.push("-p", String(options.port));
286
+ dockerArgs.push('-p', String(options.port));
164
287
  // Inside container, we must listen on all interfaces for HTTP to be exposed
165
- if (options.transport === "http") {
166
- dockerArgs.push("-h", "0.0.0.0");
288
+ if (options.transport === 'http') {
289
+ dockerArgs.push('-h', '0.0.0.0');
290
+ dockerArgs.push('--http-max-sessions', String(options.httpMaxSessions));
291
+ dockerArgs.push('--http-session-idle-ms', String(options.httpSessionIdleMs));
167
292
  if (options.httpToken !== undefined) {
168
- dockerArgs.push("--http-token", options.httpToken);
293
+ dockerArgs.push('--http-token', options.httpToken);
169
294
  }
170
295
  }
171
296
  else {
172
- dockerArgs.push("-h", options.host);
297
+ dockerArgs.push('-h', options.host);
173
298
  }
174
299
  }
175
- dockerArgs.push("-w", "/workspace");
300
+ dockerArgs.push('-w', '/workspace');
301
+ for (const privatePath of new Set([
302
+ ...(options.internalFilePrivatePath ?? []),
303
+ ...privateAliases,
304
+ ])) {
305
+ dockerArgs.push('--internal-file-private-path', privatePath);
306
+ }
176
307
  if (options.allowedDir && options.allowedDir.length > 0) {
177
308
  options.allowedDir.forEach((dir) => {
178
- dockerArgs.push("-d", path.resolve(dir)); // paths inside container match host
309
+ dockerArgs.push('-d', path.resolve(dir)); // paths inside container match host
179
310
  });
180
311
  }
181
- dockerArgs.push("-r", options.profile);
182
- dockerArgs.push("-m", String(options.maxMcpSessions));
312
+ dockerArgs.push('-r', options.profile);
313
+ dockerArgs.push('-m', String(options.maxMcpSessions));
183
314
  if (options.enableLsp) {
184
- dockerArgs.push("--enable-lsp");
315
+ dockerArgs.push('--enable-lsp');
316
+ }
317
+ if (extensions.enabled.length) {
318
+ dockerArgs.push('--extensions', extensions.enabled.join(','));
319
+ }
320
+ for (const root of dockerRoots ?? []) {
321
+ dockerArgs.push('--file-root', `${root.rootId}=${root.directory}`);
322
+ }
323
+ if (extensions.shell !== undefined) {
324
+ dockerArgs.push('--shell', extensions.shell);
185
325
  }
186
326
  // Forward an explicit --proxy so the containerized process uses it too.
187
327
  // (Env-var proxies reach the container through docker's own env injection
188
328
  // or user-supplied -D "-e HTTP_PROXY=..." args.)
189
329
  if (options.proxy) {
190
- dockerArgs.push("--proxy", options.proxy);
330
+ dockerArgs.push('--proxy', options.proxy);
191
331
  }
192
332
  // 10. Run Docker with transport-aware stdin and a controlled shutdown lifecycle.
193
333
  // Reverse/HTTP keep a private lifecycle pipe open instead of depending on
@@ -195,6 +335,7 @@ program
195
335
  // The name hint makes containers distinguishable in `docker ps`
196
336
  // (e.g. staff-mcp-chat-poc-18000-a1b2c3).
197
337
  const exitCode = await runDockerProxy(dockerArgs, options.transport, {
338
+ dataAuto,
198
339
  nameHint: buildDockerNameHint({
199
340
  workspaceDir: hostCwd,
200
341
  transport: options.transport,
@@ -210,48 +351,52 @@ program
210
351
  // -------------------------------------------------------------
211
352
  // Standard Host Mode
212
353
  // -------------------------------------------------------------
213
- // Auto-exit if we are running as a proxy child and the host pipe breaks
214
- if (process.env.STAFF_MCP_IS_DOCKER === "1") {
215
- if (options.transport !== "stdio") {
216
- process.stdin.resume(); // keep reading to detect end in non-stdio modes
217
- }
218
- process.stdin.on("end", () => {
219
- console.error("[staff-mcp] Host pipe closed, terminating container...");
220
- process.exit(0);
221
- });
222
- process.stdin.on("error", () => {
223
- process.exit(1);
224
- });
225
- }
226
354
  ensureStaffDirs();
227
355
  // Pre-warm ripgrep: trigger background install if not present, so it's
228
356
  // likely ready by the time the first search_workspace call happens.
229
- ensureRipgrep().catch(err => {
230
- console.error("[staff-mcp] Background ripgrep install failed:", err.message);
357
+ ensureRipgrep().catch((err) => {
358
+ console.error('[staff-mcp] Background ripgrep install failed:', err.message);
231
359
  });
232
360
  const workingDir = path.resolve(options.workingDir);
233
361
  const allowedDirs = options.allowedDir.map((d) => path.resolve(d));
234
362
  const profile = options.profile;
235
363
  const maxMcpSessions = parseInt(options.maxMcpSessions, 10) || 5;
236
364
  const enableLsp = !!options.enableLsp;
237
- const serverFactory = createServerFactory("staff-mcp", STAFF_MCP_VERSION, workingDir, allowedDirs, profile, maxMcpSessions, enableLsp);
238
- if (options.transport === "http") {
239
- await startHttpServer(serverFactory, parseInt(options.port, 10), options.host, options.httpToken);
365
+ let serverFactory;
366
+ try {
367
+ serverFactory = createServerFactory('staff-mcp', STAFF_MCP_VERSION, workingDir, allowedDirs, profile, maxMcpSessions, enableLsp, extensions, options.internalFilePrivatePath);
368
+ }
369
+ catch (error) {
370
+ command.error(error.message);
371
+ return;
240
372
  }
241
- else if (options.transport === "reverse") {
242
- if (!options.reverseUrl || !options.reverseToken || !options.reverseName) {
243
- console.error("[staff-mcp] Error: --ru (reverse-url), --rt (reverse-token), and --rn (reverse-name) are required for reverse transport.");
373
+ if (options.transport === 'http') {
374
+ await runHostService(() => startHttpServer(serverFactory, parseInt(options.port, 10), options.host, options.httpToken, {
375
+ maxSessions: options.httpMaxSessions,
376
+ idleTimeoutMs: options.httpSessionIdleMs,
377
+ }), process.env.STAFF_MCP_IS_DOCKER === '1');
378
+ }
379
+ else if (options.transport === 'reverse') {
380
+ if (!options.reverseUrl ||
381
+ !options.reverseToken ||
382
+ !options.reverseName) {
383
+ console.error('[staff-mcp] Error: --ru (reverse-url), --rt (reverse-token), and --rn (reverse-name) are required for reverse transport.');
244
384
  process.exit(1);
245
385
  }
246
- await startReverseServer(serverFactory(), options.reverseUrl, options.reverseToken, options.reverseName, {
386
+ await runHostService(() => startReverseServer(serverFactory, options.reverseUrl, options.reverseToken, options.reverseName, {
387
+ proxy: options.proxy,
247
388
  connectTimeout: options.reverseConnectTimeout,
248
389
  initializationTimeout: options.reverseInitializationTimeout,
249
- heartbeat: { readTimeout: options.reverseReadTimeout },
250
- reconnect: { stableConnectionMs: options.reverseStableTime },
251
- });
390
+ heartbeat: {
391
+ readTimeout: options.reverseReadTimeout,
392
+ },
393
+ reconnect: {
394
+ stableConnectionMs: options.reverseStableTime,
395
+ },
396
+ }), process.env.STAFF_MCP_IS_DOCKER === '1');
252
397
  }
253
398
  else {
254
- await startStdioServer(serverFactory());
399
+ await runHostService(() => startStdioServer(serverFactory()), false);
255
400
  }
256
401
  });
257
402
  await program.parseAsync(process.argv);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
2
+ import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
3
+ /** Outbound-only reverse control: SSE receives JSON-RPC, POST sends JSON-RPC. No resume/replay. */
4
+ export declare class ReverseSseTransport implements Transport {
5
+ private readonly base;
6
+ private readonly headers;
7
+ private readonly fetch;
8
+ private readonly connectTimeout;
9
+ private readonly readTimeout;
10
+ onclose?: () => void;
11
+ onerror?: (error: Error) => void;
12
+ onmessage?: Transport['onmessage'];
13
+ readonly closed: Promise<void>;
14
+ sessionId?: string;
15
+ private resolveClosed;
16
+ private readonly abort;
17
+ private stopped;
18
+ private started;
19
+ private endpoint?;
20
+ private queue;
21
+ private queuedBytes;
22
+ private readTimer?;
23
+ private readyResolve?;
24
+ private readyReject?;
25
+ private reader?;
26
+ constructor(base: URL, headers: Record<string, string>, fetch: typeof globalThis.fetch, connectTimeout?: number, readTimeout?: number);
27
+ start(): Promise<void>;
28
+ private read;
29
+ private event;
30
+ send(message: JSONRPCMessage): Promise<void>;
31
+ private armReadTimeout;
32
+ private fail;
33
+ close(): Promise<void>;
34
+ }