@xiaoqiong0v0/opencode-ssh-tool 0.2.6 → 0.3.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/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # opencode-ssh-tool
2
2
 
3
- opencode 插件:让 opencode 像人一样操作**长驻交互式 SSH 会话**。连接一次,后续在一个会话里连续执行命令,保留当前目录、环境变量、交互状态;远程命令执行同样受 opencode 权限系统管控(类似内置 Bash 工具的审批)。
3
+ opencode 插件:让 opencode 像人一样操作**长驻交互式终端会话**——远程 SSH(ssh2 PTY)与本地/容器(Bun.Terminal,如 `pwsh`、`docker exec -it`)。连接一次,后续在会话里连续执行命令,保留当前目录、环境变量、交互状态;命令执行同样受 opencode 权限系统管控(类似内置 Bash 工具的审批)。
4
4
 
5
5
  ## 特性
6
6
 
7
- - **长驻会话**:`ssh_connect` 建立连接后,`ssh_exec` 在同一会话执行命令,保留 cwd/环境/后台进程/sudo 缓存
7
+ - **长驻会话**:`ssh_connect` 建立连接后,`term_exec` 在同一会话执行命令,保留 cwd/环境/后台进程/sudo 缓存
8
8
  - **PTY 交互**:分配伪终端,可处理 sudo 密码、vi、top 等交互程序
9
9
  - **权限管控**:只读白名单直接放行、危险命令黑名单硬拒、其余走 `context.ask()` 用户审批
10
10
  - **命令完成判定**:哨兵标记 + 静默窗口 + 超时三重兜底,动画输出(进度条等)自动识别
@@ -25,13 +25,15 @@ opencode 插件:让 opencode 像人一样操作**长驻交互式 SSH 会话**
25
25
 
26
26
  ## 工具
27
27
 
28
- | 工具 | 入参 | 行为 |
29
- |---|---|---|
30
- | `ssh_connect` | `host`, `user`, `port?`, `name?` | 建立长驻 SSH 连接 + 打开 PTY shell;`name` 指定终端名(默认 `default`),同名先关旧终端 |
31
- | `ssh_exec` | `command`, `waitResult?`, `name?` | 在指定终端执行命令;默认异步提交立即返回,`waitResult=true` 同步等结果 |
32
- | `ssh_read` | `source?`, `lines?`, `direction?`, `limit?`, `includeCommand?`, `name?` | 读指定终端输出:`buffer` 实时未消费 / `history` 已完成对(前/后 N 条) |
33
- | `ssh_status` | `name?` | 指定终端状态(busy/pending/连接);省略则列出全部终端 + HTTP 服务状态 |
34
- | `ssh_disconnect` | `name?` | 断开指定终端(默认 `default`);省略则断开全部终端 |
28
+ | 工具 | 入参 | 行为 |
29
+ |---|---|---|
30
+ | `ssh_connect` | `host`, `user`, `port?`, `name?`, `password?` | 建立长驻 SSH 连接 + 打开 PTY shell;`name` 指定终端名(默认 `default`),同名先关旧终端;`password` 支持明文或 `file:<路径>` |
31
+ | `local_connect` | `command`, `name?`, `cwd?` | 启动本地/容器 PTY 终端(如 `pwsh` / `bash` / `docker exec -it <容器> sh`),基于 Bun.Terminal |
32
+ | `term_exec` | `command`, `waitResult?`, `name?` | 在指定终端(SSH/本地/容器)执行命令;默认异步提交立即返回,`waitResult=true` 同步等结果 |
33
+ | `term_read` | `source?`, `lines?`, `direction?`, `limit?`, `includeCommand?`, `name?` | 读指定终端输出:`buffer` 实时未消费 / `history` 已完成对(前/后 N 条) |
34
+ | `term_send` | `text`, `name?` | 发送文本/按键到终端(sudo 密码、确认、Ctrl-C 等交互);转义 `\r` 回车、`\x03` Ctrl-C |
35
+ | `term_status` | `name?` | 指定终端状态(busy/pending/连接);省略则列出全部终端 + HTTP 服务状态 |
36
+ | `term_disconnect` | `name?` | 断开指定终端(默认 `default`);省略则断开全部终端(SSH + 本地) |
35
37
 
36
38
  > 一个 opencode 会话可创建**多个命名终端**(如 `db`、`web`、`prod`),用不同 `name` 并行维护;同名重复创建会先关闭旧的。
37
39
 
@@ -84,10 +86,17 @@ opencode 插件:让 opencode 像人一样操作**长驻交互式 SSH 会话**
84
86
  2. **SSH agent**:agent socket / Windows OpenSSH agent
85
87
  3. **环境变量密码**:`SSH_PASS_<HOST大写>` 优先,回退 `SSH_PASSWORD`
86
88
 
