staff-mcp 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.3 — 2026-10-26
4
+
5
+ - Pin optional `node-pty` exactly to official prerelease `1.2.0-beta.18`, with Linux x64/arm64 N-API prebuilds for glibc >= 2.28. System libraries such as `libstdc++`/`libgcc` and an executable shell are still required; no user image upgrade or musl/Alpine terminal support is promised. Docker still mounts the host package/`node_modules`; normal-install prebuilt delivery does not eliminate build leftovers or platform mismatches.
6
+ - Keep terminal off and native PTY unloaded by default. Explicit terminal requests now fail startup when platform/native/shell prerequisites are unavailable, including non-Linux Docker launchers and unsupported stdio Docker data topologies, rather than silently disabling terminal. Files degradation remains unchanged.
7
+ - Send only responses to recognized standard MCP pings on a separate bounded POST lane; all other POSTs remain FIFO, with no replay, protocol version/flag change or timeout extension. Add queue-wait/POST-elapsed slow-send metadata diagnostics and host App resource-read timing/byte-count diagnostics, without tokens, URLs or bodies.
8
+ - Upgrade the matching chat-ai host to commit `352bdb931bff38b5693dd386cd7584220571fd6b` or a descendant for stable App windows during loading/disconnection, cancellation and reopening cleanup, and accessible homepage close controls. These UI changes are delivered by chat-ai, not by the npm package. Extension protocol versions and data formats remain unchanged.
9
+
3
10
  ## 2.0.2 — 2026-10-26
4
11
 
5
12
  - Report reverse control closure with fixed reasons, POST status/byte count/duration and bounded network error codes, without logging payloads, credentials or URLs. No retry/replay behavior changes.
package/README.md CHANGED
@@ -10,14 +10,16 @@ It provides secure file management, shell execution, LSP-powered code intelligen
10
10
 
11
11
  ## Compatibility and coordinated upgrades
12
12
 
13
+ **Version 2.0.3:** delivers Linux PTY prebuilds, reports explicit terminal startup failures, and prevents large reverse replies from blocking heartbeat responses. Upgrade chat-ai to commit `352bdb931bff38b5693dd386cd7584220571fd6b` or a descendant to also receive the App window lifecycle and close-control fixes.
14
+
13
15
  **Breaking release:** reverse connections and optional extensions require a matching chat-ai host: the host must implement reverse v1 and the session-relative data paths described below. Upgrade the host, staff-mcp, descriptors and UI assets together.
14
16
 
15
- Standard stdio/Streamable HTTP tools, resources and prompts remain supported. Extensions are **all off by default**; unavailable or incompatible optional capabilities must not break an otherwise healthy standard MCP connection. The old reverse handshake itself is incompatible, even with extensions disabled: extension degradation cannot replace the paired reverse upgrade. There is no old-protocol compatibility mode, automatic transfer resumption or input replay after disconnect.
17
+ Standard stdio/Streamable HTTP tools, resources and prompts remain supported. Extensions are **all off by default**; optional discovery/data negotiation failures preserve an otherwise healthy standard MCP connection. Explicitly requesting terminal with unavailable platform/native/shell prerequisites fails startup instead of silently disabling it; files degradation is unchanged. The old reverse handshake itself is incompatible, even with extensions disabled: extension degradation cannot replace the paired reverse upgrade. There is no old-protocol compatibility mode, automatic transfer resumption or input replay after disconnect.
16
18
 
17
19
  No Chat8/schema9/format7/share protocol2 data migration is required.
18
20
 
19
21
  1. Finish in-flight operations and back up your normal configuration; no data conversion is needed.
20
- 2. Upgrade the matching chat-ai host first, then staff-mcp 2.0.2, coordinating downtime for reverse connections.
22
+ 2. Upgrade the matching chat-ai host first, then staff-mcp 2.0.3, coordinating downtime for reverse connections.
21
23
  3. Reconnect MCP, reopen Apps and explicitly enable only the extensions you want.
22
24
 
23
25
  See [CHANGELOG](CHANGELOG.md) for the release summary.
@@ -26,22 +28,22 @@ See [CHANGELOG](CHANGELOG.md) for the release summary.
26
28
 
27
29
  Requires **Node.js 22.22.2 or newer**, including inside Docker images.
28
30
 
29
- Linux and Linux-host local Docker Engine are the primary full-extension environments, subject to the prerequisites below. Windows native standard MCP (stdio and HTTP) and Windows Docker standard MCP have been validated, not full extensions. Non-Linux Docker launchers disable optional extensions. **macOS has not been tested**; path translation is not a claim of platform support.
31
+ Linux and Linux-host local Docker Engine are the primary full-extension environments, subject to the prerequisites below. Windows native standard MCP (stdio and HTTP) and Windows Docker standard MCP have been validated, not full extensions. Non-Linux Docker launchers reject an explicit terminal request; files-only requests retain warning-and-disable behavior. **macOS has not been tested**; path translation is not a claim of platform support.
30
32
 
31
- Run staff-mcp 2.0.2 with an explicit package version:
33
+ Run staff-mcp 2.0.3 with an explicit package version:
32
34
 
33
35
  ```bash
34
- npx --yes staff-mcp@2.0.2 --working-dir /path/to/your/project
36
+ npx --yes staff-mcp@2.0.3 --working-dir /path/to/your/project
35
37
  ```
36
38
 
37
- For a source checkout of staff-mcp 2.0.2, install dependencies and build before using the absolute entrypoint in the examples:
39
+ For a source checkout, install dependencies and build before using the absolute entrypoint in the examples:
38
40
 
39
41
  ```bash
40
42
  npm ci
41
43
  npm run build
42
44
  ```
43
45
 
44
- Replace `/path/to/staff-mcp` with that checkout/build directory. Docker read-only mounts still require a compatible Node/native ABI/libc; in particular an optional PTY built for a different system is not guaranteed to work inside the image.
46
+ Replace `/path/to/staff-mcp` with that checkout/build directory. Docker still read-only mounts the host package and `node_modules`, not an isolated container dependency installation. Version 2.0.3 pins optional `node-pty` exactly to the official prerelease `1.2.0-beta.18`, which includes N-API prebuilds for Linux x64/arm64 with glibc >= 2.28. The runtime still needs system libraries such as `libstdc++` and `libgcc`. This addresses prebuilt delivery for normal installs, not arbitrary local build leftovers or architecture/libc/platform mismatches; N-API does not remove those limits. No user image is upgraded automatically; terminal support is not promised for musl/Alpine.
45
47
 
46
48
  ### 1. Standard Host Mode
47
49
  Run directly on your physical machine or virtual environment.
@@ -50,10 +52,10 @@ node /path/to/staff-mcp/dist/src/index.js --working-dir /path/to/your/project
50
52
  ```
51
53
 
52
54
  ### 2. Docker Transparent Proxy Mode (Cyber-Shell)
53
- Run staff-mcp inside a compatible Docker image while keeping standard MCP control connected to the host. The wrapper mounts the project and package; image startup, Node/native ABI/libc and mount permissions still apply. Linux host + local Docker Engine is the full-extension path. Non-Linux Docker launchers disable optional Apps/files/terminal extensions with a warning; Windows Docker standard MCP has been validated, while macOS is untested; base Docker connectivity still requires a reachable daemon and valid bind mounts.
55
+ Run staff-mcp inside a compatible Docker image while keeping standard MCP control connected to the host. The wrapper mounts the project and package; image startup, Node/native ABI/libc and mount permissions still apply. Linux host + local Docker Engine is the full-extension path. Non-Linux Docker launchers fail an explicit terminal request; files-only requests still warn and disable the optional extension; Windows Docker standard MCP has been validated, while macOS is untested; base Docker connectivity still requires a reachable daemon and valid bind mounts.
54
56
 
55
57
  ```bash
56
- # Debug a Node.js project inside a pure Alpine container
58
+ # Standard MCP only, no terminal: debug inside an Alpine container
57
59
  node /path/to/staff-mcp/dist/src/index.js --docker node:22-alpine
58
60
 
59
61
  # Perform security analysis inside a custom reverse-engineering image
@@ -128,6 +130,8 @@ The authoritative custom protocol is `chat-ai/docs/protocol/README.md` at the co
128
130
 
129
131
  Reverse GETs `<base>/sse` with `Authorization: Bearer <token>` and `X-MCP-Server-Name`; an SSE endpoint event supplies the POST message URL. SSE message events contain ordinary MCP JSON-RPC, not a private envelope. Explicit HTTP and HTTPS are accepted; HTTP logs one plaintext warning per start and does not protect tokens or payloads. Use HTTPS on untrusted networks; HTTPS verifies CA and target identity without automatic downgrade. The configured base URL has no credentials, query or fragment. No WebSocket upgrade, gateway process, launcher or private host leg is required. SDK initialization, data-session readiness and current user authorization remain separate checks; short-lived connections do not reset exponential backoff.
130
132
 
133
+ Only responses to recognized inbound standard MCP `ping` requests use a separate bounded POST send lane. All other POSTs remain FIFO; no request/input replay, protocol version change or extra flag is added, and timeouts are not extended. Slow-send diagnostics distinguish queue wait from POST elapsed time using metadata only, never tokens, URLs or bodies. The host also records App resource-read timing and byte-count metadata.
134
+
131
135
  Optional CLI timeouts (milliseconds, forwarded in Docker mode):
132
136
 
133
137
  - `--reverse-connect-timeout`: 15000; 0 disables only the SSE connection deadline.
