@lih-x-x/kmr 1.0.33 → 1.0.35

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/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  - **记录管理**:`/list` 列出所有记录,`/show <id>` 查看详情,`/del <id>` 删除记录,`/task` 查看所有任务
13
13
  - **CLI 命令**:`kmr list`、`kmr show`、`kmr task`、`kmr del`、`kmr find` 等子命令可在终端直接操作,无需启动服务
14
14
  - **群聊智能识别**:群聊中非 @消息仅自动识别会议纪要文档链接(通过文档标题判断),其他操作需 @机器人
15
- - **管理员通知**:配置 `adminOpenId` 后,服务启动和停止时自动向管理员推送通知
15
+ - **管理员通知**:配置 `adminOpenId` 后,服务启动和停止时自动向管理员推送通知,每天 9:30 推送任务摘要(错过则启动时补推)
16
16
  - **版本更新检查**:启动时自动检测 npm 新版本并提示更新
17
17
  - **本地持久化**:所有数据以 JSON 文件存储在 `~/.kmr/` 目录下,支持 grep 检索
18
18
  - **Web 管理界面**:服务启动时自动打开浏览器,查看会议记录、AI 会话、管理配置
@@ -13,7 +13,6 @@ async function getBotOpenId(client) {
13
13
  method: "GET",
14
14
  url: "/open-apis/bot/v3/info"
15
15
  });
16
- console.log(`[bot] bot info response:`, JSON.stringify(res?.data || res, null, 2));
17
16
  const openId = res.data?.bot?.open_id || res.bot?.open_id || "";