89
+ > [!WARNING] 风险警告
90
+ > `ssh_connect` 的 `password` 参数(明文或 `file:` 路径)允许模型直接凭密码建立连接,**绕过密钥认证,一旦建立便无法像正常会话那样可靠授权与撤销**——远程主机上的命令操作难以被 opencode 权限系统有效管控。
91
+ >
92
+ > **最佳用途**:仅用于一次性**辅助安装 opencode 到远程目标**(bootstrap),或完全可信的临时环境。
93
+ >
94
+ > **请谨慎使用**:生产 / 重要主机请使用 SSH key + 正常审批流程,不要暴露密码直连。
95
+
87
96
  ## 权限管控
88
97
 
89
98
  ```text
90
- ssh_exec(command)
99
+ term_exec(command)
91
100
  ├─ 命中 DENY 黑名单(rm -rf / shutdown reboot mkfs 等) → 直接拒绝
92
101
  ├─ 命中只读白名单 且 无 shell 元字符 → 直接放行
93
102
  └─ 其他 → context.ask() 用户审批(:allow / :deny / :always)
@@ -99,7 +108,7 @@ ssh_exec(command)
99
108
 
100
109
  ## HTTP 终端查看
101
110
 
102
- 服务默认开启(配置 `server.enabled`)。`ssh_status` / `ssh_read`(history 模式)会返回实际地址(端口 0 时自动分配,避免冲突):
111
+ 服务默认开启(配置 `server.enabled`)。`term_status` / `term_read`(history 模式)会返回实际地址(端口 0 时自动分配,避免冲突):
103
112
 
104
113
  ```
105
114
  浏览器访问 http://127.0.0.1:<port> 查看可滚动、每 2s 自动刷新的终端记录
@@ -142,18 +151,19 @@ npm publish # 只发布 dist/
142
151
  需真实 SSH 主机(可用 Docker 测试环境,见 `.tmp/ssh-test-docker.ps1`):
143
152
 
144
153
  - [ ] `ssh_connect` → 登录成功,cwd 为登录目录
145
- - [ ] `ssh_exec("ls")` 连续多次,确认永不重连(同一会话)
146
- - [ ] `ssh_exec("cd /var/log && pwd")` 后 `ssh_exec("pwd")` = `/var/log`(目录保持)
147
- - [ ] 交互场景:`ssh_exec("sudo ...")` 触发密码提示 → `ssh_read` 配合
154
+ - [ ] `term_exec("ls")` 连续多次,确认永不重连(同一会话)
155
+ - [ ] `term_exec("cd /var/log && pwd")` 后 `term_exec("pwd")` = `/var/log`(目录保持)
156
+ - [ ] 交互场景:`term_exec("sudo ...")` 触发密码提示 → `term_read` 配合
148
157
  - [ ] 白名单命令不弹审批直接执行;`rm -rf` 被拒绝
149
158
  - [ ] 白名单外命令弹 `context.ask()`,`:deny` 拒绝 / `:allow` 放行
150
- - [ ] 长命令超时:`ssh_exec("sleep 60")` 30s 超时返回,不挂死会话
151
- - [ ] `ssh_read` 取前/后 N 条历史输出(含 `includeCommand`、`source=buffer`)
152
- - [ ] `ssh_status` / HTTP 页面浏览器可访问
153
- - [ ] `ssh_disconnect` 后连接释放
159
+ - [ ] 长命令超时:`term_exec("sleep 60")` 30s 超时返回,不挂死会话
160
+ - [ ] `term_read` 取前/后 N 条历史输出(含 `includeCommand`、`source=buffer`)
161
+ - [ ] `term_status` / HTTP 页面浏览器可访问
162
+ - [ ] `term_disconnect` 后连接释放
154
163
 
155
164
  ## 文档
156
165
 
157
166
  - `docs/requirements/需求说明.md` — 原始需求
158
167
  - `docs/design/方案分析.md` — 技术分析、决策、风险
159
168
  - `docs/design/结构设计.md` — 编码依据
