@keyou007/agent-bot 0.1.13-alpha.1 → 0.1.13-alpha.2

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 (57) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +106 -103
  3. package/README.zh.md +76 -73
  4. package/dist/acp/AcpProcessManager.js +8 -3
  5. package/dist/acp/AcpProcessManager.js.map +1 -1
  6. package/dist/acp/AcpSessionManager.js +15 -0
  7. package/dist/acp/AcpSessionManager.js.map +1 -1
  8. package/dist/cli/help.js +4 -2
  9. package/dist/cli/help.js.map +1 -1
  10. package/dist/cli/serverStatus.js +27 -0
  11. package/dist/cli/serverStatus.js.map +1 -1
  12. package/dist/cli/taskListOutput.js +72 -0
  13. package/dist/cli/taskListOutput.js.map +1 -0
  14. package/dist/cli.js +49 -54
  15. package/dist/cli.js.map +1 -1
  16. package/dist/codex/CodexProcessManager.js +34 -4
  17. package/dist/codex/CodexProcessManager.js.map +1 -1
  18. package/dist/codex/CodexRuntime.js +3 -0
  19. package/dist/codex/CodexRuntime.js.map +1 -1
  20. package/dist/feishu/CardRenderer.js +43 -2
  21. package/dist/feishu/CardRenderer.js.map +1 -1
  22. package/dist/feishu/FeishuConnector.js +16 -5
  23. package/dist/feishu/FeishuConnector.js.map +1 -1
  24. package/dist/index.js +23 -4
  25. package/dist/index.js.map +1 -1
  26. package/dist/proxy/ProxySessionController.js +157 -59
  27. package/dist/proxy/ProxySessionController.js.map +1 -1
  28. package/dist/runtime/AcpRuntimeAdapter.js +3 -0
  29. package/dist/runtime/AcpRuntimeAdapter.js.map +1 -1
  30. package/dist/runtime/agentEnvironment.js +24 -4
  31. package/dist/runtime/agentEnvironment.js.map +1 -1
  32. package/dist/runtime/createAgentRuntimeRegistry.js +7 -3
  33. package/dist/runtime/createAgentRuntimeRegistry.js.map +1 -1
  34. package/dist/state/StateStore.js +12 -9
  35. package/dist/state/StateStore.js.map +1 -1
  36. package/docs/technical-reference.md +9 -3
  37. package/docs/technical-reference.zh.md +9 -3
  38. package/npm-shrinkwrap.json +2 -2
  39. package/package.json +1 -1
  40. package/skills/agent-bot/SKILL.md +53 -22
  41. package/src/acp/AcpProcessManager.ts +16 -3
  42. package/src/acp/AcpSessionManager.ts +14 -0
  43. package/src/cli/help.ts +4 -2
  44. package/src/cli/serverStatus.ts +28 -0
  45. package/src/cli/taskListOutput.ts +91 -0
  46. package/src/cli.ts +66 -51
  47. package/src/codex/CodexProcessManager.ts +38 -3
  48. package/src/codex/CodexRuntime.ts +6 -0
  49. package/src/feishu/CardRenderer.ts +61 -1
  50. package/src/feishu/FeishuConnector.ts +13 -4
  51. package/src/index.ts +35 -3
  52. package/src/proxy/ProxySessionController.ts +186 -59
  53. package/src/runtime/AcpRuntimeAdapter.ts +5 -0
  54. package/src/runtime/agentEnvironment.ts +41 -3
  55. package/src/runtime/createAgentRuntimeRegistry.ts +18 -3
  56. package/src/runtime/types.ts +5 -0
  57. package/src/state/StateStore.ts +12 -9
package/README.zh.md CHANGED
@@ -30,7 +30,7 @@ Agent Bot 运行在你的电脑上,把飞书机器人连接到本机编程 Age
30
30
 
31
31
  检查已安装的 Agent 和登录状态:
32
32
 
33
- ```powershell
33
+ ```bash
34
34
  codex --version
35
35
  codex login status
36
36
  traex --version
@@ -41,114 +41,123 @@ Codex 或 TraeX 中任意一个准备完成后即可继续初始化。`agentbot
41
41
 
42
42
  ### 安装
43
43
 
44
- ```powershell
44
+ ```bash
45
+ # 安装正式版
45
46
  npm install --global @keyou007/agent-bot
47
+ # 如果想要使用最新功能,可以安装 Alpha 版本
48
+ # npm install --global @keyou007/agent-bot@alpha
46
49
  agentbot --version
47
50
  agentbot --help
48
51
  ```
49
52
 
