@xiaoqiong0v0/opencode-ssh-tool 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +30 -24
  2. package/dist/base-session.d.ts +128 -0
  3. package/dist/base-session.d.ts.map +1 -0
  4. package/dist/base-session.js +414 -0
  5. package/dist/base-session.js.map +1 -0
  6. package/dist/config.d.ts +2 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +5 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/constants.d.ts +27 -3
  11. package/dist/constants.d.ts.map +1 -1
  12. package/dist/constants.js +28 -3
  13. package/dist/constants.js.map +1 -1
  14. package/dist/history.d.ts +14 -5
  15. package/dist/history.d.ts.map +1 -1
  16. package/dist/history.js +25 -9
  17. package/dist/history.js.map +1 -1
  18. package/dist/i18n.d.ts +249 -196
  19. package/dist/i18n.d.ts.map +1 -1
  20. package/dist/i18n.js +171 -180
  21. package/dist/i18n.js.map +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +320 -332
  24. package/dist/index.js.map +1 -1
  25. package/dist/last-match.d.ts +17 -0
  26. package/dist/last-match.d.ts.map +1 -0
  27. package/dist/last-match.js +63 -0
  28. package/dist/last-match.js.map +1 -0
  29. package/dist/local-session.d.ts +9 -91
  30. package/dist/local-session.d.ts.map +1 -1
  31. package/dist/local-session.js +46 -308
  32. package/dist/local-session.js.map +1 -1
  33. package/dist/log.d.ts +3 -0
  34. package/dist/log.d.ts.map +1 -0
  35. package/dist/log.js +5 -0
  36. package/dist/log.js.map +1 -0
  37. package/dist/server-manager.d.ts +3 -1
  38. package/dist/server-manager.d.ts.map +1 -1
  39. package/dist/server-manager.js +3 -2
  40. package/dist/server-manager.js.map +1 -1
  41. package/dist/server.d.ts +35 -6
  42. package/dist/server.d.ts.map +1 -1
  43. package/dist/server.js +362 -305
  44. package/dist/server.js.map +1 -1
  45. package/dist/session-store.d.ts +2 -0
  46. package/dist/session-store.d.ts.map +1 -1
  47. package/dist/session-store.js +15 -0
  48. package/dist/session-store.js.map +1 -1
  49. package/dist/session.d.ts +15 -108
  50. package/dist/session.d.ts.map +1 -1
  51. package/dist/session.js +69 -361
  52. package/dist/session.js.map +1 -1
  53. package/dist/shell-adapter.d.ts +20 -0
  54. package/dist/shell-adapter.d.ts.map +1 -0
  55. package/dist/shell-adapter.js +70 -0
  56. package/dist/shell-adapter.js.map +1 -0
  57. package/dist/ssh-auth.d.ts.map +1 -1
  58. package/dist/ssh-auth.js +1 -2
  59. package/dist/ssh-auth.js.map +1 -1
  60. package/dist/utils.d.ts +25 -24
  61. package/dist/utils.d.ts.map +1 -1
  62. package/dist/utils.js +277 -45
  63. package/dist/utils.js.map +1 -1
  64. package/dist/web/app.css +35 -0
  65. package/dist/web/app.js +2 -0
  66. package/dist/web/fonts/CaskaydiaCoveNerdFontMono-Regular.ttf +0 -0
  67. package/dist/web/index.html +24 -0
  68. package/package.json +8 -4
package/dist/i18n.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type Lang = "en" | "zh";
2
2
  /** 平铺文案键:值为 en/zh 字符串对的字典键(排除嵌套 args 对象) */