169
+
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,eAAO,MAAM,cAAc,QAC0F,CAAA;AAErH,6BAA6B;AAC7B,eAAO,MAAM,IAAI,QAC0kB,CAAA;AAE3lB,qCAAqC;AACrC,eAAO,MAAM,UAAU,QAAgB,CAAA;AAEvC,2BAA2B;AAC3B,eAAO,MAAM,eAAe,QAAS,CAAA;AAErC,+BAA+B;AAC/B,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,uCAAuC;AACvC,eAAO,MAAM,mBAAmB,OAAQ,CAAA;AAExC,oBAAoB;AACpB,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC,wBAAwB;AACxB,eAAO,MAAM,QAAQ,MAAM,CAAA;AAC3B,eAAO,MAAM,QAAQ,MAAM,CAAA;AAE3B,qBAAqB;AACrB,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC,gCAAgC;AAChC,eAAO,MAAM,QAAQ,kBAAkB,CAAA;AAEvC,8BAA8B;AAC9B,eAAO,MAAM,SAAS,8CAA8C,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,eAAO,MAAM,cAAc,QAC0F,CAAA;AAErH,6BAA6B;AAC7B,eAAO,MAAM,IAAI,QACsmB,CAAA;AAEvnB,qCAAqC;AACrC,eAAO,MAAM,UAAU,QAAgB,CAAA;AAEvC,2BAA2B;AAC3B,eAAO,MAAM,eAAe,QAAS,CAAA;AAErC,+BAA+B;AAC/B,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,uCAAuC;AACvC,eAAO,MAAM,mBAAmB,OAAQ,CAAA;AAExC,oBAAoB;AACpB,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC,wBAAwB;AACxB,eAAO,MAAM,QAAQ,MAAM,CAAA;AAC3B,eAAO,MAAM,QAAQ,MAAM,CAAA;AAE3B,qBAAqB;AACrB,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC,gCAAgC;AAChC,eAAO,MAAM,QAAQ,kBAAkB,CAAA;AAEvC,8BAA8B;AAC9B,eAAO,MAAM,SAAS,8CAA8C,CAAA"}
package/dist/constants.js CHANGED
@@ -2,7 +2,7 @@
2
2
  /** 只读命令白名单(整串匹配,含元字符的命令不适用白名单) */
3
3
  export const ALLOW_READONLY = /^(?:ls|cd|cat|grep|tail|head|ps|df|free|pwd|env|echo|curl|wget|git status|whoami|hostname|date|uname|uptime)\b.*$/;
4
4
  /** 高危命令黑名单(命中直接拒绝,不进 ask) */
