@keyou007/agent-bot 0.1.13-alpha.0 → 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.
- package/.env.example +2 -2
- package/CHANGELOG.md +15 -0
- package/README.md +107 -98
- package/README.zh.md +81 -72
- package/dist/acp/AcpProcessManager.js +8 -3
- package/dist/acp/AcpProcessManager.js.map +1 -1
- package/dist/acp/AcpSessionManager.js +15 -0
- package/dist/acp/AcpSessionManager.js.map +1 -1
- package/dist/cli/ServerStarter.js +17 -2
- package/dist/cli/ServerStarter.js.map +1 -1
- package/dist/cli/controlProtocol.js.map +1 -1
- package/dist/cli/help.js +16 -4
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/serverStatus.js +27 -0
- package/dist/cli/serverStatus.js.map +1 -1
- package/dist/cli/taskListOutput.js +72 -0
- package/dist/cli/taskListOutput.js.map +1 -0
- package/dist/cli.js +88 -54
- package/dist/cli.js.map +1 -1
- package/dist/codex/CodexProcessManager.js +34 -4
- package/dist/codex/CodexProcessManager.js.map +1 -1
- package/dist/codex/CodexRuntime.js +3 -0
- package/dist/codex/CodexRuntime.js.map +1 -1
- package/dist/commands/CommandRouter.js +5 -0
- package/dist/commands/CommandRouter.js.map +1 -1
- package/dist/config/FeishuUserOpenIdStore.js +76 -0
- package/dist/config/FeishuUserOpenIdStore.js.map +1 -0
- package/dist/config/loadConfig.js +3 -0
- package/dist/config/loadConfig.js.map +1 -1
- package/dist/feishu/CardRenderer.js +123 -22
- package/dist/feishu/CardRenderer.js.map +1 -1
- package/dist/feishu/FeishuConnector.js +16 -5
- package/dist/feishu/FeishuConnector.js.map +1 -1
- package/dist/index.js +125 -26
- package/dist/index.js.map +1 -1
- package/dist/presentation/turnGraph.js +36 -0
- package/dist/presentation/turnGraph.js.map +1 -0
- package/dist/proxy/ProxySessionController.js +425 -104
- package/dist/proxy/ProxySessionController.js.map +1 -1
- package/dist/runtime/AcpRuntimeAdapter.js +3 -0
- package/dist/runtime/AcpRuntimeAdapter.js.map +1 -1
- package/dist/runtime/agentEnvironment.js +24 -4
- package/dist/runtime/agentEnvironment.js.map +1 -1
- package/dist/runtime/createAgentRuntimeRegistry.js +7 -3
- package/dist/runtime/createAgentRuntimeRegistry.js.map +1 -1
- package/dist/startup/StartupNotifier.js +16 -7
- package/dist/startup/StartupNotifier.js.map +1 -1
- package/dist/startup/startFeishu.js +2 -2
- package/dist/startup/startFeishu.js.map +1 -1
- package/dist/state/StateStore.js +172 -0
- package/dist/state/StateStore.js.map +1 -1
- package/dist/state/migrations.js +21 -0
- package/dist/state/migrations.js.map +1 -1
- package/dist/supervision/SafeRestartNotifier.js +46 -3
- package/dist/supervision/SafeRestartNotifier.js.map +1 -1
- package/dist/supervision/SafeRestartScheduler.js +65 -6
- package/dist/supervision/SafeRestartScheduler.js.map +1 -1
- package/dist/supervision/replacementSupervisor.js +27 -2
- package/dist/supervision/replacementSupervisor.js.map +1 -1
- package/dist/supervisor.js +27 -2
- package/dist/supervisor.js.map +1 -1
- package/docs/technical-reference.md +20 -7
- package/docs/technical-reference.zh.md +20 -7
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/skills/agent-bot/SKILL.md +63 -26
- package/src/acp/AcpProcessManager.ts +16 -3
- package/src/acp/AcpSessionManager.ts +14 -0
- package/src/cli/ServerStarter.ts +25 -2
- package/src/cli/controlProtocol.ts +6 -1
- package/src/cli/help.ts +16 -4
- package/src/cli/serverStatus.ts +28 -0
- package/src/cli/taskListOutput.ts +91 -0
- package/src/cli.ts +123 -51
- package/src/codex/CodexProcessManager.ts +38 -3
- package/src/codex/CodexRuntime.ts +6 -0
- package/src/commands/CommandRouter.ts +4 -0
- package/src/commands/commandTypes.ts +1 -0
- package/src/config/FeishuUserOpenIdStore.ts +81 -0
- package/src/config/loadConfig.ts +3 -0
- package/src/feishu/CardRenderer.ts +169 -22
- package/src/feishu/FeishuConnector.ts +13 -4
- package/src/index.ts +195 -23
- package/src/presentation/turnGraph.ts +48 -0
- package/src/proxy/ProxySessionController.ts +507 -112
- package/src/runtime/AcpRuntimeAdapter.ts +5 -0
- package/src/runtime/agentEnvironment.ts +41 -3
- package/src/runtime/createAgentRuntimeRegistry.ts +18 -3
- package/src/runtime/types.ts +5 -0
- package/src/startup/StartupNotifier.ts +23 -7
- package/src/startup/startFeishu.ts +3 -2
- package/src/state/StateStore.ts +224 -0
- package/src/state/migrations.ts +21 -0
- package/src/supervision/SafeRestartNotifier.ts +53 -4
- package/src/supervision/SafeRestartScheduler.ts +78 -7
- package/src/supervision/replacementSupervisor.ts +27 -1
- package/src/supervisor.ts +33 -2
package/README.zh.md
CHANGED
|
@@ -14,6 +14,7 @@ Agent Bot 运行在你的电脑上,把飞书机器人连接到本机编程 Age
|
|
|
14
14
|
|
|
15
15
|
- 在飞书中使用本机已有的 Codex 或 TraeX 登录
|
|
16
16
|
- 创建、继续、切换、分支和停止任务
|
|
17
|
+
- 从任意成功完成的思考卡片重置当前对话
|
|
17
18
|
- 使用文字、图片、群聊和话题协作
|
|
18
19
|
- 排队后续 Prompt,或在任务运行中追加指令
|
|
19
20
|
- Agent Bot 重启后继续已有工作
|
|
@@ -29,7 +30,7 @@ Agent Bot 运行在你的电脑上,把飞书机器人连接到本机编程 Age
|
|
|
29
30
|
|
|
30
31
|
检查已安装的 Agent 和登录状态:
|
|
31
32
|
|
|
32
|
-
```
|
|
33
|
+
```bash
|
|
33
34
|
codex --version
|
|
34
35
|
codex login status
|
|
35
36
|
traex --version
|
|
@@ -40,112 +41,123 @@ Codex 或 TraeX 中任意一个准备完成后即可继续初始化。`agentbot
|
|
|
40
41
|
|
|
41
42
|
### 安装
|
|
42
43
|
|
|
43
|
-
```
|
|
44
|
+
```bash
|
|
45
|
+
# 安装正式版
|
|
44
46
|
npm install --global @keyou007/agent-bot
|
|
47
|
+
# 如果想要使用最新功能,可以安装 Alpha 版本
|
|
48
|
+
# npm install --global @keyou007/agent-bot@alpha
|
|
45
49
|
agentbot --version
|
|
46
50
|
agentbot --help
|
|
47
51
|
```
|
|
48
52
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
```powershell
|
|
52
|
-
npm install --global @keyou007/agent-bot@alpha
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
该命令会把 `agentbot` 安装为主命令。旧的 `agent-bot` 命令暂时保留,运行时会显示弃用警告,并将在后续版本中移除。命令行帮助、状态、进度、交互提示和错误会根据系统语言显示中文或英文;其他未支持语言统一回退英文。JSON 输出不做本地化并保持字段稳定。从源码安装的方法见[技术参考](docs/technical-reference.zh.md#开发与源码安装)。
|
|
53
|
+
从源码安装的方法见[技术参考](docs/technical-reference.zh.md#开发与源码安装)。
|
|
56
54
|
|
|
57
55
|
### 初始化
|
|
58
56
|
|
|
59
|
-
```
|
|
57
|
+
```bash
|
|
60
58
|
agentbot init
|
|
61
59
|
```
|
|
62
60
|
|
|
63
|
-
初始化会检测 Codex 和 TraeX,并显示已安装的版本。未安装或版本较旧的 Agent
|
|
61
|
+
初始化会检测 Codex 和 TraeX,并显示已安装的版本。未安装或版本较旧的 Agent 会汇总显示对应的安装或升级命令。Agent Bot 会把配置保存到 `~/.agent-bot/config.yaml` 中。
|
|
64
62
|
|
|
65
|
-
|
|
63
|
+
全新的初始化,终端通常会依次显示 3 轮二维码或链接。
|
|
66
64
|
|
|
67
|
-
|
|
65
|
+
1. **创建机器人。** 创建带有标准基础消息配置的飞书应用,并保存 App ID、App Secret 和授权用户。该步骤不能跳过,否则 Agent Bot 无法连接飞书。创建时已经提供的权限不再在下方重复列出。
|
|
66
|
+
2. **添加“接收所有群消息”权限。** 创建机器人后唯一需要额外处理的核心权限是 `im:message.group_msg`,用于接收未 @ 机器人的普通群消息。飞书要求用户在开发者后台手动添加该权限。可以输入 `Y` 跳过等待;缺少该权限时,私聊仍然可用,但群成员必须 @ 机器人才会响应。
|
|
67
|
+
3. **补充剩余事件和回调。** 创建机器人时使用的模板已经提供 Agent Bot 所需的其他权限,第三步实际只新增:
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
| 类型 | 事件或回调 | 功能 |
|
|
70
|
+
| ---- | ---------- | ------------------ |
|
|
71
|
+
| 事件 | `im.chat.updated_v1` | 检测群改名,把群名同步到 agent 任务标题。 |
|
|
72
|
+
| 回调 | `card.action.trigger` | 卡片按钮交互。 |
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
完成这些步骤后,即完成了 `~/.agent-bot` 目录的初始化。Agent Bot 会自动启动,并使用飞书机器人向你发送欢迎消息,你可以开始在飞书中使用 Agent Bot 了。
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
| ---------------------- | ------------------------- |
|
|
75
|
-
| `--reset` | 备份并完整重置显式指定的 Profile |
|
|
76
|
-
| `--skip-feishu` | 仅初始化 Console 使用环境,不启动 Server |
|
|
77
|
-
| `--reconfigure-feishu` | 替换已有飞书凭据 |
|
|
78
|
-
| `--json` | 输出便于程序读取的结果 |
|
|
79
|
-
| `--profile <目录>` | 使用指定目录中的独立 Profile |
|
|
80
|
-
| `--config <路径>` | 使用指定配置文件 |
|
|
76
|
+
Agent Bot 自带保活机制,确保在 Agent Bot,Codex 或 TraeX 崩溃后能够自动重新连接。
|
|
81
77
|
|
|
82
|
-
|
|
78
|
+
### 启动与停止
|
|
83
79
|
|
|
84
|
-
|
|
80
|
+
启动服务:
|
|
85
81
|
|
|
86
|
-
```
|
|
87
|
-
agentbot
|
|
82
|
+
```bash
|
|
83
|
+
# agentbot init 会自动启动 Server,一般不需要手动启动。
|
|
84
|
+
agentbot server start
|
|
88
85
|
```
|
|
89
86
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
### 启动与停止
|
|
87
|
+
查看服务状态:
|
|
93
88
|
|
|
94
|
-
```
|
|
89
|
+
```bash
|
|
95
90
|
agentbot server status
|
|
96
91
|
```
|
|
97
92
|
|
|
98
|
-
`agentbot init` 会自动启动 Server。之后如果手动停止了服务,可执行 `agentbot server start` 再次启动。仅在本地使用时,请通过 `--skip-feishu` 初始化并运行 `agentbot console`。
|
|
99
|
-
|
|
100
|
-
`Agent Bot 已启动` 启动卡片会显示当前正在运行的 Agent Bot 版本。
|
|
101
|
-
|
|
102
|
-
打开飞书,找到机器人并发送消息。当前会话没有任务时,Agent Bot 会自动创建。
|
|
103
|
-
|
|
104
93
|
停止服务:
|
|
105
94
|
|
|
106
|
-
```
|
|
95
|
+
```bash
|
|
107
96
|
agentbot server stop
|
|
108
97
|
```
|
|
109
98
|
|
|
99
|
+
安全重启服务:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
agentbot server restart
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
他会等待当前运行中的 Agent 任务完成后自动重启,确保所有任务都能正常执行。
|
|
106
|
+
|
|
110
107
|
### 更新或卸载
|
|
111
108
|
|
|
112
109
|
替换或移除全局包前,先停止正在运行的服务:
|
|
113
110
|
|
|
114
|
-
```
|
|
111
|
+
```bash
|
|
115
112
|
agentbot server stop
|
|
116
113
|
npm install --global @keyou007/agent-bot@latest
|
|
117
|
-
agentbot
|
|
114
|
+
agentbot init # 更新 Profile 并启动 Server
|
|
118
115
|
```
|
|
119
116
|
|
|
120
117
|
卸载:
|
|
121
118
|
|
|
122
|
-
```
|
|
119
|
+
```bash
|
|
123
120
|
agentbot server stop
|
|
124
121
|
npm uninstall --global @keyou007/agent-bot
|
|
125
122
|
```
|
|
126
123
|
|
|
127
124
|
卸载 npm 包不会删除 `~/.agent-bot` 中的用户数据。
|
|
128
125
|
|
|
129
|
-
|
|
126
|
+
### 多 Profile
|
|
130
127
|
|
|
131
|
-
|
|
128
|
+
多 Profile 支持在同一台设备上运行多个 Agent Bot 机器人,它们互相独立,互不干扰。
|
|
132
129
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
agentbot
|
|
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
|
|
138
150
|
```
|
|
139
151
|
|
|
140
|
-
`
|
|
152
|
+
重置会把当前 `config.yaml`、`.env`、`data/` 和 `logs/` 移入 `.reset-backups` 目录中,再创建干净的新文件和目录。已有备份会永久保留,不会被后续重置覆盖或清理。远端旧飞书应用不会被删除。
|
|
141
153
|
|
|
142
|
-
|
|
154
|
+
重置不会清理 Codex 或 TraeX 的聊天会话,只会重建飞书机器人以及清理 Agent Bot 的本地数据。
|
|
143
155
|
|
|
144
|
-
|
|
156
|
+
## 日常命令
|
|
145
157
|
|
|
146
|
-
### Console
|
|
158
|
+
### Console UI/TUI
|
|
147
159
|
|
|
148
|
-
```
|
|
160
|
+
```bash
|
|
149
161
|
agentbot console
|
|
150
162
|
```
|
|
151
163
|
|
|
@@ -153,8 +165,9 @@ Console UI 不需要飞书凭据。除非传入 `--force`,否则不会与正
|
|
|
153
165
|
|
|
154
166
|
### 任务管理
|
|
155
167
|
|
|
156
|
-
```
|
|
168
|
+
```bash
|
|
157
169
|
agentbot task list
|
|
170
|
+
agentbot task current [--json]
|
|
158
171
|
agentbot task status <任务>
|
|
159
172
|
agentbot task prompt <任务> "<prompt>"
|
|
160
173
|
agentbot task newgroup <任务> [标题] [--agent <标准名>] [--dir <路径> | --nodir]
|
|
@@ -163,13 +176,13 @@ agentbot task title <任务> "<标题>"
|
|
|
163
176
|
agentbot task stop <任务>
|
|
164
177
|
```
|
|
165
178
|
|
|
166
|
-
|
|
179
|
+
`task current` 会显示当前调用 CLI 的 Codex 或 TraeX 任务详情;JSON 输出包含 Agent Bot 的 `localSessionId` 和原生 `remoteSessionId`。`<任务>` 可以是 `task list` 中的序号、任务 ID 或唯一的任务 ID 前缀。运行 `agentbot --help` 可查看完整 CLI 参数。
|
|
167
180
|
|
|
168
181
|
`task newgroup` 会创建飞书群和新任务。默认继承源任务的 Agent 和运行设置;`--agent <标准名>` 可选择另一个已配置的 Agent,此时仍继承源任务的项目形态,但 Provider、模型、思考强度和权限模式使用目标 Agent 自己的 Runtime 默认值。`--dir` 可覆盖项目目录并支持 `~`,`--nodir` 会强制创建 Projectless App Server 任务。`task forkgroup` 从源任务最新可用的已完成 turn 创建分支,不会中断正在执行的 turn。两个命令都要求 Server 正在运行,邀请 Profile 中保存的授权用户,不会切换源会话的当前任务,并支持 `--json`。
|
|
169
182
|
|
|
170
183
|
## 飞书命令
|
|
171
184
|
|
|
172
|
-
|
|
185
|
+
在飞书聊天框直接输入 `/` 开头的消息会作为命令处理。
|
|
173
186
|
|
|
174
187
|
| 命令 | 作用 |
|
|
175
188
|
| --------------------------------------- | -------------------------- |
|
|
@@ -177,6 +190,7 @@ agentbot task stop <任务>
|
|
|
177
190
|
| `/sessions [关键词]` | 浏览可用的 App Server 任务 |
|
|
178
191
|
| `/switch [任务]` | 切换任务,或返回上一个任务 |
|
|
179
192
|
| `/fork [任务]` | 创建并打开任务分支 |
|
|
193
|
+
| `/turns` | 浏览历史对话轮次并重置对话 |
|
|
180
194
|
| `/status [任务]` | 查看任务进度和结果 |
|
|
181
195
|
| `/title <标题>` | 修改当前任务标题 |
|
|
182
196
|
| `/stop` | 停止当前执行 |
|
|
@@ -190,17 +204,16 @@ agentbot task stop <任务>
|
|
|
190
204
|
| `/newgroup [标题] [--dir <cwd> \| --nodir]` | 为新任务创建私有群 |
|
|
191
205
|
| `/forkgroup [标题]` | 将当前位置分支到私有群 |
|
|
192
206
|
| `/agent [名称]` | 打开 Agent 设置或切换默认 Agent |
|
|
193
|
-
| `! <命令>` | 在任务目录执行本地命令 |
|
|
194
207
|
| `/restart [--force]` | 默认安全重启;`--force` 立即重启 |
|
|
195
208
|
| `/help` | 显示聊天内帮助 |
|
|
196
209
|
|
|
197
210
|
斜杠命令支持任意唯一前缀,复合命令还支持首字母缩写:`/sess` 等同于 `/sessions`,`/fg` 等同于 `/forkgroup`,`/ng` 等同于 `/newgroup`,`/ns` 等同于 `/nosteer`。完整命令名优先;`/s`、`/f` 等匹配多个命令的前缀会被拒绝,并列出全部候选命令。
|
|
198
211
|
|
|
199
|
-
`/agent`、`/provider`、`/model`、`/thinking` 和 `/permissions` 在存在可选项时使用同一张运行设置卡片。配置了多个 Agent 时,卡片会增加 Agent tab,用于选择后续新任务使用的默认 Agent;即使当前聊天还没有任务,`/agent` 也能打开该 tab。只配置一个 Agent 时,`/agent` 直接显示当前 Agent,不打开卡片。现有任务仍保持原来的 Agent,使用不同 Agent 的任务可以相互独立地运行。`/agent <名称>` 继续支持直接选择。没有可切换的 Provider 时,`/provider` 同样只显示当前 Provider。其余四个命令激活各自对应的 tab,且不接受参数。没有可继承设置的新任务使用所选 Agent 的默认 Provider。
|
|
200
|
-
|
|
201
212
|
私聊、群正文和话题分别维护当前任务。可以单独发送图片,也可以同时发送文字和图片。任务运行中发送普通文字会追加指令;需要确保形成后续 turn 时使用 `/queue`(或 `/nosteer`)。
|
|
202
213
|
|
|
203
|
-
`/sessions`
|
|
214
|
+
`/sessions` 卡片每页显示 5 个任务,通过 `Previous` 和 `Next` 原地翻页。每个任务都提供 `NewGroup` 和 `ForkGroup` 操作,可直接按所选任务创建同项目的新群,或把所选任务 Fork 到新群。
|
|
215
|
+
|
|
216
|
+
`/turns` 会打开当前任务的已完成轮次列表,每页显示 10 个 turn。每条 turn 使用独立的序号节点和缩进内容;图谱 lane 按真实父轮次绘制 Reset 产生的分支与合并,并跨分页保持连续,不再按完成时间相邻关系直接连线。当前对话位置标记为“当前”,其余记录后的 `Reset` 按钮会把对话上下文恢复到该轮完成时并将标记移动到这里,但不会回退本地文件。成功提示会显示目标轮次的 Prompt 摘要、完成时间和 Turn ID。所选位置之后原本已经完成的轮次仍会保留在历史列表中,Reset 后新分支产生的轮次也会显示;任务执行期间不能 Reset。
|
|
204
217
|
|
|
205
218
|
在话题中使用 `/forkgroup` 时,如果话题任务还没有完成过自己的 turn,则从话题原始 turn fork;完成过后则从话题任务最近完成的 turn fork。正在执行的 turn 不会作为 fork 点。
|
|
206
219
|
|
|
@@ -212,6 +225,12 @@ agentbot task stop <任务>
|
|
|
212
225
|
|
|
213
226
|
把已绑定任务的群改名为 `[agent] [project dir] title` 时,只会把 `title` 同步到当前任务;Agent 和工程目录前缀仅作为群元数据,不会写入任务标题。旧的 `[agent] title` 格式仍然兼容。
|
|
214
227
|
|
|
228
|
+
## 本地命令
|
|
229
|
+
|
|
230
|
+
在飞书聊天框直接输入 `!` 开头的消息会作为本地命令处理,命令会在当前任务目录执行。
|
|
231
|
+
|
|
232
|
+
比如 `! ls` 会列出当前目录下的文件,`! git status` 会显示当前 Git 仓库的状态。
|
|
233
|
+
|
|
215
234
|
## 配置与数据
|
|
216
235
|
|
|
217
236
|
Agent Bot 将用户相关文件保存在仓库之外:
|
|
@@ -225,19 +244,9 @@ Agent Bot 将用户相关文件保存在仓库之外:
|
|
|
225
244
|
|
|
226
245
|
可通过 `AGENT_BOT_HOME` 修改用户数据目录。配置示例见 [config.example.yaml](config.example.yaml)。
|
|
227
246
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
### 多 Profile
|
|
231
|
-
|
|
232
|
-
不指定 `--profile` 时使用位于 `~/.agent-bot` 的主 Profile。运行其他相互隔离的机器人时,需要在每次命令中显式指定其目录:
|
|
247
|
+
Agent 进程会继承普通父进程变量及其显式配置的 `agents.<name>.env`。启动 Agent 前,Agent Bot 会移除继承的 `FEISHU_*` 凭据和内部 `AGENT_BOT_*` 状态,再仅提供带命名空间的非敏感 Profile 与 Lark 身份上下文;`FEISHU_APP_SECRET` 永远不会传入 Agent 进程。
|
|
233
248
|
|
|
234
|
-
|
|
235
|
-
agentbot --profile ~/.agent-bot-rescue init
|
|
236
|
-
agentbot --profile ~/.agent-bot-rescue server start
|
|
237
|
-
agentbot --profile ~/.agent-bot-rescue server status
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
其他 Profile 不按名称注册,而是直接使用目录。每个 Profile 都在所选目录内保存自己的 `config.yaml`、`.env`、`data/` 和 `logs/`,飞书凭据与本地控制端点也相互隔离。`--profile` 不能和 `--config` 同时使用。
|
|
249
|
+
默认情况下,Agent Bot 会响应机器人所在群内的普通消息。将 `feishu.respondToAllGroupMessages` 设为 `false` 后,群消息必须 @ 当前机器人才会响应,私聊不受影响。初始化仍会申请完整的群消息权限,因此以后切换该配置无需重新授权。
|
|
241
250
|
|
|
242
251
|
## 常见问题
|
|
243
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":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,
|
|
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":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAsC7B,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"AcpSessionManager.js","sourceRoot":"","sources":["../../src/acp/AcpSessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,18 @@ import { nodeDiagnosticReportArguments, prepareCrashReportDirectory, resolveSupe
|
|
|
6
6
|
import { refreshedSystemEnvironment } from "../supervision/systemEnvironment.js";
|
|
7
7
|
import { controlEndpoint } from "./controlProtocol.js";
|
|
8
8
|
import { cliText } from "./i18n.js";
|
|
9
|
-
import { isServerReachable, isServerRunning } from "./LocalControlClient.js";
|
|
9
|
+
import { isServerReachable, isServerRunning, sendControlRequest, } from "./LocalControlClient.js";
|
|
10
10
|
const SERVER_START_TIMEOUT_MS = 45_000;
|
|
11
11
|
export async function startInitializedServer(options, dependencies = defaultInitializationDependencies) {
|
|
12
12
|
if (options.skipFeishu) {
|
|
13
13
|
return { status: "skipped", reason: "feishu-skipped" };
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
const config = dependencies.loadConfig(options.configPath);
|
|
16
|
+
const result = await dependencies.startServer(config);
|
|
17
|
+
if (result.status !== "already-running")
|
|
18
|
+
return result;
|
|
19
|
+
await dependencies.restartServer(config);
|
|
20
|
+
return { status: "restart-scheduled" };
|
|
16
21
|
}
|
|
17
22
|
export async function startServer(config, dependencies = defaultDependencies) {
|
|
18
23
|
try {
|
|
@@ -70,6 +75,16 @@ const defaultDependencies = {
|
|
|
70
75
|
const defaultInitializationDependencies = {
|
|
71
76
|
loadConfig,
|
|
72
77
|
startServer: (config) => startServer(config),
|
|
78
|
+
restartServer: async (config) => {
|
|
79
|
+
const response = await sendControlRequest(controlEndpoint(config.storage.sqlitePath), {
|
|
80
|
+
action: "server_restart",
|
|
81
|
+
mode: "safe",
|
|
82
|
+
reason: "Agent Bot 初始化完成,需要加载当前版本",
|
|
83
|
+
});
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
throw new Error(response.message?.trim() || cliText("Could not schedule the Agent Bot restart after initialization.", "初始化完成后无法安排 Agent Bot 重启。"));
|
|
86
|
+
}
|
|
87
|
+
},
|
|
73
88
|
};
|
|
74
89
|
async function waitForServer(endpoint, timeoutMs) {
|
|
75
90
|
const deadline = Date.now() + timeoutMs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerStarter.js","sourceRoot":"","sources":["../../src/cli/ServerStarter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"ServerStarter.js","sourceRoot":"","sources":["../../src/cli/ServerStarter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlProtocol.js","sourceRoot":"","sources":["../../src/cli/controlProtocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"controlProtocol.js","sourceRoot":"","sources":["../../src/cli/controlProtocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAmD7B,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/F,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;QACjC,CAAC,CAAC,0BAA0B,GAAG,EAAE;QACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC;AACtE,CAAC"}
|
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
|
|
16
|
-
server restart
|
|
15
|
+
server status 显示服务、飞书 App ID、Agent 进程和安全重启状态
|
|
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 <任务> <提示词> 向任务发送提示词
|
|
@@ -38,6 +39,11 @@ export function renderCliHelp(version, language = cliLanguage) {
|
|
|
38
39
|
--skip-feishu 仅初始化 Console 环境
|
|
39
40
|
--reconfigure-feishu 仅替换现有飞书凭据
|
|
40
41
|
|
|
42
|
+
重启选项:
|
|
43
|
+
--task <任务> 将安全重启状态发回任务所在会话
|
|
44
|
+
--reason <原因> 设置重启原因
|
|
45
|
+
--immediate 立即重启,可能中断任务
|
|
46
|
+
|
|
41
47
|
示例:
|
|
42
48
|
agentbot init
|
|
43
49
|
agentbot --profile ~/.agent-bot init --reset
|
|
@@ -59,10 +65,11 @@ Common commands:
|
|
|
59
65
|
init --reset Reset and reconfigure an explicit profile
|
|
60
66
|
console Open the local console
|
|
61
67
|
server start Start Agent Bot in the background
|
|
62
|
-
server status Show the server, Lark App ID, and safe-restart status
|
|
63
|
-
server restart
|
|
68
|
+
server status Show the server, Lark App ID, Agent processes, and safe-restart status
|
|
69
|
+
server restart [--task <task>] Schedule a safe restart and return status to the task's conversation
|
|
64
70
|
server stop Stop Agent Bot
|
|
65
71
|
task list List tasks
|
|
72
|
+
task current [--json] Show details for the task invoking the CLI
|
|
66
73
|
task status <task> Show task status
|
|
67
74
|
task chat <task> Show the task's Lark chat binding
|
|
68
75
|
task prompt <task> <prompt> Send a Prompt to a task
|
|
@@ -85,6 +92,11 @@ Init options:
|
|
|
85
92
|
--skip-feishu Initialize for Console only
|
|
86
93
|
--reconfigure-feishu Replace only the existing Lark credentials
|
|
87
94
|
|
|
95
|
+
Restart options:
|
|
96
|
+
--task <task> Return safe-restart status to the task's conversation
|
|
97
|
+
--reason <reason> Set the restart reason
|
|
98
|
+
--immediate Restart immediately and possibly interrupt tasks
|
|
99
|
+
|
|
88
100
|
Examples:
|
|
89
101
|
agentbot init
|
|
90
102
|
agentbot --profile ~/.agent-bot init --reset
|
package/dist/cli/help.js.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/cli/serverStatus.js
CHANGED
|
@@ -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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"}
|