50
- 如需试用当前 Alpha 通道,同时不影响 npm 的稳定版 `latest` 标签:
51
-
52
- ```powershell
53
- npm install --global @keyou007/agent-bot@alpha
54
- ```
55
-
56
- 该命令会把 `agentbot` 安装为主命令。旧的 `agent-bot` 命令暂时保留,运行时会显示弃用警告,并将在后续版本中移除。命令行帮助、状态、进度、交互提示和错误会根据系统语言显示中文或英文;其他未支持语言统一回退英文。JSON 输出不做本地化并保持字段稳定。从源码安装的方法见[技术参考](docs/technical-reference.zh.md#开发与源码安装)。
53
+ 从源码安装的方法见[技术参考](docs/technical-reference.zh.md#开发与源码安装)。
57
54
 
58
55
  ### 初始化
59
56
 
60
- ```powershell
57
+ ```bash
61
58
  agentbot init
62
59
  ```
63
60
 
64
- 初始化会检测 Codex 和 TraeX,并显示已安装的版本。未安装或版本较旧的 Agent 会汇总显示对应的安装或升级命令;输入一个或多个操作编号(用逗号分隔)、输入 `all`,或直接回车跳过维护。命令执行失败不会阻塞后续初始化。检查完成后,可输入编号或标准名选择默认 Agent;当前默认值仍可用时,直接回车即可确认。Agent Bot 会把选择保存到 `config.yaml` 的 `defaults.agent`,供后续新任务使用。
61
+ 初始化会检测 Codex 和 TraeX,并显示已安装的版本。未安装或版本较旧的 Agent 会汇总显示对应的安装或升级命令。Agent Bot 会把配置保存到 `~/.agent-bot/config.yaml` 中。
65
62
 
66
- 然后打开命令显示的链接或扫描二维码,完成飞书机器人创建和授权。初始化会准备 `~/.agent-bot`、保存机器人凭据和授权用户、检查所需权限,并自动启动 Agent Bot。
63
+ 全新的初始化,终端通常会依次显示 3 轮二维码或链接。
67
64
 
68
- 只有 App ID 和 App Secret 都已保存到本地才视为机器人创建成功。如果初始化在完整凭据保存前中断,再次运行 `agentbot init` 会创建新机器人;如果凭据已经保存,则会继续检查该机器人的远端权限和订阅。
65
+ 1. **创建机器人。** 创建带有标准基础消息配置的飞书应用,并保存 App ID、App Secret 和授权用户。该步骤不能跳过,否则 Agent Bot 无法连接飞书。创建时已经提供的权限不再在下方重复列出。
66
+ 2. **添加“接收所有群消息”权限。** 创建机器人后唯一需要额外处理的核心权限是 `im:message.group_msg`,用于接收未 @ 机器人的普通群消息。飞书要求用户在开发者后台手动添加该权限。可以输入 `Y` 跳过等待;缺少该权限时,私聊仍然可用,但群成员必须 @ 机器人才会响应。
67
+ 3. **补充剩余事件和回调。** 创建机器人时使用的模板已经提供 Agent Bot 所需的其他权限,第三步实际只新增:
69
68
 
70
- 如果已有机器人保存了 App ID 和 App Secret,但缺少 `FEISHU_USER_OPEN_ID`,Agent Bot 会在用户第一次私聊机器人时自动补全。该值会写入对应 Profile 的 `.env`,后续消息不会覆盖它,群消息也不会认领这个默认用户。
69
+ | 类型 | 事件或回调 | 功能 |
70
+ | ---- | ---------- | ------------------ |
71
+ | 事件 | `im.chat.updated_v1` | 检测群改名,把群名同步到 agent 任务标题。 |
72
+ | 回调 | `card.action.trigger` | 卡片按钮交互。 |
71
73
 
72
- `im:message.group_msg` 无法通过飞书一键配置新增。缺少该权限时,Agent Bot 会显示二维码,以及已筛选该权限的开发者后台直达链接。请手动新增权限、发布应用版本,并在需要时完成租户管理员审批。Agent Bot 等待权限生效时,可输入 `Y` 跳过该权限并继续初始化;最终结果会提示机器人无法响应未 @ 它的普通群消息。
74
+ 完成这些步骤后,即完成了 `~/.agent-bot` 目录的初始化。Agent Bot 会自动启动,并使用飞书机器人向你发送欢迎消息,你可以开始在飞书中使用 Agent Bot 了。
73
75
 
74
- 缺少非核心权限或订阅时,Agent Bot 会先显示二维码和授权链接,然后立即等待最多 5 分钟使配置生效。终端只提供一个选项:输入 `Y` 跳过可选授权并继续;否则直接在浏览器中完成授权,Agent Bot 会持续等待。可选授权失败或超时不会阻止启动,Agent Bot 会提示可能无法使用的功能。
76
+ Agent Bot 自带保活机制,确保在 Agent Bot,Codex 或 TraeX 崩溃后能够自动重新连接。
75
77
 
76
- | 参数 | 作用 |
77
- | ---------------------- | ------------------------- |
78
- | `--reset` | 备份并完整重置显式指定的 Profile |
79
- | `--skip-feishu` | 仅初始化 Console 使用环境,不启动 Server |
80
- | `--reconfigure-feishu` | 替换已有飞书凭据 |
81
- | `--json` | 输出便于程序读取的结果 |
82
- | `--profile <目录>` | 使用指定目录中的独立 Profile |
83
- | `--config <路径>` | 使用指定配置文件 |
84
-
85
- 升级 Agent Bot 后,可以重新运行 `agentbot init` 刷新 Profile。它会保留现有 `config.yaml` 和 `.env` 中的值,补齐当前版本新增的配置项和环境变量,允许确认或更换默认 Agent,并重新检查 Agent 与机器人配置。如果 Server 已在运行,初始化会安排安全重启,在活动任务完成后加载当前 Agent Bot 版本和更新后的配置。非交互式终端无法询问选择,此时会保留配置中已有的默认 Agent。
78
+ ### 启动与停止
86
79
 
87
- 如需完整重新配置一个 Profile,请先停止它的 Server,并显式指定 Profile:
80
+ 启动服务:
88
81
 
89
- ```powershell
90
- agentbot --profile ~/.agent-bot init --reset
82
+ ```bash
83
+ # agentbot init 会自动启动 Server,一般不需要手动启动。
84
+ agentbot server start
91
85
  ```
92
86
 
93
- 重置会把当前 `config.yaml`、`.env`、`data/` 和 `logs/` 移入 `.reset-backups` 下新的时间戳目录,再创建干净的新文件和目录。已有备份会永久保留,不会被后续重置覆盖或清理。远端旧飞书应用不会被删除。
87
+ 查看服务状态:
94
88
 
95
- ### 启动与停止
96
-
97
- ```powershell
89
+ ```bash
98
90
  agentbot server status
99
91
  ```
100
92
 
101
- `agentbot init` 会自动启动 Server。之后如果手动停止了服务,可执行 `agentbot server start` 再次启动。仅在本地使用时,请通过 `--skip-feishu` 初始化并运行 `agentbot console`。
102
-
103
- `Agent Bot 已启动` 启动卡片会显示当前正在运行的 Agent Bot 版本。每次都会发送到所有已知私聊、最近 1 分钟活跃的普通群,以及所有已加入本次安全重启通知范围的群;话题路由会折算到话题所属群的主会话。
104
-
105
- 打开飞书,找到机器人并发送消息。当前会话没有任务时,Agent Bot 会自动创建。
106
-
107
93
  停止服务:
108
94
 
109
- ```powershell
95
+ ```bash
110
96
  agentbot server stop
111
97
  ```
112
98
 
99
+ 安全重启服务:
100
+
101
+ ```bash
102
+ agentbot server restart
103
+ ```
104
+
105
+ 他会等待当前运行中的 Agent 任务完成后自动重启,确保所有任务都能正常执行。
106
+
113
107
  ### 更新或卸载
114
108
 
115
109
  替换或移除全局包前,先停止正在运行的服务:
116
110
 
117
- ```powershell
111
+ ```bash
118
112
  agentbot server stop
119
113
  npm install --global @keyou007/agent-bot@latest
120
- agentbot server start
114
+ agentbot init # 更新 Profile 并启动 Server
121
115
  ```
122
116
 
123
117
  卸载:
124
118
 
125
- ```powershell
119
+ ```bash
126
120
  agentbot server stop
127
121
  npm uninstall --global @keyou007/agent-bot
128
122
  ```
129
123
 
130
124
  卸载 npm 包不会删除 `~/.agent-bot` 中的用户数据。
131
125
 
132
- ## 日常命令
126
+ ### 多 Profile
133
127
 
134
- ### 服务管理
128
+ 多 Profile 支持在同一台设备上运行多个 Agent Bot 机器人,它们互相独立,互不干扰。
135
129
 
136
- ```powershell
137
- agentbot server status
138
- agentbot server start
139
- agentbot server stop
140
- agentbot server restart
130
+ 使用以下命令创建新 Profile:
131
+
132
+ ```bash
133
+ # 指定新 profile 目录,初始化新机器人
134
+ agentbot --profile ~/.agent-bot-rescue init
135
+ agentbot --profile ~/.agent-bot-rescue server start
136
+ agentbot --profile ~/.agent-bot-rescue server status
137
+ ```
138
+
139
+ 不指定 `--profile` 时使用位于 `~/.agent-bot` 的主 Profile。
140
+
141
+ 每个 Profile 都在所选目录内保存自己的 `config.yaml`、`.env`、`data/` 和 `logs/`,飞书凭据与本地控制端点也相互隔离。
142
+
143
+ ### 重置 Profile
144
+
145
+ 如需完整重新配置一个现有 Profile,请先停止它的 Server,并显式指定 Profile:
146
+
147
+ ```bash
148
+ agentbot --profile ~/.agent-bot server stop # 停止主 Profile 的 Server
149
+ agentbot --profile ~/.agent-bot init --reset # 重置主 Profile
141
150
  ```
142
151
 
143
- `server restart` 默认等待当前工作完成后再重启;等待期间可通过状态卡片下方的 `Cancel` 按钮取消。所有触发同一待执行安全重启的会话,以及最近 1 分钟内活跃的所有会话,都会收到等待状态和开始重启提示;会话一旦加入通知范围,就会保留到本次重启完成。为指定任务安排重启时,请使用 `--task <任务>`,将该任务所在的飞书会话加入通知范围。只有可接受中断时才使用 `--immediate`。
152
+ 重置会把当前 `config.yaml`、`.env`、`data/` 和 `logs/` 移入 `.reset-backups` 目录中,再创建干净的新文件和目录。已有备份会永久保留,不会被后续重置覆盖或清理。远端旧飞书应用不会被删除。
144
153
 
145
- Windows 下每次启动 Supervisor 或 Worker 都会重新读取最新的系统和用户环境变量。修改 `PATH` 或其他系统环境变量后重启服务即可生效,当前 Profile 选择仍保持隔离。
154
+ 重置不会清理 Codex 或 TraeX 的聊天会话,只会重建飞书机器人以及清理 Agent Bot 的本地数据。
146
155
 
147
- `server status` 会显示当前运行服务使用的 Lark App ID;添加 `--json` 后可从 `feishuAppId` 字段读取。
156
+ ## 日常命令
148
157
 
149
- ### Console
158
+ ### Console UI/TUI
150
159
 
151
- ```powershell
160
+ ```bash
152
161
  agentbot console
153
162
  ```
154
163
 
@@ -156,8 +165,9 @@ Console UI 不需要飞书凭据。除非传入 `--force`,否则不会与正
156
165
 
157
166
  ### 任务管理
158
167
 
159
- ```powershell
168
+ ```bash
160
169
  agentbot task list
170
+ agentbot task current [--json]
161
171
  agentbot task status <任务>
162
172
  agentbot task prompt <任务> "<prompt>"
163
173
  agentbot task newgroup <任务> [标题] [--agent <标准名>] [--dir <路径> | --nodir]
@@ -166,13 +176,13 @@ agentbot task title <任务> "<标题>"
166
176
  agentbot task stop <任务>
167
177
  ```
168
178
 
169
- `<任务>` 可以是 `task list` 中的序号、任务 ID 或唯一的任务 ID 前缀。运行 `agentbot --help` 可查看完整 CLI 参数。
179
+ `task current` 会显示当前调用 CLI 的 Codex 或 TraeX 任务详情;JSON 输出包含 Agent Bot 的 `localSessionId` 和原生 `remoteSessionId`。`<任务>` 可以是 `task list` 中的序号、任务 ID 或唯一的任务 ID 前缀。运行 `agentbot --help` 可查看完整 CLI 参数。
170
180
 
171
181
  `task newgroup` 会创建飞书群和新任务。默认继承源任务的 Agent 和运行设置;`--agent <标准名>` 可选择另一个已配置的 Agent,此时仍继承源任务的项目形态,但 Provider、模型、思考强度和权限模式使用目标 Agent 自己的 Runtime 默认值。`--dir` 可覆盖项目目录并支持 `~`,`--nodir` 会强制创建 Projectless App Server 任务。`task forkgroup` 从源任务最新可用的已完成 turn 创建分支,不会中断正在执行的 turn。两个命令都要求 Server 正在运行,邀请 Profile 中保存的授权用户,不会切换源会话的当前任务,并支持 `--json`。
172
182
 
173
183
  ## 飞书命令
174
184
 
175
- 普通文本会继续当前任务,以 `/` 开头的消息会作为命令处理。
185
+ 在飞书聊天框直接输入 `/` 开头的消息会作为命令处理。
176
186
 
177
187
  | 命令 | 作用 |
178
188
  | --------------------------------------- | -------------------------- |
@@ -194,14 +204,11 @@ agentbot task stop <任务>
194
204
  | `/newgroup [标题] [--dir <cwd> \| --nodir]` | 为新任务创建私有群 |
195
205
  | `/forkgroup [标题]` | 将当前位置分支到私有群 |
196
206
  | `/agent [名称]` | 打开 Agent 设置或切换默认 Agent |
197
- | `! <命令>` | 在任务目录执行本地命令 |
198
207
  | `/restart [--force]` | 默认安全重启;`--force` 立即重启 |
199
208
  | `/help` | 显示聊天内帮助 |
200
209
 
201
210
  斜杠命令支持任意唯一前缀,复合命令还支持首字母缩写:`/sess` 等同于 `/sessions`,`/fg` 等同于 `/forkgroup`,`/ng` 等同于 `/newgroup`,`/ns` 等同于 `/nosteer`。完整命令名优先;`/s`、`/f` 等匹配多个命令的前缀会被拒绝,并列出全部候选命令。
202
211
 
203
- `/agent`、`/provider`、`/model`、`/thinking` 和 `/permissions` 在存在可选项时使用同一张运行设置卡片。配置了多个 Agent 时,卡片会增加 Agent tab,用于选择后续新任务使用的默认 Agent;即使当前聊天还没有任务,`/agent` 也能打开该 tab。只配置一个 Agent 时,`/agent` 直接显示当前 Agent,不打开卡片。现有任务仍保持原来的 Agent,使用不同 Agent 的任务可以相互独立地运行。`/agent <名称>` 继续支持直接选择。没有可切换的 Provider 时,`/provider` 同样只显示当前 Provider。其余四个命令激活各自对应的 tab,且不接受参数。没有可继承设置的新任务使用所选 Agent 的默认 Provider。
204
-
205
212
  私聊、群正文和话题分别维护当前任务。可以单独发送图片,也可以同时发送文字和图片。任务运行中发送普通文字会追加指令;需要确保形成后续 turn 时使用 `/queue`(或 `/nosteer`)。
206
213
 
207
214
  `/sessions` 卡片每页显示 5 个任务,通过 `Previous` 和 `Next` 原地翻页。每个任务都提供 `NewGroup` 和 `ForkGroup` 操作,可直接按所选任务创建同项目的新群,或把所选任务 Fork 到新群。
@@ -218,6 +225,12 @@ agentbot task stop <任务>
218
225
 
219
226
  把已绑定任务的群改名为 `[agent] [project dir] title` 时,只会把 `title` 同步到当前任务;Agent 和工程目录前缀仅作为群元数据,不会写入任务标题。旧的 `[agent] title` 格式仍然兼容。
220
227
 
228
+ ## 本地命令
229
+
230
+ 在飞书聊天框直接输入 `!` 开头的消息会作为本地命令处理,命令会在当前任务目录执行。
231
+
232
+ 比如 `! ls` 会列出当前目录下的文件,`! git status` 会显示当前 Git 仓库的状态。
233
+
221
234
  ## 配置与数据
222
235
 
223
236
  Agent Bot 将用户相关文件保存在仓库之外:
@@ -231,19 +244,9 @@ Agent Bot 将用户相关文件保存在仓库之外:
231
244
 
232
245
  可通过 `AGENT_BOT_HOME` 修改用户数据目录。配置示例见 [config.example.yaml](config.example.yaml)。
233
246
 
234
- 默认情况下,Agent Bot 会响应机器人所在群内的普通消息。将 `feishu.respondToAllGroupMessages` 设为 `false` 后,群消息必须 @ 当前机器人才会响应,私聊不受影响。初始化仍会申请完整的群消息权限,因此以后切换该配置无需重新授权。
235
-
236
- ### 多 Profile
237
-
238
- 不指定 `--profile` 时使用位于 `~/.agent-bot` 的主 Profile。运行其他相互隔离的机器人时,需要在每次命令中显式指定其目录:
247
+ Agent 进程会继承普通父进程变量及其显式配置的 `agents.<name>.env`。启动 Agent 前,Agent Bot 会移除继承的 `FEISHU_*` 凭据和内部 `AGENT_BOT_*` 状态,再仅提供带命名空间的非敏感 Profile 与 Lark 身份上下文;`FEISHU_APP_SECRET` 永远不会传入 Agent 进程。
239
248
 
240
- ```powershell
241
- agentbot --profile ~/.agent-bot-rescue init
242
- agentbot --profile ~/.agent-bot-rescue server start
243
- agentbot --profile ~/.agent-bot-rescue server status
244
- ```
245
-
246
- 其他 Profile 不按名称注册,而是直接使用目录。每个 Profile 都在所选目录内保存自己的 `config.yaml`、`.env`、`data/` 和 `logs/`,飞书凭据与本地控制端点也相互隔离。`--profile` 不能和 `--config` 同时使用。
249
+ 默认情况下,Agent Bot 会响应机器人所在群内的普通消息。将 `feishu.respondToAllGroupMessages` 设为 `false` 后,群消息必须 @ 当前机器人才会响应,私聊不受影响。初始化仍会申请完整的群消息权限,因此以后切换该配置无需重新授权。
247
250
 
248
251
  ## 常见问题
249
252
 
@@ -1,18 +1,23 @@
1
1
  import readline from "node:readline";
2
2
  import { AcpJsonRpcConnection } from "./AcpJsonRpcConnection.js";
3
- import { agentBotEnvironment } from "../runtime/agentEnvironment.js";
3
+ import { agentBotEnvironment, } from "../runtime/agentEnvironment.js";
4
4
  import { spawnStdioCommand } from "../utils/spawnCommand.js";
5
5
  export class AcpProcessManager {
6
6
  logger;
7
+ environmentContext;
7
8
  processes = new Map();
8
- constructor(logger) {
9
+ constructor(logger, environmentContext = () => ({})) {
9
10
  this.logger = logger;
11
+ this.environmentContext = environmentContext;
10
12
  }
11
13
  start(processKey, agentName, agent) {
12
14
  if (this.processes.has(processKey)) {
13
15
  throw new Error(`ACP process already exists: ${processKey}`);
14
16
  }
15
- const child = spawnStdioCommand(agent.command, agent.args, agentBotEnvironment(process.env, agent.env));
17
+ const child = spawnStdioCommand(agent.command, agent.args, agentBotEnvironment(process.env, agent.env, {
18
+ ...this.environmentContext(),
19
+ agentName,
20
+ }));
16
21
  const childLogger = this.logger.child({ processKey, agentName });
17
22
  const connection = new AcpJsonRpcConnection(child, childLogger);
18
23
  const managed = {
@@ -1 +1 @@
1
- {"version":3,"file":"AcpProcessManager.js","sourceRoot":"","sources":["../../src/acp/AcpProcessManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcpProcessManager.js","sourceRoot":"","sources":["../../src/acp/AcpProcessManager.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export class AcpSessionManager {
7
7
  sessions = new Map();
8
8
  sessionsByAcpId = new Map();
9
9
  processStart;
10
+ processVersion;
10
11
  constructor(agentName, agent, processManager, logger) {
11
12
  this.agentName = agentName;
12
13
  this.agent = agent;
@@ -16,6 +17,15 @@ export class AcpSessionManager {
16
17
  get(localSessionId) {
17
18
  return this.sessions.get(localSessionId);
18
19
  }
20
+ getProcessInfo() {
21
+ const pid = this.processManager.get(this.agentName)?.child.pid;
22
+ if (!pid)
23
+ return {};
24
+ return {
25
+ pid,
26
+ ...(this.processVersion ? { version: this.processVersion } : {}),
27
+ };
28
+ }
19
29
  async create(input) {
20
30
  if (input.agentName !== this.agentName)
21
31
  throw new Error(`Unexpected agent: ${input.agentName}`);
@@ -86,6 +96,7 @@ export class AcpSessionManager {
86
96
  this.sessions.clear();
87
97
  this.sessionsByAcpId.clear();
88
98
  this.processStart = undefined;
99
+ this.processVersion = undefined;
89
100
  this.processManager.stopAll();
90
101
  }
91
102
  async setMode(localSessionId, modeId) {
@@ -131,6 +142,7 @@ export class AcpSessionManager {
131
142
  }
132
143
  }
133
144
  async startProcess() {
145
+ this.processVersion = undefined;
134
146
  const managed = this.processManager.start(this.agentName, this.agentName, this.agent);
135
147
  try {
136
148
  const connection = managed.connection;
@@ -162,6 +174,9 @@ export class AcpSessionManager {
162
174
  version: "0.1.0",
163
175
  },
164
176
  });
177
+ const version = initializeResult.agentInfo?.version?.trim();
178
+ if (version)
179
+ this.processVersion = version;
165
180
  if (initializeResult.authMethods?.length) {
166
181
  const method = initializeResult.authMethods[0];
167
182
  this.logger.info({ methodId: method.id }, "Authenticating ACP agent with first advertised method.");
@@ -1 +1 @@
1
- {"version":3,"file":"AcpSessionManager.js","sourceRoot":"","sources":["../../src/acp/AcpSessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcpSessionManager.js","sourceRoot":"","sources":["../../src/acp/AcpSessionManager.ts"],"names":[],"mappings":"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"}
package/dist/cli/help.js CHANGED
@@ -12,10 +12,11 @@ export function renderCliHelp(version, language = cliLanguage) {
12
12
  init --reset 重置并重新配置显式指定的 Profile
13
13
  console 打开本地控制台
14
14
  server start 在后台启动 Agent Bot
15
- server status 显示服务、飞书 App ID 和安全重启状态
15
+ server status 显示服务、飞书 App ID、Agent 进程和安全重启状态
16
16
  server restart [--task <任务>] 安排安全重启并将状态发回指定任务会话
17
17
  server stop 停止 Agent Bot
18
18
  task list 列出任务
19
+ task current [--json] 显示当前调用任务的详情
19
20
  task status <任务> 显示任务状态
20
21
  task chat <任务> 显示任务绑定的飞书会话
21
22
  task prompt <任务> <提示词> 向任务发送提示词
@@ -64,10 +65,11 @@ Common commands:
64
65
  init --reset Reset and reconfigure an explicit profile
65
66
  console Open the local console
66
67
  server start Start Agent Bot in the background
67
- server status Show the server, Lark App ID, and safe-restart status
68
+ server status Show the server, Lark App ID, Agent processes, and safe-restart status
68
69
  server restart [--task <task>] Schedule a safe restart and return status to the task's conversation
69
70
  server stop Stop Agent Bot
70
71
  task list List tasks
72
+ task current [--json] Show details for the task invoking the CLI
71
73
  task status <task> Show task status
72
74
  task chat <task> Show the task's Lark chat binding
73
75
  task prompt <task> <prompt> Send a Prompt to a task
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAQ,GAAgB,WAAW;IAChF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD9B,CAAC;IACA,CAAC;IAED,OAAO,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD5B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAQ,GAAgB,WAAW;IAChF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD9B,CAAC;IACA,CAAC;IAED,OAAO,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD5B,CAAC;AACF,CAAC"}
@@ -22,17 +22,44 @@ export function formatServerStatus(data, language = cliLanguage) {
22
22
  const safeRestart = value.safeRestartScheduled
23
23
  ? cliText(`pending (${String(value.safeRestartReason ?? "no reason provided")})`, `等待中(${String(value.safeRestartReason ?? "未提供原因")})`, language)
24
24
  : cliText("not scheduled", "未计划", language);
25
+ const agents = formatAgentProcesses(value.agents, language);
25
26
  return [
26
27
  `${cliText("Agent Bot server: ", "Agent Bot 服务:", language)}${state}`,
27
28
  `${cliText("Lark App ID: ", "飞书 App ID:", language)}${value.feishuAppId ?? cliText("not configured", "未配置", language)}`,
28
29
  `${cliText("PID: ", "PID:", language)}${value.pid ?? "-"}`,
29
30
  `${cliText("Started at: ", "启动时间:", language)}${value.startedAt ?? "-"}`,
30
31
  `${cliText("Supervisor: ", "Supervisor:", language)}${value.supervised ? cliText("enabled", "已启用", language) : cliText("disabled", "未启用", language)}`,
32
+ ...agents,
31
33
  `${cliText("Running tasks: ", "运行中任务:", language)}${activity.runningSessions ?? 0}`,
32
34
  `${cliText("Pending final deliveries: ", "待发送最终结果:", language)}${activity.pendingFinalDeliveries ?? 0}`,
33
35
  `${cliText("Safe restart: ", "安全重启:", language)}${safeRestart}`,
34
36
  "",
35
37
  ].join("\n");
36
38
  }
39
+ function formatAgentProcesses(value, language) {
40
+ const agents = Array.isArray(value)
41
+ ? value.filter((item) => Boolean(item) && typeof item === "object")
42
+ : [];
43
+ if (agents.length === 0) {
44
+ return [`${cliText("Agents: ", "Agent 进程:", language)}-`];
45
+ }
46
+ return [
47
+ cliText("Agents:", "Agent 进程:", language),
48
+ ...agents.map((agent) => {
49
+ const name = typeof agent.name === "string" && agent.name.trim() ? agent.name.trim() : "-";
50
+ const title = typeof agent.title === "string" && agent.title.trim() ? agent.title.trim() : undefined;
51
+ const label = title && title !== name ? `${name} (${title})` : name;
52
+ const pid = typeof agent.pid === "number" && Number.isInteger(agent.pid) && agent.pid > 0
53
+ ? String(agent.pid)
54
+ : "-";
55
+ const version = typeof agent.version === "string" && agent.version.trim()
56
+ ? agent.version.trim()
57
+ : "-";
58
+ return language === "zh"
59
+ ? ` ${label}:PID ${pid},版本 ${version}`
60
+ : ` ${label}: PID ${pid}, version ${version}`;
61
+ }),
62
+ ];
63
+ }
37
64
  import { cliLanguage, cliText } from "./i18n.js";
38
65
  //# sourceMappingURL=serverStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serverStatus.js","sourceRoot":"","sources":["../../src/cli/serverStatus.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,yBAAyB,CACvC,IAAa,EACb,qBAA8B;IAE9B,MAAM,KAAK,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAC5C,CAAC,CAAC,IAA+B;QACjC,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO;QACL,GAAG,KAAK;QACR,WAAW,EAAE,qBAAqB,IAAI,IAAI;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAa,EAAE,QAAQ,GAAgB,WAAW;IACnF,MAAM,KAAK,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QACnE,CAAC,CAAC,KAAK,CAAC,QAAmC;QAC3C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK;QACnC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK;YACrB,CAAC,CAAC,OAAO,CAAC,+BAA+B,EAAE,aAAa,EAAE,QAAQ,CAAC;YACnE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,oBAAoB;QAC5C,CAAC,CAAC,OAAO,CACL,YAAY,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,oBAAoB,CAAC,GAAG,EACtE,OAAO,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,EACpD,QAAQ,CACT;QACH,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO;QACL,GAAG,OAAO,CAAC,oBAAoB,EAAE,eAAe,EAAE,QAAQ,CAAC,GAAG,KAAK,EAAE;QACrE,GAAG,OAAO,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE;QACvH,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;QAC1D,GAAG,OAAO,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE;QACxE,GAAG,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE;QACrJ,GAAG,OAAO,CAAC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,eAAe,IAAI,CAAC,EAAE;QACnF,GAAG,OAAO,CAAC,4BAA4B,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,sBAAsB,IAAI,CAAC,EAAE;QACvG,GAAG,OAAO,CAAC,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,WAAW,EAAE;QAC/D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AACD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"serverStatus.js","sourceRoot":"","sources":["../../src/cli/serverStatus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { cliLanguage, cliText } from "./i18n.js";
2
+ export function formatTaskList(sessions, language = cliLanguage, currentThreadIds = []) {
3
+ if (sessions.length === 0)
4
+ return cliText("No tasks.\n", "没有任务。\n", language);
5
+ const current = resolveCurrentTask(sessions, currentThreadIds);
6
+ const currentLocalSessionId = current.status === "found" ? current.session.localSessionId : undefined;
7
+ return sessions.map((session, index) => {
8
+ const title = session.title ?? cliText("Untitled task", "未命名任务", language);
9
+ const current = session.localSessionId === currentLocalSessionId
10
+ ? ` [${cliText("Current", "当前任务", language)}]`
11
+ : "";
12
+ const nativeId = nativeTaskIdLabel(session, language);
13
+ return [
14
+ `${index + 1}.${current} [${taskStateLabel(session.status, language)}/${taskStateLabel(session.lastTurnStatus, language)}] ${title}`,
15
+ ` ${cliText("Agent: ", "Agent:", language)}${session.agentName} · ${cliText("AgentBot task ID: ", "AgentBot 任务 ID:", language)}${session.localSessionId}`,
16
+ ` ${nativeId ? `${nativeId} · ` : ""}${session.contextKey} · ${session.updatedAt}`,
17
+ ].join("\n");
18
+ }).join("\n") + "\n";
19
+ }
20
+ export function currentAppServerThreadIds(env) {
21
+ return [...new Set([
22
+ env.CODEX_THREAD_ID?.trim(),
23
+ env.TRAECLI_THREAD_ID?.trim(),
24
+ ].filter((value) => Boolean(value)))];
25
+ }
26
+ export function resolveCurrentTask(sessions, currentThreadIds) {
27
+ const threadIds = [...new Set(currentThreadIds.map((value) => value.trim()).filter(Boolean))];
28
+ if (threadIds.length === 0)
29
+ return { status: "missing-thread-id" };
30
+ const candidates = new Set(threadIds);
31
+ const matches = sessions.filter((session) => session.remoteSessionId && candidates.has(session.remoteSessionId));
32
+ if (matches.length === 0)
33
+ return { status: "not-found", threadIds };
34
+ if (matches.length === 1)
35
+ return { status: "found", session: matches[0] };
36
+ const running = matches.filter((session) => session.status === "running" || session.lastTurnStatus === "running");
37
+ if (running.length === 1)
38
+ return { status: "found", session: running[0] };
39
+ return { status: "ambiguous", sessions: matches, threadIds };
40
+ }
41
+ export function taskStateLabel(status, language = cliLanguage) {
42
+ if (!status)
43
+ return "-";
44
+ const chinese = {
45
+ starting: "启动中",
46
+ ready: "就绪",
47
+ running: "运行中",
48
+ closed: "已关闭",
49
+ failed: "失败",
50
+ completed: "已完成",
51
+ cancelled: "已取消",
52
+ interrupted: "已中断",
53
+ inProgress: "进行中",
54
+ active: "活动中",
55
+ idle: "空闲",
56
+ not_loaded: "未加载",
57
+ error: "错误",
58
+ };
59
+ return language === "zh" ? chinese[status] ?? status : status;
60
+ }
61
+ function nativeTaskIdLabel(session, language) {
62
+ if (session.runtimeKind === "acp" || session.acpSessionId) {
63
+ const sessionId = session.acpSessionId ?? session.remoteSessionId;
64
+ return sessionId
65
+ ? `${cliText("ACP session ID: ", "ACP Session ID:", language)}${sessionId}`
66
+ : undefined;
67
+ }
68
+ return session.remoteSessionId
69
+ ? `${cliText("App Server thread ID: ", "App Server 原生任务 ID(Thread ID):", language)}${session.remoteSessionId}`
70
+ : undefined;
71
+ }
72
+ //# sourceMappingURL=taskListOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskListOutput.js","sourceRoot":"","sources":["../../src/cli/taskListOutput.ts"],"names":[],"mappings":"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"}