5
- export const DENY = /(?:rm\s+(?:-[a-z]*[fr][a-z]*(?:\s+-[a-z]*[fr][a-z]*)?\s+)?(?:\/(?:\s|$)|~|\.(?:\.)?|\/(?:etc|var|usr|boot|bin|sbin|lib|lib64|opt|root)(?:\s|$))|shutdown|reboot|halt|poweroff|mkfs|mkswap|fdisk|parted|dd\s|iptables|ufw|firewall-cmd|systemctl|service\s+\w+\s+(?:stop|restart|kill)|kill(?:all)?\s|pkill\s|passwd\s|useradd|userdel|groupadd|groupdel|chown\s+-R|chmod\s+-R\s+777\s+\/|apt\s+remove|apt-get\s+remove|npm\s+(?:uninstall|rm)\b|DROP\s+TABLE|TRUNCATE\s+TABLE|DROP\s+DATABASE|:\(\)\s*\{|>\s*\/etc\/(?:passwd|shadow|sudoers|fstab)|curl\s+.*\|\s*(?:ba)?sh|wget\s+.*\|\s*(?:ba)?sh|base64\s+-d\s*[|>])/;
5
+ export const DENY = /(?:rm\s+(?:-[a-z]*[fr][a-z]*(?:\s+-[a-z]*[fr][a-z]*)?\s+)?(?:\/(?:\s|$)|~|\.(?:\.)?|\/(?:etc|var|usr|boot|bin|sbin|lib|lib64|opt|root)(?:\s|$))|shutdown|reboot|halt|poweroff|mkfs|mkswap|fdisk|parted|dd\s+(?:if|of|bs|count|conv)\s*=|iptables|ufw|firewall-cmd|systemctl|service\s+\w+\s+(?:stop|restart|kill)|kill(?:all)?\s|pkill\s|passwd\s|useradd|userdel|groupadd|groupdel|chown\s+-R|chmod\s+-R\s+777\s+\/|apt\s+remove|apt-get\s+remove|npm\s+(?:uninstall|rm)\b|DROP\s+TABLE|TRUNCATE\s+TABLE|DROP\s+DATABASE|:\(\)\s*\{|>\s*\/etc\/(?:passwd|shadow|sudoers|fstab)|curl\s+.*\|\s*(?:ba)?sh|wget\s+.*\|\s*(?:ba)?sh|base64\s+-d\s*[|>])/;
6
6
  /** shell 元字符(出现即降级走 ask,防白名单拼接绕过) */
7
7
  export const SHELL_META = /[;|&`$()<>]/;
8
8
  /** 单次 ssh_exec 默认超时(毫秒) */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GACzB,mHAAmH,CAAA;AAErH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,IAAI,GACf,ylBAAylB,CAAA;AAE3lB,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AAEvC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AAErC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAElC,uCAAuC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAA;AAExC,oBAAoB;AACpB,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAEtC,wBAAwB;AACxB,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAC3B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAE3B,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC,gCAAgC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAA;AAEvC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,2CAA2C,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GACzB,mHAAmH,CAAA;AAErH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,IAAI,GACf,qnBAAqnB,CAAA;AAEvnB,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AAEvC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AAErC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAElC,uCAAuC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAA;AAExC,oBAAoB;AACpB,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAEtC,wBAAwB;AACxB,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAC3B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAE3B,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC,gCAAgC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAA;AAEvC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,2CAA2C,CAAA"}
package/dist/i18n.d.ts CHANGED
@@ -37,18 +37,18 @@ export declare const T: {
37
37
  readonly zh: "密码认证密码(可选)。支持明文或 'file:<绝对路径>' 从文件读取(避免暴露在上下文中)。省略时回退到 SSH 私钥 / agent / 环境变量 SSH_PASSWORD。";
38
38
  };
39
39
  };
40
- readonly ssh_exec: {
41
- readonly en: "Execute a command in the current SSH session (by terminal name), preserving cwd and environment. Commands outside the read-only allowlist require user approval.";
42
- readonly zh: "在当前 SSH 会话(按终端名)执行命令,保留 cwd 与环境变量;白名单外的命令需用户审批。";
40
+ readonly term_exec: {
41
+ readonly en: "Execute a command in an SSH, local or container terminal (by terminal name), preserving cwd and environment. Commands outside the read-only allowlist require user approval.";
42
+ readonly zh: " SSH / 本地 / 容器终端(按终端名)执行命令,保留 cwd 与环境变量;白名单外的命令需用户审批。";
43
43
  };
44
- readonly ssh_exec_args: {
44
+ readonly term_exec_args: {
45
45
  readonly command: {
46
46
  readonly en: "Shell command to execute";
47
47
  readonly zh: "要执行的 shell 命令";
48
48
  };
49
49
  readonly waitResult: {
50
- readonly en: "Wait for the command to finish and return its output. Default false: submit async, return immediately; read results later via ssh_read.";
51
- readonly zh: "是否等待命令完成并返回其输出。默认 false:异步提交,立即返回;稍后通过 ssh_read 读取结果。";
50
+ readonly en: "Wait for the command to finish and return its output. Default false: submit async, return immediately; read results later via term_read.";
51
+ readonly zh: "是否等待命令完成并返回其输出。默认 false:异步提交,立即返回;稍后通过 term_read 读取结果。";
52
52
  };
53
53
  readonly name: {
54
54
  readonly en: "Target terminal name, default 'default'. Must match a name from ssh_connect.";
@@ -56,18 +56,18 @@ export declare const T: {
56
56
  };
57
57
  };
58
58
  readonly submitted: {
59
- readonly en: "Command submitted (async). Running in background: check ssh_status for completion, then ssh_read to read output.";
60
- readonly zh: "命令已异步提交,后台执行中:用 ssh_status 查完成状态,再用 ssh_read 读取输出。";
59
+ readonly en: "Command submitted (async). Running in background: check term_status for completion, then term_read to read output.";
60
+ readonly zh: "命令已异步提交,后台执行中:用 term_status 查完成状态,再用 term_read 读取输出。";
61
61
  };
62
- readonly ssh_read: {
63
- readonly en: "Read output of the current SSH session: buffered (unconsumed, for interactive/polling) or history (completed command+output pairs, first N or last N). Returns browser URL for the full scrollable viewer when the HTTP server is on.";
64
- readonly zh: "读取当前 SSH 会话的输出:缓冲(未消费,交互/轮询用)或历史(已完成的命令+输出对,前 N 条或后 N 条)。HTTP 服务开启时返回浏览器查看完整记录的地址。";
62
+ readonly term_read: {
63
+ readonly en: "Read output of an SSH, local or container terminal: buffered (unconsumed, for interactive/polling) or history (completed command+output pairs, first N or last N). Returns browser URL for the full scrollable viewer when the HTTP server is on.";
64
+ readonly zh: "读取 SSH / 本地 / 容器终端输出:缓冲(未消费,交互/轮询用)或历史(已完成的命令+输出对,前 N 条或后 N 条)。HTTP 服务开启时返回浏览器查看完整记录的地址。";
65
65
  };
66
- readonly ssh_send: {
67
- readonly en: "Send text or keystrokes to the remote shell for interactive prompts (sudo password, confirmations, interrupts). Escapes: \\r or \\n = Enter, \\x03 = Ctrl-C, \\x04 = Ctrl-D, \\x1a = Ctrl-Z, \\x1b = Esc. After sending, read the result with ssh_read.";
68
- readonly zh: "向远程 shell 发送文本或按键,用于交互提示(sudo 密码、确认、中断等)。转义:\\r 或 \\n = 回车,\\x03 = Ctrl-C,\\x04 = Ctrl-D,\\x1a = Ctrl-Z,\\x1b = Esc。发送后用 ssh_read 读取结果。";
66
+ readonly term_send: {
67
+ readonly en: "Send text or keystrokes to an SSH, local or container terminal for interactive prompts (sudo password, confirmations, interrupts). Escapes: \\r or \\n = Enter, \\x03 = Ctrl-C, \\x04 = Ctrl-D, \\x1a = Ctrl-Z, \\x1b = Esc. After sending, read the result with term_read.";
68
+ readonly zh: " SSH / 本地 / 容器终端发送文本或按键,用于交互提示(sudo 密码、确认、中断等)。转义:\\r 或 \\n = 回车,\\x03 = Ctrl-C,\\x04 = Ctrl-D,\\x1a = Ctrl-Z,\\x1b = Esc。发送后用 term_read 读取结果。";
69
69
  };
70
- readonly ssh_send_args: {
70
+ readonly term_send_args: {
71
71
  readonly text: {
72
72
  readonly en: "Text or key sequence to send. Use \\r or \\n for Enter, \\x03 for Ctrl-C, \\x1b for Esc. For sudo password prompts send the password followed by \\r.";
73
73
  readonly zh: "要发送的文本或按键序列。回车用 \\r 或 \\n,Ctrl-C 用 \\x03,Esc 用 \\x1b。sudo 密码提示时发送密码后跟 \\r。";
@@ -85,7 +85,7 @@ export declare const T: {
85
85
  readonly en: "SSH send";
86
86
  readonly zh: "SSH 发送";
87
87
  };
88
- readonly ssh_read_args: {
88
+ readonly term_read_args: {
89
89
  readonly source: {
90
90
  readonly en: "Where to read from: 'buffer' (unconsumed live output) or 'history' (completed pairs, default).";
91
91
  readonly zh: "读取来源:'buffer'(实时未消费输出)或 'history'(已完成消息对,默认)。";
@@ -111,26 +111,56 @@ export declare const T: {
111
111
  readonly zh: "目标终端名,默认 'default'。";
112
112
  };
113
113
  };
114
- readonly ssh_status: {
115
- readonly en: "Check SSH session state (busy, pending, connection) by terminal name (all terminals if omitted) and the HTTP server state (URL/port/session count). Use busy to poll completion instead of reading animated output.";
116
- readonly zh: "按终端名检查 SSH 会话状态(busy、未消费量、连接;省略则列出全部终端)及 HTTP 服务状态(URL/端口/会话数)。用 busy 轮询完成情况,避免读取动画中间态。";
114
+ readonly term_status: {
115
+ readonly en: "Check SSH/local/container terminal state (busy, pending, connection) by terminal name (all terminals if omitted) and the HTTP server state (URL/port/session count). Use busy to poll completion instead of reading animated output.";
116
+ readonly zh: "按终端名检查 SSH / 本地 / 容器终端状态(busy、未消费量、连接;省略则列出全部终端)及 HTTP 服务状态(URL/端口/会话数)。用 busy 轮询完成情况,避免读取动画中间态。";
117
117
  };
118
- readonly ssh_status_args: {
118
+ readonly term_status_args: {
119
119
  readonly name: {
120
120
  readonly en: "Terminal name to check; omit to list all terminals.";
121
121
  readonly zh: "要检查的终端名;省略则列出全部终端。";
122
122
  };
123
123
  };
124
- readonly ssh_disconnect: {
125
- readonly en: "Close the SSH connection of a terminal (default 'default'), or all terminals when name is omitted, and clean up session state.";
126
- readonly zh: "关闭指定终端(默认 'default')的 SSH 连接,name 省略则关闭全部终端,并清理会话态。";
124
+ readonly term_disconnect: {
125
+ readonly en: "Close the terminal of a name (default 'default') for an SSH, local or container session, or all terminals when name is omitted, and clean up session state.";
126
+ readonly zh: "关闭指定名称(默认 'default')的 SSH / 本地 / 容器终端,name 省略则关闭全部终端,并清理会话态。";
127
127
  };
128
- readonly ssh_disconnect_args: {
128
+ readonly term_disconnect_args: {
129
129
  readonly name: {
130
130
  readonly en: "Terminal name to disconnect; omit to disconnect all terminals.";
131
131
  readonly zh: "要断开的终端名;省略则断开全部终端。";
132
132
  };
133
133
  };
134
+ readonly local_connect: {
135
+ readonly en: "Start a local/container PTY terminal (e.g. pwsh, bash, docker exec -it <container> sh) in the current session. Same-session reconnect closes the previous one. Uses Bun.Terminal (runs in the opencode Bun runtime).";
136
+ readonly zh: "在当前会话启动本地/容器 PTY 终端(如 pwsh、bash、docker exec -it <容器> sh);同一会话重复启动会先关闭旧的。基于 Bun.Terminal(opencode Bun 运行时内运行)。";
137
+ };
138
+ readonly local_connect_args: {
139
+ readonly command: {
140
+ readonly en: "Command to launch, e.g. pwsh / bash / docker exec -it <container> sh";
141
+ readonly zh: "要启动的命令,如 pwsh / bash / docker exec -it <容器> sh";
142
+ };
143
+ readonly name: {
144
+ readonly en: "Terminal name within the session, default 'default'. Creating with an existing name closes the old one first.";
145
+ readonly zh: "会话内的终端名,默认 'default'。同名创建会先关闭旧终端。";
146
+ };
147
+ readonly cwd: {
148
+ readonly en: "Working directory, defaults to plugin cwd.";
149
+ readonly zh: "工作目录,默认插件所在目录。";
150
+ };
151
+ };
152
+ readonly local_connect_title_ok: {
153
+ readonly en: "Local terminal started";
154
+ readonly zh: "本地终端已启动";
155
+ };
156
+ readonly local_connect_ok: {
157
+ readonly en: "Started: {cmd} (terminal {name})";
158
+ readonly zh: "已启动:{cmd}(终端 {name})";
159
+ };
160
+ readonly local_connect_title_fail: {
161
+ readonly en: "Local terminal start failed";
162
+ readonly zh: "本地终端启动失败";
163
+ };
134
164
  readonly denied: {
135
165
  readonly en: "Denied by user.";
136
166
  readonly zh: "用户已拒绝。";
@@ -188,12 +218,12 @@ export declare const T: {
188
218
  readonly zh: "SSH 会话已断开";
189
219
  };
190
220
  readonly status_busy_hint: {
191
- readonly en: "\nHint: a command is still running. Wait and retry, or call ssh_read for partial output.";
192
- readonly zh: "\n提示:仍有命令在执行,请等待后重试或调用 ssh_read 获取部分输出。";
221
+ readonly en: "\nHint: a command is still running. Wait and retry, or call term_read for partial output.";
222
+ readonly zh: "\n提示:仍有命令在执行,请等待后重试或调用 term_read 获取部分输出。";
193
223
  };
194
224
  readonly status_idle_hint: {
195
- readonly en: "\nHint: no command running. You can safely execute a new command or call ssh_read for remaining output.";
196
- readonly zh: "\n提示:无命令在执行,可安全执行新命令或调用 ssh_read 读取剩余输出。";
225
+ readonly en: "\nHint: no command running. You can safely execute a new command or call term_read for remaining output.";
226
+ readonly zh: "\n提示:无命令在执行,可安全执行新命令或调用 term_read 读取剩余输出。";
197
227
  };
198
228
  readonly status_title: {
199
229
  readonly en: "SSH session status";
@@ -236,8 +266,8 @@ export declare const T: {
236
266
  readonly zh: "未连接";
237
267
  };
238
268
  readonly err_busy: {
239
- readonly en: "Previous command still running, poll with ssh_status first";
240
- readonly zh: "上一条命令仍在执行,请先 ssh_status 轮询";
269
+ readonly en: "Previous command still running, poll with term_status first";
270
+ readonly zh: "上一条命令仍在执行,请先 term_status 轮询";
241
271
  };
242
272
  readonly err_shell_open: {
243
273
  readonly en: "Shell open failed";
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
package/dist/i18n.js CHANGED
@@ -32,15 +32,15 @@ export const T = {
32
32
  zh: "密码认证密码(可选)。支持明文或 'file:<绝对路径>' 从文件读取(避免暴露在上下文中)。省略时回退到 SSH 私钥 / agent / 环境变量 SSH_PASSWORD。",
33
33
  },
34
34
  },
35
- ssh_exec: {
36
- en: "Execute a command in the current SSH session (by terminal name), preserving cwd and environment. Commands outside the read-only allowlist require user approval.",
37
- zh: "在当前 SSH 会话(按终端名)执行命令,保留 cwd 与环境变量;白名单外的命令需用户审批。",
35
+ term_exec: {
36
+ en: "Execute a command in an SSH, local or container terminal (by terminal name), preserving cwd and environment. Commands outside the read-only allowlist require user approval.",
37
+ zh: " SSH / 本地 / 容器终端(按终端名)执行命令,保留 cwd 与环境变量;白名单外的命令需用户审批。",
38
38
  },
39
- ssh_exec_args: {
39
+ term_exec_args: {
40
40
  command: { en: "Shell command to execute", zh: "要执行的 shell 命令" },
41
41
  waitResult: {
42
- en: "Wait for the command to finish and return its output. Default false: submit async, return immediately; read results later via ssh_read.",
43
- zh: "是否等待命令完成并返回其输出。默认 false:异步提交,立即返回;稍后通过 ssh_read 读取结果。",
42
+ en: "Wait for the command to finish and return its output. Default false: submit async, return immediately; read results later via term_read.",
43
+ zh: "是否等待命令完成并返回其输出。默认 false:异步提交,立即返回;稍后通过 term_read 读取结果。",
44
44
  },
45
45
  name: {
46
46
  en: "Target terminal name, default 'default'. Must match a name from ssh_connect.",
@@ -48,18 +48,18 @@ export const T = {
48
48
  },
49
49
  },
50
50
  submitted: {
51
- en: "Command submitted (async). Running in background: check ssh_status for completion, then ssh_read to read output.",
52
- zh: "命令已异步提交,后台执行中:用 ssh_status 查完成状态,再用 ssh_read 读取输出。",
51
+ en: "Command submitted (async). Running in background: check term_status for completion, then term_read to read output.",
52
+ zh: "命令已异步提交,后台执行中:用 term_status 查完成状态,再用 term_read 读取输出。",
53
53
  },
54
- ssh_read: {
55
- en: "Read output of the current SSH session: buffered (unconsumed, for interactive/polling) or history (completed command+output pairs, first N or last N). Returns browser URL for the full scrollable viewer when the HTTP server is on.",
56
- zh: "读取当前 SSH 会话的输出:缓冲(未消费,交互/轮询用)或历史(已完成的命令+输出对,前 N 条或后 N 条)。HTTP 服务开启时返回浏览器查看完整记录的地址。",
54
+ term_read: {
55
+ en: "Read output of an SSH, local or container terminal: buffered (unconsumed, for interactive/polling) or history (completed command+output pairs, first N or last N). Returns browser URL for the full scrollable viewer when the HTTP server is on.",
56
+ zh: "读取 SSH / 本地 / 容器终端输出:缓冲(未消费,交互/轮询用)或历史(已完成的命令+输出对,前 N 条或后 N 条)。HTTP 服务开启时返回浏览器查看完整记录的地址。",
57
57
  },
58
- ssh_send: {
59
- en: "Send text or keystrokes to the remote shell for interactive prompts (sudo password, confirmations, interrupts). Escapes: \\r or \\n = Enter, \\x03 = Ctrl-C, \\x04 = Ctrl-D, \\x1a = Ctrl-Z, \\x1b = Esc. After sending, read the result with ssh_read.",
60
- zh: "向远程 shell 发送文本或按键,用于交互提示(sudo 密码、确认、中断等)。转义:\\r 或 \\n = 回车,\\x03 = Ctrl-C,\\x04 = Ctrl-D,\\x1a = Ctrl-Z,\\x1b = Esc。发送后用 ssh_read 读取结果。",
58
+ term_send: {
59
+ en: "Send text or keystrokes to an SSH, local or container terminal for interactive prompts (sudo password, confirmations, interrupts). Escapes: \\r or \\n = Enter, \\x03 = Ctrl-C, \\x04 = Ctrl-D, \\x1a = Ctrl-Z, \\x1b = Esc. After sending, read the result with term_read.",
60
+ zh: " SSH / 本地 / 容器终端发送文本或按键,用于交互提示(sudo 密码、确认、中断等)。转义:\\r 或 \\n = 回车,\\x03 = Ctrl-C,\\x04 = Ctrl-D,\\x1a = Ctrl-Z,\\x1b = Esc。发送后用 term_read 读取结果。",
61
61
  },
62
- ssh_send_args: {
62
+ term_send_args: {
63
63
  text: {
64
64
  en: "Text or key sequence to send. Use \\r or \\n for Enter, \\x03 for Ctrl-C, \\x1b for Esc. For sudo password prompts send the password followed by \\r.",
65
65
  zh: "要发送的文本或按键序列。回车用 \\r 或 \\n,Ctrl-C 用 \\x03,Esc 用 \\x1b。sudo 密码提示时发送密码后跟 \\r。",
@@ -77,7 +77,7 @@ export const T = {
77
77
  en: "SSH send",
78
78
  zh: "SSH 发送",
79
79
  },
80
- ssh_read_args: {
80
+ term_read_args: {
81
81
  source: {
82
82
  en: "Where to read from: 'buffer' (unconsumed live output) or 'history' (completed pairs, default).",
83
83
  zh: "读取来源:'buffer'(实时未消费输出)或 'history'(已完成消息对,默认)。",
@@ -100,26 +100,56 @@ export const T = {
100
100
  zh: "目标终端名,默认 'default'。",
101
101
  },
102
102
  },
103
- ssh_status: {
104
- en: "Check SSH session state (busy, pending, connection) by terminal name (all terminals if omitted) and the HTTP server state (URL/port/session count). Use busy to poll completion instead of reading animated output.",
105
- zh: "按终端名检查 SSH 会话状态(busy、未消费量、连接;省略则列出全部终端)及 HTTP 服务状态(URL/端口/会话数)。用 busy 轮询完成情况,避免读取动画中间态。",
103
+ term_status: {
104
+ en: "Check SSH/local/container terminal state (busy, pending, connection) by terminal name (all terminals if omitted) and the HTTP server state (URL/port/session count). Use busy to poll completion instead of reading animated output.",
105
+ zh: "按终端名检查 SSH / 本地 / 容器终端状态(busy、未消费量、连接;省略则列出全部终端)及 HTTP 服务状态(URL/端口/会话数)。用 busy 轮询完成情况,避免读取动画中间态。",
106
106
  },
107
- ssh_status_args: {
107
+ term_status_args: {
108
108
  name: {
109
109
  en: "Terminal name to check; omit to list all terminals.",
110
110
  zh: "要检查的终端名;省略则列出全部终端。",
111
111
  },
112
112
  },
113
- ssh_disconnect: {
114
- en: "Close the SSH connection of a terminal (default 'default'), or all terminals when name is omitted, and clean up session state.",
115
- zh: "关闭指定终端(默认 'default')的 SSH 连接,name 省略则关闭全部终端,并清理会话态。",
113
+ term_disconnect: {
114
+ en: "Close the terminal of a name (default 'default') for an SSH, local or container session, or all terminals when name is omitted, and clean up session state.",
115
+ zh: "关闭指定名称(默认 'default')的 SSH / 本地 / 容器终端,name 省略则关闭全部终端,并清理会话态。",
116
116
  },
117
- ssh_disconnect_args: {
117
+ term_disconnect_args: {
118
118
  name: {
119
119
  en: "Terminal name to disconnect; omit to disconnect all terminals.",
120
120
  zh: "要断开的终端名;省略则断开全部终端。",
121
121
  },
122
122
  },
123
+ local_connect: {
124
+ en: "Start a local/container PTY terminal (e.g. pwsh, bash, docker exec -it <container> sh) in the current session. Same-session reconnect closes the previous one. Uses Bun.Terminal (runs in the opencode Bun runtime).",
125
+ zh: "在当前会话启动本地/容器 PTY 终端(如 pwsh、bash、docker exec -it <容器> sh);同一会话重复启动会先关闭旧的。基于 Bun.Terminal(opencode Bun 运行时内运行)。",
126
+ },
127
+ local_connect_args: {
128
+ command: {
129
+ en: "Command to launch, e.g. pwsh / bash / docker exec -it <container> sh",
130
+ zh: "要启动的命令,如 pwsh / bash / docker exec -it <容器> sh",
131
+ },
132
+ name: {
133
+ en: "Terminal name within the session, default 'default'. Creating with an existing name closes the old one first.",
134
+ zh: "会话内的终端名,默认 'default'。同名创建会先关闭旧终端。",
135
+ },
136
+ cwd: {
137
+ en: "Working directory, defaults to plugin cwd.",
138
+ zh: "工作目录,默认插件所在目录。",
139
+ },
140
+ },
141
+ local_connect_title_ok: {
142
+ en: "Local terminal started",
143
+ zh: "本地终端已启动",
144
+ },
145
+ local_connect_ok: {
146
+ en: "Started: {cmd} (terminal {name})",
147
+ zh: "已启动:{cmd}(终端 {name})",
148
+ },
149
+ local_connect_title_fail: {
150
+ en: "Local terminal start failed",
151
+ zh: "本地终端启动失败",
152
+ },
123
153
  denied: {
124
154
  en: "Denied by user.",
125
155
  zh: "用户已拒绝。",
@@ -177,12 +207,12 @@ export const T = {
177
207
  zh: "SSH 会话已断开",
178
208
  },
179
209
  status_busy_hint: {
180
- en: "\nHint: a command is still running. Wait and retry, or call ssh_read for partial output.",
181
- zh: "\n提示:仍有命令在执行,请等待后重试或调用 ssh_read 获取部分输出。",
210
+ en: "\nHint: a command is still running. Wait and retry, or call term_read for partial output.",
211
+ zh: "\n提示:仍有命令在执行,请等待后重试或调用 term_read 获取部分输出。",
182
212
  },
183
213
  status_idle_hint: {
184
- en: "\nHint: no command running. You can safely execute a new command or call ssh_read for remaining output.",
185
- zh: "\n提示:无命令在执行,可安全执行新命令或调用 ssh_read 读取剩余输出。",
214
+ en: "\nHint: no command running. You can safely execute a new command or call term_read for remaining output.",
215
+ zh: "\n提示:无命令在执行,可安全执行新命令或调用 term_read 读取剩余输出。",
186
216
  },
187
217
  status_title: {
188
218
  en: "SSH session status",
@@ -225,8 +255,8 @@ export const T = {
225
255
  zh: "未连接",
226
256
  },
227
257
  err_busy: {
228
- en: "Previous command still running, poll with ssh_status first",
229
- zh: "上一条命令仍在执行,请先 ssh_status 轮询",
258
+ en: "Previous command still running, poll with term_status first",
259
+ zh: "上一条命令仍在执行,请先 term_status 轮询",
230
260
  },
231
261
  err_shell_open: {
232
262
  en: "Shell open failed",
package/dist/i18n.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAkJvD,eAAO,MAAM,eAAe,EAAE,MA4T7B,CAAA;eAGc,eAAe"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AA+LvD,eAAO,MAAM,eAAe,EAAE,MA8X7B,CAAA;eAGc,eAAe"}