3
- type FlatKey = {
3
+ export type FlatKey = {
4
4
  [K in keyof typeof T]: (typeof T)[K] extends Record<Lang, string> ? K : never;
5
5
  }[keyof typeof T];
6
6
  /**
@@ -11,148 +11,14 @@ type FlatKey = {
11
11
  export declare function getLang(configured?: Lang): Lang;
12
12
  /** 工具描述与参数说明字典 */
13
13
  export declare const T: {
14
- readonly ssh_connect: {
15
- readonly en: "Open a long-lived SSH connection with a PTY shell in the current session. Reconnecting the same session closes the previous connection first. Returns a connection id.";
16
- readonly zh: "在当前会话建立长驻 SSH 连接并打开 PTY shell;同一会话重复连接会先关闭旧连接。返回连接标识。";
17
- };
18
- readonly ssh_connect_args: {
19
- readonly host: {
20
- readonly en: "Target host or IP";
21
- readonly zh: "目标主机 host / IP";
22
- };
23
- readonly user: {
24
- readonly en: "Login username";
25
- readonly zh: "登录用户名";
26
- };
27
- readonly port: {
28
- readonly en: "Port, default 22";
29
- readonly zh: "端口,默认 22";
30
- };
31
- readonly name: {
32
- readonly en: "Terminal name within the session, default 'default'. Creating with an existing name closes the old one first. Use distinct names to keep multiple terminals.";
33
- readonly zh: "会话内的终端名,默认 'default'。同名创建会先关闭旧终端。用不同名称可保持多个终端。";
34
- };
35
- readonly password: {
36
- readonly en: "Password for password auth (optional). Supports plain text or 'file:<abs path>' to read from a file (avoids exposing it in context). If omitted, falls back to SSH key / agent / SSH_PASSWORD env.";
37
- readonly zh: "密码认证密码(可选)。支持明文或 'file:<绝对路径>' 从文件读取(避免暴露在上下文中)。省略时回退到 SSH 私钥 / agent / 环境变量 SSH_PASSWORD。";
38
- };
39
- };
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
- };
44
- readonly term_exec_args: {
45
- readonly command: {
46
- readonly en: "Shell command to execute";
47
- readonly zh: "要执行的 shell 命令";
48
- };
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 term_read.";
51
- readonly zh: "是否等待命令完成并返回其输出。默认 false:异步提交,立即返回;稍后通过 term_read 读取结果。";
52
- };
53
- readonly name: {
54
- readonly en: "Target terminal name, default 'default'. Must match a name from ssh_connect.";
55
- readonly zh: "目标终端名,默认 'default'。需与 ssh_connect 创建的名称一致。";
56
- };
57
- };
58
14
  readonly submitted: {
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
- };
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
- };
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
- };
70
- readonly term_send_args: {
71
- readonly text: {
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
- readonly zh: "要发送的文本或按键序列。回车用 \\r 或 \\n,Ctrl-C 用 \\x03,Esc 用 \\x1b。sudo 密码提示时发送密码后跟 \\r。";
74
- };
75
- readonly name: {
76
- readonly en: "Target terminal name, default 'default'.";
77
- readonly zh: "目标终端名,默认 'default'。";
78
- };
15
+ readonly en: "Command submitted (async). Running in background: check term_cli status for completion, then term_cli read to read output.";
16
+ readonly zh: "命令已异步提交,后台执行中:用 term_cli status 查完成状态,再用 term_cli read 读取输出。";
79
17
  };
80
18
  readonly send_ok: {
81
19
  readonly en: "Sent: {text}";
82
20
  readonly zh: "已发送:{text}";
83
21
  };
84
- readonly send_title: {
85
- readonly en: "SSH send";
86
- readonly zh: "SSH 发送";
87
- };
88
- readonly term_read_args: {
89
- readonly source: {
90
- readonly en: "Where to read from: 'buffer' (unconsumed live output) or 'history' (completed pairs, default).";
91
- readonly zh: "读取来源:'buffer'(实时未消费输出)或 'history'(已完成消息对,默认)。";
92
- };
93
- readonly lines: {
94
- readonly en: "Max lines to read from buffer, all if omitted";
95
- readonly zh: "读取缓冲行数上限,默认全部";
96
- };
97
- readonly direction: {
98
- readonly en: "Which end to take (history): 'tail' (last N, default) or 'head' (first N). At most N pairs.";
99
- readonly zh: "取哪一端(history):'tail'(最后 N 条,默认)或 'head'(前 N 条)。最多 N 条。";
100
- };
101
- readonly limit: {
102
- readonly en: "Number of pairs to return (history, default 10). Capped at total pairs.";
103
- readonly zh: "返回的对数(history,默认 10)。不超过总对数。";
104
- };
105
- readonly includeCommand: {
106
- readonly en: "Whether to include the command line in history output. Default false (output only).";
107
- readonly zh: "是否在 history 结果中包含命令行。默认 false(只返回输出)。";
108
- };
109
- readonly name: {
110
- readonly en: "Target terminal name, default 'default'.";
111
- readonly zh: "目标终端名,默认 'default'。";
112
- };
113
- };
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
- };
118
- readonly term_status_args: {
119
- readonly name: {
120
- readonly en: "Terminal name to check; omit to list all terminals.";
121
- readonly zh: "要检查的终端名;省略则列出全部终端。";
122
- };
123
- };
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
- };
128
- readonly term_disconnect_args: {
129
- readonly name: {
130
- readonly en: "Terminal name to disconnect; omit to disconnect all terminals.";
131
- readonly zh: "要断开的终端名;省略则断开全部终端。";
132
- };
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
22
  readonly local_connect_ok: {
157
23
  readonly en: "Started: {cmd} (terminal {name})";
158
24
  readonly zh: "已启动:{cmd}(终端 {name})";
@@ -161,17 +27,185 @@ export declare const T: {
161
27
  readonly en: "Local terminal start failed";
162
28
  readonly zh: "本地终端启动失败";
163
29
  };
30
+ readonly term_cli: {
31
+ readonly en: "Unified terminal CLI: SSH (remote) / local shell (wsl, pwsh, bash) / container (docker exec) sessions. For ANY terminal you already have or can start locally — WSL, Docker containers, or local shells — use the 'local' subcommand INSTEAD of running commands via bash. Subcommands: connect / local / exec / read / send / status / disconnect / help. Use 'help' for full usage.";
32
+ readonly zh: "统一终端命令行工具:SSH(远程)/ 本地 shell(wsl、pwsh、bash)/ 容器(docker exec)会话。对任何本地可启动的终端——WSL、Docker 容器或本地 shell——应使用 'local' 子命令,而不是用 bash 直接执行。子命令: connect / local / exec / read / send / status / disconnect / help。用 'help' 查看完整用法。";
33
+ };
34
+ readonly term_cli_args: {
35
+ readonly en: "Full command line string, e.g. 'local \"wsl bash\"' / 'exec \"ls -la\" -w' / 'connect user@host'; defaults to 'help' when empty.";
36
+ readonly zh: "完整命令行字符串,如 'local \"wsl bash\"' / 'exec \"ls -la\" -w' / 'connect user@host';空时默认 'help'。";
37
+ };
38
+ readonly term_cli_help: {
39
+ readonly en: `term_cli unified CLI tool: manage SSH / local (wsl, pwsh, bash) / container (docker exec) terminal sessions.
40
+ Use 'local' for any terminal started on this machine (WSL, Docker containers, local shells).
41
+
42
+ Usage: term_cli <subcommand> [args]
43
+
44
+ Subcommands:
45
+ connect <target> [-u user] [-n name] [-p password|file:path]
46
+ target = user@host[:port] (e.g. root@server.local:22); open a long-lived SSH session
47
+ -p accepts plain text or file:<path> (read password from file, avoids exposure)
48
+ local "<command>" [-n name] [-c cwd]
49
+ start a local/container terminal (e.g. "pwsh" / "docker exec -it <container> sh")
50
+ exec "<command>" [-n name] [-w]
51
+ run a command in the terminal (default: submit async and return immediately; -w waits for result)
52
+ read [-n name] [-s buffer|history] [-l limit] [--head] [--include-command]
53
+ read terminal output: buffer (current snapshot, consumed) / history (default tail last N)
54
+ send "<text>" [-n name]
55
+ send text/keystrokes (\\r Enter, \\x03 Ctrl-C, \\x04 Ctrl-D, \\x1a Ctrl-Z, \\x1b Esc)
56
+ status [-n name]
57
+ terminal state (busy/pending/connection); omit name to list all
58
+ disconnect [-n name]
59
+ close terminal; omit name to close all
60
+ help
61
+ show this help
62
+
63
+ Examples:
64
+ term_cli connect root@192.168.1.10
65
+ term_cli connect user@host -p file:C:\\secrets\\pw.txt
66
+ term_cli local "docker exec -it myctr bash" -n db
67
+ term_cli exec "ls -la" -w
68
+ term_cli exec "cd /var/log && tail -50 syslog"
69
+ term_cli send "mypass\\r" -n default
70
+ term_cli read -n db -s buffer
71
+ term_cli status
72
+ term_cli disconnect -n db
73
+ `;
74
+ readonly zh: `term_cli 统一命令行工具:管理 SSH / 本地(wsl、pwsh、bash)/ 容器(docker exec)终端会话。
75
+ 本机可启动的终端(WSL、Docker 容器、本地 shell)一律用 'local' 子命令。
76
+
77
+ 用法: term_cli <子命令> [参数]
78
+
79
+ 子命令:
80
+ connect <target> [-u user] [-n name] [-p password|file:path]
81
+ target = user@host[:port](如 root@server.local:22);建立 SSH 长驻会话
82
+ -p 支持明文或 file:<路径>(从文件读密码,避免暴露)
83
+ local "<command>" [-n name] [-c cwd]
84
+ 启动本地/容器终端(如 "pwsh" / "docker exec -it <容器> sh")
85
+ exec "<command>" [-n name] [-w]
86
+ 在指定终端执行命令(默认异步提交立即返回;-w 同步等待结果)
87
+ read [-n name] [-s buffer|history] [-l limit] [--head] [--include-command]
88
+ 读终端输出:buffer 实时快照(读取后清空)/ history 历史快照(默认 tail 后 N 条)
89
+ send "<text>" [-n name]
90
+ 发送文本/按键(\\r 回车、\\x03 Ctrl-C、\\x04 Ctrl-D、\\x1a Ctrl-Z、\\x1b Esc)
91
+ status [-n name]
92
+ 终端状态(busy/pending/连接);省略 name 列出全部
93
+ disconnect [-n name]
94
+ 断开终端;省略 name 断开全部
95
+ help
96
+ 显示本帮助
97
+
98
+ 示例:
99
+ term_cli connect root@192.168.1.10
100
+ term_cli connect user@host -p file:C:\\secrets\\pw.txt
101
+ term_cli local "docker exec -it myctr bash" -n db
102
+ term_cli exec "ls -la" -w
103
+ term_cli exec "cd /var/log && tail -50 syslog"
104
+ term_cli send "mypass\\r" -n default
105
+ term_cli read -n db -s buffer
106
+ term_cli status
107
+ term_cli disconnect -n db
108
+ `;
109
+ };
164
110
  readonly denied: {
165
111
  readonly en: "Denied by user.";
166
112
  readonly zh: "用户已拒绝。";
167
113
  };
114
+ readonly cli_bad_target: {
115
+ readonly en: "Bad target: \"{target}\"";
116
+ readonly zh: "目标格式错误: \"{target}\"";
117
+ };
118
+ readonly cli_connect_usage: {
119
+ readonly en: "Usage: connect user@host[:port] [-u user] [-n name] [-p password]";
120
+ readonly zh: "用法: connect user@host[:port] [-u user] [-n name] [-p password]";
121
+ };
122
+ readonly cli_need_user_host: {
123
+ readonly en: "Need user and host";
124
+ readonly zh: "需要 user 和 host";
125
+ };
126
+ readonly cli_local_usage: {
127
+ readonly en: "Usage: local \"<command>\" [-n name] [-c cwd]";
128
+ readonly zh: "用法: local \"<command>\" [-n name] [-c cwd]";
129
+ };
130
+ readonly cli_exec_usage: {
131
+ readonly en: "Usage: exec \"<command>\" [-n name] [-w]";
132
+ readonly zh: "用法: exec \"<command>\" [-n name] [-w]";
133
+ };
134
+ readonly cli_send_usage: {
135
+ readonly en: "Usage: send \"<text>\" [-n name]";
136
+ readonly zh: "用法: send \"<text>\" [-n name]";
137
+ };
138
+ readonly cli_need_command: {
139
+ readonly en: "Need a command";
140
+ readonly zh: "需要命令";
141
+ };
142
+ readonly cli_need_text: {
143
+ readonly en: "Need text to send";
144
+ readonly zh: "需要发送内容";
145
+ };
146
+ readonly cli_unknown: {
147
+ readonly en: "Unknown command: {cmd}";
148
+ readonly zh: "未知命令: {cmd}";
149
+ };
150
+ readonly st_name: {
151
+ readonly en: "name";
152
+ readonly zh: "名称";
153
+ };
154
+ readonly st_type: {
155
+ readonly en: "type";
156
+ readonly zh: "类型";
157
+ };
158
+ readonly st_connected: {
159
+ readonly en: "connected";
160
+ readonly zh: "已连接";
161
+ };
162
+ readonly st_busy: {
163
+ readonly en: "busy";
164
+ readonly zh: "忙碌";
165
+ };
166
+ readonly st_pending: {
167
+ readonly en: "pending";
168
+ readonly zh: "待消费";
169
+ };
170
+ readonly st_bytes: {
171
+ readonly en: "bytes";
172
+ readonly zh: "字节";
173
+ };
174
+ readonly st_host: {
175
+ readonly en: "host";
176
+ readonly zh: "主机";
177
+ };
178
+ readonly st_program: {
179
+ readonly en: "program";
180
+ readonly zh: "程序";
181
+ };
182
+ readonly st_last_active: {
183
+ readonly en: "lastActive";
184
+ readonly zh: "最后活动";
185
+ };
186
+ readonly st_connected_at: {
187
+ readonly en: "connectedAt";
188
+ readonly zh: "连接时间";
189
+ };
190
+ readonly st_http_server: {
191
+ readonly en: "httpServer";
192
+ readonly zh: "HTTP 服务";
193
+ };
194
+ readonly st_active_sessions: {
195
+ readonly en: "activeSessions";
196
+ readonly zh: "活跃会话";
197
+ };
198
+ readonly st_disabled: {
199
+ readonly en: "disabled";
200
+ readonly zh: "已禁用";
201
+ };
168
202
  readonly denied_danger: {
169
203
  readonly en: "Dangerous command, execution rejected.";
170
204
  readonly zh: "危险命令,已拒绝执行。";
171
205
  };
172
206
  readonly not_connected: {
173
- readonly en: "No SSH session. Please run ssh_connect first.";
174
- readonly zh: "未建立 SSH 会话,请先调用 ssh_connect。";
207
+ readonly en: "No active terminal. Use term_cli connect (SSH) or term_cli local first.";
208
+ readonly zh: "无活动终端。请先用 term_cli connect(SSH)或 term_cli local 建立。";
175
209
  };
176
210
  readonly rejected_connect: {
177
211
  readonly en: "Connection rejected.";
@@ -182,12 +216,8 @@ export declare const T: {
182
216
  readonly zh: "终端名非法。仅允许字母、数字、下划线、中划线、点(最多 64 字符),不得含路径分隔符。";
183
217
  };
184
218
  readonly no_sessions: {
185
- readonly en: "No active SSH sessions.";
186
- readonly zh: "当前没有活动的 SSH 会话。";
187
- };
188
- readonly connect_title_ok: {
189
- readonly en: "SSH connected";
190
- readonly zh: "SSH 已连接";
219
+ readonly en: "No active terminals.";
220
+ readonly zh: "当前没有活动的终端会话。";
191
221
  };
192
222
  readonly connect_ok: {
193
223
  readonly en: "Connected: {user}@{host}:{port} (session {sid}, terminal {name})";
@@ -201,41 +231,21 @@ export declare const T: {
201
231
  readonly en: "Unknown error";
202
232
  readonly zh: "未知错误";
203
233
  };
204
- readonly exec_title: {
205
- readonly en: "SSH exec: {cmd}";
206
- readonly zh: "SSH 执行: {cmd}";
207
- };
208
234
  readonly exec_failed: {
209
235
  readonly en: "Execution failed";
210
236
  readonly zh: "执行失败";
211
237
  };
212
- readonly session_output_title: {
213
- readonly en: "SSH session output";
214
- readonly zh: "SSH 会话输出";
215
- };
216
238
  readonly session_disconnected: {
217
- readonly en: "SSH session disconnected";
218
- readonly zh: "SSH 会话已断开";
239
+ readonly en: "Terminal disconnected";
240
+ readonly zh: "终端已断开";
219
241
  };
220
242
  readonly status_busy_hint: {
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 获取部分输出。";
243
+ readonly en: "\nHint: a command is still running. Wait and retry, or call term_cli read for partial output.";
244
+ readonly zh: "\n提示:仍有命令在执行,请等待后重试或调用 term_cli read 获取部分输出。";
223
245
  };
224
246
  readonly status_idle_hint: {
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 读取剩余输出。";
227
- };
228
- readonly status_title: {
229
- readonly en: "SSH session status";
230
- readonly zh: "SSH 会话状态";
231
- };
232
- readonly server_title: {
233
- readonly en: "SSH HTTP server";
234
- readonly zh: "SSH HTTP 服务";
235
- };
236
- readonly server_info: {
237
- readonly en: "HTTP server enabled\nurl: {url}\nport: {port}\nactive sessions: {n}\nOpen {url} in a browser to view terminal records (scrollable, auto-refreshing).";
238
- readonly zh: "HTTP 服务已启用\nurl: {url}\nport: {port}\n活跃会话: {n}\n浏览器访问 {url} 查看终端记录(可滚动、自动刷新)。";
247
+ readonly en: "\nHint: no command running. You can safely execute a new command or call term_cli read for remaining output.";
248
+ readonly zh: "\n提示:无命令在执行,可安全执行新命令或调用 term_cli read 读取剩余输出。";
239
249
  };
240
250
  readonly browser_full_record: {
241
251
  readonly en: "\nBrowser full record: {url}";
@@ -246,43 +256,86 @@ export declare const T: {
246
256
  readonly zh: "\n(HTTP 服务未启用)";
247
257
  };
248
258
  readonly history_title: {
249
- readonly en: "SSH history (last {n} / total {total})";
250
- readonly zh: "SSH 历史(最后 {n} 条 / 共 {total} 条)";
259
+ readonly en: "Terminal history (last {n} / total {total})";
260
+ readonly zh: "终端历史(最后 {n} 条 / 共 {total} 条)";
251
261
  };
252
262
  readonly history_title_head: {
253
- readonly en: "SSH history (first {n} / total {total})";
254
- readonly zh: "SSH 历史(前 {n} 条 / 共 {total} 条)";
263
+ readonly en: "Terminal history (first {n} / total {total})";
264
+ readonly zh: "终端历史(前 {n} 条 / 共 {total} 条)";
265
+ };
266
+ readonly web_title: {
267
+ readonly en: "Terminal Records";
268
+ readonly zh: "终端记录";
269
+ };
270
+ readonly web_loading: {
271
+ readonly en: "Loading...";
272
+ readonly zh: "加载中...";
273
+ };
274
+ readonly web_load_failed: {
275
+ readonly en: "Failed to load records";
276
+ readonly zh: "记录加载失败";
277
+ };
278
+ readonly web_session_gone: {
279
+ readonly en: "Session not found or disconnected";
280
+ readonly zh: "会话不存在或已断开";
281
+ };
282
+ readonly web_time: {
283
+ readonly en: "Time";
284
+ readonly zh: "时间";
285
+ };
286
+ readonly web_terminals: {
287
+ readonly en: "terminals";
288
+ readonly zh: "终端";
289
+ };
290
+ readonly web_local: {
291
+ readonly en: "local";
292
+ readonly zh: "本地";
293
+ };
294
+ readonly web_commands: {
295
+ readonly en: "commands";
296
+ readonly zh: "条命令";
297
+ };
298
+ readonly web_auto_refresh: {
299
+ readonly en: "auto-refresh every 2s";
300
+ readonly zh: "每 2s 自动刷新";
301
+ };
302
+ readonly web_no_session: {
303
+ readonly en: "No terminal. Use term_cli connect (SSH) or term_cli local first.";
304
+ readonly zh: "无终端会话,请先用 term_cli connect(SSH)或 term_cli local 建立。";
305
+ };
306
+ readonly web_running: {
307
+ readonly en: "[running] ";
308
+ readonly zh: "[运行中] ";
309
+ };
310
+ readonly web_new_messages: {
311
+ readonly en: "↓ New messages";
312
+ readonly zh: "↓ 新消息";
313
+ };
314
+ readonly web_delete_terminal: {
315
+ readonly en: "Delete disconnected terminal";
316
+ readonly zh: "删除已断开终端";
255
317
  };
256
318
  readonly disconnected_ok: {
257
- readonly en: "SSH connection closed ({host}).";
258
- readonly zh: "SSH 连接已断开({host})。";
319
+ readonly en: "Terminal closed ({host}).";
320
+ readonly zh: "终端已断开({host})。";
321
+ };
322
+ readonly disconnected_ok_local: {
323
+ readonly en: "Terminal closed ({program}).";
324
+ readonly zh: "终端已断开({program})。";
259
325
  };
260
326
  readonly disconnected_all_ok: {
261
- readonly en: "All SSH terminals closed (last host {host}).";
262
- readonly zh: "已断开全部 SSH 终端(最后主机 {host})。";
327
+ readonly en: "All terminals closed (last host {host}).";
328
+ readonly zh: "已断开全部终端(最后主机 {host})。";
329
+ };
330
+ readonly disconnected_all_ok_local: {
331
+ readonly en: "All terminals closed (last program {program}).";
332
+ readonly zh: "已断开全部终端(最后程序 {program})。";
263
333
  };
264
334
  readonly err_not_connected: {
265
335
  readonly en: "Not connected";
266
336
  readonly zh: "未连接";
267
337
  };
268
- readonly err_busy: {
269
- readonly en: "Previous command still running, poll with term_status first";
270
- readonly zh: "上一条命令仍在执行,请先 term_status 轮询";
271
- };
272
- readonly err_shell_open: {
273
- readonly en: "Shell open failed";
274
- readonly zh: "shell 打开失败";
275
- };
276
- readonly err_no_such_session: {
277
- readonly en: "Session not found or disconnected";
278
- readonly zh: "会话不存在或已断开";
279
- };
280
- readonly truncated: {
281
- readonly en: "... [output truncated, {n} chars total]";
282
- readonly zh: "... [输出已截断,共 {n} 字符]";
283
- };
284
338
  };
285
339
  /** 取某语言下的一条文案 */
286
340
  export declare function tr(key: FlatKey, lang: Lang): string;
287
- export {};
288
341
  //# sourceMappingURL=i18n.d.ts.map
@@ -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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"}