tabby-bianbu-mcp 0.5.4 → 0.6.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.
- package/CHANGELOG.md +30 -0
- package/README.md +381 -82
- package/assets/bianbu_agent_proxy.meta.json +1 -1
- package/dist/configProvider.d.ts +2 -1
- package/dist/filesTab.component.d.ts +18 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/settingsTab.component.d.ts +1 -0
- package/dist/shellSession.d.ts +15 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `tabby-bianbu-mcp` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.6.0] - 2026-03-23
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **adaptive request throttling**: `RequestLane` now starts at zero cadence and auto-backs-off only when the server returns 429 / rate-limit errors, then gradually recovers to zero delay on success
|
|
9
|
+
- **concurrent file transfers**: up to 3 files now upload/download in parallel (configurable via `maxConcurrentFiles`)
|
|
10
|
+
- **enhanced shell line editor**: cursor movement (←→), command history (↑↓), Home/End, Delete key, Ctrl+A/E/U/K/W/L shortcuts
|
|
11
|
+
- **colorized shell output**: stderr renders in red, non-zero exit codes in yellow, prompt in bold blue
|
|
12
|
+
- **running indicator**: shell shows `⏳ Running...` during command execution
|
|
13
|
+
- **file manager sort**: click column headers (Name, Size, Modified, Type) to sort; folders always appear first
|
|
14
|
+
- **file manager multi-select**: Ctrl+Click to toggle, Shift+Click for range selection
|
|
15
|
+
- **file type icons**: emoji icons for 50+ file extensions (📁📜🐍📋📦🖼️🎵🎬 etc.)
|
|
16
|
+
- **formatted file sizes**: human-readable display (B, KB, MB, GB)
|
|
17
|
+
- **date column**: shows file modification timestamps
|
|
18
|
+
- **status bar**: shows item count, selection summary, and total size
|
|
19
|
+
- **detail pane toggle**: hide/show the preview panel to maximize file list space
|
|
20
|
+
- **URL domain input**: settings page now shows `https://` [domain] `/mcp` — user only needs to paste the domain
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- **upload chunk default**: 32 KiB → 64 KiB (halves HTTP round-trips)
|
|
24
|
+
- **download chunk default**: 128 KiB → 256 KiB
|
|
25
|
+
- **worker cadence default**: 100ms → 0ms (adaptive throttling handles rate-limiting)
|
|
26
|
+
- **download pipeline**: independent flusher coroutine eliminates head-of-line blocking where all workers stalled waiting for ordered disk writes
|
|
27
|
+
- **file manager UI**: complete redesign with Windows 11 Fluent-inspired dark theme (Mica-style backdrop, rounded corners, segmented toolbar, immersive layout)
|
|
28
|
+
- **settings page**: simplified from 6 cards to 3 focused sections; advanced settings in collapsible areas; MCP snippet now masks the API key
|
|
29
|
+
- **config field**: `url` replaced by `domain` — existing `url` values are auto-migrated on first load
|
|
30
|
+
|
|
31
|
+
### Removed
|
|
32
|
+
- `settings.enabled` config (removed in 0.5.4, cleanup completed)
|
|
33
|
+
- `minIntervalMs` config (replaced by adaptive cadence)
|
|
34
|
+
|
|
5
35
|
## [0.5.4] - 2026-03-23
|
|
6
36
|
|
|
7
37
|
### Fixed
|
package/README.md
CHANGED
|
@@ -1,123 +1,422 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# <img src="https://img.icons8.com/fluency/48/cloud-development.png" width="32" height="32" /> tabby-bianbu-mcp
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Tabby terminal plugin for Bianbu Cloud — Shell & File Manager over MCP**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Bianbu Cloud 的 Tabby 终端插件 — 基于 MCP 的远程 Shell 和文件管理器**
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- packaged remote installer asset with SHA-256 metadata and integrity verification
|
|
15
|
-
- push latest installer to the remote host and trigger `up` or `repair`
|
|
16
|
-
- chunked upload and download support for larger files
|
|
17
|
-
- 32-slot request scheduling with 2 reserved interactive lanes and up to 30 transfer lanes
|
|
18
|
-
- one active file transfer at a time with queued follow-up uploads/downloads
|
|
19
|
-
- parallel offset-based file chunk transfers against the matching remote installer
|
|
20
|
-
- atomic rename support through MCP `rename_path`
|
|
21
|
-
- remote backup and `restore-latest` recovery support in the installer
|
|
9
|
+
[](https://www.npmjs.com/package/tabby-bianbu-mcp)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](package.json)
|
|
12
|
+
[](https://www.npmjs.com/package/tabby-bianbu-mcp)
|
|
13
|
+
[](https://github.com/niver2002/tabby-bianbu-mcp)
|
|
22
14
|
|
|
23
|
-
|
|
15
|
+
---
|
|
24
16
|
|
|
25
|
-
|
|
26
|
-
- not native SFTP
|
|
27
|
-
- not a replacement for the upstream Bianbu Cloud gateway authentication layer
|
|
17
|
+
[English](#-overview) • [中文](#-概述)
|
|
28
18
|
|
|
29
|
-
|
|
19
|
+
</div>
|
|
30
20
|
|
|
31
|
-
|
|
21
|
+
<br/>
|
|
32
22
|
|
|
33
|
-
|
|
23
|
+
## <img src="https://img.icons8.com/fluency/24/info.png" width="20" /> Overview
|
|
34
24
|
|
|
35
|
-
|
|
25
|
+
> A [Tabby](https://tabby.sh) plugin that brings **cloud shell** and **file manager** experiences to Bianbu Cloud virtual machines,
|
|
26
|
+
> powered by the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/).
|
|
27
|
+
> No SSH keys. No SFTP setup. Just MCP over HTTPS.
|
|
36
28
|
|
|
37
|
-
|
|
29
|
+
<br/>
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
- `name`
|
|
41
|
-
- `url`
|
|
42
|
-
- `apiKey`
|
|
43
|
-
- `interactiveConcurrency`
|
|
44
|
-
- `transferConcurrency`
|
|
45
|
-
- `workerCadenceMs`
|
|
46
|
-
- `maxRetries`
|
|
47
|
-
- `retryBaseMs`
|
|
48
|
-
- `uploadChunkBytes`
|
|
49
|
-
- `downloadChunkBytes`
|
|
50
|
-
- `notes`
|
|
51
|
-
- `installerRemotePath`
|
|
52
|
-
- `maintenanceAsRoot`
|
|
53
|
-
- `reconnectPollMs`
|
|
54
|
-
- `upgradeHealthTimeoutMs`
|
|
31
|
+
## <img src="https://img.icons8.com/fluency/24/info.png" width="20" /> 概述
|
|
55
32
|
|
|
56
|
-
|
|
33
|
+
> 一款 [Tabby](https://tabby.sh) 插件,为算能板卡宇宙(Bianbu Cloud) 虚拟机提供**云端 Shell** 和**文件管理器**体验,
|
|
34
|
+
> 基于 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 通信。
|
|
35
|
+
> 无需 SSH 密钥,无需 SFTP,仅需 HTTPS + MCP。
|
|
57
36
|
|
|
58
|
-
|
|
37
|
+
<br/>
|
|
59
38
|
|
|
60
|
-
|
|
39
|
+
---
|
|
61
40
|
|
|
62
|
-
|
|
63
|
-
2. it makes the script executable remotely
|
|
64
|
-
3. it starts the installer in the background with `up` or `repair`
|
|
65
|
-
4. the launcher writes a remote status file when the installer exits, including the exit code and log path
|
|
66
|
-
5. the plugin waits for both installer completion and the expected remote health/version report before declaring success
|
|
67
|
-
6. if the cutover fails, the installer auto-rolls back to the previous backup instead of leaving the remote half-upgraded
|
|
41
|
+
## ✨ Features / 功能特性
|
|
68
42
|
|
|
69
|
-
|
|
43
|
+
<table>
|
|
44
|
+
<thead>
|
|
45
|
+
<tr>
|
|
46
|
+
<th width="50%">English</th>
|
|
47
|
+
<th width="50%">中文</th>
|
|
48
|
+
</tr>
|
|
49
|
+
</thead>
|
|
50
|
+
<tbody>
|
|
51
|
+
<tr>
|
|
52
|
+
<td>
|
|
70
53
|
|
|
71
|
-
|
|
72
|
-
-
|
|
54
|
+
**🖥 Cloud Shell**
|
|
55
|
+
- Full terminal experience via MCP shell sessions
|
|
56
|
+
- Persistent sessions with working directory tracking
|
|
57
|
+
- Character-at-a-time input with prompt detection
|
|
73
58
|
|
|
74
|
-
|
|
59
|
+
</td>
|
|
60
|
+
<td>
|
|
75
61
|
|
|
76
|
-
|
|
62
|
+
**🖥 云端 Shell**
|
|
63
|
+
- 通过 MCP Shell 会话实现完整终端体验
|
|
64
|
+
- 持久会话,自动跟踪工作目录
|
|
65
|
+
- 逐字符输入,智能提示符检测
|
|
77
66
|
|
|
78
|
-
|
|
67
|
+
</td>
|
|
68
|
+
</tr>
|
|
69
|
+
<tr>
|
|
70
|
+
<td>
|
|
79
71
|
|
|
80
|
-
|
|
72
|
+
**📁 File Manager**
|
|
73
|
+
- Browse, create, rename, delete files & directories
|
|
74
|
+
- Inline text editor with save support
|
|
75
|
+
- Drag-and-drop file upload
|
|
76
|
+
- Keyboard shortcuts (F2, F5, Del, Ctrl+N, Ctrl+Shift+N)
|
|
77
|
+
|
|
78
|
+
</td>
|
|
79
|
+
<td>
|
|
80
|
+
|
|
81
|
+
**📁 文件管理器**
|
|
82
|
+
- 浏览、新建、重命名、删除文件和目录
|
|
83
|
+
- 内联文本编辑器,支持保存
|
|
84
|
+
- 拖拽上传文件
|
|
85
|
+
- 快捷键(F2 重命名 / F5 刷新 / Del 删除 / Ctrl+N 新文件 / Ctrl+Shift+N 新文件夹)
|
|
86
|
+
|
|
87
|
+
</td>
|
|
88
|
+
</tr>
|
|
89
|
+
<tr>
|
|
90
|
+
<td>
|
|
91
|
+
|
|
92
|
+
**⚡ High-Performance Transfers**
|
|
93
|
+
- Parallel chunked upload & download
|
|
94
|
+
- 32-slot request scheduler (2 interactive + 30 transfer)
|
|
95
|
+
- Configurable chunk sizes and concurrency
|
|
96
|
+
- Transfer queue with cancel support
|
|
97
|
+
|
|
98
|
+
</td>
|
|
99
|
+
<td>
|
|
100
|
+
|
|
101
|
+
**⚡ 高性能传输**
|
|
102
|
+
- 并行分块上传和下载
|
|
103
|
+
- 32 槽位请求调度器(2 交互 + 30 传输)
|
|
104
|
+
- 可配置分块大小和并发数
|
|
105
|
+
- 传输队列,支持取消
|
|
106
|
+
|
|
107
|
+
</td>
|
|
108
|
+
</tr>
|
|
109
|
+
<tr>
|
|
110
|
+
<td>
|
|
111
|
+
|
|
112
|
+
**🔧 Remote Maintenance**
|
|
113
|
+
- One-click push-upgrade from Tabby
|
|
114
|
+
- Auto-rollback on failed deployments
|
|
115
|
+
- Remote health diagnostics & version tracking
|
|
116
|
+
- Downloadable session logs (local + remote)
|
|
117
|
+
|
|
118
|
+
</td>
|
|
119
|
+
<td>
|
|
120
|
+
|
|
121
|
+
**🔧 远程维护**
|
|
122
|
+
- Tabby 内一键推送升级
|
|
123
|
+
- 部署失败自动回滚
|
|
124
|
+
- 远程健康诊断和版本追踪
|
|
125
|
+
- 可下载会话日志(本地 + 远端)
|
|
126
|
+
|
|
127
|
+
</td>
|
|
128
|
+
</tr>
|
|
129
|
+
</tbody>
|
|
130
|
+
</table>
|
|
131
|
+
|
|
132
|
+
<br/>
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 📦 Installation / 安装
|
|
137
|
+
|
|
138
|
+
<table>
|
|
139
|
+
<tr>
|
|
140
|
+
<td><b>npm (recommended)</b></td>
|
|
141
|
+
<td>
|
|
81
142
|
|
|
82
143
|
```bash
|
|
83
|
-
npm install
|
|
84
|
-
npm run build
|
|
144
|
+
npm install tabby-bianbu-mcp
|
|
85
145
|
```
|
|
86
146
|
|
|
87
|
-
|
|
147
|
+
</td>
|
|
148
|
+
</tr>
|
|
149
|
+
<tr>
|
|
150
|
+
<td><b>Tabby Plugin Manager</b></td>
|
|
151
|
+
<td>
|
|
88
152
|
|
|
89
|
-
|
|
90
|
-
|
|
153
|
+
Search for `tabby-bianbu-mcp` in **Settings → Plugins → Install from npm**
|
|
154
|
+
|
|
155
|
+
在 **设置 → 插件 → 从 npm 安装** 中搜索 `tabby-bianbu-mcp`
|
|
156
|
+
|
|
157
|
+
</td>
|
|
158
|
+
</tr>
|
|
159
|
+
</table>
|
|
160
|
+
|
|
161
|
+
<br/>
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 🚀 Quick Start / 快速上手
|
|
166
|
+
|
|
167
|
+
### 1. Configure / 配置
|
|
168
|
+
|
|
169
|
+
Open **Settings → Bianbu MCP** in Tabby and fill in:
|
|
170
|
+
|
|
171
|
+
在 Tabby 中打开 **设置 → Bianbu MCP**,填写:
|
|
172
|
+
|
|
173
|
+
| Field / 字段 | Description / 说明 | Example / 示例 |
|
|
174
|
+
|:---|:---|:---|
|
|
175
|
+
| **MCP URL** | Your MCP endpoint / MCP 端点地址 | `https://your-domain.example.com/mcp` |
|
|
176
|
+
| **X-API-KEY** | API key from Bianbu Cloud / API 密钥 | `your-api-key` |
|
|
177
|
+
| **Profile Name** | Display name / 显示名称 | `bianbu` |
|
|
178
|
+
|
|
179
|
+
### 2. Connect / 连接
|
|
180
|
+
|
|
181
|
+
Click **"Test Connection"** to verify. Then use:
|
|
182
|
+
|
|
183
|
+
点击 **"Test connection"** 验证。然后使用:
|
|
184
|
+
|
|
185
|
+
- **"Open Bianbu Cloud Shell"** — for terminal access / 打开终端
|
|
186
|
+
- **"Open Bianbu Cloud Files"** — for file management / 打开文件管理器
|
|
187
|
+
|
|
188
|
+
### 3. MCP Snippet / MCP 配置片段
|
|
189
|
+
|
|
190
|
+
Copy the auto-generated JSON config for other MCP clients:
|
|
191
|
+
|
|
192
|
+
复制自动生成的 JSON 配置,用于其他 MCP 客户端(如 Claude Desktop):
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"mcpServers": {
|
|
197
|
+
"bianbu": {
|
|
198
|
+
"type": "http",
|
|
199
|
+
"url": "https://your-domain.example.com/mcp",
|
|
200
|
+
"headers": {
|
|
201
|
+
"X-API-KEY": "your-api-key"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
91
206
|
```
|
|
92
207
|
|
|
93
|
-
|
|
208
|
+
<br/>
|
|
94
209
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## ⚙️ Settings Reference / 配置参考
|
|
213
|
+
|
|
214
|
+
<details>
|
|
215
|
+
<summary><b>Click to expand full settings table / 点击展开完整配置表</b></summary>
|
|
216
|
+
|
|
217
|
+
<br/>
|
|
218
|
+
|
|
219
|
+
| Key / 键 | Default / 默认值 | Description (EN) | 说明 (中文) |
|
|
220
|
+
|:---|:---|:---|:---|
|
|
221
|
+
| `name` | `bianbu` | Profile display name | 配置显示名称 |
|
|
222
|
+
| `url` | *(empty)* | MCP endpoint URL | MCP 端点 URL |
|
|
223
|
+
| `apiKey` | *(empty)* | `X-API-KEY` header value | API 密钥 |
|
|
224
|
+
| `interactiveConcurrency` | `2` | Interactive request slots | 交互请求并发槽位数 |
|
|
225
|
+
| `transferConcurrency` | `30` | Transfer request slots | 传输请求并发槽位数 |
|
|
226
|
+
| `workerCadenceMs` | `100` | Dispatch cycle interval (ms) | 调度周期间隔 (毫秒) |
|
|
227
|
+
| `maxRetries` | `2` | Max retry attempts | 最大重试次数 |
|
|
228
|
+
| `retryBaseMs` | `1000` | Base delay between retries (ms) | 重试基础间隔 (毫秒) |
|
|
229
|
+
| `uploadChunkBytes` | `32768` | Upload chunk size (bytes) | 上传分块大小 (字节) |
|
|
230
|
+
| `downloadChunkBytes` | `131072` | Download chunk size (bytes) | 下载分块大小 (字节) |
|
|
231
|
+
| `notes` | *(empty)* | User notes | 用户备注 |
|
|
232
|
+
| `installerRemotePath` | `/tmp/bianbu_agent_proxy.sh` | Remote installer path | 远端安装脚本路径 |
|
|
233
|
+
| `maintenanceAsRoot` | `true` | Run maintenance as root | 以 root 执行维护 |
|
|
234
|
+
| `reconnectPollMs` | `2000` | Health poll interval during upgrade | 升级时健康检测间隔 |
|
|
235
|
+
| `upgradeHealthTimeoutMs` | `120000` | Max wait time for upgrade (ms) | 升级最大等待时间 |
|
|
236
|
+
|
|
237
|
+
</details>
|
|
238
|
+
|
|
239
|
+
<br/>
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 🔄 Remote Maintenance / 远程维护
|
|
244
|
+
|
|
245
|
+
<table>
|
|
246
|
+
<tr><td width="50%">
|
|
247
|
+
|
|
248
|
+
### English
|
|
249
|
+
|
|
250
|
+
The plugin bundles `bianbu_agent_proxy.sh` — a self-contained MCP server installer with **blue/green deployment** and **automatic rollback**.
|
|
251
|
+
|
|
252
|
+
**Upgrade flow:**
|
|
253
|
+
1. Upload bundled installer → remote host
|
|
254
|
+
2. Launch detached `up` or `repair` process
|
|
255
|
+
3. Installer stages the new release, validates with `node`, then swaps atomically
|
|
256
|
+
4. Plugin polls remote health until expected version appears
|
|
257
|
+
5. On failure: previous installation is auto-restored
|
|
258
|
+
|
|
259
|
+
**After maintenance**, download session logs from the Settings page for debugging.
|
|
260
|
+
|
|
261
|
+
> **Note:** `ENABLE_PASSWORDLESS_SUDO` defaults to `false`. Opt in explicitly if needed.
|
|
262
|
+
|
|
263
|
+
</td><td width="50%">
|
|
264
|
+
|
|
265
|
+
### 中文
|
|
266
|
+
|
|
267
|
+
插件内置了 `bianbu_agent_proxy.sh` — 一个自包含的 MCP 服务器安装脚本,支持**蓝绿部署**和**自动回滚**。
|
|
268
|
+
|
|
269
|
+
**升级流程:**
|
|
270
|
+
1. 上传内置安装脚本到远端主机
|
|
271
|
+
2. 后台启动 `up` 或 `repair` 进程
|
|
272
|
+
3. 安装脚本在暂存区准备新版本,用 `node` 验证后原子切换
|
|
273
|
+
4. 插件持续轮询远端健康状态,直到出现预期版本号
|
|
274
|
+
5. 如果失败:自动恢复到之前的安装
|
|
275
|
+
|
|
276
|
+
**维护完成后**,可在设置页面下载会话日志用于调试。
|
|
277
|
+
|
|
278
|
+
> **注意:** `ENABLE_PASSWORDLESS_SUDO` 默认为 `false`。如需无密码 sudo,请明确开启并了解安全影响。
|
|
279
|
+
|
|
280
|
+
</td></tr>
|
|
281
|
+
</table>
|
|
282
|
+
|
|
283
|
+
<br/>
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 🏗 Architecture / 架构
|
|
288
|
+
|
|
289
|
+
```
|
|
290
|
+
┌───────────────────────────────────────────────────────┐
|
|
291
|
+
│ Tabby Terminal │
|
|
292
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │
|
|
293
|
+
│ │ Shell Tab │ │ Files Tab │ │ Settings Tab│ │
|
|
294
|
+
│ └──────┬───────┘ └──────┬───────┘ └──────┬──────┘ │
|
|
295
|
+
│ │ │ │ │
|
|
296
|
+
│ ┌──────┴─────────────────┴──────────────────┴──────┐ │
|
|
297
|
+
│ │ BianbuMcpService │ │
|
|
298
|
+
│ │ ┌─────────────────┐ ┌────────────────────────┐ │ │
|
|
299
|
+
│ │ │ Interactive Lane│ │ Transfer Lane │ │ │
|
|
300
|
+
│ │ │ (2 slots) │ │ (30 slots) │ │ │
|
|
301
|
+
│ │ └────────┬────────┘ └───────────┬────────────┘ │ │
|
|
302
|
+
│ │ └───────────┬───────────┘ │ │
|
|
303
|
+
│ │ │ │ │
|
|
304
|
+
│ │ JSON-RPC / HTTP(S) │ │
|
|
305
|
+
│ └───────────────────────┼──────────────────────────┘ │
|
|
306
|
+
└──────────────────────────┼─────────────────────────────┘
|
|
307
|
+
│
|
|
308
|
+
┌──────▼──────┐
|
|
309
|
+
│ X-API-KEY │
|
|
310
|
+
│ Gateway │
|
|
311
|
+
└──────┬──────┘
|
|
312
|
+
│
|
|
313
|
+
┌──────────▼──────────┐
|
|
314
|
+
│ bianbu-mcp-server │
|
|
315
|
+
│ (Express + MCP) │
|
|
316
|
+
│ │
|
|
317
|
+
│ 20 MCP Tools: │
|
|
318
|
+
│ health, shell, │
|
|
319
|
+
│ files, chunked │
|
|
320
|
+
│ transfers ... │
|
|
321
|
+
└─────────────────────┘
|
|
100
322
|
```
|
|
101
323
|
|
|
102
|
-
|
|
324
|
+
<br/>
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## 🛠 Development / 开发
|
|
103
329
|
|
|
104
330
|
```bash
|
|
105
|
-
|
|
331
|
+
# Clone / 克隆
|
|
332
|
+
git clone https://github.com/niver2002/tabby-bianbu-mcp.git
|
|
333
|
+
cd tabby-bianbu-mcp
|
|
334
|
+
|
|
335
|
+
# Install dependencies / 安装依赖
|
|
336
|
+
npm install
|
|
337
|
+
|
|
338
|
+
# Build (sync assets → types → webpack)
|
|
339
|
+
npm run build
|
|
340
|
+
|
|
341
|
+
# Watch mode / 监视模式
|
|
342
|
+
npm run watch
|
|
343
|
+
|
|
344
|
+
# Run tests / 运行测试
|
|
345
|
+
npm test
|
|
346
|
+
|
|
347
|
+
# Full release verification / 完整发布验证
|
|
348
|
+
npm run verify
|
|
106
349
|
```
|
|
107
350
|
|
|
108
|
-
|
|
351
|
+
<br/>
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## ⚠️ Security Considerations / 安全注意事项
|
|
356
|
+
|
|
357
|
+
<table>
|
|
358
|
+
<thead>
|
|
359
|
+
<tr>
|
|
360
|
+
<th width="50%">English</th>
|
|
361
|
+
<th width="50%">中文</th>
|
|
362
|
+
</tr>
|
|
363
|
+
</thead>
|
|
364
|
+
<tbody>
|
|
365
|
+
<tr>
|
|
366
|
+
<td>
|
|
367
|
+
|
|
368
|
+
- **Always use HTTPS** — API key is sent in `X-API-KEY` header; HTTP transmits it in plaintext
|
|
369
|
+
- **`as_root=true`** bypasses `FILE_ROOT` restrictions and uses `sudo -n`
|
|
370
|
+
- The **MCP snippet** in settings shows the real API key — don't share it publicly
|
|
371
|
+
- `pug@2.x` has known prototype pollution CVEs; this is a **build-time-only** dependency
|
|
372
|
+
|
|
373
|
+
</td>
|
|
374
|
+
<td>
|
|
375
|
+
|
|
376
|
+
- **始终使用 HTTPS** — API 密钥通过 `X-API-KEY` 头传输,HTTP 会明文传输
|
|
377
|
+
- **`as_root=true`** 会绕过 `FILE_ROOT` 限制,使用 `sudo -n` 执行
|
|
378
|
+
- 设置页的 **MCP 配置片段**会显示真实 API 密钥 — 不要公开分享
|
|
379
|
+
- `pug@2.x` 有已知的原型链污染漏洞,但这只是**构建时依赖**,不影响运行时
|
|
380
|
+
|
|
381
|
+
</td>
|
|
382
|
+
</tr>
|
|
383
|
+
</tbody>
|
|
384
|
+
</table>
|
|
385
|
+
|
|
386
|
+
<br/>
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## 📋 Changelog / 变更日志
|
|
391
|
+
|
|
392
|
+
See [CHANGELOG.md](CHANGELOG.md) for the full release history.
|
|
393
|
+
|
|
394
|
+
完整版本历史请查看 [CHANGELOG.md](CHANGELOG.md)。
|
|
395
|
+
|
|
396
|
+
<br/>
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## 📄 License / 许可证
|
|
401
|
+
|
|
402
|
+
[MIT](LICENSE) © [niver2002](https://github.com/niver2002)
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
<div align="center">
|
|
407
|
+
|
|
408
|
+
**Made with** ❤️ **for the Bianbu Cloud community**
|
|
409
|
+
|
|
410
|
+
**为算能板卡宇宙社区倾心打造**
|
|
109
411
|
|
|
110
|
-
|
|
111
|
-
- `assets/bianbu_agent_proxy.sh`
|
|
112
|
-
- `assets/bianbu_agent_proxy.meta.json`
|
|
113
|
-
- `README.md`
|
|
114
|
-
- `LICENSE`
|
|
115
|
-
- `CHANGELOG.md`
|
|
412
|
+
<br/>
|
|
116
413
|
|
|
117
|
-
|
|
414
|
+
<sub>
|
|
118
415
|
|
|
119
|
-
https://github.com/niver2002/tabby-bianbu-mcp
|
|
416
|
+
[Report Bug / 反馈问题](https://github.com/niver2002/tabby-bianbu-mcp/issues) •
|
|
417
|
+
[npm Package](https://www.npmjs.com/package/tabby-bianbu-mcp) •
|
|
418
|
+
[Tabby Terminal](https://tabby.sh)
|
|
120
419
|
|
|
121
|
-
|
|
420
|
+
</sub>
|
|
122
421
|
|
|
123
|
-
|
|
422
|
+
</div>
|
package/dist/configProvider.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare class BianbuMcpConfigProvider extends ConfigProvider {
|
|
|
4
4
|
defaults: {
|
|
5
5
|
bianbuMcp: {
|
|
6
6
|
name: string;
|
|
7
|
-
|
|
7
|
+
domain: string;
|
|
8
8
|
apiKey: string;
|
|
9
9
|
maxRetries: number;
|
|
10
10
|
retryBaseMs: number;
|
|
@@ -13,6 +13,7 @@ export declare class BianbuMcpConfigProvider extends ConfigProvider {
|
|
|
13
13
|
workerCadenceMs: number;
|
|
14
14
|
uploadChunkBytes: number;
|
|
15
15
|
downloadChunkBytes: number;
|
|
16
|
+
maxConcurrentFiles: number;
|
|
16
17
|
notes: string;
|
|
17
18
|
installerRemotePath: string;
|
|
18
19
|
maintenanceAsRoot: boolean;
|
|
@@ -48,6 +48,12 @@ export declare class BianbuCloudFilesTabComponent extends BaseTabComponent {
|
|
|
48
48
|
private transferSeq;
|
|
49
49
|
private transferQueue;
|
|
50
50
|
private transferQueueRunning;
|
|
51
|
+
sortKey: 'name' | 'size' | 'date' | 'type';
|
|
52
|
+
sortAsc: boolean;
|
|
53
|
+
selectedIndices: Set<number>;
|
|
54
|
+
lastClickIndex: number;
|
|
55
|
+
detailPaneVisible: boolean;
|
|
56
|
+
advancedTransfersExpanded: boolean;
|
|
51
57
|
constructor(injector: Injector, mcp: BianbuMcpService, notifications: NotificationsService, platform: PlatformService);
|
|
52
58
|
ngOnInit(): void;
|
|
53
59
|
get breadcrumbs(): string[];
|
|
@@ -56,6 +62,7 @@ export declare class BianbuCloudFilesTabComponent extends BaseTabComponent {
|
|
|
56
62
|
onKeyDown(event: KeyboardEvent): void;
|
|
57
63
|
refresh(): Promise<void>;
|
|
58
64
|
applyFilter(): void;
|
|
65
|
+
sortItems(): void;
|
|
59
66
|
navigateToInput(): void;
|
|
60
67
|
navigate(path: string, pushHistory?: boolean): void;
|
|
61
68
|
navigateBreadcrumb(index: number): void;
|
|
@@ -63,7 +70,7 @@ export declare class BianbuCloudFilesTabComponent extends BaseTabComponent {
|
|
|
63
70
|
goForward(): void;
|
|
64
71
|
goUp(): void;
|
|
65
72
|
moveSelection(delta: number): void;
|
|
66
|
-
selectItem(item: any): void;
|
|
73
|
+
selectItem(item: any, event?: MouseEvent): void;
|
|
67
74
|
openItem(item: any): Promise<void>;
|
|
68
75
|
saveSelected(): Promise<void>;
|
|
69
76
|
openCreateDirectoryPrompt(): void;
|
|
@@ -93,6 +100,16 @@ export declare class BianbuCloudFilesTabComponent extends BaseTabComponent {
|
|
|
93
100
|
private pumpTransferQueue;
|
|
94
101
|
private runUploadTransfer;
|
|
95
102
|
private runDownloadTransfer;
|
|
103
|
+
formatSize(bytes: number | null | undefined): string;
|
|
104
|
+
formatDate(iso: string | null | undefined): string;
|
|
105
|
+
fileIcon(item: any): string;
|
|
106
|
+
fileType(item: any): string;
|
|
107
|
+
toggleSort(key: 'name' | 'size' | 'date' | 'type'): void;
|
|
108
|
+
sortIndicator(key: string): string;
|
|
109
|
+
get totalSize(): string;
|
|
110
|
+
get selectionSummary(): string;
|
|
111
|
+
isSelected(index: number): boolean;
|
|
112
|
+
toggleDetailPane(): void;
|
|
96
113
|
private clearPreview;
|
|
97
114
|
baseName(path: string): string;
|
|
98
115
|
private isTextLike;
|