@lih-x-x/kmr 1.0.42 → 1.0.44

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/dist/cli.js CHANGED
@@ -6,9 +6,9 @@ async function checkUpdate() {
6
6
  try {
7
7
  const res = await fetch(`https://registry.npmjs.org/${"@lih-x-x/kmr"}/latest`, { signal: AbortSignal.timeout(3e3) });
8
8
  const data = await res.json();
9
- if (data.version && data.version !== "1.0.42") {
9
+ if (data.version && data.version !== "1.0.44") {
10
10
  console.log(`
11
- \u2B06\uFE0F \u65B0\u7248\u672C\u53EF\u7528: ${"1.0.42"} \u2192 ${data.version}`);
11
+ \u2B06\uFE0F \u65B0\u7248\u672C\u53EF\u7528: ${"1.0.44"} \u2192 ${data.version}`);
12
12
  console.log(` \u8FD0\u884C npm install -g ${"@lih-x-x/kmr"} \u66F4\u65B0
13
13
  `);
14
14
  }
@@ -56,7 +56,7 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
56
56
  kmr --help \u663E\u793A\u5E2E\u52A9
57
57
  `);
58
58
  } else if (command === "--version" || command === "-v") {
59
- console.log("1.0.42");
59
+ console.log("1.0.44");
60
60
  } else if (command === "list") {
61
61
  const { loadConfig } = await import("./config-L2SVVMAR.js");
62
62
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
package/dist/index.js CHANGED
@@ -640,28 +640,42 @@ var SessionManager = class {
640
640
  const sessionName = `kmr-${userId}`;
641
641
  const userDir = path2.join(this.sessionDir, userId);
642
642
  fs2.mkdirSync(userDir, { recursive: true });
643
- const skillPath = path2.join(userDir, "skill.md");
644
- fs2.writeFileSync(skillPath, SESSION_SKILL, "utf-8");
645
- console.log(`[session] \u521B\u5EFA\u65B0 session: ${sessionName}`);
646
643
  const agentCmd = this.getAgentCmd();
644
+ let sessionExists = false;
647
645
  try {
648
- await execFileAsync("acpx", [agentCmd, "sessions", "ensure", "--name", sessionName], {
649
- timeout: this.timeout,
646
+ const { stdout } = await execFileAsync("acpx", [agentCmd, "sessions", "list"], {
647
+ timeout: 1e4,
650
648
  maxBuffer: 1024 * 1024,
651
649
  env: getExecEnv()
652
650
  });
653
- } catch (err) {
654
- console.error(`[session] \u521B\u5EFA session \u5931\u8D25:`, err.message);
655
- throw new Error(`\u521B\u5EFA\u4F1A\u8BDD\u5931\u8D25: ${err.message}`);
656
- }
657
- try {
658
- await execFileAsync(
659
- "acpx",
660
- ["--approve-all", agentCmd, "-s", sessionName, SESSION_SKILL],
661
- { timeout: this.timeout, maxBuffer: 1024 * 1024, env: getExecEnv() }
651
+ sessionExists = stdout.split("\n").some(
652
+ (line) => !line.includes("[closed]") && line.split(" ")[1]?.trim() === sessionName
662
653
  );
663
- } catch (err) {
664
- console.error(`[session] \u89D2\u8272\u8BBE\u5B9A\u5931\u8D25:`, err.message);
654
+ } catch {
655
+ }
656
+ if (sessionExists) {
657
+ console.log(`[session] \u590D\u7528\u5DF2\u6709 acpx session: ${sessionName}`);
658
+ } else {
659
+ console.log(`[session] \u521B\u5EFA\u65B0 session: ${sessionName}`);
660
+ try {
661
+ await execFileAsync("acpx", [agentCmd, "sessions", "ensure", "--name", sessionName], {
662
+ timeout: this.timeout,
663
+ maxBuffer: 1024 * 1024,
664
+ env: getExecEnv()
665
+ });
666
+ } catch (err) {
667
+ console.error(`[session] \u521B\u5EFA session \u5931\u8D25:`, err.message);
668
+ throw new Error(`\u521B\u5EFA\u4F1A\u8BDD\u5931\u8D25: ${err.message}`);
669
+ }
670
+ try {
671
+ await execFileAsync(
672
+ "acpx",
673
+ ["--approve-all", agentCmd, "-s", sessionName, SESSION_SKILL],
674
+ { timeout: this.timeout, maxBuffer: 1024 * 1024, env: getExecEnv() }
675
+ );
676
+ } catch (err) {
677
+ console.error(`[session] \u89D2\u8272\u8BBE\u5B9A\u5931\u8D25:`, err.message);
678
+ }
665
679
  }
666
680
  this.activeSessions.set(userId, {
667
681
  name: sessionName,
@@ -739,6 +753,16 @@ var SessionManager = class {
739
753
  }
740
754
  this.activeSessions.delete(userId);
741
755
  }
756
+ /**
757
+ * 关闭所有活跃 session,服务退出时调用
758
+ */
759
+ async closeAll() {
760
+ const userIds = [...this.activeSessions.keys()];
761
+ if (userIds.length === 0) return;
762
+ console.log(`[session] \u6B63\u5728\u5173\u95ED ${userIds.length} \u4E2A\u6D3B\u8DC3 session...`);
763
+ await Promise.all(userIds.map((uid) => this.closeSession(uid)));
764
+ console.log(`[session] \u6240\u6709 session \u5DF2\u5173\u95ED`);
765
+ }
742
766
  };
743
767
 
744
768
  // src/index.ts
@@ -1045,22 +1069,26 @@ async function main() {
1045
1069
  }
1046
1070
  }, 6e4);
1047
1071
  }
1048
- if (config.lark.adminOpenId) {
1049
- const adminId = config.lark.adminOpenId;
1050
- let exiting = false;
1051
- const onExit = async (signal) => {
1052
- if (exiting) return;
1053
- exiting = true;
1054
- console.log(`[exit] \u6536\u5230 ${signal}\uFF0C\u6B63\u5728\u9000\u51FA...`);
1072
+ let exiting = false;
1073
+ const onExit = async (signal) => {
1074
+ if (exiting) return;
1075
+ exiting = true;
1076
+ console.log(`[exit] \u6536\u5230 ${signal}\uFF0C\u6B63\u5728\u9000\u51FA...`);
1077
+ try {
1078
+ await sessionManager.closeAll();
1079
+ } catch (err) {
1080
+ console.error("[exit] \u5173\u95ED session \u5931\u8D25:", err.message);
1081
+ }
1082
+ if (config.lark.adminOpenId) {
1055
1083
  try {
1056
- await messenger.sendToUser(adminId, `\u26D4 KMR \u670D\u52A1\u5DF2\u505C\u6B62\uFF08${signal}\uFF09`);
1084
+ await messenger.sendToUser(config.lark.adminOpenId, `\u26D4 KMR \u670D\u52A1\u5DF2\u505C\u6B62\uFF08${signal}\uFF09`);
1057
1085
  } catch (err) {
1058
1086
  console.error("[notify] \u63A8\u9001\u505C\u6B62\u901A\u77E5\u5931\u8D25:", err.message);
1059
1087
  }
1060
- process.exit(0);
1061
- };
1062
- process.on("SIGINT", () => onExit("SIGINT"));
1063
- process.on("SIGTERM", () => onExit("SIGTERM"));
1064
- }
1088
+ }
1089
+ process.exit(0);
1090
+ };
1091
+ process.on("SIGINT", () => onExit("SIGINT"));
1092
+ process.on("SIGTERM", () => onExit("SIGTERM"));
1065
1093
  }
1066
1094
  main().catch(console.error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lih-x-x/kmr",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {