@keyou007/agent-bot 0.1.9 → 0.1.10

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 (65) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +7 -1
  3. package/README.zh.md +7 -1
  4. package/dist/cli/FeishuAppConfiguration.js +84 -22
  5. package/dist/cli/FeishuAppConfiguration.js.map +1 -1
  6. package/dist/cli/FeishuAppRegistration.js +12 -9
  7. package/dist/cli/FeishuAppRegistration.js.map +1 -1
  8. package/dist/cli/Initializer.js +7 -6
  9. package/dist/cli/Initializer.js.map +1 -1
  10. package/dist/cli/LocalControlClient.js +3 -2
  11. package/dist/cli/LocalControlClient.js.map +1 -1
  12. package/dist/cli/LocalControlServer.js +2 -1
  13. package/dist/cli/LocalControlServer.js.map +1 -1
  14. package/dist/cli/OptionalAuthorizationSkip.js +27 -6
  15. package/dist/cli/OptionalAuthorizationSkip.js.map +1 -1
  16. package/dist/cli/ServerStarter.js +12 -3
  17. package/dist/cli/ServerStarter.js.map +1 -1
  18. package/dist/cli/SkillRegistry.js +5 -4
  19. package/dist/cli/SkillRegistry.js.map +1 -1
  20. package/dist/cli/VerificationOutput.js +2 -1
  21. package/dist/cli/VerificationOutput.js.map +1 -1
  22. package/dist/cli/help.js +48 -1
  23. package/dist/cli/help.js.map +1 -1
  24. package/dist/cli/i18n.js +27 -0
  25. package/dist/cli/i18n.js.map +1 -0
  26. package/dist/cli/initOptions.js +5 -4
  27. package/dist/cli/initOptions.js.map +1 -1
  28. package/dist/cli/packageVersion.js +2 -1
  29. package/dist/cli/packageVersion.js.map +1 -1
  30. package/dist/cli/profile.js +4 -3
  31. package/dist/cli/profile.js.map +1 -1
  32. package/dist/cli/serverStatus.js +15 -14
  33. package/dist/cli/serverStatus.js.map +1 -1
  34. package/dist/cli/taskChatRoute.js +3 -2
  35. package/dist/cli/taskChatRoute.js.map +1 -1
  36. package/dist/cli.js +165 -107
  37. package/dist/cli.js.map +1 -1
  38. package/dist/commands/CommandRouter.js +49 -3
  39. package/dist/commands/CommandRouter.js.map +1 -1
  40. package/dist/proxy/ProxySessionController.js +6 -0
  41. package/dist/proxy/ProxySessionController.js.map +1 -1
  42. package/docs/technical-reference.md +13 -2
  43. package/docs/technical-reference.zh.md +13 -2
  44. package/npm-shrinkwrap.json +2 -2
  45. package/package.json +1 -1
  46. package/skills/agent-bot/SKILL.md +6 -6
  47. package/src/cli/FeishuAppConfiguration.ts +130 -18
  48. package/src/cli/FeishuAppRegistration.ts +24 -9
  49. package/src/cli/Initializer.ts +25 -6
  50. package/src/cli/LocalControlClient.ts +9 -2
  51. package/src/cli/LocalControlServer.ts +2 -1
  52. package/src/cli/OptionalAuthorizationSkip.ts +51 -6
  53. package/src/cli/ServerStarter.ts +20 -3
  54. package/src/cli/SkillRegistry.ts +17 -4
  55. package/src/cli/VerificationOutput.ts +4 -1
  56. package/src/cli/help.ts +50 -1
  57. package/src/cli/i18n.ts +38 -0
  58. package/src/cli/initOptions.ts +17 -4
  59. package/src/cli/packageVersion.ts +5 -1
  60. package/src/cli/profile.ts +13 -3
  61. package/src/cli/serverStatus.ts +19 -14
  62. package/src/cli/taskChatRoute.ts +9 -2
  63. package/src/cli.ts +290 -103
  64. package/src/commands/CommandRouter.ts +58 -3
  65. package/src/proxy/ProxySessionController.ts +6 -0
@@ -1,4 +1,5 @@
1
1
  import net from "node:net";
2
+ import { cliText } from "./i18n.js";
2
3
  export async function sendControlRequest(endpoint, request, timeoutMs = 5_000) {
3
4
  return new Promise((resolve, reject) => {
4
5
  const socket = net.createConnection(endpoint);
@@ -12,7 +13,7 @@ export async function sendControlRequest(endpoint, request, timeoutMs = 5_000) {
12
13
  socket.destroy();
13
14
  operation();
14
15
  };
15
- const timer = setTimeout(() => finish(() => reject(new Error("Timed out connecting to the Agent Bot control endpoint."))), timeoutMs);
16
+ const timer = setTimeout(() => finish(() => reject(new Error(cliText("Timed out connecting to the Agent Bot control endpoint.", "连接 Agent Bot 控制端点超时。")))), timeoutMs);
16
17
  socket.setEncoding("utf8");
17
18
  socket.once("connect", () => socket.write(`${JSON.stringify(request)}\n`));
18
19
  socket.on("data", (chunk) => {
@@ -31,7 +32,7 @@ export async function sendControlRequest(endpoint, request, timeoutMs = 5_000) {
31
32
  socket.once("error", (error) => finish(() => reject(error)));
32
33
  socket.once("end", () => {
33
34
  if (!settled)
34
- finish(() => reject(new Error("The Agent Bot control endpoint returned no response.")));
35
+ finish(() => reject(new Error(cliText("The Agent Bot control endpoint returned no response.", "Agent Bot 控制端点未返回响应。"))));
35
36
  });
36
37
  });
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LocalControlClient.js","sourceRoot":"","sources":["../../src/cli/LocalControlClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalControlClient.js","sourceRoot":"","sources":["../../src/cli/LocalControlClient.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs";
2
2
  import net from "node:net";
3
+ import { cliText } from "./i18n.js";
3
4
  export class LocalControlServer {
4
5
  endpoint;
5
6
  handleRequest;
@@ -59,7 +60,7 @@ export class LocalControlServer {
59
60
  function parseRequest(line) {
60
61
  const value = JSON.parse(line);
61
62
  if (!value || typeof value !== "object" || !("action" in value) || typeof value.action !== "string") {
62
- throw new Error("Invalid local control request.");
63
+ throw new Error(cliText("Invalid local control request.", "无效的本地控制请求。"));
63
64
  }
64
65
  return value;
65
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LocalControlServer.js","sourceRoot":"","sources":["../../src/cli/LocalControlServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalControlServer.js","sourceRoot":"","sources":["../../src/cli/LocalControlServer.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,45 @@
1
1
  import { createInterface } from "node:readline";
2
+ import { cliText } from "./i18n.js";
2
3
  export function listenForOptionalAuthorizationSkip(onSkip) {
4
+ return listenForAuthorizationSkip(onSkip, {
5
+ prompt: cliText("Skip optional authorization? Enter Y and press Enter to skip.\n", "是否跳过可选授权?输入 Y 并按回车键跳过。\n"),
6
+ retry: cliText("Enter Y to skip optional authorization, or keep waiting.\n", "输入 Y 跳过可选授权,或继续等待。\n"),
7
+ skipped: cliText("Optional authorization skipped. Initialization will continue.\n", "已跳过可选授权,初始化将继续。\n"),
8
+ });
9
+ }
10
+ export function listenForManualPermissionSkip(onSkip) {
11
+ return listenForAuthorizationSkip(onSkip, {
12
+ prompt: cliText("Skip waiting for this permission? Enter Y and press Enter to skip.\n", "是否跳过等待此权限?输入 Y 并按回车键跳过。\n"),
13
+ retry: cliText("Enter Y to skip this permission, or keep waiting.\n", "输入 Y 跳过此权限,或继续等待。\n"),
14
+ skipped: cliText("Permission wait skipped. Initialization will continue with limited group-message functionality.\n", "已跳过权限等待,初始化将继续,但群消息功能受限。\n"),
15
+ });
16
+ }
17
+ function listenForAuthorizationSkip(onSkip, messages) {
3
18
  if (!process.stdin.isTTY)
4
19
  return { close: () => undefined };
5
20
  const readline = createInterface({
6
21
  input: process.stdin,
7
22
  output: process.stderr,
8
23
  });
24
+ let closed = false;
25
+ const close = () => {
26
+ if (closed)
27
+ return;
28
+ closed = true;
29
+ closeReadline(readline, onLine);
30
+ };
9
31
  const onLine = (value) => {
10
32
  if (!isOptionalAuthorizationSkip(value)) {
11
- process.stderr.write("Enter Y to skip optional authorization, or keep waiting.\n");
33
+ process.stderr.write(messages.retry);
12
34
  return;
13
35
  }
14
- process.stderr.write("Optional authorization skipped. Initialization will continue.\n");
36
+ process.stderr.write(messages.skipped);
37
+ close();
15
38
  onSkip();
16
39
  };
17
40
  readline.on("line", onLine);
18
- process.stderr.write("Skip optional authorization? Enter Y and press Enter to skip.\n");
19
- return {
20
- close: () => closeReadline(readline, onLine),
21
- };
41
+ process.stderr.write(messages.prompt);
42
+ return { close };
22
43
  }
23
44
  export function isOptionalAuthorizationSkip(value) {
24
45
  return value.trim().toLowerCase() === "y";
@@ -1 +1 @@
1
- {"version":3,"file":"OptionalAuthorizationSkip.js","sourceRoot":"","sources":["../../src/cli/OptionalAuthorizationSkip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,eAAe,CAAC;AAMhE,MAAM,UAAU,kCAAkC,CAChD,MAAkB;IAElB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAG,eAAe,CAAC;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,KAAa,EAAQ,EAAE;QACrC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACxF,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IACF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACxF,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,QAAmB,EAAE,MAA+B;IACzE,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"OptionalAuthorizationSkip.js","sourceRoot":"","sources":["../../src/cli/OptionalAuthorizationSkip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,UAAU,kCAAkC,CAChD,MAAkB;IAElB,OAAO,0BAA0B,CAAC,MAAM,EAAE;QACxC,MAAM,EAAE,OAAO,CACb,iEAAiE,EACjE,0BAA0B,CAC3B;QACD,KAAK,EAAE,OAAO,CACZ,4DAA4D,EAC5D,sBAAsB,CACvB;QACD,OAAO,EAAE,OAAO,CACd,iEAAiE,EACjE,mBAAmB,CACpB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAkB;IAElB,OAAO,0BAA0B,CAAC,MAAM,EAAE;QACxC,MAAM,EAAE,OAAO,CACb,sEAAsE,EACtE,2BAA2B,CAC5B;QACD,KAAK,EAAE,OAAO,CACZ,qDAAqD,EACrD,qBAAqB,CACtB;QACD,OAAO,EAAE,OAAO,CACd,mGAAmG,EACnG,4BAA4B,CAC7B;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAkB,EAClB,QAA4D;IAE5D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAG,eAAe,CAAC;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAQ,EAAE;QACrC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IACF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,QAAmB,EAAE,MAA+B;IACzE,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -4,6 +4,7 @@ import { loadConfig } from "../config/loadConfig.js";
4
4
  import { requireServerFeishuTransport } from "../feishu/transport.js";
5
5
  import { nodeDiagnosticReportArguments, prepareCrashReportDirectory, resolveSupervisorDiagnosticsPaths, } from "../supervision/SupervisorDiagnostics.js";
6
6
  import { controlEndpoint } from "./controlProtocol.js";
7
+ import { cliText } from "./i18n.js";
7
8
  import { isServerReachable, isServerRunning } from "./LocalControlClient.js";
8
9
  const SERVER_START_TIMEOUT_MS = 45_000;
9
10
  export async function startInitializedServer(options, dependencies = defaultInitializationDependencies) {
@@ -13,7 +14,15 @@ export async function startInitializedServer(options, dependencies = defaultInit
13
14
  return dependencies.startServer(dependencies.loadConfig(options.configPath));
14
15
  }
15
16
  export async function startServer(config, dependencies = defaultDependencies) {
16
- requireServerFeishuTransport(config.feishu);
17
+ try {
18
+ requireServerFeishuTransport(config.feishu);
19
+ }
20
+ catch (error) {
21
+ if (error instanceof Error && /Lark bot is not configured/.test(error.message)) {
22
+ throw new Error(cliText("The Lark bot is not configured. Run agent-bot init first, or use agent-bot console for local-only testing.", "尚未配置飞书机器人。请先运行 agent-bot init,或使用 agent-bot console 进行纯本地测试。"));
23
+ }
24
+ throw error;
25
+ }
17
26
  const endpoint = controlEndpoint(config.storage.sqlitePath);
18
27
  if (await dependencies.isRunning(endpoint)) {
19
28
  return { status: "already-running" };
@@ -21,14 +30,14 @@ export async function startServer(config, dependencies = defaultDependencies) {
21
30
  if (await dependencies.isReachable(endpoint)) {
22
31
  const running = await dependencies.waitUntilRunning(endpoint, SERVER_START_TIMEOUT_MS);
23
32
  if (!running) {
24
- throw new Error("The Agent Bot server started but could not connect to Lark. Check the logs.");
33
+ throw new Error(cliText("The Agent Bot server started but could not connect to Lark. Check the logs.", "Agent Bot 服务已启动,但无法连接飞书。请检查日志。"));
25
34
  }
26
35
  return { status: "started" };
27
36
  }
28
37
  dependencies.spawnSupervisor(config);
29
38
  const running = await dependencies.waitUntilRunning(endpoint, SERVER_START_TIMEOUT_MS);
30
39
  if (!running) {
31
- throw new Error("The Supervisor started, but the server did not connect to Lark within 45 seconds. Check the logs.");
40
+ throw new Error(cliText("The Supervisor started, but the server did not connect to Lark within 45 seconds. Check the logs.", "Supervisor 已启动,但服务未能在 45 秒内连接飞书。请检查日志。"));
32
41
  }
33
42
  return { status: "started" };
34
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServerStarter.js","sourceRoot":"","sources":["../../src/cli/ServerStarter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServerStarter.js","sourceRoot":"","sources":["../../src/cli/ServerStarter.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { createHash, randomUUID } from "node:crypto";
2
2
  import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
+ import { cliText } from "./i18n.js";
5
6
  const SKILL_NAME = "agent-bot";
6
7
  const MARKER_FILE = ".agent-bot-managed.json";
7
8
  export function resolveSystemSkillsRoot(env = process.env, homeDirectory = os.homedir()) {
@@ -38,7 +39,7 @@ export class SkillRegistry {
38
39
  this.assertValidSource();
39
40
  const existing = fs.existsSync(this.targetPath);
40
41
  if (existing && this.readMarker()?.managedBy !== "agent-bot") {
41
- throw new Error(`The target directory exists and is not managed by Agent Bot: ${this.targetPath}`);
42
+ throw new Error(cliText(`The target directory exists and is not managed by Agent Bot: ${this.targetPath}`, `目标目录已存在且不由 Agent Bot 管理:${this.targetPath}`));
42
43
  }
43
44
  const before = existing ? this.status() : undefined;
44
45
  if (before?.upToDate)
@@ -68,19 +69,19 @@ export class SkillRegistry {
68
69
  if (!fs.existsSync(this.targetPath))
69
70
  return false;
70
71
  if (this.readMarker()?.managedBy !== "agent-bot") {
71
- throw new Error(`Refusing to remove a directory that is not managed by Agent Bot: ${this.targetPath}`);
72
+ throw new Error(cliText(`Refusing to remove a directory that is not managed by Agent Bot: ${this.targetPath}`, `拒绝删除不由 Agent Bot 管理的目录:${this.targetPath}`));
72
73
  }
73
74
  this.removeManagedTarget();
74
75
  return true;
75
76
  }
76
77
  assertValidSource() {
77
78
  if (!fs.existsSync(path.join(this.sourcePath, "SKILL.md"))) {
78
- throw new Error(`The built-in Agent Bot Skill was not found: ${this.sourcePath}`);
79
+ throw new Error(cliText(`The built-in Agent Bot Skill was not found: ${this.sourcePath}`, `未找到内置 Agent Bot Skill:${this.sourcePath}`));
79
80
  }
80
81
  }
81
82
  assertSafeTarget() {
82
83
  if (path.dirname(this.targetPath) !== this.skillsRoot || path.basename(this.targetPath) !== SKILL_NAME) {
83
- throw new Error(`Unsafe Skill target path: ${this.targetPath}`);
84
+ throw new Error(cliText(`Unsafe Skill target path: ${this.targetPath}`, `不安全的 Skill 目标路径:${this.targetPath}`));
84
85
  }
85
86
  }
86
87
  readMarker() {
@@ -1 +1 @@
1
- {"version":3,"file":"SkillRegistry.js","sourceRoot":"","sources":["../../src/cli/SkillRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SkillRegistry.js","sourceRoot":"","sources":["../../src/cli/SkillRegistry.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import qrcode from "qrcode-terminal";
2
+ import { cliText } from "./i18n.js";
2
3
  export function printVerificationQrAndLink(options, write = (value) => process.stderr.write(value), renderQr = (value, callback) => qrcode.generate(value, { small: true }, callback)) {
3
4
  if (!options.json) {
4
5
  write(`\n${options.qrInstruction}\n\n`);
5
6
  renderQr(options.verificationUrl, (output) => write(`${output}\n`));
6
7
  }
7
- write(`Authorization link:\n${options.verificationUrl}\n\n`);
8
+ write(`${options.linkLabel ?? cliText("Authorization link", "授权链接", options.language)}${cliText(":", ":", options.language)}\n${options.verificationUrl}\n\n`);
8
9
  }
9
10
  //# sourceMappingURL=VerificationOutput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VerificationOutput.js","sourceRoot":"","sources":["../../src/cli/VerificationOutput.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAQrC,MAAM,UAAU,0BAA0B,CACxC,OAAkC,EAClC,KAAK,GAA4B,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EACvE,QAAQ,GAGI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;IAElF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,KAAK,OAAO,CAAC,aAAa,MAAM,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,wBAAwB,OAAO,CAAC,eAAe,MAAM,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"VerificationOutput.js","sourceRoot":"","sources":["../../src/cli/VerificationOutput.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAC;AAUtD,MAAM,UAAU,0BAA0B,CACxC,OAAkC,EAClC,KAAK,GAA4B,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EACvE,QAAQ,GAGI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;IAElF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,KAAK,OAAO,CAAC,aAAa,MAAM,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,eAAe,MAAM,CAAC,CAAC;AACjK,CAAC"}
package/dist/cli/help.js CHANGED
@@ -1,4 +1,51 @@
1
- export function renderCliHelp(version) {
1
+ import { cliLanguage } from "./i18n.js";
2
+ export function renderCliHelp(version, language = cliLanguage) {
3
+ if (language === "zh") {
4
+ return `Agent Bot ${version}
5
+ 通过飞书使用本地 Codex 和 ACP Agent。
6
+
7
+ 用法:
8
+ agent-bot [选项] <命令>
9
+
10
+ 常用命令:
11
+ init 初始化飞书应用并启动服务
12
+ init --reset 重置并重新配置显式指定的 Profile
13
+ console 打开本地控制台
14
+ server start 在后台启动 Agent Bot
15
+ server status 显示服务、飞书 App ID 和安全重启状态
16
+ server restart 安排安全重启
17
+ server stop 停止 Agent Bot
18
+ task list 列出任务
19
+ task status <任务> 显示任务状态
20
+ task chat <任务> 显示任务绑定的飞书会话
21
+ task prompt <任务> <提示词> 向任务发送提示词
22
+ task stop <任务> 停止任务
23
+ task title <任务> <标题> 重命名任务
24
+ skills status 显示内置 Skill 状态
25
+ skills install 安装内置 Skill
26
+
27
+ 选项:
28
+ --profile <目录> 使用独立的 Profile 目录
29
+ --config <路径> 使用指定的配置文件
30
+ --json 在支持时输出 JSON
31
+ -h, --help 显示帮助
32
+ -v, --version 显示版本
33
+
34
+ 初始化选项:
35
+ --reset 备份并重置显式指定的 Profile
36
+ --skip-feishu 仅初始化 Console 环境
37
+ --reconfigure-feishu 仅替换现有飞书凭据
38
+
39
+ 示例:
40
+ agent-bot init
41
+ agent-bot --profile ~/.agent-bot init --reset
42
+ agent-bot --profile ~/.agent-bot-rescue init
43
+ agent-bot server start
44
+ agent-bot server status
45
+ agent-bot task list
46
+ agent-bot server restart --reason "更新 Agent Bot"
47
+ `;
48
+ }
2
49
  return `Agent Bot ${version}
3
50
  Use local Codex and ACP agents from Lark/Feishu.
4
51
 
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C5B,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C9B,CAAC;IACA,CAAC;IAED,OAAO,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C5B,CAAC;AACF,CAAC"}
@@ -0,0 +1,27 @@
1
+ export function detectCliLanguage(locale = systemLocale()) {
2
+ return /^zh(?:[-_]|$)/i.test(locale.trim()) ? "zh" : "en";
3
+ }
4
+ export const cliLanguage = detectCliLanguage();
5
+ export function cliText(english, chinese, language = cliLanguage) {
6
+ return language === "zh" ? chinese : english;
7
+ }
8
+ export function localizeCliErrorMessage(message, language = cliLanguage) {
9
+ if (language !== "zh")
10
+ return message;
11
+ const missingConfig = /^Config file does not exist: (.+)$/u.exec(message);
12
+ if (missingConfig)
13
+ return `配置文件不存在:${missingConfig[1]}`;
14
+ const missingAgent = /^Default agent "(.+)" is not configured\.$/u.exec(message);
15
+ if (missingAgent)
16
+ return `默认 Agent“${missingAgent[1]}”尚未配置。`;
17
+ return message;
18
+ }
19
+ function systemLocale() {
20
+ try {
21
+ return Intl.DateTimeFormat().resolvedOptions().locale || "en";
22
+ }
23
+ catch {
24
+ return "en";
25
+ }
26
+ }
27
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/cli/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,MAAM,GAAG,YAAY,EAAE;IACvD,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;AAE/C,MAAM,UAAU,OAAO,CACrB,OAAe,EACf,OAAe,EACf,QAAQ,GAAgB,WAAW;IAEnC,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,QAAQ,GAAgB,WAAW;IAEnC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAEtC,MAAM,aAAa,GAAG,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI,aAAa;QAAE,OAAO,WAAW,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAExD,MAAM,YAAY,GAAG,6CAA6C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,IAAI,YAAY;QAAE,OAAO,YAAY,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE7D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -2,7 +2,7 @@ export function parseInitCommandOptions(input, explicitProfile) {
2
2
  const supported = new Set(["--json", "--skip-feishu", "--reconfigure-feishu", "--reset"]);
3
3
  const unsupported = input.filter((value) => !supported.has(value));
4
4
  if (unsupported.length > 0) {
5
- throw new Error(`Unsupported init options: ${unsupported.join(" ")}`);
5
+ throw new Error(cliText(`Unsupported init options: ${unsupported.join(" ")}`, `不支持的 init 选项:${unsupported.join(" ")}`));
6
6
  }
7
7
  const options = {
8
8
  json: input.includes("--json"),
@@ -11,14 +11,15 @@ export function parseInitCommandOptions(input, explicitProfile) {
11
11
  reset: input.includes("--reset"),
12
12
  };
13
13
  if (options.skipFeishu && options.reconfigureFeishu) {
14
- throw new Error("--skip-feishu and --reconfigure-feishu cannot be used together.");
14
+ throw new Error(cliText("--skip-feishu and --reconfigure-feishu cannot be used together.", "--skip-feishu 和 --reconfigure-feishu 不能同时使用。"));
15
15
  }
16
16
  if (options.reset && !explicitProfile) {
17
- throw new Error("--reset requires an explicit --profile <directory>.");
17
+ throw new Error(cliText("--reset requires an explicit --profile <directory>.", "--reset 需要显式指定 --profile <目录>。"));
18
18
  }
19
19
  if (options.reset && options.reconfigureFeishu) {
20
- throw new Error("--reset cannot be combined with --reconfigure-feishu because reset already replaces Lark credentials.");
20
+ throw new Error(cliText("--reset cannot be combined with --reconfigure-feishu because reset already replaces Lark credentials.", "--reset 不能与 --reconfigure-feishu 同时使用,因为重置已经会替换飞书凭据。"));
21
21
  }
22
22
  return options;
23
23
  }
24
+ import { cliText } from "./i18n.js";
24
25
  //# sourceMappingURL=initOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initOptions.js","sourceRoot":"","sources":["../../src/cli/initOptions.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,uBAAuB,CACrC,KAAe,EACf,eAAwB;IAExB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC9B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3C,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACzD,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;KACjC,CAAC;IACF,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"initOptions.js","sourceRoot":"","sources":["../../src/cli/initOptions.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,uBAAuB,CACrC,KAAe,EACf,eAAwB;IAExB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,OAAO,CACrB,6BAA6B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACpD,gBAAgB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACxC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC9B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3C,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACzD,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;KACjC,CAAC;IACF,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,OAAO,CACrB,iEAAiE,EACjE,8CAA8C,CAC/C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,OAAO,CACrB,qDAAqD,EACrD,gCAAgC,CACjC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,OAAO,CACrB,uGAAuG,EACvG,sDAAsD,CACvD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AACD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import fs from "node:fs";
2
+ import { cliText } from "./i18n.js";
2
3
  import { fileURLToPath } from "node:url";
3
4
  export function readPackageVersion(packageJsonUrl = new URL("../../package.json", import.meta.url)) {
4
5
  const metadata = JSON.parse(fs.readFileSync(fileURLToPath(packageJsonUrl), "utf8"));
5
6
  if (typeof metadata.version !== "string" || !metadata.version.trim()) {
6
- throw new Error("package.json does not contain a valid version.");
7
+ throw new Error(cliText("package.json does not contain a valid version.", "package.json 中不包含有效版本号。"));
7
8
  }
8
9
  return metadata.version;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../src/cli/packageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAChC,cAAc,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAC9B,CAAC;IAC3B,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../src/cli/packageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAChC,cAAc,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAC9B,CAAC;IAC3B,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,OAAO,CACrB,gDAAgD,EAChD,yBAAyB,CAC1B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import path from "node:path";
2
+ import { cliText } from "./i18n.js";
2
3
  import { AGENT_BOT_EXPLICIT_PROFILE_ENV, AGENT_BOT_HOME_ENV, DEFAULT_CONFIG_FILE, resolveUserPath, } from "../config/paths.js";
3
4
  export function parseGlobalOptions(input) {
4
5
  const args = [...input];
5
6
  const configPath = removeOption(args, "--config");
6
7
  const profilePath = removeOption(args, "--profile");
7
8
  if (configPath && profilePath) {
8
- throw new Error("--profile and --config cannot be used together. A profile always uses config.yaml in its directory.");
9
+ throw new Error(cliText("--profile and --config cannot be used together. A profile always uses config.yaml in its directory.", "--profile 和 --config 不能同时使用。Profile 始终使用其目录中的 config.yaml。"));
9
10
  }
10
11
  return {
11
12
  args,
@@ -27,13 +28,13 @@ export function applyExplicitProfile(profilePath, env = process.env, baseDirecto
27
28
  function removeOption(args, option) {
28
29
  const indexes = args.flatMap((value, index) => value === option ? [index] : []);
29
30
  if (indexes.length > 1)
30
- throw new Error(`${option} can only be specified once.`);
31
+ throw new Error(cliText(`${option} can only be specified once.`, `${option} 只能指定一次。`));
31
32
  const index = indexes[0];
32
33
  if (index === undefined)
33
34
  return undefined;
34
35
  const value = args[index + 1];
35
36
  if (!value || value.startsWith("--"))
36
- throw new Error(`${option} requires a directory or file path.`);
37
+ throw new Error(cliText(`${option} requires a directory or file path.`, `${option} 需要目录或文件路径。`));
37
38
  args.splice(index, 2);
38
39
  return value;
39
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/cli/profile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAa5B,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAChD,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAC;IACzH,CAAC;IACD,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,GAAG,GAAsB,OAAO,CAAC,GAAG,EACpC,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;IAE7B,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC5D,GAAG,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;IACnC,GAAG,CAAC,gBAAgB,GAAG,UAAU,CAAC;IAClC,GAAG,CAAC,8BAA8B,CAAC,GAAG,GAAG,CAAC;IAC1C,OAAO,GAAG,CAAC,aAAa,CAAC;IACzB,OAAO,GAAG,CAAC,iBAAiB,CAAC;IAC7B,OAAO,GAAG,CAAC,mBAAmB,CAAC;IAC/B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,MAAc;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,8BAA8B,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,qCAAqC,CAAC,CAAC;IACtG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/cli/profile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAa5B,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAChD,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,OAAO,CACrB,qGAAqG,EACrG,4DAA4D,CAC7D,CAAC,CAAC;IACL,CAAC;IACD,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,GAAG,GAAsB,OAAO,CAAC,GAAG,EACpC,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;IAE7B,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC5D,GAAG,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;IACnC,GAAG,CAAC,gBAAgB,GAAG,UAAU,CAAC;IAClC,GAAG,CAAC,8BAA8B,CAAC,GAAG,GAAG,CAAC;IAC1C,OAAO,GAAG,CAAC,aAAa,CAAC;IACzB,OAAO,GAAG,CAAC,iBAAiB,CAAC;IAC7B,OAAO,GAAG,CAAC,mBAAmB,CAAC;IAC/B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,MAAc;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAC7C,GAAG,MAAM,8BAA8B,EACvC,GAAG,MAAM,UAAU,CACpB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAC3D,GAAG,MAAM,qCAAqC,EAC9C,GAAG,MAAM,aAAa,CACvB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -9,29 +9,30 @@ export function withConfiguredFeishuAppId(data, configuredFeishuAppId) {
9
9
  feishuAppId: configuredFeishuAppId ?? null,
10
10
  };
11
11
  }
12
- export function formatServerStatus(data) {
12
+ export function formatServerStatus(data, language = cliLanguage) {
13
13
  const value = data && typeof data === "object" ? data : {};
14
14
  const activity = value.activity && typeof value.activity === "object"
15
15
  ? value.activity
16
16
  : {};
17
17
  const state = value.running === false
18
- ? "not running"
18
+ ? cliText("not running", "未运行", language)
19
19
  : value.ready === false
20
- ? "starting (connecting to Lark)"
21
- : "running";
20
+ ? cliText("starting (connecting to Lark)", "正在启动(连接飞书中)", language)
21
+ : cliText("running", "运行中", language);
22
22
  const safeRestart = value.safeRestartScheduled
23
- ? `pending (${String(value.safeRestartReason ?? "no reason provided")})`
24
- : "not scheduled";
23
+ ? cliText(`pending (${String(value.safeRestartReason ?? "no reason provided")})`, `等待中(${String(value.safeRestartReason ?? "未提供原因")})`, language)
24
+ : cliText("not scheduled", "未计划", language);
25
25
  return [
26
- `Agent Bot server: ${state}`,
27
- `Lark App ID: ${value.feishuAppId ?? "not configured"}`,
28
- `PID: ${value.pid ?? "-"}`,
29
- `Started at: ${value.startedAt ?? "-"}`,
30
- `Supervisor: ${value.supervised ? "enabled" : "disabled"}`,
31
- `Running tasks: ${activity.runningSessions ?? 0}`,
32
- `Pending final deliveries: ${activity.pendingFinalDeliveries ?? 0}`,
33
- `Safe restart: ${safeRestart}`,
26
+ `${cliText("Agent Bot server: ", "Agent Bot 服务:", language)}${state}`,
27
+ `${cliText("Lark App ID: ", "飞书 App ID:", language)}${value.feishuAppId ?? cliText("not configured", "未配置", language)}`,
28
+ `${cliText("PID: ", "PID:", language)}${value.pid ?? "-"}`,
29
+ `${cliText("Started at: ", "启动时间:", language)}${value.startedAt ?? "-"}`,
30
+ `${cliText("Supervisor: ", "Supervisor:", language)}${value.supervised ? cliText("enabled", "已启用", language) : cliText("disabled", "未启用", language)}`,
31
+ `${cliText("Running tasks: ", "运行中任务:", language)}${activity.runningSessions ?? 0}`,
32
+ `${cliText("Pending final deliveries: ", "待发送最终结果:", language)}${activity.pendingFinalDeliveries ?? 0}`,
33
+ `${cliText("Safe restart: ", "安全重启:", language)}${safeRestart}`,
34
34
  "",
35
35
  ].join("\n");
36
36
  }
37
+ import { cliLanguage, cliText } from "./i18n.js";
37
38
  //# 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;IAC9C,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,aAAa;QACf,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK;YACrB,CAAC,CAAC,+BAA+B;YACjC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,WAAW,GAAG,KAAK,CAAC,oBAAoB;QAC5C,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,oBAAoB,CAAC,GAAG;QACxE,CAAC,CAAC,eAAe,CAAC;IACpB,OAAO;QACL,qBAAqB,KAAK,EAAE;QAC5B,gBAAgB,KAAK,CAAC,WAAW,IAAI,gBAAgB,EAAE;QACvD,QAAQ,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;QAC1B,eAAe,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE;QACvC,eAAe,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;QAC1D,kBAAkB,QAAQ,CAAC,eAAe,IAAI,CAAC,EAAE;QACjD,6BAA6B,QAAQ,CAAC,sBAAsB,IAAI,CAAC,EAAE;QACnE,iBAAiB,WAAW,EAAE;QAC9B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
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,15 +1,16 @@
1
1
  import { baseChatContextKey, isThreadContextKey } from "../feishu/contextKey.js";
2
+ import { cliText } from "./i18n.js";
2
3
  const CHAT_CONTEXT_PREFIX = "chat_id:";
3
4
  const THREAD_CONTEXT_MARKER = ":thread_id:";
4
5
  export function taskChatRoute(session) {
5
6
  const contextKey = session.contextKey;
6
7
  const baseContextKey = baseChatContextKey(contextKey);
7
8
  if (!baseContextKey.startsWith(CHAT_CONTEXT_PREFIX)) {
8
- throw new Error(`The task is not bound to a Lark chat: ${session.remoteSessionId ?? session.acpSessionId ?? session.localSessionId}`);
9
+ throw new Error(cliText(`The task is not bound to a Lark chat: ${session.remoteSessionId ?? session.acpSessionId ?? session.localSessionId}`, `任务未绑定飞书会话:${session.remoteSessionId ?? session.acpSessionId ?? session.localSessionId}`));
9
10
  }
10
11
  const chatId = baseContextKey.slice(CHAT_CONTEXT_PREFIX.length);
11
12
  if (!chatId)
12
- throw new Error(`The task has an invalid Lark chat ID: ${contextKey}`);
13
+ throw new Error(cliText(`The task has an invalid Lark chat ID: ${contextKey}`, `任务的飞书会话 ID 无效:${contextKey}`));
13
14
  const threadId = isThreadContextKey(contextKey)
14
15
  ? contextKey.slice(contextKey.indexOf(THREAD_CONTEXT_MARKER) + THREAD_CONTEXT_MARKER.length)
15
16
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"taskChatRoute.js","sourceRoot":"","sources":["../../src/cli/taskChatRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGjF,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAS5C,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,yCAAyC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACxI,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC;QAC7C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC;QAC5F,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc;QACjF,MAAM;QACN,UAAU;QACV,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"taskChatRoute.js","sourceRoot":"","sources":["../../src/cli/taskChatRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAS5C,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,OAAO,CACrB,yCAAyC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,EACpH,aAAa,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CACzF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAClC,yCAAyC,UAAU,EAAE,EACrD,iBAAiB,UAAU,EAAE,CAC9B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC;QAC7C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC;QAC5F,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc;QACjF,MAAM;QACN,UAAU;QACV,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC"}