@keyou007/agent-bot 0.1.12 → 0.1.13-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +23 -10
  3. package/README.zh.md +23 -10
  4. package/config.example.yaml +0 -24
  5. package/dist/cli/AgentPrerequisites.js +262 -0
  6. package/dist/cli/AgentPrerequisites.js.map +1 -0
  7. package/dist/cli/DefaultAgentSelection.js +47 -0
  8. package/dist/cli/DefaultAgentSelection.js.map +1 -0
  9. package/dist/cli/Initializer.js +165 -2
  10. package/dist/cli/Initializer.js.map +1 -1
  11. package/dist/cli/help.js +4 -4
  12. package/dist/cli.js +194 -4
  13. package/dist/cli.js.map +1 -1
  14. package/dist/codex/AppServerConnection.js +3 -3
  15. package/dist/codex/AppServerConnection.js.map +1 -1
  16. package/dist/codex/CodexProcessManager.js +4 -4
  17. package/dist/codex/CodexProcessManager.js.map +1 -1
  18. package/dist/codex/CodexRuntime.js +28 -16
  19. package/dist/codex/CodexRuntime.js.map +1 -1
  20. package/dist/config/loadConfig.js +0 -24
  21. package/dist/config/loadConfig.js.map +1 -1
  22. package/dist/console/ConsoleConnector.js +2 -2
  23. package/dist/console/ConsoleConnector.js.map +1 -1
  24. package/dist/feishu/CardRenderer.js +8 -8
  25. package/dist/feishu/CardRenderer.js.map +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/proxy/ProxySessionController.js +51 -51
  28. package/dist/proxy/ProxySessionController.js.map +1 -1
  29. package/dist/runtime/AcpRuntimeAdapter.js +3 -2
  30. package/dist/runtime/AcpRuntimeAdapter.js.map +1 -1
  31. package/docs/technical-reference.md +32 -17
  32. package/docs/technical-reference.zh.md +32 -17
  33. package/npm-shrinkwrap.json +2 -2
  34. package/package.json +7 -3
  35. package/skills/agent-bot/SKILL.md +12 -6
  36. package/src/cli/AgentPrerequisites.ts +377 -0
  37. package/src/cli/DefaultAgentSelection.ts +56 -0
  38. package/src/cli/Initializer.ts +204 -3
  39. package/src/cli/help.ts +4 -4
  40. package/src/cli.ts +293 -5
  41. package/src/codex/AppServerConnection.ts +3 -3
  42. package/src/codex/CodexProcessManager.ts +4 -4
  43. package/src/codex/CodexRuntime.ts +38 -18
  44. package/src/config/loadConfig.ts +0 -24
  45. package/src/console/ConsoleConnector.ts +2 -2
  46. package/src/feishu/CardRenderer.ts +8 -8
  47. package/src/index.ts +1 -1
  48. package/src/proxy/ProxySessionController.ts +52 -52
  49. package/src/runtime/AcpRuntimeAdapter.ts +3 -1
@@ -5,6 +5,7 @@ import path from "node:path";
5
5
  import { cliText } from "./i18n.js";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { parse as parseDotEnv } from "dotenv";
8
+ import { isMap, isScalar, parseDocument } from "yaml";
8
9
  import { agentBotHome, defaultConfigPath, defaultDotEnvPath, resolveUserPath, } from "../config/paths.js";
9
10
  const DEFAULT_CONFIG_TEMPLATE = fileURLToPath(new URL("../../config.example.yaml", import.meta.url));
10
11
  const DEFAULT_ENV_TEMPLATE = fileURLToPath(new URL("../../.env.example", import.meta.url));
@@ -26,8 +27,8 @@ export function initializeAgentBot(options = {}) {
26
27
  const reset = options.reset
27
28
  ? resetProfileContents(homePath, configPath, envPath, configDirectory)
28
29
  : undefined;
29
- const config = copyIfMissing(configTemplatePath, configPath);
30
- const envFile = copyIfMissing(envTemplatePath, envPath);
30
+ const config = initializeConfig(configTemplatePath, configPath);
31
+ const envFile = initializeEnv(envTemplatePath, envPath);
31
32
  restrictFilePermissions(envFile.path);
32
33
  const data = ensureDirectory(path.join(configDirectory, "data"));
33
34
  const logs = ensureDirectory(path.join(configDirectory, "logs"));
@@ -40,6 +41,55 @@ export function initializeAgentBot(options = {}) {
40
41
  ...(reset ? { reset: { backupPath: reset.backupPath } } : {}),
41
42
  };
42
43
  }
44
+ export function readConfiguredAgentSelection(configPath) {
45
+ const document = parseConfigurationDocument(fs.readFileSync(configPath, "utf8"), configPath);
46
+ if (!isMap(document.contents)) {
47
+ throw new Error(cliText(`Configuration file must contain a YAML mapping: ${configPath}`, `配置文件必须包含 YAML 映射:${configPath}`));
48
+ }
49
+ const configuredAgents = document.contents.get("agents", true);
50
+ if (!isMap(configuredAgents)) {
51
+ throw new Error(cliText(`Configuration file must contain an agents mapping: ${configPath}`, `配置文件必须包含 agents 映射:${configPath}`));
52
+ }
53
+ const agents = configuredAgents.items.flatMap((pair) => {
54
+ const name = yamlMappingKey(pair.key);
55
+ if (!name)
56
+ return [];
57
+ const titleNode = isMap(pair.value) ? pair.value.get("title", true) : undefined;
58
+ const title = isScalar(titleNode) && typeof titleNode.value === "string"
59
+ ? titleNode.value
60
+ : name;
61
+ return [{ name, title }];
62
+ });
63
+ const defaultAgent = document.getIn(["defaults", "agent"]);
64
+ return {
65
+ agents,
66
+ ...(typeof defaultAgent === "string" && defaultAgent.trim() ? { defaultAgent } : {}),
67
+ };
68
+ }
69
+ export function writeDefaultAgent(configPath, agentName) {
70
+ const original = fs.readFileSync(configPath, "utf8");
71
+ const document = parseConfigurationDocument(original, configPath);
72
+ if (!isMap(document.contents)) {
73
+ throw new Error(cliText(`Configuration file must contain a YAML mapping: ${configPath}`, `配置文件必须包含 YAML 映射:${configPath}`));
74
+ }
75
+ const configuredAgents = document.contents.get("agents", true);
76
+ if (!isMap(configuredAgents) || !configuredAgents.has(agentName)) {
77
+ throw new Error(cliText(`Cannot select an Agent that is not configured: ${agentName}`, `不能选择尚未配置的 Agent:${agentName}`));
78
+ }
79
+ const defaults = document.contents.get("defaults", true);
80
+ if (defaults !== undefined && !isMap(defaults)) {
81
+ throw new Error(cliText(`Configuration defaults must contain a YAML mapping: ${configPath}`, `配置文件的 defaults 必须是 YAML 映射:${configPath}`));
82
+ }
83
+ const currentAgent = document.getIn(["defaults", "agent"]);
84
+ if (currentAgent === agentName)
85
+ return false;
86
+ if (isMap(defaults))
87
+ defaults.set("agent", agentName);
88
+ else
89
+ document.setIn(["defaults"], { agent: agentName });
90
+ writeFileAtomically(configPath, document.toString());
91
+ return true;
92
+ }
43
93
  export function readFeishuCredentials(envPath, env = process.env) {
44
94
  const fileValues = fs.existsSync(envPath) ? parseDotEnv(fs.readFileSync(envPath, "utf8")) : {};
45
95
  const appId = firstNonBlank(env.FEISHU_APP_ID, fileValues.FEISHU_APP_ID);
@@ -174,6 +224,119 @@ function copyIfMissing(sourcePath, targetPath) {
174
224
  throw error;
175
225
  }
176
226
  }
227
+ function initializeConfig(templatePath, configPath) {
228
+ if (!fs.existsSync(configPath)) {
229
+ const copied = copyIfMissing(templatePath, configPath);
230
+ if (copied.status === "created")
231
+ return copied;
232
+ }
233
+ const original = fs.readFileSync(configPath, "utf8");
234
+ const template = fs.readFileSync(templatePath, "utf8");
235
+ const configDocument = parseConfigurationDocument(original, configPath);
236
+ const templateDocument = parseConfigurationDocument(template, templatePath);
237
+ if (!isMap(configDocument.contents) || !isMap(templateDocument.contents)) {
238
+ throw new Error(cliText(`Configuration files must contain a YAML mapping: ${configPath}`, `配置文件必须包含 YAML 映射:${configPath}`));
239
+ }
240
+ const updated = mergeMissingConfiguration(configDocument.contents, templateDocument.contents, []);
241
+ if (!updated)
242
+ return { path: configPath, status: "existing" };
243
+ writeFileAtomically(configPath, configDocument.toString());
244
+ return { path: configPath, status: "updated" };
245
+ }
246
+ function initializeEnv(templatePath, envPath) {
247
+ if (!fs.existsSync(envPath)) {
248
+ const copied = copyIfMissing(templatePath, envPath);
249
+ if (copied.status === "created")
250
+ return copied;
251
+ }
252
+ const original = fs.readFileSync(envPath, "utf8");
253
+ const template = fs.readFileSync(templatePath, "utf8");
254
+ const existingKeys = dotEnvKeys(original);
255
+ const missingLines = template
256
+ .split(/\r?\n/)
257
+ .flatMap((line) => {
258
+ const key = dotEnvAssignmentKey(line);
259
+ if (!key || existingKeys.has(key))
260
+ return [];
261
+ existingKeys.add(key);
262
+ return [line];
263
+ });
264
+ if (missingLines.length === 0)
265
+ return { path: envPath, status: "existing" };
266
+ const newline = original.includes("\r\n") ? "\r\n" : "\n";
267
+ const separator = original.length === 0 || /\r?\n$/u.test(original) ? "" : newline;
268
+ writeFileAtomically(envPath, `${original}${separator}${missingLines.join(newline)}${newline}`);
269
+ return { path: envPath, status: "updated" };
270
+ }
271
+ function parseConfigurationDocument(contents, filePath) {
272
+ const document = parseDocument(contents);
273
+ if (document.errors.length === 0)
274
+ return document;
275
+ throw new Error(cliText(`Could not upgrade configuration file ${filePath}: ${document.errors[0]?.message ?? "invalid YAML"}`, `无法升级配置文件 ${filePath}:${document.errors[0]?.message ?? "YAML 无效"}`));
276
+ }
277
+ function mergeMissingConfiguration(config, template, parentPath) {
278
+ let updated = false;
279
+ for (const templatePair of template.items) {
280
+ const key = yamlMappingKey(templatePair.key);
281
+ if (!key)
282
+ continue;
283
+ if (!config.has(key)) {
284
+ if (shouldPreserveMissingConfiguration(parentPath, key))
285
+ continue;
286
+ const clonedPair = templatePair.clone();
287
+ if (parentPath.length === 0 && key === "defaults" && isMap(clonedPair.value)) {
288
+ clonedPair.value.delete("agent");
289
+ if (clonedPair.value.items.length === 0)
290
+ continue;
291
+ }
292
+ config.add(clonedPair);
293
+ updated = true;
294
+ continue;
295
+ }
296
+ const configValue = config.get(key, true);
297
+ if (isMap(configValue) && isMap(templatePair.value)) {
298
+ updated = mergeMissingConfiguration(configValue, templatePair.value, [...parentPath, key]) || updated;
299
+ }
300
+ }
301
+ return updated;
302
+ }
303
+ function shouldPreserveMissingConfiguration(parentPath, key) {
304
+ if (parentPath.length === 1 && parentPath[0] === "agents")
305
+ return true;
306
+ return parentPath.length === 1 && parentPath[0] === "defaults" && key === "agent";
307
+ }
308
+ function yamlMappingKey(value) {
309
+ if (typeof value === "string")
310
+ return value;
311
+ return isScalar(value) && typeof value.value === "string" ? value.value : undefined;
312
+ }
313
+ function dotEnvKeys(contents) {
314
+ return new Set(contents.split(/\r?\n/).flatMap((line) => {
315
+ const key = dotEnvAssignmentKey(line);
316
+ return key ? [key] : [];
317
+ }));
318
+ }
319
+ function dotEnvAssignmentKey(line) {
320
+ return /^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/u.exec(line)?.[1];
321
+ }
322
+ function writeFileAtomically(filePath, contents) {
323
+ const temporaryPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
324
+ let temporaryFile;
325
+ try {
326
+ temporaryFile = fs.openSync(temporaryPath, "wx", fs.statSync(filePath).mode);
327
+ fs.writeFileSync(temporaryFile, contents, "utf8");
328
+ fs.fsyncSync(temporaryFile);
329
+ fs.closeSync(temporaryFile);
330
+ temporaryFile = undefined;
331
+ fs.renameSync(temporaryPath, filePath);
332
+ syncDirectory(path.dirname(filePath));
333
+ }
334
+ finally {
335
+ if (temporaryFile !== undefined)
336
+ fs.closeSync(temporaryFile);
337
+ fs.rmSync(temporaryPath, { force: true });
338
+ }
339
+ }
177
340
  function resetProfileContents(homePath, configPath, envPath, configDirectory) {
178
341
  const resolvedHome = path.resolve(homePath);
179
342
  if (path.resolve(configDirectory) !== resolvedHome
@@ -1 +1 @@
1
- {"version":3,"file":"Initializer.js","sourceRoot":"","sources":["../../src/cli/Initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Initializer.js","sourceRoot":"","sources":["../../src/cli/Initializer.ts"],"names":[],"mappings":"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"}
package/dist/cli/help.js CHANGED
@@ -2,13 +2,13 @@ import { cliLanguage } from "./i18n.js";
2
2
  export function renderCliHelp(version, language = cliLanguage) {
3
3
  if (language === "zh") {
4
4
  return `Agent Bot ${version}
5
- 通过飞书使用本地 Codex 和 ACP Agent。
5
+ 通过飞书使用本地 Codex、TraeX 和兼容 ACP 的 Agent。
6
6
 
7
7
  用法:
8
8
  agentbot [选项] <命令>
9
9
 
10
10
  常用命令:
11
- init 初始化飞书应用并启动服务
11
+ init 检查并选择 Agent,初始化飞书应用和服务
12
12
  init --reset 重置并重新配置显式指定的 Profile
13
13
  console 打开本地控制台
14
14
  server start 在后台启动 Agent Bot
@@ -49,13 +49,13 @@ export function renderCliHelp(version, language = cliLanguage) {
49
49
  `;
50
50
  }
51
51
  return `Agent Bot ${version}
52
- Use local Codex and ACP agents from Lark/Feishu.
52
+ Use Codex, TraeX, and compatible ACP agents from Lark/Feishu.
53
53
 
54
54
  Usage:
55
55
  agentbot [options] <command>
56
56
 
57
57
  Common commands:
58
- init Initialize the Lark app and start the service
58
+ init Check and select an Agent; initialize the Lark app and service
59
59
  init --reset Reset and reconfigure an explicit profile
60
60
  console Open the local console
61
61
  server start Start Agent Bot in the background
package/dist/cli.js CHANGED
@@ -2,16 +2,19 @@
2
2
  import fs from "node:fs";
3
3
  import { spawnSync } from "node:child_process";
4
4
  import { fileURLToPath } from "node:url";
5
+ import { createInterface } from "node:readline";
5
6
  import { loadConfig, loadConfigWithoutEnvironmentMutation } from "./config/loadConfig.js";
6
7
  import { sendControlRequest, isServerReachable } from "./cli/LocalControlClient.js";
7
8
  import { controlEndpoint, } from "./cli/controlProtocol.js";
8
- import { acquireInitializationLock, cleanupFeishuCredentialTemporaryFiles, initializeAgentBot, readFeishuCredentials, shouldCreateFeishuApp, writeFeishuCredentials, } from "./cli/Initializer.js";
9
+ import { acquireInitializationLock, cleanupFeishuCredentialTemporaryFiles, initializeAgentBot, readConfiguredAgentSelection, readFeishuCredentials, shouldCreateFeishuApp, writeDefaultAgent, writeFeishuCredentials, } from "./cli/Initializer.js";
9
10
  import { parseInitCommandOptions } from "./cli/initOptions.js";
10
11
  import { listenForManualPermissionSkip, listenForOptionalAuthorizationSkip, } from "./cli/OptionalAuthorizationSkip.js";
11
12
  import { registerFeishuApp, } from "./cli/FeishuAppRegistration.js";
12
13
  import { ensureFeishuAppConfiguration, } from "./cli/FeishuAppConfiguration.js";
13
14
  import { renderCliHelp } from "./cli/help.js";
14
15
  import { cliLanguage, cliText, localizeCliErrorMessage } from "./cli/i18n.js";
16
+ import { inspectSupportedAgent, inspectSupportedAgents, runSupportedAgentMaintenance, } from "./cli/AgentPrerequisites.js";
17
+ import { parseMaintenanceSelection, resolveDefaultAgentChoice, selectableDefaultAgents, } from "./cli/DefaultAgentSelection.js";
15
18
  import { formatServerStatus, withConfiguredFeishuAppId } from "./cli/serverStatus.js";
16
19
  import { resolveSystemSkillsRoot, SkillRegistry } from "./cli/SkillRegistry.js";
17
20
  import { readPackageVersion } from "./cli/packageVersion.js";
@@ -19,6 +22,7 @@ import { applyExplicitProfile, parseGlobalOptions } from "./cli/profile.js";
19
22
  import { printVerificationQrAndLink } from "./cli/VerificationOutput.js";
20
23
  import { startInitializedServer, startServer, } from "./cli/ServerStarter.js";
21
24
  import { taskChatRoute } from "./cli/taskChatRoute.js";
25
+ import { refreshedSystemEnvironment } from "./supervision/systemEnvironment.js";
22
26
  import { parseTaskForkGroupOptions, parseTaskNewGroupOptions, } from "./cli/taskGroupOptions.js";
23
27
  import { StateStore } from "./state/StateStore.js";
24
28
  import { nodeDiagnosticReportArguments, prepareCrashReportDirectory, resolveSupervisorDiagnosticsPaths, } from "./supervision/SupervisorDiagnostics.js";
@@ -79,10 +83,12 @@ async function initCommand(input, configPath, explicitProfile) {
79
83
  paths = initializeAgentBot({ configPath, reset: options.reset });
80
84
  if (!options.json)
81
85
  printInitializationPaths(paths);
86
+ const agents = await initializeSupportedAgents(options.json);
87
+ const defaultAgent = await selectDefaultAgent(paths.config.path, agents, options.json);
82
88
  initializationLock ??= acquireInitializationLock(paths.home.path);
83
89
  cleanupFeishuCredentialTemporaryFiles(paths.env.path);
84
90
  const feishu = await initializeFeishu(paths, options);
85
- initialized = { ...paths, feishu };
91
+ initialized = { ...paths, agents, defaultAgent, feishu };
86
92
  }
87
93
  finally {
88
94
  initializationLock?.release();
@@ -99,6 +105,184 @@ async function initCommand(input, configPath, explicitProfile) {
99
105
  else
100
106
  printInitializationServerResult(server);
101
107
  }
108
+ async function initializeSupportedAgents(json) {
109
+ const output = json ? process.stderr : process.stdout;
110
+ output.write(cliText("\nAgent setup\nChecking Codex and TraeX...\n", "\nAgent 设置\n正在检查 Codex 和 TraeX...\n"));
111
+ const inspections = await inspectSupportedAgents();
112
+ for (const inspection of inspections)
113
+ printAgentInspection(inspection, output);
114
+ const actionable = inspections.filter((inspection) => inspection.action);
115
+ if (actionable.length === 0)
116
+ return inspections;
117
+ output.write(cliText("\nAvailable actions:\n", "\n可执行的操作:\n"));
118
+ for (const [index, inspection] of actionable.entries()) {
119
+ output.write(cliText(` ${index + 1}. ${inspection.action?.kind === "install" ? "Install" : "Upgrade"} ${inspection.name}: ${inspection.action?.command}\n`, ` ${index + 1}. ${inspection.action?.kind === "install" ? "安装" : "升级"} ${inspection.name}:${inspection.action?.command}\n`));
120
+ }
121
+ let selected = new Set();
122
+ if (!process.stdin.isTTY) {
123
+ output.write(cliText("No interactive terminal is available. Run the commands above manually if needed.\n", "当前没有交互式终端,如有需要请手动执行上面的命令。\n"));
124
+ }
125
+ else {
126
+ selected = new Set(await promptForAgentMaintenance(actionable.length));
127
+ if (selected.size === 0) {
128
+ output.write(cliText("No Agent changes selected.\n", "已跳过 Agent 安装和升级。\n"));
129
+ }
130
+ }
131
+ const initialized = [];
132
+ for (const inspection of inspections) {
133
+ if (!inspection.action) {
134
+ initialized.push(inspection);
135
+ continue;
136
+ }
137
+ const actionIndex = actionable.indexOf(inspection);
138
+ if (!selected.has(actionIndex)) {
139
+ initialized.push({
140
+ ...inspection,
141
+ assistance: { status: process.stdin.isTTY ? "skipped" : "unavailable" },
142
+ });
143
+ continue;
144
+ }
145
+ output.write(cliText(`\nRunning ${inspection.name} ${inspection.action.kind}: ${inspection.action.command}\n`, `\n正在${inspection.action.kind === "install" ? "安装" : "升级"} ${inspection.name}:${inspection.action.command}\n`));
146
+ const maintenance = await runSupportedAgentMaintenance(inspection.id, inspection.action.kind);
147
+ if (maintenance.status !== 0 || maintenance.error) {
148
+ const error = maintenance.error ?? cliText(`Command exited with code ${maintenance.status ?? "unknown"}.`, `命令退出码为 ${maintenance.status ?? "未知"}。`);
149
+ output.write(cliText(`${inspection.name} ${inspection.action.kind} did not complete; initialization will continue.\n`, `${inspection.name}${inspection.action.kind === "install" ? "安装" : "升级"}未完成,初始化将继续。\n`));
150
+ initialized.push({ ...inspection, assistance: { status: "failed", error } });
151
+ continue;
152
+ }
153
+ refreshCurrentProcessPath();
154
+ const refreshed = await inspectSupportedAgent(inspection.id);
155
+ if (refreshed.installedVersion) {
156
+ output.write(cliText(`${inspection.name} is ready (${refreshed.installedVersion}).\n`, `${inspection.name} 已就绪(${refreshed.installedVersion})。\n`));
157
+ }
158
+ else {
159
+ output.write(cliText(`${inspection.name} command completed, but the CLI is not visible in this process. Open a new terminal and run agentbot init again.\n`, `${inspection.name} 命令已完成,但当前进程仍无法找到该 CLI。请打开新终端后重新运行 agentbot init。\n`));
160
+ }
161
+ initialized.push({ ...refreshed, assistance: { status: "completed" } });
162
+ }
163
+ return initialized;
164
+ }
165
+ async function selectDefaultAgent(configPath, inspections, json) {
166
+ const output = json ? process.stderr : process.stdout;
167
+ const configured = readConfiguredAgentSelection(configPath);
168
+ const choices = selectableDefaultAgents(configured.agents, inspections);
169
+ if (!process.stdin.isTTY) {
170
+ if (!configured.defaultAgent || !configured.agents.some((agent) => agent.name === configured.defaultAgent)) {
171
+ throw new Error(cliText("A default Agent is not configured. Run agentbot init in an interactive terminal and select one.", "尚未配置默认 Agent。请在交互式终端中运行 agentbot init 并选择一个 Agent。"));
172
+ }
173
+ output.write(cliText(`Default Agent: ${configured.defaultAgent} (kept because no interactive terminal is available)\n`, `默认 Agent:${configured.defaultAgent}(当前没有交互式终端,已保留现有设置)\n`));
174
+ return { name: configured.defaultAgent, status: "existing" };
175
+ }
176
+ if (choices.length === 0) {
177
+ throw new Error(cliText("No available configured Agent can be selected. Install Codex or TraeX, then run agentbot init again.", "没有可选择的已配置 Agent。请安装 Codex 或 TraeX,然后重新运行 agentbot init。"));
178
+ }
179
+ output.write(cliText("\nSelect the default Agent:\n", "\n请选择默认 Agent:\n"));
180
+ for (const [index, choice] of choices.entries()) {
181
+ const version = choice.installedVersion ? ` (${choice.installedVersion})` : "";
182
+ const current = choice.name === configured.defaultAgent
183
+ ? cliText(" [current]", " [当前]")
184
+ : "";
185
+ output.write(` ${index + 1}. ${choice.name} - ${choice.title}${version}${current}\n`);
186
+ }
187
+ const selected = choices[await promptForDefaultAgent(choices, configured.defaultAgent)];
188
+ if (!selected)
189
+ throw new Error(cliText("Default Agent selection failed.", "默认 Agent 选择失败。"));
190
+ const updated = writeDefaultAgent(configPath, selected.name);
191
+ output.write(updated
192
+ ? cliText(`Saved default Agent: ${selected.name}\n`, `已保存默认 Agent:${selected.name}\n`)
193
+ : cliText(`Default Agent unchanged: ${selected.name}\n`, `默认 Agent 保持不变:${selected.name}\n`));
194
+ return { name: selected.name, status: updated ? "selected" : "existing" };
195
+ }
196
+ function promptForAgentMaintenance(choiceCount) {
197
+ const readline = createInterface({ input: process.stdin, output: process.stderr });
198
+ return new Promise((resolve, reject) => {
199
+ let settled = false;
200
+ const finish = (selection) => {
201
+ settled = true;
202
+ readline.close();
203
+ resolve(selection);
204
+ };
205
+ const ask = () => {
206
+ readline.question(cliText("Enter action numbers separated by commas, type all, or press Enter to skip: ", "请输入要执行的操作编号(多个用逗号分隔),输入 all 选择全部,直接回车跳过:"), (answer) => {
207
+ const selection = parseMaintenanceSelection(answer, choiceCount);
208
+ if (selection) {
209
+ finish(selection);
210
+ return;
211
+ }
212
+ process.stderr.write(cliText(`Enter numbers from 1 to ${choiceCount}, all, or press Enter to skip.\n`, `请输入 1 到 ${choiceCount} 之间的编号、all,或直接回车跳过。\n`));
213
+ ask();
214
+ });
215
+ };
216
+ listenForPromptCancellation(readline, () => {
217
+ settled = true;
218
+ reject(new Error(cliText("Initialization was cancelled.", "初始化已取消。")));
219
+ }, () => settled);
220
+ ask();
221
+ });
222
+ }
223
+ function promptForDefaultAgent(choices, currentAgent) {
224
+ const readline = createInterface({ input: process.stdin, output: process.stderr });
225
+ return new Promise((resolve, reject) => {
226
+ let settled = false;
227
+ const finish = (index) => {
228
+ settled = true;
229
+ readline.close();
230
+ resolve(index);
231
+ };
232
+ const ask = () => {
233
+ const currentAvailable = choices.some((choice) => choice.name === currentAgent);
234
+ readline.question(cliText(`Enter a number or Agent name${currentAvailable ? ` [${currentAgent}]` : ""}: `, `请输入编号或 Agent 标准名${currentAvailable ? ` [${currentAgent}]` : ""}:`), (answer) => {
235
+ const index = resolveDefaultAgentChoice(answer, choices, currentAgent);
236
+ if (index !== undefined) {
237
+ finish(index);
238
+ return;
239
+ }
240
+ process.stderr.write(cliText(`Enter a number from 1 to ${choices.length} or an Agent standard name.\n`, `请输入 1 到 ${choices.length} 之间的编号,或 Agent 标准名。\n`));
241
+ ask();
242
+ });
243
+ };
244
+ listenForPromptCancellation(readline, () => {
245
+ settled = true;
246
+ reject(new Error(cliText("Initialization was cancelled.", "初始化已取消。")));
247
+ }, () => settled);
248
+ ask();
249
+ });
250
+ }
251
+ function listenForPromptCancellation(readline, cancel, isSettled) {
252
+ readline.once("SIGINT", () => {
253
+ if (!isSettled())
254
+ cancel();
255
+ readline.close();
256
+ });
257
+ readline.once("close", () => {
258
+ if (!isSettled())
259
+ cancel();
260
+ });
261
+ }
262
+ function printAgentInspection(inspection, output) {
263
+ if (inspection.state === "missing") {
264
+ output.write(cliText(` ${inspection.name}: not installed\n`, ` ${inspection.name}:未安装\n`));
265
+ return;
266
+ }
267
+ if (inspection.state === "outdated") {
268
+ output.write(cliText(` ${inspection.name}: ${inspection.installedVersion}; update available (${inspection.latestVersion})\n`, ` ${inspection.name}:${inspection.installedVersion};可升级到 ${inspection.latestVersion}\n`));
269
+ return;
270
+ }
271
+ if (inspection.latestCheckFailed) {
272
+ output.write(cliText(` ${inspection.name}: ${inspection.installedVersion}; latest-version check unavailable\n`, ` ${inspection.name}:${inspection.installedVersion};无法检查最新版本\n`));
273
+ return;
274
+ }
275
+ output.write(cliText(` ${inspection.name}: ${inspection.installedVersion} (up to date)\n`, ` ${inspection.name}:${inspection.installedVersion}(已是最新)\n`));
276
+ }
277
+ function refreshCurrentProcessPath() {
278
+ const refreshed = refreshedSystemEnvironment();
279
+ if (!refreshed.refreshed)
280
+ return;
281
+ const pathEntry = Object.entries(refreshed.environment)
282
+ .find(([name]) => name.toLowerCase() === "path");
283
+ if (pathEntry?.[1])
284
+ process.env.PATH = pathEntry[1];
285
+ }
102
286
  async function initializeFeishu(paths, options) {
103
287
  const existing = readFeishuCredentials(paths.env.path);
104
288
  if (options.skipFeishu) {
@@ -107,6 +291,9 @@ async function initializeFeishu(paths, options) {
107
291
  ...(existing.appId ? { appId: existing.appId } : {}),
108
292
  };
109
293
  }
294
+ if (!options.json) {
295
+ process.stdout.write(cliText("\nLark setup\n", "\n飞书设置\n"));
296
+ }
110
297
  const controller = new AbortController();
111
298
  const onInterrupt = () => controller.abort(new Error(cliText("Initialization was cancelled.", "初始化已取消。")));
112
299
  process.once("SIGINT", onInterrupt);
@@ -134,7 +321,7 @@ async function initializeFeishu(paths, options) {
134
321
  status = "created";
135
322
  }
136
323
  if (!options.json) {
137
- process.stdout.write(cliText("\nChecking Lark app permissions, events, and callbacks...\n", "\n正在检查飞书应用权限、事件和回调...\n"));
324
+ process.stdout.write(cliText("Checking app permissions, events, and callbacks...\n", "正在检查应用权限、事件和回调...\n"));
138
325
  }
139
326
  const manualPermissionSkip = new AbortController();
140
327
  const optionalSkip = new AbortController();
@@ -528,7 +715,7 @@ function printSkillStatus(status) {
528
715
  }
529
716
  }
530
717
  function printInitializationPaths(result) {
531
- process.stdout.write(cliText("Preparing the Agent Bot user environment...\n", "正在准备 Agent Bot 用户环境...\n"));
718
+ process.stdout.write(cliText("Profile setup\n", "Profile 设置\n"));
532
719
  if (result.reset) {
533
720
  process.stdout.write(`${cliText("Reset backup: ", "重置备份:")}${result.reset.backupPath}\n`);
534
721
  }
@@ -540,6 +727,7 @@ function printInitializationPaths(result) {
540
727
  }
541
728
  function printInitializationResult(result) {
542
729
  process.stdout.write(cliText("\nAgent Bot initialization completed.\n", "\nAgent Bot 初始化完成。\n"));
730
+ process.stdout.write(`${cliText("Default Agent: ", "默认 Agent:")}${result.defaultAgent.name}\n`);
543
731
  if (result.feishu.status === "created") {
544
732
  process.stdout.write(cliText(`Lark app: created and credentials saved (${result.feishu.appId})\n`, `飞书应用:已创建并保存凭据 (${result.feishu.appId})\n`));
545
733
  }
@@ -671,6 +859,8 @@ function feishuFeatureWarnings(missing) {
671
859
  function initializationStatusLabel(status) {
672
860
  if (status === "created")
673
861
  return cliText("created", "已创建");
862
+ if (status === "updated")
863
+ return cliText("updated with missing settings", "已补全缺失配置");
674
864
  if (status === "reset")
675
865
  return cliText("reset from template", "已从模板重置");
676
866
  return cliText("already exists; unchanged", "已存在,未修改");