18
17
  if (openId) {
19
18
  console.log(`[bot] \u673A\u5668\u4EBA open_id: ${openId}`);
@@ -31,26 +30,22 @@ function createEventDispatcher(botOpenId, onMessage) {
31
30
  const processedMessages = /* @__PURE__ */ new Set();
32
31
  dispatcher.register({
33
32
  "im.message.receive_v1": async (data) => {
34
- console.log(`[recv] \u6536\u5230\u98DE\u4E66\u4E8B\u4EF6:`, JSON.stringify(data, null, 2));
35
33
  const message = data.message;
36
34
  if (message.message_type !== "text") {
37
- console.log(`[recv] \u5FFD\u7565\u975E\u6587\u672C\u6D88\u606F, type=${message.message_type}`);
38
35
  return;
39
36
  }
40
37
  const messageId = message.message_id;
41
38
  const senderType = data.sender?.sender_type;
42
- if (senderType === "app") {
43
- console.log(`[recv] \u5FFD\u7565\u673A\u5668\u4EBA\u81EA\u8EAB\u6D88\u606F: ${messageId}`);
39
+ const senderOpenId = data.sender?.sender_id?.open_id || "";
40
+ if (senderType === "app" && botOpenId && senderOpenId === botOpenId) {
44
41
  return;
45
42
  }
46
43
  if (processedMessages.has(messageId)) {
47
- console.log(`[dedup] \u8DF3\u8FC7\u91CD\u590D\u6D88\u606F: ${messageId}`);
48
44
  return;
49
45
  }
50
46
  processedMessages.add(messageId);
51
47
  const createTime = parseInt(message.create_time, 10);
52
48
  if (createTime && Date.now() - createTime > 2 * 60 * 1e3) {
53
- console.log(`[dedup] \u8DF3\u8FC7\u8FC7\u671F\u6D88\u606F: ${messageId}, \u521B\u5EFA\u4E8E ${new Date(createTime).toISOString()}`);
54
49
  return;
55
50
  }
56
51
  if (processedMessages.size > 1e3) {
@@ -61,9 +56,6 @@ function createEventDispatcher(botOpenId, onMessage) {
61
56
  let text = content.text || "";
62
57
  const chatId = message.chat_id;
63
58
  const mentions = message.mentions || [];
64
- if (mentions.length > 0) {
65
- console.log(`[recv] mentions:`, JSON.stringify(mentions));
66
- }
67
59
  const isMentioned = mentions.length > 0 && (!botOpenId || mentions.some((m) => {
68
60
  const mentionOpenId = m.id?.open_id || m.id_str || "";
69
61
  return mentionOpenId === botOpenId;
@@ -79,11 +71,9 @@ function createEventDispatcher(botOpenId, onMessage) {
79
71
  if (isGroup && !isMentioned) {
80
72
  const hasDocLink = /(https?:\/\/[^\s]*feishu\.cn\/[^\s]+)/.test(text);
81
73
  if (!hasDocLink) {
82
- console.log(`[recv] \u7FA4\u804A\u975E@\u673A\u5668\u4EBA\u6D88\u606F\u4E14\u975E\u6587\u6863\u94FE\u63A5, \u5FFD\u7565`);
83
74
  return;
84
75
  }
85
76
  }
86
- console.log(`[recv] \u89E3\u6790\u6D88\u606F: messageId=${messageId}, chatId=${chatId}, chatType=${message.chat_type}, text="${text}"`);
87
77
  const senderId = data.sender?.sender_id?.open_id || "unknown";
88
78
  await onMessage(messageId, text, chatId, senderId, { isGroup, isMentioned });
89
79
  }
@@ -28,12 +28,10 @@ var TaskCreator = class {
28
28
  ];
29
29
  }
30
30
  console.log(`[task] \u521B\u5EFA\u98DE\u4E66\u4EFB\u52A1: ${params.summary}`);
31
- console.log(`[task] \u8BF7\u6C42\u4F53:`, JSON.stringify(taskBody, null, 2));
32
31
  const response = await this.client.task.v2.task.create({
33
32
  params: { user_id_type: "open_id" },
34
33
  data: taskBody
35
34
  });
36
- console.log(`[task] API \u8FD4\u56DE:`, JSON.stringify(response.data, null, 2));
37
35
  const taskId = response.data?.task?.guid || "";
38
36
  const url = response.data?.task?.url || "";
39
37
  console.log(`[task] \u4EFB\u52A1\u521B\u5EFA\u6210\u529F: taskId=${taskId}`);
@@ -49,7 +47,6 @@ var TaskCreator = class {
49
47
  });
50
48
  const task = response.data?.task;
51
49
  if (!task) return null;
52
- console.log(`[task-sync] \u4EFB\u52A1 ${taskId} \u72B6\u6001: completed_at="${task.completed_at}"`);
53
50
  const completedAt = task.completed_at || "";
54
51
  const ts = parseInt(completedAt, 10);
55
52
  const isCompleted = ts > 0;
@@ -81,9 +81,6 @@ var ClaudeCodeProvider = class {
81
81
  name = "claude";
82
82
  async extract(content) {
83
83
  const prompt = EXTRACT_PROMPT + content;
84
- console.log(`[ClaudeCodeProvider] \u63D0\u53D6\u4FE1\u606F\u7684 prompt:
85
- ${prompt}
86
- --- End of Prompt ---`);
87
84
  const output = await this.callAcpx(prompt);
88
85
  const parsed = JSON.parse(output);
89
86
  return {
@@ -1,6 +1,5 @@
1
1
  // src/task/sync.ts
2
2
  async function syncTaskStatuses(store, taskCreator) {
3
- console.log("[task-sync] \u5F00\u59CB\u540C\u6B65\u98DE\u4E66\u4EFB\u52A1\u72B6\u6001...");
4
3
  try {
5
4
  const meetings = await store.list();
6
5
  let updatedCount = 0;
@@ -24,7 +23,6 @@ async function syncTaskStatuses(store, taskCreator) {
24
23
  updatedCount++;
25
24
  }
26
25
  }
27
- console.log(`[task-sync] \u540C\u6B65\u5B8C\u6210, \u66F4\u65B0\u4E86 ${updatedCount} \u6761\u4F1A\u8BAE\u8BB0\u5F55`);
28
26
  } catch (err) {
29
27
  console.error("[task-sync] \u540C\u6B65\u5931\u8D25:", err.message);
30
28
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ClaudeCodeProvider
3
- } from "./chunk-EIQS5WF7.js";
3
+ } from "./chunk-WMK5MYOU.js";
4
4
  import "./chunk-ZXGVA5QX.js";
5
5
  export {
6
6
  ClaudeCodeProvider
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.33") {
9
+ if (data.version && data.version !== "1.0.35") {
10
10
  console.log(`
11
- \u2B06\uFE0F \u65B0\u7248\u672C\u53EF\u7528: ${"1.0.33"} \u2192 ${data.version}`);
11
+ \u2B06\uFE0F \u65B0\u7248\u672C\u53EF\u7528: ${"1.0.35"} \u2192 ${data.version}`);
12
12
  console.log(` \u8FD0\u884C npm install -g ${"@lih-x-x/kmr"} \u66F4\u65B0
13
13
  `);
14
14
  }
@@ -55,13 +55,13 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
55
55
  kmr --help \u663E\u793A\u5E2E\u52A9
56
56
  `);
57
57
  } else if (command === "--version" || command === "-v") {
58
- console.log("1.0.33");
58
+ console.log("1.0.35");
59
59
  } else if (command === "list") {
60
60
  const { loadConfig } = await import("./config-L2SVVMAR.js");
61
61
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
62
- const { createLarkClient } = await import("./client-CKWRSYEN.js");
63
- const { TaskCreator } = await import("./taskCreator-QVSOLXXU.js");
64
- const { syncTaskStatuses } = await import("./sync-E4SW7QFZ.js");
62
+ const { createLarkClient } = await import("./client-DFBBDD77.js");
63
+ const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
64
+ const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
65
65
  const config = loadConfig();
66
66
  const store = new JsonStore(config.storage.dataDir);
67
67
  const client = createLarkClient(config);
@@ -82,9 +82,9 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
82
82
  }
83
83
  const { loadConfig } = await import("./config-L2SVVMAR.js");
84
84
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
85
- const { createLarkClient } = await import("./client-CKWRSYEN.js");
86
- const { TaskCreator } = await import("./taskCreator-QVSOLXXU.js");
87
- const { syncTaskStatuses } = await import("./sync-E4SW7QFZ.js");
85
+ const { createLarkClient } = await import("./client-DFBBDD77.js");
86
+ const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
87
+ const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
88
88
  const config = loadConfig();
89
89
  const store = new JsonStore(config.storage.dataDir);
90
90
  const client = createLarkClient(config);
@@ -99,9 +99,9 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
99
99
  } else if (command === "task") {
100
100
  const { loadConfig } = await import("./config-L2SVVMAR.js");
101
101
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
102
- const { createLarkClient } = await import("./client-CKWRSYEN.js");
103
- const { TaskCreator } = await import("./taskCreator-QVSOLXXU.js");
104
- const { syncTaskStatuses } = await import("./sync-E4SW7QFZ.js");
102
+ const { createLarkClient } = await import("./client-DFBBDD77.js");
103
+ const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
104
+ const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
105
105
  const config = loadConfig();
106
106
  const store = new JsonStore(config.storage.dataDir);
107
107
  const client = createLarkClient(config);
@@ -140,12 +140,12 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
140
140
  process.exit(1);
141
141
  }
142
142
  const { loadConfig } = await import("./config-L2SVVMAR.js");
143
- const { ClaudeCodeProvider } = await import("./claudeCode-HNZS3G7L.js");
143
+ const { ClaudeCodeProvider } = await import("./claudeCode-2OTK6CH4.js");
144
144
  const { QueryHandler } = await import("./handler-46CQQIA2.js");
145
145
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
146
- const { createLarkClient } = await import("./client-CKWRSYEN.js");
147
- const { TaskCreator } = await import("./taskCreator-QVSOLXXU.js");
148
- const { syncTaskStatuses } = await import("./sync-E4SW7QFZ.js");
146
+ const { createLarkClient } = await import("./client-DFBBDD77.js");
147
+ const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
148
+ const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
149
149
  const config = loadConfig();
150
150
  const store = new JsonStore(config.storage.dataDir);
151
151
  const client = createLarkClient(config);
@@ -3,7 +3,7 @@ import {
3
3
  createLarkClient,
4
4
  getBotOpenId,
5
5
  startWSClient
6
- } from "./chunk-4KKCJLHW.js";
6
+ } from "./chunk-3F3LSPSA.js";
7
7
  export {
8
8
  createEventDispatcher,
9
9
  createLarkClient,
package/dist/index.js CHANGED
@@ -9,17 +9,17 @@ import {
9
9
  createLarkClient,
10
10
  getBotOpenId,
11
11
  startWSClient
12
- } from "./chunk-4KKCJLHW.js";
12
+ } from "./chunk-3F3LSPSA.js";
13
13
  import {
14
14
  TaskCreator
15
- } from "./chunk-RYCZGTCI.js";
15
+ } from "./chunk-KAWJNGXR.js";
16
16
  import {
17
17
  syncTaskStatuses
18
- } from "./chunk-KK3DMZOA.js";
18
+ } from "./chunk-XQVLJTP4.js";
19
19
  import {
20
20
  ClaudeCodeProvider,
21
21
  getExecEnv
22
- } from "./chunk-EIQS5WF7.js";
22
+ } from "./chunk-WMK5MYOU.js";
23
23
  import {
24
24
  KMR_DIR,
25
25
  getAgentProvider,
@@ -75,7 +75,6 @@ var DocReader = class {
75
75
  }
76
76
  pageToken = response.data?.page_token || void 0;
77
77
  } while (pageToken);
78
- console.log(`[docReader] \u6587\u6863 ${documentId} \u5171\u63D0\u53D6 ${blocks.length} \u4E2A\u6587\u672C\u5757`);
79
78
  return blocks.join("\n");
80
79
  }
81
80
  extractBlockText(block) {
@@ -600,7 +599,6 @@ var SessionManager = class {
600
599
  async ensureSession(userId) {
601
600
  const existing = this.activeSessions.get(userId);
602
601
  if (existing) {
603
- console.log(`[session] \u590D\u7528\u5DF2\u6709 session: ${existing.name}`);
604
602
  return existing.name;
605
603
  }
606
604
  const sessionName = `kmr-${userId}`;
@@ -620,7 +618,6 @@ var SessionManager = class {
620
618
  console.error(`[session] \u521B\u5EFA session \u5931\u8D25:`, err.message);
621
619
  throw new Error(`\u521B\u5EFA\u4F1A\u8BDD\u5931\u8D25: ${err.message}`);
622
620
  }
623
- console.log(`[session] \u53D1\u9001\u89D2\u8272\u8BBE\u5B9A...`);
624
621
  try {
625
622
  await execFileAsync(
626
623
  "acpx",
@@ -644,8 +641,6 @@ var SessionManager = class {
644
641
  ["--approve-all", agentCmd, "-s", sessionName, text],
645
642
  { timeout: this.timeout, maxBuffer: 1024 * 1024, env: getExecEnv() }
646
643
  );
647
- console.log(`[session] agent \u5B8C\u6574\u8F93\u51FA:
648
- ${stdout}`);
649
644
  return this.extractReply(stdout);
650
645
  } catch (err) {
651
646
  if (err.killed) {
@@ -735,7 +730,6 @@ var UserResolver = class {
735
730
  */
736
731
  async loadChatMembers(chatId) {
737
732
  if (this.loadedChats.has(chatId)) return;
738
- console.log(`[user-resolver] \u52A0\u8F7D\u7FA4\u6210\u5458: chatId=${chatId}`);
739
733
  try {
740
734
  let pageToken;
741
735
  do {
@@ -756,7 +750,6 @@ var UserResolver = class {
756
750
  pageToken = response.data?.has_more ? response.data?.page_token : void 0;
757
751
  } while (pageToken);
758
752
  this.loadedChats.add(chatId);
759
- console.log(`[user-resolver] \u7FA4\u6210\u5458\u52A0\u8F7D\u5B8C\u6210, \u5F53\u524D\u6620\u5C04\u6570: ${this.nameMap.size}`);
760
753
  } catch (err) {
761
754
  console.error(`[user-resolver] \u52A0\u8F7D\u7FA4\u6210\u5458\u5931\u8D25:`, err.message);
762
755
  }
@@ -785,34 +778,25 @@ async function main() {
785
778
  const botOpenId = await getBotOpenId(client);
786
779
  const dispatcher = createEventDispatcher(botOpenId, async (messageId, text, chatId, senderId, meta) => {
787
780
  const parsed = parseMessage(text);
788
- console.log(`[route] \u6D88\u606F\u8DEF\u7531: type=${parsed.type}, messageId=${messageId}, isGroup=${meta.isGroup}, isMentioned=${meta.isMentioned}`);
781
+ console.log(`[route] type=${parsed.type}, isGroup=${meta.isGroup}, isMentioned=${meta.isMentioned}`);
789
782
  if (meta.isGroup && !meta.isMentioned && parsed.type === "document_link" /* DOCUMENT_LINK */) {
790
783
  const title = await docReader.getDocumentTitle(parsed.documentId);
791
- console.log(`[filter] \u7FA4\u804A\u6587\u6863\u6807\u9898: "${title}"`);
792
784
  const isMeetingNote = /纪要|会议记录|meeting/i.test(title) || /from=vc_assistant/.test(text);
793
785
  if (!isMeetingNote) {
794
- console.log(`[filter] \u6587\u6863\u6807\u9898\u4E0D\u542B\u7EAA\u8981\u5173\u952E\u8BCD, \u5FFD\u7565`);
795
786
  return;
796
787
  }
797
- console.log(`[filter] \u786E\u8BA4\u4E3A\u4F1A\u8BAE\u7EAA\u8981, \u7EE7\u7EED\u5904\u7406`);
798
788
  }
799
789
  try {
800
790
  switch (parsed.type) {
801
791
  case "document_link" /* DOCUMENT_LINK */: {
802
- console.log(`[process] \u5F00\u59CB\u5904\u7406\u6587\u6863\u94FE\u63A5, documentId=${parsed.documentId}`);
792
+ console.log(`[process] \u5904\u7406\u6587\u6863\u94FE\u63A5, documentId=${parsed.documentId}`);
803
793
  await messenger.replyText(messageId, "\u6B63\u5728\u63D0\u53D6\u4F1A\u8BAE\u5173\u952E\u4FE1\u606F\uFF0C\u8BF7\u7A0D\u5019...");
804
- console.log(`[reply] \u5DF2\u53D1\u9001"\u6B63\u5728\u63D0\u53D6"\u63D0\u793A`);
805
- console.log(`[process] \u8BFB\u53D6\u98DE\u4E66\u6587\u6863\u5185\u5BB9...`);
806
794
  const content = await docReader.readDocument(parsed.documentId);
807
- console.log(`[process] \u6587\u6863\u5185\u5BB9\u8BFB\u53D6\u5B8C\u6210, \u957F\u5EA6=${content.length}`);
808
- console.log(`[process] \u8C03\u7528 Agent \u63D0\u53D6\u4F1A\u8BAE\u4FE1\u606F...`);
809
795
  const record = await agent.extract(content);
810
- console.log(`[process] Agent \u63D0\u53D6\u5B8C\u6210: title="${record.summary.title}"`);
811
796
  record.documentUrl = text.match(/(https?:\/\/[^\s]*feishu\.cn\/[^\s]+)/)?.[0] || "";
812
797
  await store.save(record);
813
798
  console.log(`\u2705 \u4F1A\u8BAE\u63D0\u53D6\u6210\u529F: ${record.summary.title} (${record.id})`);
814
799
  await messenger.replyMeetingSummary(messageId, record);
815
- console.log(`[reply] \u5DF2\u53D1\u9001\u4F1A\u8BAE\u6458\u8981\u56DE\u590D`);
816
800
  if (record.todos.length > 0) {
817
801
  await userResolver.loadChatMembers(chatId);
818
802
  const oldPending = pendingConfirmations.get(senderId);
@@ -821,7 +805,6 @@ async function main() {
821
805
  const p = pendingConfirmations.get(senderId);
822
806
  if (p && p.meetingId === record.id) {
823
807
  pendingConfirmations.delete(senderId);
824
- console.log(`[timeout] \u5F85\u529E\u786E\u8BA4\u8D85\u65F6, userId=${senderId}, meetingId=${record.id}`);
825
808
  }
826
809
  }, 18e4);
827
810
  pendingConfirmations.set(senderId, {
@@ -832,26 +815,21 @@ async function main() {
832
815
  timer
833
816
  });
834
817
  await messenger.replyTodoConfirmation(messageId, record.todos);
835
- console.log(`[reply] \u5DF2\u53D1\u9001\u5F85\u529E\u786E\u8BA4\u6D88\u606F, ${record.todos.length} \u6761\u5F85\u529E`);
836
818
  }
837
819
  break;
838
820
  }
839
821
  case "find_query" /* FIND_QUERY */: {
840
- console.log(`[process] \u5F00\u59CB\u641C\u7D22: query="${parsed.query}"`);
822
+ console.log(`[process] \u641C\u7D22: query="${parsed.query}"`);
841
823
  await syncTaskStatuses(store, taskCreator);
842
824
  const results = await queryHandler.find(parsed.query);
843
- console.log(`[process] \u641C\u7D22\u5B8C\u6210, \u7ED3\u679C\u6570=${results.length}`);
844
825
  await messenger.replySearchResults(messageId, results);
845
- console.log(`[reply] \u5DF2\u53D1\u9001\u641C\u7D22\u7ED3\u679C`);
846
826
  break;
847
827
  }
848
828
  case "list_all" /* LIST_ALL */: {
849
829
  console.log(`[process] \u5217\u51FA\u6240\u6709\u8BB0\u5F55`);
850
830
  await syncTaskStatuses(store, taskCreator);
851
831
  const all = await store.list();
852
- console.log(`[process] \u5171 ${all.length} \u6761\u8BB0\u5F55`);
853
832
  await messenger.replyRecordList(messageId, all);
854
- console.log(`[reply] \u5DF2\u53D1\u9001\u8BB0\u5F55\u5217\u8868`);
855
833
  break;
856
834
  }
857
835
  case "list_tasks" /* LIST_TASKS */: {
@@ -898,7 +876,6 @@ async function main() {
898
876
  } else {
899
877
  await messenger.replyText(messageId, `\u274C \u672A\u627E\u5230\u8BB0\u5F55: ${parsed.deleteId}`);
900
878
  }
901
- console.log(`[reply] \u5DF2\u53D1\u9001\u5220\u9664\u7ED3\u679C`);
902
879
  break;
903
880
  }
904
881
  case "show_detail" /* SHOW_DETAIL */: {
@@ -910,7 +887,6 @@ async function main() {
910
887
  } else {
911
888
  await messenger.replyText(messageId, `\u274C \u672A\u627E\u5230\u8BB0\u5F55: ${parsed.showId}`);
912
889
  }
913
- console.log(`[reply] \u5DF2\u53D1\u9001\u8BE6\u60C5`);
914
890
  break;
915
891
  }
916
892
  case "confirm_tasks" /* CONFIRM_TASKS */: {
@@ -931,9 +907,6 @@ async function main() {
931
907
  for (const { todo, index } of selectedTodos) {
932
908
  try {
933
909
  const ownerOpenId = userResolver.resolve(todo.owner) || senderId;
934
- if (ownerOpenId !== senderId) {
935
- console.log(`[task] \u8D1F\u8D23\u4EBA "${todo.owner}" -> ${ownerOpenId}`);
936
- }
937
910
  const result = await taskCreator.createTask({
938
911
  summary: `${todo.content}\uFF08${todo.owner}\uFF09`,
939
912
  due: todo.deadline,
@@ -966,11 +939,9 @@ async function main() {
966
939
  }
967
940
  }
968
941
  await store.save(record);
969
- console.log(`[task] \u5DF2\u5C06 ${createdTasks.length} \u6761\u4EFB\u52A1\u5173\u8054\u5230\u4F1A\u8BAE ${pending.meetingId}`);
970
942
  }
971
943
  }
972
944
  pendingConfirmations.delete(senderId);
973
- console.log(`[reply] \u5DF2\u53D1\u9001\u4EFB\u52A1\u521B\u5EFA\u7ED3\u679C`);
974
945
  break;
975
946
  }
976
947
  case "reject_tasks" /* REJECT_TASKS */: {
@@ -982,26 +953,22 @@ async function main() {
982
953
  clearTimeout(pending.timer);
983
954
  pendingConfirmations.delete(senderId);
984
955
  await messenger.replyText(messageId, "\u2705 \u5DF2\u53D6\u6D88\u521B\u5EFA\u5F85\u529E\u4EFB\u52A1\u3002");
985
- console.log(`[process] \u7528\u6237\u62D2\u7EDD\u521B\u5EFA\u4EFB\u52A1, userId=${senderId}`);
986
956
  break;
987
957
  }
988
958
  case "unknown" /* UNKNOWN */: {
989
959
  if (meta.isGroup && !meta.isMentioned) {
990
- console.log(`[filter] \u7FA4\u804A\u975E@\u672A\u77E5\u6D88\u606F, \u5FFD\u7565`);
991
960
  break;
992
961
  }
993
962
  console.log(`[process] \u81EA\u7531\u5BF9\u8BDD, userId=${senderId}`);
994
963
  await messenger.replyText(messageId, "\u6B63\u5728\u601D\u8003...");
995
964
  const reply = await sessionManager.handleMessage(senderId, text);
996
965
  await messenger.replyText(messageId, reply);
997
- console.log(`[reply] \u5DF2\u53D1\u9001 AI \u56DE\u590D`);
998
966
  break;
999
967
  }
1000
968
  }
1001
969
  } catch (err) {
1002
970
  console.error("[error] \u5904\u7406\u6D88\u606F\u5931\u8D25:", err);
1003
971
  await messenger.replyText(messageId, `\u5904\u7406\u5931\u8D25: ${err.message}`);
1004
- console.log(`[reply] \u5DF2\u53D1\u9001\u9519\u8BEF\u56DE\u590D`);
1005
972
  }
1006
973
  });
1007
974
  startWSClient(client, dispatcher);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  syncTaskStatuses
3
- } from "./chunk-KK3DMZOA.js";
3
+ } from "./chunk-XQVLJTP4.js";
4
4
  export {
5
5
  syncTaskStatuses
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TaskCreator
3
- } from "./chunk-RYCZGTCI.js";
3
+ } from "./chunk-KAWJNGXR.js";
4
4
  export {
5
5
  TaskCreator
6
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lih-x-x/kmr",
3
- "version": "1.0.33",
3
+ "version": "1.0.35",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {