@xiaoqiong0v0/opencode-ssh-tool 0.6.6 → 0.6.7
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 +184 -181
- package/dist/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +12 -4
- package/dist/agent.js.map +1 -1
- package/dist/base-session.d.ts +84 -2
- package/dist/base-session.d.ts.map +1 -1
- package/dist/base-session.js +184 -34
- package/dist/base-session.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +8 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -1
- package/dist/constants.js.map +1 -1
- package/dist/history.d.ts +5 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +8 -4
- package/dist/history.js.map +1 -1
- package/dist/i18n.d.ts +4 -4
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +70 -70
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +23 -10
- package/dist/server.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +1 -1
- package/dist/web/app.js +10 -10
- package/package.json +56 -56
package/README.md
CHANGED
|
@@ -1,181 +1,184 @@
|
|
|
1
|
-
# opencode-ssh-tool
|
|
2
|
-
|
|
3
|
-
opencode 插件:让 opencode 像人一样操作**长驻交互式终端会话**——远程 SSH(ssh2 PTY)与本地/容器(Bun.Terminal,如 `pwsh`、`docker exec -it`)。连接一次,后续在会话里连续执行命令,保留当前目录、环境变量、交互状态;命令执行同样受 opencode 权限系统管控(类似内置 Bash 工具的审批)。
|
|
4
|
-
|
|
5
|
-
## 特性
|
|
6
|
-
|
|
7
|
-
- **长驻会话**:`term_cli connect` 建立连接后,`term_cli exec` 在同一会话执行命令,保留 cwd/环境/后台进程/sudo 缓存
|
|
8
|
-
- **PTY 交互**:分配伪终端,可处理 sudo 密码、vi、top 等交互程序
|
|
9
|
-
- **权限管控**:只读白名单直接放行、危险命令黑名单硬拒、其余走 `context.ask()` 用户审批
|
|
10
|
-
- **命令完成判定**:完成标记法(`<SSH_DONE:seq:退出码>`)+ 静默窗口 + 动画检测(进度条等长输出自动识别)三重判定;**断连兜底,不设超时强杀**(长命令由 Ctrl-C 干预);未闭合引号/反引号等会触发 shell 续行的命令提交前拦截
|
|
11
|
-
- **双视图**:transcript(命令+输出消息对)与 raw(xterm.js 实时画面,支持 vi/top 等全屏程序);终端尺寸前后端一致固定 `120×40`
|
|
12
|
-
- **历史消息对**:命令+输出 全部存文件(`~/.opencode/plugins-cache/opencode-ssh-tool/<会话>/`),按对数保留(默认 100 对),重启不丢、会话关闭清理
|
|
13
|
-
- **HTTP 终端查看**:默认开启本地服务,浏览器打开可查看终端记录(WebSocket 实时推送,无轮询)
|
|
14
|
-
- **多语言**:`toolLang`(工具描述/CLI/session 文案)与 `webLang`(页面 UI)独立配置,默认英文;环境变量 `SSH_TOOL_LANG` / `SSH_WEB_LANG` 分别覆盖
|
|
15
|
-
|
|
16
|
-
## 安装
|
|
17
|
-
|
|
18
|
-
```jsonc
|
|
19
|
-
// opencode.json
|
|
20
|
-
{
|
|
21
|
-
"plugin": ["opencode-ssh-tool"]
|
|
22
|
-
}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
发布到 npm 后通过 `plugin` 数组引用;或本地调试时挂载到项目 `.opencode/` 文件夹。
|
|
26
|
-
|
|
27
|
-
## 工具
|
|
28
|
-
|
|
29
|
-
| 工具 | 入参 | 行为 |
|
|
30
|
-
|---|---|---|
|
|
31
|
-
| `term_cli` | `args`(完整命令行字符串) | **CLI 风格单工具**:SSH / 本地 / 容器终端会话。子命令:`connect` / `local` / `exec` / `read` / `send` / `status` / `disconnect` / `help`;用 `help` 查看完整用法 |
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
term_cli connect root@host:22 [-n name] [-p password|file:path] # SSH 连接
|
|
35
|
-
term_cli local "pwsh|docker exec -it <容器> sh" [-n name] [-c cwd] # 本地/容器终端
|
|
36
|
-
term_cli exec "<command>" [-n name] [-w] # 执行命令
|
|
37
|
-
term_cli read [-n name] [-s buffer|history] [-l limit] [--head] # 读输出
|
|
38
|
-
term_cli send "<text>" [-n name] # 发送按键(sudo 密码等)
|
|
39
|
-
term_cli status [-n name] # 状态
|
|
40
|
-
term_cli disconnect [-n name] # 断开
|
|
41
|
-
term_cli help # 完整用法
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
> 一个 opencode 会话可创建**多个命名终端**(如 `db`、`web`、`prod`),用不同 `name` 并行维护;同名重复创建会先关闭旧的。工具只暴露一个 `args` 字符串参数,模型像敲命令行一样调用,`help` 引导其学会所有用法(单工具多命令模式,省 token)。
|
|
45
|
-
|
|
46
|
-
## 配置
|
|
47
|
-
|
|
48
|
-
配置文件 `~/.config/opencode/ssh-tool.jsonc`(首次运行自动生成):
|
|
49
|
-
|
|
50
|
-
```jsonc
|
|
51
|
-
{
|
|
52
|
-
// HTTP 终端记录服务开关(默认 true)
|
|
53
|
-
"server": {
|
|
54
|
-
"enabled": true,
|
|
55
|
-
// 端口:不设默认值。0 = 自动分配随机端口(推荐,避免冲突);可显式指定,如 8137
|
|
56
|
-
"port": 0
|
|
57
|
-
},
|
|
58
|
-
// 会话记录(命令+输出 消息对)管理:全部存文件(~/.opencode/plugins-cache/opencode-ssh-tool/<会话>/),随会话清理
|
|
59
|
-
"history": {
|
|
60
|
-
// 保留的消息对数上限(默认 100,最小 1)。超出时移除最旧的一对
|
|
61
|
-
"maxMessages": 100
|
|
62
|
-
},
|
|
63
|
-
// 工具语言(工具描述 / CLI / agent·session 文案):"en" | "zh"(默认 "en",可用环境变量 SSH_TOOL_LANG 覆盖)
|
|
64
|
-
"toolLang": "en",
|
|
65
|
-
// Web 界面语言(仅浏览器页面 UI 文案):"en" | "zh"(默认 "en",可用环境变量 SSH_WEB_LANG 覆盖)
|
|
66
|
-
"webLang": "en",
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
//
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
>
|
|
101
|
-
>
|
|
102
|
-
>
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
├─
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
- [ ]
|
|
166
|
-
- [ ]
|
|
167
|
-
- [ ]
|
|
168
|
-
- [ ]
|
|
169
|
-
- [ ]
|
|
170
|
-
- [ ]
|
|
171
|
-
- [ ]
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
- `docs/
|
|
179
|
-
- `docs/design
|
|
180
|
-
|
|
181
|
-
|
|
1
|
+
# opencode-ssh-tool
|
|
2
|
+
|
|
3
|
+
opencode 插件:让 opencode 像人一样操作**长驻交互式终端会话**——远程 SSH(ssh2 PTY)与本地/容器(Bun.Terminal,如 `pwsh`、`docker exec -it`)。连接一次,后续在会话里连续执行命令,保留当前目录、环境变量、交互状态;命令执行同样受 opencode 权限系统管控(类似内置 Bash 工具的审批)。
|
|
4
|
+
|
|
5
|
+
## 特性
|
|
6
|
+
|
|
7
|
+
- **长驻会话**:`term_cli connect` 建立连接后,`term_cli exec` 在同一会话执行命令,保留 cwd/环境/后台进程/sudo 缓存
|
|
8
|
+
- **PTY 交互**:分配伪终端,可处理 sudo 密码、vi、top 等交互程序
|
|
9
|
+
- **权限管控**:只读白名单直接放行、危险命令黑名单硬拒、其余走 `context.ask()` 用户审批
|
|
10
|
+
- **命令完成判定**:完成标记法(`<SSH_DONE:seq:退出码>`)+ 静默窗口 + 动画检测(进度条等长输出自动识别)三重判定;**断连兜底,不设超时强杀**(长命令由 Ctrl-C 干预);未闭合引号/反引号等会触发 shell 续行的命令提交前拦截
|
|
11
|
+
- **双视图**:transcript(命令+输出消息对)与 raw(xterm.js 实时画面,支持 vi/top 等全屏程序);终端尺寸前后端一致固定 `120×40`
|
|
12
|
+
- **历史消息对**:命令+输出 全部存文件(`~/.opencode/plugins-cache/opencode-ssh-tool/<会话>/`),按对数保留(默认 100 对),重启不丢、会话关闭清理
|
|
13
|
+
- **HTTP 终端查看**:默认开启本地服务,浏览器打开可查看终端记录(WebSocket 实时推送,无轮询)
|
|
14
|
+
- **多语言**:`toolLang`(工具描述/CLI/session 文案)与 `webLang`(页面 UI)独立配置,默认英文;环境变量 `SSH_TOOL_LANG` / `SSH_WEB_LANG` 分别覆盖
|
|
15
|
+
|
|
16
|
+
## 安装
|
|
17
|
+
|
|
18
|
+
```jsonc
|
|
19
|
+
// opencode.json
|
|
20
|
+
{
|
|
21
|
+
"plugin": ["opencode-ssh-tool"]
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
发布到 npm 后通过 `plugin` 数组引用;或本地调试时挂载到项目 `.opencode/` 文件夹。
|
|
26
|
+
|
|
27
|
+
## 工具
|
|
28
|
+
|
|
29
|
+
| 工具 | 入参 | 行为 |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `term_cli` | `args`(完整命令行字符串) | **CLI 风格单工具**:SSH / 本地 / 容器终端会话。子命令:`connect` / `local` / `exec` / `read` / `send` / `status` / `disconnect` / `help`;用 `help` 查看完整用法 |
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
term_cli connect root@host:22 [-n name] [-p password|file:path] # SSH 连接
|
|
35
|
+
term_cli local "pwsh|docker exec -it <容器> sh" [-n name] [-c cwd] # 本地/容器终端
|
|
36
|
+
term_cli exec "<command>" [-n name] [-w] # 执行命令
|
|
37
|
+
term_cli read [-n name] [-s buffer|history] [-l limit] [--head] # 读输出
|
|
38
|
+
term_cli send "<text>" [-n name] # 发送按键(sudo 密码等)
|
|
39
|
+
term_cli status [-n name] # 状态
|
|
40
|
+
term_cli disconnect [-n name] # 断开
|
|
41
|
+
term_cli help # 完整用法
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
> 一个 opencode 会话可创建**多个命名终端**(如 `db`、`web`、`prod`),用不同 `name` 并行维护;同名重复创建会先关闭旧的。工具只暴露一个 `args` 字符串参数,模型像敲命令行一样调用,`help` 引导其学会所有用法(单工具多命令模式,省 token)。
|
|
45
|
+
|
|
46
|
+
## 配置
|
|
47
|
+
|
|
48
|
+
配置文件 `~/.config/opencode/ssh-tool.jsonc`(首次运行自动生成):
|
|
49
|
+
|
|
50
|
+
```jsonc
|
|
51
|
+
{
|
|
52
|
+
// HTTP 终端记录服务开关(默认 true)
|
|
53
|
+
"server": {
|
|
54
|
+
"enabled": true,
|
|
55
|
+
// 端口:不设默认值。0 = 自动分配随机端口(推荐,避免冲突);可显式指定,如 8137
|
|
56
|
+
"port": 0
|
|
57
|
+
},
|
|
58
|
+
// 会话记录(命令+输出 消息对)管理:全部存文件(~/.opencode/plugins-cache/opencode-ssh-tool/<会话>/),随会话清理
|
|
59
|
+
"history": {
|
|
60
|
+
// 保留的消息对数上限(默认 100,最小 1)。超出时移除最旧的一对
|
|
61
|
+
"maxMessages": 100
|
|
62
|
+
},
|
|
63
|
+
// 工具语言(工具描述 / CLI / agent·session 文案):"en" | "zh"(默认 "en",可用环境变量 SSH_TOOL_LANG 覆盖)
|
|
64
|
+
"toolLang": "en",
|
|
65
|
+
// Web 界面语言(仅浏览器页面 UI 文案):"en" | "zh"(默认 "en",可用环境变量 SSH_WEB_LANG 覆盖)
|
|
66
|
+
"webLang": "en",
|
|
67
|
+
// 中断探针补发间隔(秒,默认 5):Ctrl+C 后立即补发首条探针,之后每隔该秒数补发一次,直到命令结束
|
|
68
|
+
// 仅用于周期性重发探针,不判命令完成;非法值(非数字 / ≤0)回退默认 5
|
|
69
|
+
"interruptProbeInterval": 5,
|
|
70
|
+
// 权限自定义正则(追加到内置默认,控制"拒绝"与"需审批"命令)
|
|
71
|
+
"permission": {
|
|
72
|
+
// 内置默认危险命令黑名单(命中直接拒绝):
|
|
73
|
+
// rm 危险目标(/ ~ . /etc /var /usr 等) | shutdown/reboot/halt/poweroff | mkfs/mkswap/fdisk/parted/dd
|
|
74
|
+
// iptables/ufw/firewall-cmd | systemctl | service stop/restart/kill | kill/killall/pkill
|
|
75
|
+
// passwd/useradd/userdel/groupadd/groupdel | chown -R | chmod -R 777 / | apt remove | npm uninstall
|
|
76
|
+
// DROP TABLE/TRUNCATE/DROP DATABASE | fork炸弹 | > /etc/{passwd,shadow,sudoers,fstab}
|
|
77
|
+
// curl|sh / wget|sh / base64 -d |
|
|
78
|
+
// 自定义补充示例:["^mkfs\\s", "^dd\\s"](空数组 = 仅使用内置默认)
|
|
79
|
+
"deny": [],
|
|
80
|
+
// 内置默认只读白名单(命中且无 shell 元字符则直接放行):
|
|
81
|
+
// ls | cd | cat | grep | tail | head | ps | df | free | pwd | env | echo | curl | wget | git status | whoami | hostname | date | uname | uptime
|
|
82
|
+
// 自定义补充示例:["^df\\s.*-h$"](空数组 = 仅使用内置默认)
|
|
83
|
+
"allow": []
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
多语言:`toolLang` 控制工具侧全部文案(工具描述、CLI 输出、agent/session 回传消息),`webLang` 仅控制浏览器页面 UI。优先级均为「环境变量 > 配置文件 > 默认 `en`」:工具用 `SSH_TOOL_LANG`,Web 用 `SSH_WEB_LANG`。
|
|
89
|
+
|
|
90
|
+
权限自定义正则**追加**到内置默认(`DENY` 黑名单 + `ALLOW_READONLY` 白名单),`deny`/`allow` 为空数组时仅用内置默认规则,可自行补充扩展。
|
|
91
|
+
|
|
92
|
+
## 认证
|
|
93
|
+
|
|
94
|
+
按优先级自动选择,认证信息**不硬编码**、不落日志:
|
|
95
|
+
|
|
96
|
+
1. **SSH key**(推荐):用户默认私钥(`id_ed25519` / `id_rsa`)
|
|
97
|
+
2. **SSH agent**:agent socket / Windows OpenSSH agent
|
|
98
|
+
3. **环境变量密码**:`SSH_PASS_<HOST大写>` 优先,回退 `SSH_PASSWORD`
|
|
99
|
+
|
|
100
|
+
> [!WARNING] 风险警告
|
|
101
|
+
> `term_cli connect` 的 `password` 参数(明文或 `file:` 路径)允许模型直接凭密码建立连接,**绕过密钥认证,一旦建立便无法像正常会话那样可靠授权与撤销**——远程主机上的命令操作难以被 opencode 权限系统有效管控。
|
|
102
|
+
>
|
|
103
|
+
> **最佳用途**:仅用于一次性**辅助安装 opencode 到远程目标**(bootstrap),或完全可信的临时环境。
|
|
104
|
+
>
|
|
105
|
+
> **请谨慎使用**:生产 / 重要主机请使用 SSH key + 正常审批流程,不要暴露密码直连。
|
|
106
|
+
|
|
107
|
+
## 权限管控
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
term_cli exec(command)
|
|
111
|
+
├─ 命中 DENY 黑名单(rm -rf / shutdown reboot mkfs 等) → 直接拒绝
|
|
112
|
+
├─ 命中只读白名单 且 无 shell 元字符 → 直接放行
|
|
113
|
+
└─ 其他 → context.ask() 用户审批(:allow / :deny / :always)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- 只读白名单:`ls|cd|cat|grep|tail|head|ps|df|free|pwd|env|echo|curl|wget|git status|whoami|hostname|date|uname|uptime`
|
|
117
|
+
- 命令含 `;` `&&` `|` `$()` 等 shell 元字符 → 降级走 ask(防拼接绕过)
|
|
118
|
+
- 高危命令不进 ask 直接拒,`term_cli connect` 也走审批
|
|
119
|
+
|
|
120
|
+
## HTTP 终端查看
|
|
121
|
+
|
|
122
|
+
服务默认开启(配置 `server.enabled`)。`term_cli status` / `term_cli read`(history 模式)会返回实际地址(端口 0 时自动分配,避免冲突):
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
浏览器访问 http://127.0.0.1:<port> 查看终端记录(WebSocket 实时推送)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
页面按会话/终端切换,transcript 展示「命令 + 输出」历史对,raw 展示 xterm.js 实时画面。
|
|
129
|
+
|
|
130
|
+
## 架构
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
opencode(插件进程)
|
|
134
|
+
├─ agent:每会话多个命名终端,PTY 固定 120×40
|
|
135
|
+
│ ├─ SSH(ssh2 PTY shell)/ 本地·容器(Bun.Terminal)
|
|
136
|
+
│ └─ 完成标记法执行命令(`command ;markerCmd` → `<SSH_DONE:seq:退出码>`)
|
|
137
|
+
├─ server:独立 HTTP 子进程(WS 统一事件流,proto 版本校验)
|
|
138
|
+
└─ web:transcript(消息对)/ raw(xterm.js)双视图,浏览器实时查看
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## 开发
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm install # 安装依赖(dependencies + devDependencies)
|
|
145
|
+
npm run build # tsc:src → dist
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
- TS 源码在 `src/`,编译产物 `dist/`
|
|
149
|
+
- 本地测试:编译产物挂载到测试项目 `.opencode/` 文件夹,在该项目启动 opencode 验证
|
|
150
|
+
- 日志:`@xiaoqiong0v0/opencode-plugin-logger` 按天滚动落盘
|
|
151
|
+
|
|
152
|
+
## 发布
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npm run build
|
|
156
|
+
npm publish # 只发布 dist/
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
本项目提交 GitHub 发布 npm;使用方 `opencode.json` 的 `plugin` 数组引用。
|
|
160
|
+
|
|
161
|
+
## 测试清单
|
|
162
|
+
|
|
163
|
+
需真实 SSH 主机(可用 Docker 测试环境,见 `.tmp/ssh-test-docker.ps1`):
|
|
164
|
+
|
|
165
|
+
- [ ] `term_cli connect` → 登录成功,cwd 为登录目录
|
|
166
|
+
- [ ] `term_cli exec("ls")` 连续多次,确认永不重连(同一会话)
|
|
167
|
+
- [ ] `term_cli exec("cd /var/log && pwd")` 后 `term_cli exec("pwd")` = `/var/log`(目录保持)
|
|
168
|
+
- [ ] 交互场景:`term_cli exec("sudo ...")` 触发密码提示 → `term_cli read` 配合
|
|
169
|
+
- [ ] 白名单命令不弹审批直接执行;`rm -rf` 被拒绝
|
|
170
|
+
- [ ] 白名单外命令弹 `context.ask()`,`:deny` 拒绝 / `:allow` 放行
|
|
171
|
+
- [ ] 长命令:`term_cli exec("sleep 60")` 超 5s 动画窗口转后台 watch,等待其完成(不设超时、不挂死会话),`Ctrl-C` 可中断,结果从 history 可读
|
|
172
|
+
- [ ] `term_cli read` 取前/后 N 条历史输出(含 `includeCommand`、`source=buffer`)
|
|
173
|
+
- [ ] `term_cli status` / HTTP 页面浏览器可访问
|
|
174
|
+
- [ ] `term_cli disconnect` 后连接释放
|
|
175
|
+
|
|
176
|
+
## 文档
|
|
177
|
+
|
|
178
|
+
- `docs/requirements/需求说明.md` — 原始需求
|
|
179
|
+
- `docs/design/方案分析.md` — 技术分析、决策、风险
|
|
180
|
+
- `docs/design/结构设计.md` — 编码依据
|
|
181
|
+
- `docs/design/消息协议重构设计.md` — WS 统一事件流协议
|
|
182
|
+
- `docs/design/终端渲染与尺寸固定说明.md` — 终端尺寸固定、续行检测、渲染修复
|
|
183
|
+
|
|
184
|
+
|
package/dist/agent.d.ts
CHANGED
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAMA,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,KAAK,IAAI,IAAI,CAAA;IACb,gBAAgB,IAAI,OAAO,CAAA;IAC3B,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAA;IACnD,iBAAiB,IAAI,MAAM,CAAA;IAC3B,yCAAyC;IACzC,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,wCAAwC;IACxC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IAC/K,gBAAgB;IAChB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAMA,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,KAAK,IAAI,IAAI,CAAA;IACb,gBAAgB,IAAI,OAAO,CAAA;IAC3B,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAA;IACnD,iBAAiB,IAAI,MAAM,CAAA;IAC3B,yCAAyC;IACzC,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,wCAAwC;IACxC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IAC/K,gBAAgB;IAChB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAC1E,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,0BAA0B;IAC1B,UAAU,IAAI,IAAI,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,EAC7E,YAAY,EAAE,MAAM,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,WAAW,CAmNb"}
|
package/dist/agent.js
CHANGED
|
@@ -21,6 +21,7 @@ export function startAgent(url, resolveSession, listSessions) {
|
|
|
21
21
|
const register = () => {
|
|
22
22
|
send({ type: "register", sessions: listSessions() });
|
|
23
23
|
};
|
|
24
|
+
/** raw 增量游标:按会话实例代次记录已推位置;代次不同即新会话,从 0 重新读 */
|
|
24
25
|
const rawPosMap = new Map();
|
|
25
26
|
/** 已挂接生命周期监听的会话对象(按对象去重:同名会话断开重建是新对象,需重新挂接) */
|
|
26
27
|
const lifeHooked = new WeakSet();
|
|
@@ -110,10 +111,14 @@ export function startAgent(url, resolveSession, listSessions) {
|
|
|
110
111
|
if (!session)
|
|
111
112
|
continue;
|
|
112
113
|
hookLifecycle(key, session);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
// 代次变化 = 同名会话已重建(新实例):丢弃旧游标从 0 重读;即使暂无新数据也要上报(带 reset),
|
|
115
|
+
// 让 server 立即清空该 key 的 rawBuf 并给订阅者下发清屏,不能依赖"新数据恰好非空"
|
|
116
|
+
const prev = rawPosMap.get(key);
|
|
117
|
+
const genChanged = !prev || prev.gen !== session.generation;
|
|
118
|
+
const raw = session.readRawStream(genChanged ? 0 : prev.pos);
|
|
119
|
+
rawPosMap.set(key, { gen: session.generation, pos: raw.pos });
|
|
120
|
+
if (raw.data || genChanged || raw.reset) {
|
|
121
|
+
send({ type: "raw", sessionID, name, data: raw.data, pos: raw.pos, reset: genChanged || !!raw.reset, generation: session.generation });
|
|
117
122
|
}
|
|
118
123
|
if (!session.hasRunningStream())
|
|
119
124
|
continue;
|
|
@@ -136,6 +141,9 @@ export function startAgent(url, resolveSession, listSessions) {
|
|
|
136
141
|
ws.onopen = () => {
|
|
137
142
|
log.info(`代理已连接 ${wsUrl}`);
|
|
138
143
|
register();
|
|
144
|
+
// 重连后清空 raw 游标:server 可能已重启(rawBuf 丢失)或本进程原地重连,
|
|
145
|
+
// 首帧统一以"新代次"重发全量并带 reset,server 端 replace 语义保证不重复累积
|
|
146
|
+
rawPosMap.clear();
|
|
139
147
|
timer = setInterval(pushStreams, 100);
|
|
140
148
|
};
|
|
141
149
|
ws.onmessage = (ev) => {
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,4DAA4D;AAE5D,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AA2BpD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,cAA6E,EAC7E,YAA8D;IAE9D,IAAI,EAAE,GAAqB,IAAI,CAAA;IAC/B,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,KAAK,GAA0C,IAAI,CAAA;IAEvD,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAA;IAC3D,MAAM,IAAI,GAAG,CAAC,GAAY,EAAQ,EAAE;QAClC,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;IACtD,CAAC,CAAA;IAED,8CAA8C;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwC,CAAA;IACjE,+CAA+C;IAC/C,MAAM,UAAU,GAAG,IAAI,OAAO,EAAU,CAAA;IACxC,mEAAmE;IACnE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC7C,yDAAyD;IACzD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE9C,gFAAgF;IAChF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,OAAqB,EAAQ,EAAE;QACjE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAM;QACnC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACvB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;QACxD,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1B,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YAClF,CAAC;iBAAM,CAAC;gBACN,gDAAgD;gBAChD,iDAAiD;gBACjD,yCAAyC;gBACzC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBACd,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC3E,CAAC;gBACD,+DAA+D;gBAC/D,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;gBAClD,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC7F,yDAAyD;YAC3D,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED;2DACuD;IACvD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,OAAe,EAAiB,EAAE;QAC/E,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YAClF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QAC5B,4CAA4C;QAC5C,MAAM,OAAO,GAAG,GAAY,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACpE,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3C,6CAA6C;YAC7C,wEAAwE;YACxE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,CAAE,MAA0B,CAAC,EAAE,EAAE,CAAC;gBAC9F,8CAA8C;gBAC9C,MAAM,GAAG,GAAI,MAA6B,CAAC,KAAK,CAAA;gBAChD,IAAI,GAAG;oBAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC5E,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;YACrG,CAAC;YACD,kEAAkE;YAClE,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC9C,IAAI,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;gBAAC,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAAC,CAAC;YAClG,yBAAyB;YACzB,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9E,iDAAiD;YACjD,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;YACnG,qBAAqB;YACrB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC9C,IAAI,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;gBAAC,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAAC,CAAC;YACnG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,YAAY,EAAE,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAA;YAClC,IAAI,CAAC,OAAO;gBAAE,SAAQ;YACtB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC3B,wDAAwD;YACxD,sDAAsD;YACtD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC/B,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,UAAU,CAAA;YAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5D,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;YAC7D,IAAI,GAAG,CAAC,IAAI,IAAI,UAAU,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACxC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;YACxI,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBAAE,SAAQ;YACzC,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAA;YACrC,IAAI,EAAE,CAAC,IAAI;gBAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QACpE,CAAC;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,MAAM;YAAE,OAAM;QAClB,IAAI,CAAC;YACH,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACjE,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACzB,OAAM;QACR,CAAC;QACD,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;YACf,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;YAC1B,QAAQ,EAAE,CAAA;YACV,gDAAgD;YAChD,oDAAoD;YACpD,SAAS,CAAC,KAAK,EAAE,CAAA;YACjB,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QACvC,CAAC,CAAA;QACD,EAAE,CAAC,SAAS,GAAG,CAAC,EAAgB,EAAE,EAAE;YAClC,IAAI,GAA4B,CAAA;YAChC,IAAI,CAAC;gBAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAM;YAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,GAAG,CAAC,IAA0B,CAAA;YACxC,IAAI,CAAC,CAAC;gBAAE,OAAM;YACd,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;gBAClE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzD,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;gBAClE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;oBAAE,OAAM;gBAC5B,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;oBAClF,OAAM;gBACR,CAAC;gBACD,yCAAyC;gBACzC,uDAAuD;gBACvD,8DAA8D;gBAC9D,4DAA4D;gBAC5D,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;gBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACtB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACvC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBAC1B,gCAAgC;gBAChC,0DAA0D;gBAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1C,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACjC,GAAG,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,IAAI,KAAK,OAAO,QAAQ,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,MAAM,GAAG,CAAC,CAAA;oBAC9F,OAAM;gBACR,CAAC;gBACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;oBAC/B,IAAI,GAAG,GAAG,IAAI,GAAG,mBAAmB,EAAE,CAAC;wBACrC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBAC5B,IAAI,CAAC;4BAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;;4BACjB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;wBAClC,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,IAAI,KAAK,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;wBAClG,OAAM;oBACR,CAAC;oBACD,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;oBACnE,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;oBAC5B,OAAM;gBACR,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,uBAAuB,GAAG,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;gBAC1D,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;gBACnC,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;gBAClE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzD,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACZ,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;oBAC9C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpB,CAAC;gBACD,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;gBAClE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,IAAI,OAAO;oBAAE,OAAO,CAAC,KAAK,EAAE,CAAA;gBAC5B,OAAM;YACR,CAAC;QACH,CAAC,CAAA;QACD,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;YAChB,IAAI,KAAK,EAAE,CAAC;gBAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAA;YAAC,CAAC;YACjD,IAAI,MAAM;gBAAE,OAAM;YAClB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YACzB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC,CAAA;QACD,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,GAAuB,CAAC,CAAA;IAC5C,CAAC,CAAA;IAED,OAAO,EAAE,CAAA;IAET,OAAO;QACL,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,GAAG,IAAI,CAAA;YACb,IAAI,KAAK,EAAE,CAAC;gBAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAA;YAAC,CAAC;YACjD,IAAI,CAAC;gBAAC,EAAE,EAAE,KAAK,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QACD,UAAU,EAAE,QAAQ;KACrB,CAAA;AACH,CAAC"}
|
package/dist/base-session.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ export declare abstract class BaseSession {
|
|
|
29
29
|
protected readonly sessionID: string;
|
|
30
30
|
protected readonly name: string;
|
|
31
31
|
protected readonly _lang: Lang;
|
|
32
|
+
/** 中断探针补发间隔(毫秒);来自配置 interruptProbeInterval(秒),非法/缺失时为常量默认值 */
|
|
33
|
+
protected readonly _interruptProbeIntervalMs: number;
|
|
32
34
|
protected _connected: boolean;
|
|
33
35
|
protected _remoteBusy: boolean;
|
|
34
36
|
/**
|
|
@@ -69,6 +71,11 @@ export declare abstract class BaseSession {
|
|
|
69
71
|
/** 累积原始字节总数(单调递增,前端增量游标) */
|
|
70
72
|
private _rawTotal;
|
|
71
73
|
protected readonly _history: SessionHistory;
|
|
74
|
+
/**
|
|
75
|
+
* 会话实例代次:每次构造生成唯一值。同名终端重建/进程重启后新实例代次不同,
|
|
76
|
+
* 供 agent 识别"已是新会话"并重置 raw 增量游标;随 raw 上报透传给 server,作为清屏(reset)依据。
|
|
77
|
+
*/
|
|
78
|
+
readonly generation: string;
|
|
72
79
|
/** 生命周期监听器(命令开始/完成事件,agent 转报 server) */
|
|
73
80
|
private _lifecycle;
|
|
74
81
|
/**
|
|
@@ -78,7 +85,21 @@ export declare abstract class BaseSession {
|
|
|
78
85
|
* 仅当确实发过 ^C 才去缓冲区找 ^C 回显,天然排除历史残留 ^C 的误判。
|
|
79
86
|
*/
|
|
80
87
|
private _interruptSent;
|
|
81
|
-
|
|
88
|
+
/**
|
|
89
|
+
* 已补发中断探针的命令序号集合(set 即"探针已发"记录)。
|
|
90
|
+
* 探针在用户显式 Ctrl+C 时补发,其回显可能迟到落到后续命令的输出窗口里,
|
|
91
|
+
* 保留序号以便无论何时到达都从可见输出中剔除其回显(见 _stripProbeEchoes)。
|
|
92
|
+
* 不清空:迟到可能跨多条命令(Raw 视图保留原始字节,不经此剔除)。
|
|
93
|
+
*/
|
|
94
|
+
private _probeSeqs;
|
|
95
|
+
/**
|
|
96
|
+
* 中断探针周期定时器:Ctrl+C 后立即补发首条探针,随后每 _interruptProbeIntervalMs 补发一次。
|
|
97
|
+
* null = 不在中断周期内。仅"周期性重发探针"用,不参与完成判定(完成只认当前 seq 标记)。
|
|
98
|
+
*/
|
|
99
|
+
private _interruptTimer;
|
|
100
|
+
constructor(sessionID: string, history: SessionHistory, name?: string, _lang?: Lang,
|
|
101
|
+
/** 中断探针补发间隔(毫秒);来自配置 interruptProbeInterval(秒),非法/缺失时为常量默认值 */
|
|
102
|
+
_interruptProbeIntervalMs?: number);
|
|
82
103
|
/** 向传输层写入字节(子类实现:SSH 写 stream / 本地写 Bun.Terminal) */
|
|
83
104
|
protected abstract _write(data: string): void;
|
|
84
105
|
/** 关闭传输层资源(子类实现:SSH 关 client+stream / 本地关 term+proc) */
|
|
@@ -86,7 +107,7 @@ export declare abstract class BaseSession {
|
|
|
86
107
|
/** 结果中的类型专属字段(SSH 附加 host,本地为空) */
|
|
87
108
|
protected get _extraResult(): Partial<ExecResult>;
|
|
88
109
|
/**
|
|
89
|
-
*
|
|
110
|
+
* 提交命令:立即返回、不等待结果;命令在该终端前台执行,完成后由后台 watch 收集输出进 history
|
|
90
111
|
* @param command 命令
|
|
91
112
|
* @returns 提交结果(立即返回,不等待命令完成)
|
|
92
113
|
*/
|
|
@@ -172,6 +193,67 @@ export declare abstract class BaseSession {
|
|
|
172
193
|
* @returns 实际写入 PTY 的文本(尾部带 \r,行分隔已按 shell 类型/平台规范化)
|
|
173
194
|
*/
|
|
174
195
|
private _composeCommand;
|
|
196
|
+
/**
|
|
197
|
+
* 当前 shell 的 PTY **提交分隔符**(让 shell 执行该行):Windows shell(pwsh/cmd,ConPTY)→ `\r`
|
|
198
|
+
* (裸 \n 不提交行);其余沿用会话 `_lineSep`(Unix PTY 为 \n,本地会话为 \r)。
|
|
199
|
+
* @returns 提交分隔符字符串
|
|
200
|
+
*/
|
|
201
|
+
private _ptyLineSep;
|
|
202
|
+
/**
|
|
203
|
+
* 组合中断探针写入文本:**不加任何前缀换行**,直接写一条独立的当前 seq 完成标记命令,
|
|
204
|
+
* 末尾用**提交分隔符**让 shell 执行该行。
|
|
205
|
+
*
|
|
206
|
+
* 不加前缀换行的原因:Ctrl+C 后插入的前导 `\r`/`\n` 会被 shell 各算一次 accept-line,
|
|
207
|
+
* 在 SIGINT + 提示符重绘期间额外提交空命令,PTY 回声与 bash readline 增量重绘竞态,
|
|
208
|
+
* 使 marker 回显在字节流里被截断成残片(如缺开头 12 字节的 `printf '\n<S...`),无法被精确剔除。
|
|
209
|
+
* 探针在提示符处补发,本就是干净新行,无需前缀;提交仅靠尾部 `\r`,
|
|
210
|
+
* 与 `_composeCommand` 尾部分隔符一致。
|
|
211
|
+
* @param seq 探针使用的命令序号(被中断命令的当前 seq)
|
|
212
|
+
* @returns 写入 PTY 的探针文本
|
|
213
|
+
*/
|
|
214
|
+
private _composeProbe;
|
|
215
|
+
/**
|
|
216
|
+
* 补发一次中断探针:用户显式 Ctrl+C 后,前台命令可能已死、shell 已回到提示符,
|
|
217
|
+
* 但命令列表被中断丢弃 → 原命令的完成标记永不执行 → busy 卡死。
|
|
218
|
+
* 补写一条"裸标记命令"作为探针:shell 若已回到提示符会读它并打印当前 seq 标记,
|
|
219
|
+
* 使命令正常收尾;若前台程序未死,字节留在 tty 输入缓冲,待 shell 拿回控制权时再读
|
|
220
|
+
* (两种情况均符合预期,保持 busy、绝不误判完成)。
|
|
221
|
+
* 由中断周期调用:写完 \x03 时立即调用一次,之后定时器每间隔调用一次(见 _startInterruptCycle)。
|
|
222
|
+
* 幂等:同一条被中断命令多次补发(立即 1 条 + 每间隔 1 条),先到的当前 seq 标记胜出。
|
|
223
|
+
* @returns 无
|
|
224
|
+
*/
|
|
225
|
+
private _sendInterruptProbe;
|
|
226
|
+
/**
|
|
227
|
+
* 启动中断周期:用户显式 Ctrl+C 后进入。**写完 \x03 立即补发首条探针**(同一次 send 调用内,不再等待),
|
|
228
|
+
* 之后每 _interruptProbeIntervalMs(来自配置,默认 5s)补发一次,直至命令结束/关会话/开始新命令
|
|
229
|
+
* (见 _stopInterruptCycle)。防抖:已在周期内时直接返回——狂按 Ctrl+C 不重启周期、不额外补探针
|
|
230
|
+
* (\x03 字节仍由 send 照常写入)。空闲期(无正在追踪的命令)Ctrl+C 不进入周期,避免无谓探针污染缓冲。
|
|
231
|
+
* 定时器只负责周期性重发探针,不做任何"到点判完成"。
|
|
232
|
+
* @returns 无
|
|
233
|
+
*/
|
|
234
|
+
private _startInterruptCycle;
|
|
235
|
+
/**
|
|
236
|
+
* 中断周期的一次 tick:先判命令是否仍在追踪中,不在则停周期并清状态(不判完成);
|
|
237
|
+
* 仍在则补发一次探针。完成判定始终只认当前 seq 的完成标记,与定时器无关。
|
|
238
|
+
* @returns 无
|
|
239
|
+
*/
|
|
240
|
+
private _onInterruptTick;
|
|
241
|
+
/**
|
|
242
|
+
* 停止中断周期并清周期状态:清定时器,日志记录结束原因(幂等,未在周期内时不做任何事)。
|
|
243
|
+
* 在命令完成收尾、关会话、开始新命令、运行上下文清理等路径调用。
|
|
244
|
+
* @param reason 周期结束原因(用于日志)
|
|
245
|
+
* @returns 无
|
|
246
|
+
*/
|
|
247
|
+
private _stopInterruptCycle;
|
|
248
|
+
/**
|
|
249
|
+
* 从可见输出中剔除中断探针留下的痕迹(探针命令的回显)。
|
|
250
|
+
* 探针在用户中断时补发,其回显可能迟到落到后续命令的输出窗口里;按已记录探针 seq
|
|
251
|
+
* 生成精确回显文本并删除全部出现,从而无论何时到达都剔除。完成标记本身由 stripMarkers
|
|
252
|
+
* 按标记模式统一去除(不限 seq)。Raw 视图不经此函数,保留原始字节。
|
|
253
|
+
* @param text 可见输出文本
|
|
254
|
+
* @returns 剔除探针回显后的文本
|
|
255
|
+
*/
|
|
256
|
+
private _stripProbeEchoes;
|
|
175
257
|
/**
|
|
176
258
|
* 组合命令文本(规范/匹配用形式,始终以 `\n` 分隔行、无尾部回车):命令 + 完成标记。
|
|
177
259
|
* 该形式供 `extractOutputStart` 按 `\n` 切行并做段间宽松匹配(跳过 `>>` 续行提示),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-session.d.ts","sourceRoot":"","sources":["../src/base-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-session.d.ts","sourceRoot":"","sources":["../src/base-session.ts"],"names":[],"mappings":"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"}
|