@@ -141,7 +145,7 @@ The two reverse transport sources (`src/reverse/SseTransport.ts` and chat-ai's `
141
145
 
142
146
  ## 🛠️ Core Capabilities
143
147
 
144
- The runtime defaults below apply to staff-mcp 2.0.2.
148
+ The runtime behavior below applies to staff-mcp 2.0.3; extensions remain opt-in.
145
149
 
146
150
  Extensions are **all off by default**. Use `--extensions files`, `--extensions terminal`, or `--extensions files,terminal`; apps/data dependencies and terminal's streams v1 manifest are added automatically, not selected separately. Disabled features advertise no manifest entry and register no corresponding UI Resource or business handler. With both off there is no extension manifest or application data listener/session; ordinary MCP tools and non-UI Resources remain. HTTP mode still opens its normal MCP listener.
147
151
 
@@ -169,7 +173,7 @@ New Apps reusing supported RPC/Resources, files or streams need only their own d
169
173
 
170
174
  ### Human terminal (explicit extension opt-in)
171
175
 
172
- `--extensions terminal` needs Linux, a loadable optional `node-pty`, an executable shell and negotiated streams/data v1 with a usable duplex dataSession over local stdio/Docker, direct HTTP or reverse. If Linux/native PTY/shell requirements are unavailable, staff warns on stderr and omits terminal/streams from discovery; standard MCP and an available files extension remain usable. The default disabled state never loads the native PTY. A valid absolute executable `$SHELL` is used, otherwise `/bin/bash`; if that is unavailable, terminal is disabled with a warning, without another shell fallback. The interactive shell honors normal startup files and inherits staff's environment, including normal `HOME`, except exact internal control keys documented in the [terminal contract](docs/terminal.md). chat-ai uses the existing current-chat MCP grant and same-origin browser requests, with no extra terminal permission switch or high-risk confirmation. Terminal follows the host site's HTTP/HTTPS deployment policy without a terminal-specific TLS gate or origin allowlist. HTTPS is recommended for the entire site to protect login sessions, tool calls and terminal traffic; allowing HTTP does not encrypt those requests.
176
+ `--extensions terminal` needs Linux, a loadable optional `node-pty`, an executable shell and negotiated streams/data v1 with a usable duplex dataSession over local stdio/Docker, direct HTTP or reverse. Unavailable Linux/native PTY/shell prerequisites make an explicit terminal request fail startup with an error, including when files is also requested; terminal is not silently omitted. The default disabled state never loads the native PTY. A valid absolute executable `$SHELL` is used, otherwise `/bin/bash`; if that is unavailable, the explicit terminal request fails startup, without another shell fallback. The interactive shell honors normal startup files and inherits staff's environment, including normal `HOME`, except exact internal control keys documented in the [terminal contract](docs/terminal.md). chat-ai uses the existing current-chat MCP grant and same-origin browser requests, with no extra terminal permission switch or high-risk confirmation. Terminal follows the host site's HTTP/HTTPS deployment policy without a terminal-specific TLS gate or origin allowlist. HTTPS is recommended for the entire site to protect login sessions, tool calls and terminal traffic; allowing HTTP does not encrypt those requests.
173
177
 
174
178
  The PTY starts at the staff workspace (`main`) by default, independently of file roots, and runs as the staff process uid: its starting root/cwd is **not a sandbox** and shell filesystem/network effects are not restricted by file-tool path checks. Terminal bytes never enter model context or chat history. Each stream uses one same-origin browser-to-chat-ai WebSocket at `/api/mcp/app-stream` (`chat-app-stream-v1`) for input, output, resize, presence and real xterm consumption ACKs. The backend remains the shared HTTP dataSession. Browser presence refreshes every 10 seconds with a separate 120-second host deadline; the host generic stream module schedules remote renewal from each returned lease (staff defaults to 30 seconds). Opening the Shell App starts one PTY without another open button or confirmation. Exit, PTY failure or disconnection leaves the app shell for manual reconnect; ordinary hidden views keep read/ACK/presence but reject new input and resize. Actual page exit, close, revocation or expiry cleans up; descendant cleanup is best effort, not rollback.
175
179
 
@@ -183,7 +187,7 @@ Never pollute your host machine again. By simply appending `--docker <image>`, `
183
187
  - Automatically translates Windows/Mac paths to Linux container paths.
184
188
  - Names containers after their launch context (e.g. `staff-mcp-myproj-3000-a1b2c3` = workspace `myproj`, HTTP port `3000`, random suffix `a1b2c3`), so multiple sessions are easy to tell apart in `docker ps`.
185
189
  - Mounts a dedicated Docker tools cache (`<staff-global>/tools/docker`) at `/opt/.staff/tools`, alongside the existing skills/profiles mounts. A matching non-root uid can write tools without creating directories in the image, and container-installed tools do not overwrite the host tool cache. Existing mount permissions still apply; no automatic chown or chmod.
186
- - Allows `--docker-args` for compatible hardware/environment settings (e.g., ADB USB debugging or GPUs). Unsupported stdio data topologies disable optional extensions, not the MCP control connection; overrides of managed bootstrap/mapping and container lifecycle controls remain errors.
190
+ - Allows `--docker-args` for compatible hardware/environment settings (e.g., ADB USB debugging or GPUs). Unsupported stdio data topologies fail an explicit terminal request; files-only requests retain optional-extension degradation; overrides of managed bootstrap/mapping and container lifecycle controls remain errors.
187
191
 
188
192
  For **supported Linux local Docker stdio with at least one effective extension enabled**, the existing wrapper reserves a private container port published to a random **127.0.0.1** host port and inspects only its own cidfile container. A read-only mount of a host **0600 metadata file** supplies the reachable base URL without rewriting stdin/stdout or asking users to discover container IPs. The application listener remains lazy until `data/v1/configure`. With all extensions off, `dataAuto` is false: no application-data port publication, metadata mount or bootstrap is created. Ordinary workspace/package mounts are unchanged. Non-Docker stdio also has no application listener before configure. HTTP/reverse add no such publication; disabled extensions create no dataSession, while HTTP retains its MCP listener.
189
193
 
@@ -191,11 +195,11 @@ Docker files reuse only the existing workspace (`/workspace`, root `main`) and a
191
195
 
192
196
  Docker reuses the allowed-directory mounts for both tools and the file UI. A host filesystem root such as `/` is mapped to `/opt/staff-allowed/root-N` because Docker forbids mounting onto container `/`; the inner `-d` and protected staging aliases use the mapped path.
193
197
 
194
- This application-data path requires a local daemon and the host client/wrapper sharing reachable loopback, with compatible bridge/port publication. Non-Linux Docker launchers and incompatible stdio data topologies (remote/TCP/SSH daemon or host/container networking) warn and omit optional extensions; they retain ordinary MCP control/tools when Docker itself can start. HTTP/reverse do not need this stdio mapping. A failed data bootstrap or unavailable data configuration must not terminate an otherwise healthy MCP connection: data-dependent Apps stay unavailable, with no legacy byte fallback or operation replay. Loopback publication is not isolation from hostile containers. Metadata stays 0600 and must be readable by the container uid; workspace/global-directory permissions and PTY ABI/libc still apply. No automatic chown, permission relaxation or browser-user identity switch is performed. Normal exit/signals still clean the owned container, publication and metadata; no cross-restart resource recovery is promised.
198
+ This application-data path requires a local daemon and the host client/wrapper sharing reachable loopback, with compatible bridge/port publication. Non-Linux Docker launchers and incompatible stdio data topologies (remote/TCP/SSH daemon or host/container networking) fail an explicit terminal request. Without terminal requested, files retains warning-and-disable degradation and ordinary MCP control/tools remain when Docker itself can start. HTTP/reverse do not need this stdio mapping. A failed data bootstrap or unavailable data configuration must not terminate an otherwise healthy MCP connection: data-dependent Apps stay unavailable, with no legacy byte fallback or operation replay. Loopback publication is not isolation from hostile containers. Metadata stays 0600 and must be readable by the container uid; workspace/global-directory permissions and PTY ABI/libc still apply. No automatic chown, permission relaxation or browser-user identity switch is performed. Normal exit/signals still clean the owned container, publication and metadata; no cross-restart resource recovery is promised.
195
199
 
196
- ### Optional extensions do not define MCP connectivity
200
+ ### Optional negotiation failures versus explicit terminal startup errors
197
201
 
198
- Availability is determined separately for files, terminal and the per-connection data channel. A missing terminal runtime disables terminal only; an unavailable configured file root disables the optional file extension while preserving the standard workspace tools/resources. Unknown or incompatible extension versions do not enable their handlers or Apps. chat-ai keeps successfully initialized standard tools/resources/prompts if optional Apps discovery or data configuration fails. Warnings go to stderr, never stdio JSON-RPC stdout.
202
+ Availability is determined separately for files, terminal and the per-connection data channel. A missing terminal runtime fails startup only when terminal is explicitly requested; with terminal disabled no native PTY is loaded. An unavailable configured file root still disables the optional file extension while preserving the standard workspace tools/resources. Unknown or incompatible extension versions do not enable their handlers or Apps. chat-ai keeps successfully initialized standard tools/resources/prompts if optional Apps discovery or data configuration fails. Warnings go to stderr, never stdio JSON-RPC stdout.
199
203
 
200
204
  This is not an authentication or lifecycle bypass: malformed CLI arguments, Docker launch failure, invalid credentials, and failed standard MCP transport/initialization remain errors. Workspace/global-mount access errors still fail the affected startup or file/tool operation; optional-extension degradation does not grant access or promise that every directory is prevalidated. Old/new incompatible reverse control protocols still require paired upgrades; optional capability degradation does not make those wire protocols compatible. No failed or uncertain file commit/tool/terminal input is automatically retried.
201
205
 
package/README_zh.md CHANGED
@@ -10,14 +10,16 @@
10
10
 
11
11
  ## 兼容性与配套升级
12
12
 
13
+ **2.0.3 版本:** 交付 Linux PTY 预编译产物、明确报告终端启动失败,并避免 reverse 大回复阻塞心跳。配套将 chat-ai 升级至提交 `352bdb931bff38b5693dd386cd7584220571fd6b` 或其后继版本,以同时获得 App 窗口生命周期及关闭按钮修复。
14
+
13
15
  **破坏性升级:** reverse 连接与可选扩展需要配套 chat-ai 宿主:宿主须实现 reverse v1 与下文的会话相对数据路径合同。宿主、staff-mcp、描述符和 UI 资源须配套升级。
14
16
 
15
- 标准 stdio/Streamable HTTP 的工具、资源和提示词继续保留。扩展**默认全关**;可选能力不可用或版本不匹配,不得拖垮健康的标准 MCP 连接。旧 reverse 握手本身不兼容,即使关闭所有扩展也不能解决,必须配套升级两端;不提供旧协议兼容模式,也不在断线后自动续传或重放输入。
17
+ 标准 stdio/Streamable HTTP 的工具、资源和提示词继续保留。扩展**默认全关**;可选发现或 data 协商失败仍保留健康的标准 MCP 连接。显式请求 terminal 但平台/native/shell 前提不可用时启动失败,不再静默禁用;files 原降级行为不变。旧 reverse 握手本身不兼容,即使关闭所有扩展也不能解决,必须配套升级两端;不提供旧协议兼容模式,也不在断线后自动续传或重放输入。
16
18
 
17
19
  无需进行 Chat8/schema9/format7/分享 protocol2 数据迁移。
18
20
 
19
21
  1. 结束在途操作,备份正常配置;无需转换数据。
20
- 2. 先升级配套 chat-ai 宿主,再升级 staff-mcp 2.0.2,并协调 reverse 连接的停机窗口。
22
+ 2. 先升级配套 chat-ai 宿主,再升级 staff-mcp 2.0.3,并协调 reverse 连接的停机窗口。
21
23
  3. 重新连接 MCP、重新打开 App,仅显式启用需要的扩展。
22
24
 
23
25
  发布摘要见 [CHANGELOG](CHANGELOG.md)。
@@ -26,22 +28,22 @@
26
28
 
27
29
  需要 **Node.js 22.22.2 或更高版本**,Docker 镜像内也须满足。
28
30
 
29
- Linux 与 Linux 宿主+本地 Docker Engine 是主要完整扩展环境,仍须满足下述前提。Windows 原生标准 MCP(stdio、HTTP)与 Windows Docker 标准 MCP 已验证,不代表完整扩展支持。非 Linux Docker launcher 禁用可选扩展。**macOS 未实测**,路径转换能力不等于平台支持承诺。
31
+ Linux 与 Linux 宿主+本地 Docker Engine 是主要完整扩展环境,仍须满足下述前提。Windows 原生标准 MCP(stdio、HTTP)与 Windows Docker 标准 MCP 已验证,不代表完整扩展支持。非 Linux Docker launcher 对显式 terminal 请求报错;仅 files 仍警告并禁用。**macOS 未实测**,路径转换能力不等于平台支持承诺。
30
32
 
31
- 可指定版本运行 staff-mcp 2.0.2:
33
+ 可指定版本运行 staff-mcp 2.0.3:
32
34
 
33
35
  ```bash
34
- npx --yes staff-mcp@2.0.2 --working-dir /path/to/your/project
36
+ npx --yes staff-mcp@2.0.3 --working-dir /path/to/your/project
35
37
  ```
36
38
 
37
- 从 staff-mcp 2.0.2 源码 checkout 使用时,先安装依赖并构建,再使用以下示例中的绝对入口:
39
+ 从源码 checkout 使用时,先安装依赖并构建,再使用以下示例中的绝对入口:
38
40
 
39
41
  ```bash
40
42
  npm ci
41
43
  npm run build
42
44
  ```
43
45
 
44
- 将 `/path/to/staff-mcp` 替换为实际构建目录。Docker 只读挂载仍要求兼容的 Node/native ABI/libc;宿主构建的 optional PTY 不保证能在任意镜像内使用。
46
+ 将 `/path/to/staff-mcp` 替换为实际构建目录。Docker 仍只读挂载宿主程序包及 `node_modules`,并非容器依赖完全隔离。2.0.3 将 optional `node-pty` 精确锁定为官方预发布版 `1.2.0-beta.18`,内含 Linux x64/arm64、glibc >= 2.28 的 N-API 预编译;运行时仍需要系统 `libstdc++`、`libgcc` 等库。本次解决正常安装的预编译交付,不消除本地构建残留或架构/libc/平台不匹配限制,N-API 也不消除这些限制。不自动升级用户镜像,不承诺 musl/Alpine 的 terminal 支持。
45
47
 
46
48
  ### 1. 标准宿主机模式
47
49
  直接在物理机或虚拟环境中运行。
@@ -50,10 +52,10 @@ node /path/to/staff-mcp/dist/src/index.js --working-dir /path/to/your/project
50
52
  ```
51
53
 
52
54
  ### 2. Docker 透明代理模式 (Cyber-Shell)
53
- 在兼容的 Docker 镜像中运行 staff-mcp,保留宿主的标准 MCP 控制连接。wrapper 自动挂载项目和程序包;启动仍取决于镜像、Node/native ABI/libc 和挂载权限。Linux 宿主+本地 Docker Engine 是完整扩展支持路径。非 Linux Docker launcher 对请求的 Apps/files/terminal 扩展警告后禁用;Windows Docker 已验证基础 MCP,macOS 未实测;基础 Docker 连接仍要求 daemon 可达及 bind mount 路径有效。
55
+ 在兼容的 Docker 镜像中运行 staff-mcp,保留宿主的标准 MCP 控制连接。wrapper 自动挂载项目和程序包;启动仍取决于镜像、Node/native ABI/libc 和挂载权限。Linux 宿主+本地 Docker Engine 是完整扩展支持路径。非 Linux Docker launcher 对显式 terminal 请求启动报错,仅 files 仍警告并禁用;Windows Docker 已验证基础 MCP,macOS 未实测;基础 Docker 连接仍要求 daemon 可达及 bind mount 路径有效。
54
56
 
55
57
  ```bash
56
- # 在一个纯净的 Alpine Node 容器里调试你的代码
58
+ # 仅普通 MCP,不启用 terminal:在 Alpine Node 容器内调试代码
57
59
  node /path/to/staff-mcp/dist/src/index.js --docker node:22-alpine
58
60
 
59
61
  # 在自带逆向工程工具链的镜像里执行安全分析
@@ -123,6 +125,8 @@ token。这里使用服务端共享 token,不提供 OAuth 流程。
123
125
 
124
126
  Reverse GET `<base>/sse`,携带 `Authorization: Bearer <token>` 与 `X-MCP-Server-Name`;SSE endpoint 事件给出 POST 回送地址,message 事件直接承载 MCP JSON-RPC,无私有信封。源码接受显式 HTTP/HTTPS;HTTP 每次启动警告一次明文风险,不能保护 token 或正文,不可信网络应使用 HTTPS。HTTPS 验证证书与目标身份,不自动降级;配置基址无凭据、query、fragment。无需 WebSocket upgrade、独立 gateway/launcher 或私有 host leg。SDK 初始化、数据面就绪和用户授权是不同事实;短暂连接不重置指数退避。
125
127
 
128
+ 仅已识别的入站标准 MCP `ping` 的响应使用独立有界 POST 发送 lane;其他 POST 仍 FIFO,不重放请求/输入、不改变协议版本或新增 flag,也不延长 timeout。慢发送诊断区分排队等待与 POST elapsed,仅记录 metadata,不记录 token、URL 或 body;host 另记录 App resource-read 时间与字节数元数据。
129
+
126
130
  可配置参数(毫秒,Docker 也透传):
127
131
 
128
132
  - `--reverse-connect-timeout`:15000,0 仅禁用 SSE 建连超时。
@@ -136,7 +140,7 @@ Reverse GET `<base>/sse`,携带 `Authorization: Bearer <token>` 与 `X-MCP-Ser
136
140
 
137
141
  ## 🛠️ 核心能力
138
142
 
139
- 以下运行时默认值适用于 staff-mcp 2.0.2。
143
+ 以下运行时行为适用于 staff-mcp 2.0.3;扩展仍须显式启用。
140
144
 
141
145
  扩展**默认全关**。通过 `--extensions files`、`--extensions terminal` 或 `--extensions files,terminal` 启用;apps/data 依赖及 terminal 对 streams v1 的声明自动计算,无需单独选择。禁用能力不声明对应 manifest 条目、不注册对应 UI Resource 或业务 handler;全关时无扩展 manifest、应用数据 listener/session,普通 MCP 工具和非 UI Resources 保留。HTTP 模式仍监听原 MCP 服务。
142
146
 
@@ -164,7 +168,7 @@ files 启用时直接复用标准工具目录授权:`main` 是 `--working-dir`
164
168
 
165
169
  ### 人工终端(显式启用扩展)
166
170
 
167
- `--extensions terminal` 须 Linux、可加载的 optional `node-pty`、可执行 shell 及协商 streams/data v1 后可用的 duplex dataSession,可经本机 stdio/本地 Docker、direct HTTP 或 reverse 接入。Linux/native PTY/shell 不可用时通过 stderr 明确警告,只禁用 terminal/streams,不让整个 MCP 启动失败;标准工具与可用的 files 扩展保留。默认关闭时不加载原生 PTY。自动使用有效的绝对可执行 `$SHELL`,否则使用 `/bin/bash`;若仍不可用,警告并禁用终端,不再尝试其他 shell。交互 shell 读取正常启动配置,继承 staff 环境(包括正常的 `HOME`),仅排除[终端合同](docs/terminal.md)列出的精确内部控制 key。chat-ai 沿用当前会话 MCP 授权及同源浏览器请求,不另设终端权限开关或高危确认。终端遵循宿主站点统一的 HTTP/HTTPS 部署策略,不另设终端专用 TLS 门槛或 origin 白名单。建议全站使用 HTTPS 保护登录会话、工具调用及终端流量;允许 HTTP 不代表这些请求已加密。
171
+ `--extensions terminal` 须 Linux、可加载的 optional `node-pty`、可执行 shell 及协商 streams/data v1 后可用的 duplex dataSession,可经本机 stdio/本地 Docker、direct HTTP 或 reverse 接入。显式请求 terminal 但 Linux/native PTY/shell 不可用时明确报错并启动失败,即使同时请求 files 也不静默移除 terminal。默认关闭时不加载原生 PTY。自动使用有效的绝对可执行 `$SHELL`,否则使用 `/bin/bash`;若仍不可用,显式 terminal 请求启动失败,不再尝试其他 shell。交互 shell 读取正常启动配置,继承 staff 环境(包括正常的 `HOME`),仅排除[终端合同](docs/terminal.md)列出的精确内部控制 key。chat-ai 沿用当前会话 MCP 授权及同源浏览器请求,不另设终端权限开关或高危确认。终端遵循宿主站点统一的 HTTP/HTTPS 部署策略,不另设终端专用 TLS 门槛或 origin 白名单。建议全站使用 HTTPS 保护登录会话、工具调用及终端流量;允许 HTTP 不代表这些请求已加密。
168
172
 
169
173
  PTY 默认从 staff 工作区 `main` 启动,与文件 roots 独立,以 staff 的 OS uid 运行;root/cwd 只是起始目录,**不是 sandbox**;shell 的文件和网络副作用不受文件工具路径检查约束。终端输入输出不进入模型或聊天历史。每个 stream 的浏览器到 chat-ai 交互使用一条同源 WebSocket(`/api/mcp/app-stream`,`chat-app-stream-v1`),输入、输出、resize、presence 和真实 xterm 消费 ACK 共用连接,后端仍是公共 HTTP dataSession。浏览器每 10 秒刷新独立的 120 秒 host presence;host 通用 streams 模块按远端每次返回的租约调度续租,staff 默认 30 秒。点击 Shell App 自动启动一次 PTY,无额外打开按钮或确认;退出、PTY 错误或真实断链后保留 App 壳供手动重连。普通隐藏视图保留 read/ACK/presence,但拒绝新输入和 resize;真正离页、关闭、撤权或到期才清理,后代回收 best effort,不撤销副作用。
170
174
 
@@ -178,7 +182,7 @@ PTY 默认从 staff 工作区 `main` 启动,与文件 roots 独立,以 staff
178
182
  - 自动处理 Windows/Mac 与 Linux 容器之间的路径转换问题。
179
183
  - 容器名自带启动上下文(例如 `staff-mcp-myproj-3000-a1b2c3` = 工作区 `myproj`、HTTP 端口 `3000`、随机后缀 `a1b2c3`),多个会话并存时在 `docker ps` 中一眼可辨。
180
184
  - 将独立的 Docker 工具缓存 `<staff-global>/tools/docker` 挂到 `/opt/.staff/tools`,并保留原 skills/profiles 挂载。同 uid 非 root 可直接写工具目录,不覆盖宿主原工具缓存;仍受原有挂载权限限制,不自动 chown/chmod。
181
- - 提供 `--docker-args` 配置兼容的硬件/环境参数(如 ADB USB 调试、GPU);stdio 数据拓扑不匹配只禁用可选扩展,覆盖内部 bootstrap/映射及容器生命周期管理参数仍然报错。
185
+ - 提供 `--docker-args` 配置兼容的硬件/环境参数(如 ADB USB 调试、GPU);stdio 数据拓扑不匹配对显式 terminal 请求报错,仅 files 保持原降级行为;覆盖内部 bootstrap/映射及容器生命周期管理参数仍然报错。
182
186
 
183
187
  **受支持的 Linux 本地 Docker stdio 仅在至少实际启用一种扩展时**,由原 wrapper 自动预留容器私有端口到 **127.0.0.1 随机宿主端口**,仅 inspect 自己 cidfile 的容器;只读挂载宿主 **0600 metadata 文件**提供可达 baseUrl,不改 stdin/stdout,不手找容器 IP,应用 listener 等 `data/v1/configure` 才懒启动。全关时 `dataAuto` 为 false,不分配应用数据发布端口、metadata 挂载或 bootstrap;普通工作区/程序包挂载不变。非 Docker stdio 也在 configure 前无应用 listener。HTTP/reverse 不增加这项发布;全关无 dataSession,HTTP 原 MCP listener 保留。
184
188
 
@@ -186,11 +190,11 @@ Docker 文件根仅复用已有工作区(`/workspace`,`main`)与 allowed-d
186
190
 
187
191
  Docker 中普通工具与文件应用复用允许目录挂载。宿主文件系统根(如 `/`)会映射到 `/opt/staff-allowed/root-N`,因为 Docker 禁止挂载到容器 `/`;容器内 `-d` 和受保护暂存别名同时使用映射路径。
188
192
 
189
- 此应用数据路径要求本地 daemon、宿主客户端与 wrapper 共享可达 loopback、兼容 bridge/端口发布。非 Linux Docker launcher,以及 stdio 的 remote/TCP/SSH daemon 或 host/container 网络等不匹配情况,会明确警告并禁用可选扩展;只要 Docker 自身能正常启动,基础 MCP 连接和工具仍保留。HTTP/reverse 不需要这项 stdio 映射。数据 bootstrap 或 configure 失败不得终止健康的 MCP 控制连接,依赖数据通道的 App 不开放,不回退旧字节协议、不重放操作。loopback 发布不是敌对容器隔离保证;metadata 保持 0600,容器 uid 须能读取,工作区/全局目录权限与 PTY ABI/libc 仍须匹配。不自动 chown、放宽权限或切换浏览器用户身份。正常退出及信号仍清理自有容器、映射和 metadata,不提供跨重启资源恢复。
193
+ 此应用数据路径要求本地 daemon、宿主客户端与 wrapper 共享可达 loopback、兼容 bridge/端口发布。非 Linux Docker launcher,以及 stdio 的 remote/TCP/SSH daemon 或 host/container 网络等不匹配情况,对显式 terminal 请求明确启动报错;未请求 terminal 时,files 仍警告并禁用,只要 Docker 自身能正常启动,基础 MCP 连接和工具仍保留。HTTP/reverse 不需要这项 stdio 映射。数据 bootstrap 或 configure 失败不得终止健康的 MCP 控制连接,依赖数据通道的 App 不开放,不回退旧字节协议、不重放操作。loopback 发布不是敌对容器隔离保证;metadata 保持 0600,容器 uid 须能读取,工作区/全局目录权限与 PTY ABI/libc 仍须匹配。不自动 chown、放宽权限或切换浏览器用户身份。正常退出及信号仍清理自有容器、映射和 metadata,不提供跨重启资源恢复。
190
194
 
191
- ### 扩展可用性不决定 MCP 是否可连接
195
+ ### 可选协商降级与显式 terminal 启动错误
192
196
 
193
- files、terminal 和当前连接的数据通道分别判断可用性。缺少终端运行时只禁用 terminal;可选文件根不可用只禁用 files,标准工作区工具/资源保留。未知或不匹配的扩展版本不开放对应 handlers/App。chat-ai 在标准 initialize 成功后,即使 Apps 发现或 data configure 失败,仍保留正常的 tools/resources/prompts。降级原因写 stderr,不混入 stdio 的 JSON-RPC stdout。
197
+ files、terminal 和当前连接的数据通道分别判断可用性。缺少终端运行时在显式请求 terminal 时导致启动失败;默认关闭时不加载原生 PTY。可选文件根不可用仍只禁用 files,标准工作区工具/资源保留。未知或不匹配的扩展版本不开放对应 handlers/App。chat-ai 在标准 initialize 成功后,即使 Apps 发现或 data configure 失败,仍保留正常的 tools/resources/prompts。降级原因写 stderr,不混入 stdio 的 JSON-RPC stdout。
194
198
 
195
199
  这不是绕过鉴权或生命周期:CLI 参数语法错误、Docker 自身启动失败、凭据错误和标准 MCP 控制连接/初始化失败仍须报错。工作区/全局挂载的权限错误仍在相关启动或文件/工具操作中返回错误;扩展降级不授予额外访问,也不表示启动时已预检所有目录。新旧 reverse 控制协议不兼容仍需两端配套升级,不能用可选能力降级掩盖;文件提交、工具副作用和终端输入也不会自动重试。
196
200
 
@@ -4,6 +4,7 @@ import * as fs from 'node:fs';
4
4
  import * as os from 'node:os';
5
5
  import * as path from 'node:path';
6
6
  import { assertLocalDockerDaemon, DOCKER_DATA_STARTUP_TIMEOUT_MS, prepareDockerDataArgs, publishDockerDataBaseUrl, failDockerDataBootstrap, } from './data-stdio-docker.js';
7
+ import { terminalStartupError } from './terminal/pty.js';
7
8
  const HANDLED_SIGNALS = ['SIGINT', 'SIGTERM', 'SIGHUP'];
8
9
  const DEFAULT_GRACEFUL_SHUTDOWN_TIMEOUT_MS = 20_000;
9
10
  const DEFAULT_CONTAINER_ID_WAIT_TIMEOUT_MS = 1_000;
@@ -175,13 +176,16 @@ export async function preflightDockerExtensions(requested, transport, additional
175
176
  if (!requested.length)
176
177
  return [];
177
178
  let reason;
179
+ let terminalReason;
178
180
  if (os.platform() !== 'linux') {
179
181
  reason = 'Docker extensions require a compatible Linux host package';
182
+ terminalReason = 'DOCKER_UNSUPPORTED_PLATFORM';
180
183
  }
181
184
  else if (requestedDataAuto) {
182
185
  if (unsupportedDataNetwork(additionalArgs)) {
183
186
  reason =
184
187
  'Docker stdio data auto does not support host/container/none networking';
188
+ terminalReason = 'DOCKER_UNSUPPORTED_NETWORK';
185
189
  }
186
190
  else {
187
191
  try {
@@ -190,10 +194,13 @@ export async function preflightDockerExtensions(requested, transport, additional
190
194
  catch {
191
195
  reason =
192
196
  'Docker stdio data auto requires a verified local daemon; remote/TCP/SSH or unavailable contexts are unsupported';
197
+ terminalReason = 'DOCKER_LOCAL_DAEMON_REQUIRED';
193
198
  }
194
199
  }
195
200
  }
196
201
  if (reason) {
202
+ if (requested.includes('terminal') && terminalReason)
203
+ throw terminalStartupError(terminalReason);
197
204
  console.error(`[staff-mcp] Disabling requested Docker extensions (${requested.join(',')}): ${reason}. Basic MCP tools/control remain enabled.`);
198
205
  return [];
199
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docker-proxy.js","sourceRoot":"","sources":["../../src/docker-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker-proxy.js","sourceRoot":"","sources":["../../src/docker-proxy.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,18 @@
1
1
  import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
2
2
  import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
3
+ export interface ReverseControlDiagnostic {
4
+ reason: 'control-post-slow' | 'ping-post-slow';
5
+ bytes: number;
6
+ queuedMs: number;
7
+ elapsedMs: number;
8
+ status: number;
9
+ }
3
10
  export interface ReverseControlFailure {
4
11
  reason: 'connect-timeout' | 'read-timeout' | 'sse-rejected' | 'sse-ended' | 'sse-read-failed' | 'sse-too-large' | 'sse-invalid-event' | 'control-queue-exceeded' | 'message-post-rejected' | 'message-post-failed';
5
12
  status?: number;
6
13
  bytes?: number;
7
14
  elapsedMs?: number;
15
+ queuedMs?: number;
8
16
  networkCode?: string;
9
17
  }
10
18
  /** Outbound-only reverse control: SSE receives JSON-RPC, POST sends JSON-RPC. No resume/replay. */
@@ -17,6 +25,7 @@ export declare class ReverseSseTransport implements Transport {
17
25
  onclose?: () => void;
18
26
  onerror?: (error: Error) => void;
19
27
  onmessage?: Transport['onmessage'];
28
+ ondiagnostic?: (detail: ReverseControlDiagnostic) => void;
20
29
  readonly closed: Promise<void>;
21
30
  sessionId?: string;
22
31
  failure?: ReverseControlFailure;
@@ -27,6 +36,10 @@ export declare class ReverseSseTransport implements Transport {
27
36
  private endpoint?;
28
37
  private queue;
29
38
  private queuedBytes;
39
+ private pingQueue;
40
+ private queuedPings;
41
+ private readonly pendingPings;
42
+ private nextDiagnosticAt;
30
43
  private readTimer?;
31
44
  private readyResolve?;
32
45
  private readyReject?;
@@ -35,6 +48,7 @@ export declare class ReverseSseTransport implements Transport {
35
48
  start(): Promise<void>;
36
49
  private read;
37
50
  private event;
51
+ private takePing;
38
52
  send(message: JSONRPCMessage): Promise<void>;
39
53
  private armReadTimeout;
40
54
  private fail;
@@ -1,6 +1,9 @@
1
- import { JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';
1
+ import { JSONRPCMessageSchema, PingRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
2
2
  const MESSAGE_LIMIT = 4 * 1024 * 1024;
3
3
  const QUEUE_LIMIT = 8 * 1024 * 1024;
4
+ const PING_LIMIT = 32;
5
+ const SLOW_POST_MS = 1000;
6
+ const DIAGNOSTIC_INTERVAL_MS = 10000;
4
7
  /** Only fixed diagnostics, never remote bodies, URLs, headers or exception text. */
5
8
  class ControlFailure extends Error {
6
9
  detail;
@@ -27,6 +30,7 @@ export class ReverseSseTransport {
27
30
  onclose;
28
31
  onerror;
29
32
  onmessage;
33
+ ondiagnostic;
30
34
  closed;
31
35
  sessionId;
32
36
  failure;
@@ -37,6 +41,12 @@ export class ReverseSseTransport {
37
41
  endpoint;
38
42
  queue = Promise.resolve();
39
43
  queuedBytes = 0;
44
+ pingQueue = Promise.resolve();
45
+ queuedPings = 0;
46
+ // Typed keys keep numeric and string IDs distinct. Entries live only until
47
+ // reply, cancellation, ID reuse or close; no eviction can prioritize a stale ID.
48
+ pendingPings = new Map();
49
+ nextDiagnosticAt = 0;
40
50
  readTimer;
41
51
  readyResolve;
42
52
  readyReject;
@@ -181,22 +191,67 @@ export class ReverseSseTransport {
181
191
  }
182
192
  if (event !== 'message' || !this.endpoint)
183
193
  throw new Error('Unexpected reverse SSE event');
184
- this.onmessage?.(JSONRPCMessageSchema.parse(JSON.parse(data)));
194
+ const message = JSONRPCMessageSchema.parse(JSON.parse(data));
195
+ if ('method' in message &&
196
+ 'id' in message &&
197
+ (typeof message.id === 'string' || typeof message.id === 'number')) {
198
+ // Reused IDs are not valid concurrent JSON-RPC requests. Never retain
199
+ // ping priority when a subsequent ordinary request uses the same ID.
200
+ this.takePing(message.id);
201
+ if (PingRequestSchema.safeParse(message).success) {
202
+ const bytes = Buffer.byteLength(JSON.stringify(message.id));
203
+ if (this.pendingPings.size + this.queuedPings >= PING_LIMIT ||
204
+ this.queuedBytes + bytes > QUEUE_LIMIT) {
205
+ this.fail({ reason: 'control-queue-exceeded', bytes });
206
+ return;
207
+ }
208
+ // Tracked IDs share the existing byte budget with both POST lanes.
209
+ this.queuedBytes += bytes;
210
+ this.pendingPings.set(message.id, bytes);
211
+ }
212
+ }
213
+ else if ('method' in message &&
214
+ message.method === 'notifications/cancelled') {
215
+ const id = message.params?.requestId;
216
+ if (typeof id === 'string' || typeof id === 'number')
217
+ this.takePing(id);
218
+ }
219
+ this.onmessage?.(message);
220
+ }
221
+ takePing(id) {
222
+ const bytes = this.pendingPings.get(id);
223
+ if (bytes === undefined)
224
+ return false;
225
+ this.pendingPings.delete(id);
226
+ this.queuedBytes -= bytes;
227
+ return true;
185
228
  }
186
229
  async send(message) {
187
230
  if (this.stopped || !this.endpoint)
188
231
  throw new Error('Reverse transport unavailable');
189
232
  const body = JSON.stringify(message);
190
233
  const bytes = Buffer.byteLength(body);
191
- if (bytes > MESSAGE_LIMIT || this.queuedBytes + bytes > QUEUE_LIMIT) {
234
+ // Only responses to admitted inbound pings may bypass the control FIFO.
235
+ // Delete synchronously: a second response with the same ID is ordinary.
236
+ const ping = !('method' in message) &&
237
+ message.id !== undefined &&
238
+ this.takePing(message.id);
239
+ if (bytes > MESSAGE_LIMIT ||
240
+ this.queuedBytes + bytes > QUEUE_LIMIT ||
241
+ (ping && this.queuedPings >= PING_LIMIT)) {
192
242
  this.fail({ reason: 'control-queue-exceeded', bytes });
193
243
  throw new Error('Reverse control queue exceeded');
194
244
  }
195
245
  this.queuedBytes += bytes;
196
- const operation = this.queue.then(async () => {
246
+ if (ping)
247
+ this.queuedPings++;
248
+ const enqueuedAt = performance.now();
249
+ const queue = ping ? this.pingQueue : this.queue;
250
+ const operation = queue.then(async () => {
197
251
  if (this.stopped)
198
252
  throw new Error('Reverse transport closed');
199
253
  const startedAt = performance.now();
254
+ const queuedMs = Math.round(startedAt - enqueuedAt);
200
255
  try {
201
256
  const response = await this.fetch(this.endpoint, {
202
257
  method: 'POST',
@@ -210,14 +265,37 @@ export class ReverseSseTransport {
210
265
  });
211
266
  const status = response.status;
212
267
  await response.body?.cancel();
268
+ if (this.stopped)
269
+ throw new Error('Reverse transport closed');
270
+ const elapsedMs = Math.round(performance.now() - startedAt);
213
271
  if (status !== 202) {
214
272
  throw new ControlFailure({
215
273
  reason: 'message-post-rejected',
216
274
  status,
217
275
  bytes,
218
- elapsedMs: Math.round(performance.now() - startedAt),
276
+ queuedMs,
277
+ elapsedMs,
219
278
  });
220
279
  }
280
+ if ((queuedMs >= SLOW_POST_MS || elapsedMs >= SLOW_POST_MS) &&
281
+ performance.now() >= this.nextDiagnosticAt) {
282
+ this.nextDiagnosticAt =
283
+ performance.now() + DIAGNOSTIC_INTERVAL_MS;
284
+ try {
285
+ this.ondiagnostic?.({
286
+ reason: ping
287
+ ? 'ping-post-slow'
288
+ : 'control-post-slow',
289
+ bytes,
290
+ queuedMs,
291
+ elapsedMs,
292
+ status,
293
+ });
294
+ }
295
+ catch {
296
+ // Observability must not change POST acceptance semantics.
297
+ }
298
+ }
221
299
  }
222
300
  catch (error) {
223
301
  throw error instanceof ControlFailure
@@ -225,19 +303,26 @@ export class ReverseSseTransport {
225
303
  : new ControlFailure({
226
304
  reason: 'message-post-failed',
227
305
  bytes,
306
+ queuedMs,
228
307
  elapsedMs: Math.round(performance.now() - startedAt),
229
308
  networkCode: networkCode(error),
230
309
  });
231
310
  }
232
311
  });
233
- this.queue = operation.catch((error) => this.fail(error instanceof ControlFailure
312
+ const settled = operation.catch((error) => this.fail(error instanceof ControlFailure
234
313
  ? error.detail
235
314
  : { reason: 'message-post-failed' }));
315
+ if (ping)
316
+ this.pingQueue = settled;
317
+ else
318
+ this.queue = settled;
236
319
  try {
237
320
  await operation;
238
321
  }
239
322
  finally {
240
323
  this.queuedBytes -= bytes;
324
+ if (ping)
325
+ this.queuedPings--;
241
326
  }
242
327
  }
243
328
  armReadTimeout() {
@@ -263,6 +348,9 @@ export class ReverseSseTransport {
263
348
  return;
264
349
  this.stopped = true;
265
350
  clearTimeout(this.readTimer);
351
+ for (const bytes of this.pendingPings.values())
352
+ this.queuedBytes -= bytes;
353
+ this.pendingPings.clear();
266
354
  this.abort.abort();
267
355
  void this.reader?.cancel().catch(() => { });
268
356
  this.readyReject?.(new Error('Reverse connection closed'));
@@ -1 +1 @@
1
- {"version":3,"file":"SseTransport.js","sourceRoot":"","sources":["../../../src/reverse/SseTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SseTransport.js","sourceRoot":"","sources":["../../../src/reverse/SseTransport.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,9 @@ export interface TerminalRuntime {
6
6
  shell: string;
7
7
  spawn(cwd: string, cols: number, rows: number): LinuxPty;
8
8
  }
9
- /** Native loading is opt-in; unavailable runtimes leave standard MCP usable. */
9
+ /** Startup diagnostics contain only fixed reasons and controlled native identifiers. */
10
+ export declare function terminalStartupError(reason: 'UNSUPPORTED_PLATFORM' | 'SHELL_UNAVAILABLE' | 'NATIVE_LOAD_FAILED' | 'NATIVE_API_UNAVAILABLE' | 'DOCKER_UNSUPPORTED_PLATFORM' | 'DOCKER_UNSUPPORTED_NETWORK' | 'DOCKER_LOCAL_DAEMON_REQUIRED', nativeError?: unknown): Error;
11
+ /** Native loading is opt-in; an explicitly requested runtime must be usable. */
10
12
  export declare function loadTerminalRuntime(enabled: boolean): TerminalRuntime | undefined;
11
13
  /** Do not use node-pty.write(): its void API can hide an unbounded internal input queue. */
12
14
  export declare function writeInput(pty: LinuxPty, data: Uint8Array, check: () => void): Promise<void>;
@@ -3,82 +3,108 @@ import * as path from 'node:path';
3
3
  import { accessSync, constants, statSync, write } from 'node:fs';
4
4
  import { setTimeout as delay } from 'node:timers/promises';
5
5
  import { extensionError } from '../extensions/protocol.js';
6
- /** Native loading is opt-in; unavailable runtimes leave standard MCP usable. */
6
+ /** Startup diagnostics contain only fixed reasons and controlled native identifiers. */
7
+ export function terminalStartupError(reason, nativeError) {
8
+ const message = nativeError instanceof Error ? nativeError.message : '';
9
+ const code = nativeError?.code;
10
+ const native = [
11
+ ...(['MODULE_NOT_FOUND', 'ERR_DLOPEN_FAILED'].includes(code ?? '')
12
+ ? [code]
13
+ : []),
14
+ ...new Set(message.match(/\bGLIBC(?:XX)?_\d{1,3}\.\d{1,3}(?:\.\d{1,3})?\b|\b(?:libc|libstdc\+\+|libgcc_s|libm|libpthread|libdl|libutil)\.so(?:\.\d{1,3})*\b/g) ?? []),
15
+ ];
16
+ return new Error(`[staff-mcp] Terminal startup failed: reason=${reason} platform=${process.platform} arch=${process.arch} node=${process.version}${native.length ? ` native=${native.join(',')}` : ''}`);
17
+ }
18
+ /** Native loading is opt-in; an explicitly requested runtime must be usable. */
7
19
  export function loadTerminalRuntime(enabled) {
8
20
  if (!enabled)
9
21
  return undefined;
10
- if (process.platform !== 'linux') {
11
- console.error('[staff-mcp] Warning: Terminal extension unavailable: Linux is required.');
12
- return undefined;
13
- }
22
+ if (process.platform !== 'linux')
23
+ throw terminalStartupError('UNSUPPORTED_PLATFORM');
24
+ const executable = (candidate) => {
25
+ if (!path.isAbsolute(candidate))
26
+ throw new Error('Shell must be absolute');
27
+ accessSync(candidate, constants.X_OK);
28
+ if (!statSync(candidate).isFile())
29
+ throw new Error('Shell must be a file');
30
+ return candidate;
31
+ };
32
+ let selectedShell;
14
33
  try {
15
- const executable = (candidate) => {
16
- if (!path.isAbsolute(candidate))
17
- throw new Error('Shell must be absolute');
18
- accessSync(candidate, constants.X_OK);
19
- if (!statSync(candidate).isFile())
20
- throw new Error('Shell must be a file');
21
- return candidate;
22
- };
23
- let selectedShell;
34
+ selectedShell = executable(process.env.SHELL ?? '');
35
+ }
36
+ catch {
24
37
  try {
25
- selectedShell = executable(process.env.SHELL ?? '');
38
+ selectedShell = executable('/bin/bash');
26
39
  }
27
40
  catch {
28
- selectedShell = executable('/bin/bash');
41
+ throw terminalStartupError('SHELL_UNAVAILABLE');
29
42
  }
30
- const pty = createRequire(import.meta.url)('node-pty');
31
- if (typeof pty.spawn !== 'function')
32
- throw new Error('Missing PTY implementation');
33
- return {
34
- shell: selectedShell,
35
- spawn(cwd, cols, rows) {
36
- const env = {};
37
- // Exact staff/control variables only: preserve PATH, virtualenvs and user env.
38
- const internal = new Set([
39
- 'STAFF_GLOBAL_DIR',
40
- 'STAFF_MCP_IS_DOCKER',
41
- 'STAFF_MCP_DATA_BOOTSTRAP',
42
- 'STAFF_MCP_DATA_HOST',
43
- 'STAFF_MCP_DATA_PORT',
44
- 'MCP_REVERSE_URL',
45
- 'MCP_REVERSE_TOKEN',
46
- 'MCP_REVERSE_NAME',
47
- 'MCP_HTTP_TOKEN',
48
- 'STAFF_MCP_HTTP_TOKEN',
49
- 'STAFF_MCP_REVERSE_TOKEN',
50
- ]);
51
- for (const [key, value] of Object.entries(process.env)) {
52
- if (value !== undefined && !internal.has(key))
53
- env[key] = value;
54
- }
55
- env.TERM ??= 'xterm-256color';
56
- env.SHELL = selectedShell;
57
- // Normal interactive startup files are intentionally honored. This is
58
- // the staff user's shell, not a filesystem or environment sandbox.
59
- const child = pty.spawn(selectedShell, ['-i'], {
60
- cwd,
61
- cols,
62
- rows,
63
- env,
64
- encoding: null,
65
- handleFlowControl: false,
66
- });
67
- if (!('fd' in child) ||
68
- typeof child.fd !== 'number' ||
69
- typeof child.pause !== 'function' ||
70
- typeof child.resume !== 'function') {
71
- child.kill('SIGKILL');
72
- extensionError('TERMINAL_DISABLED', 'PTY implementation lacks bounded Linux I/O');
73
- }
74
- return child;
75
- },
76
- };
77
43
  }
78
- catch {
79
- console.error('[staff-mcp] Warning: Terminal extension unavailable: shell or node-pty native module could not be loaded.');
80
- return undefined;
44
+ const require = createRequire(import.meta.url);
45
+ let pty;
46
+ try {
47
+ pty = require('node-pty');
81
48
  }
49
+ catch (error) {
50
+ // node-pty's search can replace a loader error with a later missing-path
51
+ // error. Probe its shipped prebuild only to recover controlled diagnostics.
52
+ let nativeError = error;
53
+ try {
54
+ const root = path.dirname(require.resolve('node-pty/package.json'));
55
+ require(path.join(root, 'prebuilds', `${process.platform}-${process.arch}`, 'pty.node'));
56
+ }
57
+ catch (prebuildError) {
58
+ nativeError = prebuildError;
59
+ }
60
+ throw terminalStartupError('NATIVE_LOAD_FAILED', nativeError);
61
+ }
62
+ if (typeof pty.spawn !== 'function')
63
+ throw terminalStartupError('NATIVE_API_UNAVAILABLE');
64
+ return {
65
+ shell: selectedShell,
66
+ spawn(cwd, cols, rows) {
67
+ const env = {};
68
+ // Exact staff/control variables only: preserve PATH, virtualenvs and user env.
69
+ const internal = new Set([
70
+ 'STAFF_GLOBAL_DIR',
71
+ 'STAFF_MCP_IS_DOCKER',
72
+ 'STAFF_MCP_DATA_BOOTSTRAP',
73
+ 'STAFF_MCP_DATA_HOST',
74
+ 'STAFF_MCP_DATA_PORT',
75
+ 'MCP_REVERSE_URL',
76
+ 'MCP_REVERSE_TOKEN',
77
+ 'MCP_REVERSE_NAME',
78
+ 'MCP_HTTP_TOKEN',
79
+ 'STAFF_MCP_HTTP_TOKEN',
80
+ 'STAFF_MCP_REVERSE_TOKEN',
81
+ ]);
82
+ for (const [key, value] of Object.entries(process.env)) {
83
+ if (value !== undefined && !internal.has(key))
84
+ env[key] = value;
85
+ }
86
+ env.TERM ??= 'xterm-256color';
87
+ env.SHELL = selectedShell;
88
+ // Normal interactive startup files are intentionally honored. This is
89
+ // the staff user's shell, not a filesystem or environment sandbox.
90
+ const child = pty.spawn(selectedShell, ['-i'], {
91
+ cwd,
92
+ cols,
93
+ rows,
94
+ env,
95
+ encoding: null,
96
+ handleFlowControl: false,
97
+ });
98
+ if (!('fd' in child) ||
99
+ typeof child.fd !== 'number' ||
100
+ typeof child.pause !== 'function' ||
101
+ typeof child.resume !== 'function') {
102
+ child.kill('SIGKILL');
103
+ extensionError('TERMINAL_DISABLED', 'PTY implementation lacks bounded Linux I/O');
104
+ }
105
+ return child;
106
+ },
107
+ };
82
108
  }
83
109
  /** Do not use node-pty.write(): its void API can hide an unbounded internal input queue. */
84
110
  export async function writeInput(pty, data, check) {
@@ -1 +1 @@
1
- {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../../src/terminal/pty.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../../src/terminal/pty.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,9 @@ export async function startReverseServer(serverFactory, value, token, name, opti
37
37
  abort.signal.addEventListener('abort', stopped, { once: true });
38
38
  const http = createReverseHttp(url, proxy, attempt.signal);
39
39
  const transport = new ReverseSseTransport(url, { Authorization: `Bearer ${token}`, 'X-MCP-Server-Name': name }, http.fetch, options.connectTimeout, options.heartbeat?.readTimeout);
40
+ transport.ondiagnostic = (detail) => {
41
+ log.warn(`Slow control POST: ${JSON.stringify(detail)}`);
42
+ };
40
43
  active = transport;
41
44
  try {
42
45
  server = serverFactory();
@@ -1 +1 @@
1
- {"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../../src/transports/reverse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../../src/transports/reverse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACH,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAwBzE,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,aAA8B,EAC9B,KAAa,EACb,KAAa,EACb,IAAY,EACZ,UAAgC,EAAE;IAElC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;QACjD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI;QAC1B,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC;QACpD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC;QACpD,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CACvB,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC;KACvD,CAAC;IACF,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO;QACxB,GAAG,CAAC,IAAI,CACJ,gFAAgF,CACnF,CAAC;IACN,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,IAAI,MAAuC,CAAC;IAE5C,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,MAA6B,CAAC;YAClC,IAAI,aAAiC,CAAC;YACtC,IAAI,mBAA6C,CAAC;YAClD,IAAI,mBAA+C,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,MAAM,EAAE,KAAK,EAAE,CAAC;YACzB,CAAC,CAAC;YACF,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,IAAI,mBAAmB,CACrC,GAAG,EACH,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAC/D,IAAI,CAAC,KAAK,EACV,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,SAAS,EAAE,WAAW,CACjC,CAAC;YACF,SAAS,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE;gBAChC,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC;YACF,MAAM,GAAG,SAAS,CAAC;YACnB,IAAI,CAAC;gBACD,MAAM,GAAG,aAAa,EAAE,CAAC;gBACzB,sBAAsB,CAClB,MAAM,EACN,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;oBACjD,IAAI,MAAM,KAAK,SAAS;wBACpB,MAAM,IAAI,KAAK,CACX,mDAAmD,CACtD,CAAC;oBACN,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;oBACtC,IACI,CAAC,SAAS;wBACV,OAAO,CAAC,MAAM,CAAC,OAAO;wBACtB,MAAM,CAAC,OAAO;wBAEd,MAAM,IAAI,KAAK,CACX,0CAA0C,CAC7C,CAAC;oBACN,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnC,QAAQ,CAAC,QAAQ;wBACb,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;4BAC/B,QAAQ;4BACR,SAAS,CAAC;oBACd,OAAO;wBACH,OAAO,EAAE,IAAI,eAAe,CAAC;4BACzB,IAAI,EAAE,QAAQ;4BACd,OAAO;4BACP,MAAM;4BACN,eAAe;4BACf,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE;gCAC1B,6DAA6D;gCAC7D,IACI,QAAQ,KAAK,QAAQ,CAAC,QAAQ;oCAC9B,QAAQ,KAAK,QAAQ,CAAC,IAAI;oCAE1B,MAAM,IAAI,KAAK,CACX,gCAAgC,CACnC,CAAC;gCACN,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;4BAClC,CAAC;4BACD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE;gCAC3B,IACI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;oCACnC,QAAQ,CAAC,QAAQ;wCACb,QAAQ,CAAC,QAAQ;oCACrB,QAAQ,CAAC,QAAQ;oCACjB,QAAQ,CAAC,QAAQ;oCACjB,QAAQ,CAAC,MAAM;oCACf,QAAQ,CAAC,IAAI;oCAEb,MAAM,IAAI,KAAK,CACX,gCAAgC,CACnC,CAAC;4BACV,CAAC;yBACJ,CAAC;qBACL,CAAC;gBACN,CAAC,CACJ,CAAC;gBACF,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,GAAG,EAAE;oBAC/B,mBAAmB,EAAE,EAAE,CAAC;oBACxB,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;oBAClC,YAAY,CAAC,mBAAmB,CAAC,CAAC;oBAClC,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBACtD,CAAC,CAAC;gBACF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAChC,oGAAoG;gBACpG,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAC9B,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;wBAClC,GAAG,CAAC,IAAI,CACJ,oDAAoD,CACvD,CAAC;wBACF,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;oBAC3B,CAAC,EAAE,OAAO,CAAC,qBAAqB,IAAI,KAAK,CAAC,CAAC;oBAC3C,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;gBACD,MAAM,SAAS,CAAC,MAAM,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;oBACrB,GAAG,CAAC,IAAI,CACJ,yEAAyE,CAC5E,CAAC;YACV,CAAC;oBAAS,CAAC;gBACP,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACpB,GAAG,CAAC,IAAI,CACJ,8BAA8B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CACpE,CAAC;gBACN,CAAC;gBACD,YAAY,CAAC,mBAAmB,CAAC,CAAC;gBAClC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACxC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACnC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC;gBACtB,IAAI,MAAM;oBAAE,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,mBAAmB,CAAC;gBAC9D,MAAM,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK;gBAC5D,MAAM;YACV,IACI,aAAa,KAAK,SAAS;gBAC3B,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa;oBAC7B,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,IAAI,KAAK,CAAC;gBAEpD,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC;YACtD,GAAG,CAAC,IAAI,CACJ,0DAA0D,CAC7D,CAAC;YACF,IAAI,CAAC;gBACD,MAAM,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACL,MAAM;YACV,CAAC;YACD,OAAO,GAAG,IAAI,CAAC,GAAG,CACd,OAAO,CAAC,SAAS,EAAE,QAAQ,IAAI,KAAK,EACpC,OAAO,GAAG,CAAC,CACd,CAAC;QACN,CAAC;IACL,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;IACrB,OAAO;QACH,MAAM;QACN,IAAI,EAAE,KAAK,IAAI,EAAE;YACb,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtC,MAAM,MAAM,CAAC;QACjB,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -1,6 +1,6 @@
1
1
  # Independent file manager extension
2
2
 
3
- This document describes the current file extension, including unreleased runtime simplifications after 2.0.1; published release notes remain unchanged. Reverse and extensions require a matching chat-ai host implementing reverse v1 and session-relative data paths, with matching host/descriptors/UI assets. The authoritative protocol is `chat-ai/docs/protocol/README.md` at that compatible host version; both endpoints implement it themselves, with no required extension SDK. Standard stdio/Streamable HTTP tools/resources/prompts remain supported. No Chat8/schema9/format7/share protocol2 data migration is required. See [compatibility and upgrade](../README.md#compatibility-and-coordinated-upgrades).
3
+ This document describes the file extension in staff-mcp 2.0.3, including the shared workspace and allowed-directory configuration introduced in 2.0.2. Reverse and extensions require a matching chat-ai host implementing reverse v1 and session-relative data paths, with matching host/descriptors/UI assets. The authoritative protocol is `chat-ai/docs/protocol/README.md` at that compatible host version; both endpoints implement it themselves, with no required extension SDK. Standard stdio/Streamable HTTP tools/resources/prompts remain supported. No Chat8/schema9/format7/share protocol2 data migration is required. See [compatibility and upgrade](../README.md#compatibility-and-coordinated-upgrades).
4
4
 
5
5
  Extensions are off by default. Unsupported versions, unavailable optional features or failed data setup leave an otherwise healthy standard MCP connection usable, without enabling the affected App. This does not make the old reverse handshake compatible: reverse requires a paired upgrade even when extensions are disabled, with no old-protocol fallback or automatic transfer resumption.
6
6
 
package/docs/terminal.md CHANGED
@@ -1,14 +1,20 @@
1
1
  # Terminal app UI
2
2
 
3
- This document describes the current terminal extension, including unreleased runtime simplifications after 2.0.1; published release notes remain unchanged. Reverse and extensions require a matching chat-ai host implementing reverse v1 and session-relative data paths, with matching host/descriptors/UI assets. The authoritative generic stream contract is `chat-ai/docs/protocol/streams.md` at that compatible host version; `chat-ai/docs/protocol/terminal.md` defines only the PTY business adapter, safety boundaries and UI differences. No Chat8/schema9/format7/share protocol2 data migration is required. See [compatibility and upgrade](../README.md#compatibility-and-coordinated-upgrades).
3
+ This document describes the terminal extension in staff-mcp 2.0.3, including prebuilt PTY delivery and explicit startup failures. Reverse and extensions require a matching chat-ai host implementing reverse v1 and session-relative data paths, with matching host/descriptors/UI assets. The authoritative generic stream contract is `chat-ai/docs/protocol/streams.md` at that compatible host version; `chat-ai/docs/protocol/terminal.md` defines only the PTY business adapter, safety boundaries and UI differences. No Chat8/schema9/format7/share protocol2 data migration is required. See [compatibility and upgrade](../README.md#compatibility-and-coordinated-upgrades).
4
4
 
5
- Requires Node.js 22.22.2 or newer on the host and in Docker. Linux and Linux-host local Docker Engine are the primary full-extension environments. Windows native standard MCP (stdio and HTTP) and Windows Docker standard MCP have been validated, not full extensions. Non-Linux Docker launchers disable optional extensions; macOS is untested. Unavailable or incompatible optional capabilities must not break an otherwise healthy standard MCP connection. The old reverse handshake itself is incompatible even with extensions disabled: upgrade both endpoints rather than relying on extension degradation. There is no old-protocol fallback or automatic terminal input replay.
5
+ Requires Node.js 22.22.2 or newer on the host and in Docker. Linux and Linux-host local Docker Engine are the primary full-extension environments. Windows native standard MCP (stdio and HTTP) and Windows Docker standard MCP have been validated, not full extensions. Non-Linux Docker launchers fail an explicit terminal request; files-only requests still warn and disable the optional extension. macOS is untested. Optional discovery/data negotiation failures still preserve an otherwise healthy standard MCP connection; explicit terminal platform/native/shell startup errors do not degrade silently. The old reverse handshake itself is incompatible even with extensions disabled: upgrade both endpoints rather than relying on extension degradation. There is no old-protocol fallback or automatic terminal input replay.
6
6
 
7
- `terminal` is an independent, human-operated app enabled with `--extensions terminal` or `--extensions files,terminal`. It requires Linux, a loadable optional `node-pty`, an executable shell, and streams/data v1 with a usable duplex dataSession. All extensions are disabled by default; apps/data dependencies and terminal's streams v1 manifest are derived automatically. When Linux/native PTY/shell prerequisites are unavailable, staff warns on stderr and disables terminal/streams without failing standard MCP or an available files extension; the default disabled state does not load native PTY code. Non-Linux Docker launchers disable optional extensions before starting the container; standard MCP tools/resources/prompts remain available when the base connection is usable. Local stdio/Docker, direct HTTP and reverse share that public raw HTTP data protocol; standard MCP control transports remain unchanged. The host uses the existing current-chat MCP grant and same-origin browser requests, without a separate terminal permission switch or high-risk confirmation. HTTP/HTTPS follows the site-wide deployment policy, with no terminal-only TLS gate or origin allowlist. HTTPS is recommended for the whole site; HTTP does not encrypt login sessions, tool calls or terminal traffic. Reverse resolves the host-provided current-session data path against the existing `--ru` origin; chat-ai does not need a public URL setting. Upgrade both endpoints together; HTTP/stdio addresses and extension versions remain unchanged. Topology and CLI details are in the [README](../README.md). The self-contained HTML Resource is built to `dist/src/terminal/ui/index.html`; terminal bytes do not add model tools, chat messages or chat history.
7
+ `terminal` is an independent, human-operated app enabled with `--extensions terminal` or `--extensions files,terminal`. It requires Linux, a loadable optional `node-pty`, an executable shell, and streams/data v1 with a usable duplex dataSession. All extensions are disabled by default; apps/data dependencies and terminal's streams v1 manifest are derived automatically. When Linux/native PTY/shell prerequisites are unavailable, an explicit terminal request fails startup with an error, even when files is also requested; the default disabled state does not load native PTY code. Non-Linux Docker launchers and unsupported stdio Docker data topologies likewise fail explicit terminal requests rather than silently dropping them. Files-only degradation is unchanged. Local stdio/Docker, direct HTTP and reverse share that public raw HTTP data protocol; standard MCP control transports remain unchanged. The host uses the existing current-chat MCP grant and same-origin browser requests, without a separate terminal permission switch or high-risk confirmation. HTTP/HTTPS follows the site-wide deployment policy, with no terminal-only TLS gate or origin allowlist. HTTPS is recommended for the whole site; HTTP does not encrypt login sessions, tool calls or terminal traffic. Reverse resolves the host-provided current-session data path against the existing `--ru` origin; chat-ai does not need a public URL setting. Upgrade both endpoints together; HTTP/stdio addresses and extension versions remain unchanged. Topology and CLI details are in the [README](../README.md). The self-contained HTML Resource is built to `dist/src/terminal/ui/index.html`; terminal bytes do not add model tools, chat messages or chat history.
8
+
9
+ ## Native dependency delivery
10
+
11
+ The optional dependency is pinned exactly to the official prerelease `node-pty@1.2.0-beta.18`, including N-API prebuilds for Linux x64/arm64 with glibc >= 2.28. The runtime still requires system libraries such as `libstdc++` and `libgcc`, and an executable shell. No user image is upgraded automatically; musl/Alpine terminal support is not promised (Alpine examples without terminal remain standard MCP examples).
12
+
13
+ Docker still mounts the host package and `node_modules` read-only. This fixes prebuilt delivery for normal installs, not complete container dependency isolation: local build leftovers and architecture/platform/libc mismatches remain limitations. N-API does not remove system-library or platform requirements.
8
14
 
9
15
  ## Opening and stopping
10
16
 
11
- A valid absolute executable `$SHELL` is selected automatically, otherwise `/bin/bash`. If that executable or node-pty is unavailable, terminal is disabled with a warning; there is no further shell fallback or shell-selection parameter. `--shell` is removed and fails as an unknown option. The shell starts with `-i`, honors normal user startup files and preserves normal HOME, PATH, virtual environments and other staff environment variables. [`src/terminal/pty.ts`](../src/terminal/pty.ts) filters only these exact internal control keys: `STAFF_GLOBAL_DIR`, `STAFF_MCP_IS_DOCKER`, `STAFF_MCP_DATA_BOOTSTRAP`, `STAFF_MCP_DATA_HOST`, `STAFF_MCP_DATA_PORT`, `MCP_REVERSE_URL`, `MCP_REVERSE_TOKEN`, `MCP_REVERSE_NAME`, `MCP_HTTP_TOKEN`, `STAFF_MCP_HTTP_TOKEN`, `STAFF_MCP_REVERSE_TOKEN`. Missing `TERM` becomes `xterm-256color`, and `SHELL` is set to the selected executable. This is not a general secret scrubber or environment sandbox; the same OS identity may still access credentials and other files.
17
+ A valid absolute executable `$SHELL` is selected automatically, otherwise `/bin/bash`. If that executable or node-pty is unavailable, the explicit terminal request fails startup; there is no further shell fallback or shell-selection parameter. `--shell` is removed and fails as an unknown option. The shell starts with `-i`, honors normal user startup files and preserves normal HOME, PATH, virtual environments and other staff environment variables. [`src/terminal/pty.ts`](../src/terminal/pty.ts) filters only these exact internal control keys: `STAFF_GLOBAL_DIR`, `STAFF_MCP_IS_DOCKER`, `STAFF_MCP_DATA_BOOTSTRAP`, `STAFF_MCP_DATA_HOST`, `STAFF_MCP_DATA_PORT`, `MCP_REVERSE_URL`, `MCP_REVERSE_TOKEN`, `MCP_REVERSE_NAME`, `MCP_HTTP_TOKEN`, `STAFF_MCP_HTTP_TOKEN`, `STAFF_MCP_REVERSE_TOKEN`. Missing `TERM` becomes `xterm-256color`, and `SHELL` is set to the selected executable. This is not a general secret scrubber or environment sandbox; the same OS identity may still access credentials and other files.
12
18
 
13
19
  Selecting the Shell App automatically starts one PTY after the host bridge becomes usable and the visible xterm viewport has been measured with its fonts ready; there is no additional open button or high-risk confirmation. The initial PTY uses those fitted columns and rows rather than starting at 80×24 and resizing after the first prompt. Hidden, zero-sized or not-yet-measurable views wait for a usable layout. The toolbar reserves its control height before connecting, so showing the buttons does not invalidate the initial row measurement; subsequent viewport changes continue through the normal resize path. The toolbar shows the returned shell and starting path. The PTY defaults to staff's workspace `main`, independently of file-app roots, and inherits staff's environment and OS identity, not a separate browser-user identity; its cwd is not an operating-system sandbox. Shell startup configuration and history are not suppressed, so the remote shell or programs may record content even though chat-ai does not add terminal bytes to chat history.
14
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "staff-mcp",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ChineseAStar/staff-mcp.git"
@@ -66,6 +66,6 @@
66
66
  "node": ">=22.22.2"
67
67
  },
68
68
  "optionalDependencies": {
69
- "node-pty": "1.1.0"
69
+ "node-pty": "1.2.0-beta.18"
70
70
  }
71
71
  }