@lih-x-x/kmr 1.0.63 → 1.0.64

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.
@@ -37,6 +37,38 @@ var TaskCreator = class {
37
37
  console.log(`[task] \u4EFB\u52A1\u521B\u5EFA\u6210\u529F: taskId=${taskId}`);
38
38
  return { taskId, url };
39
39
  }
40
+ /**
41
+ * 更新飞书任务(标题、截止日期、负责人)
42
+ */
43
+ async updateTask(taskId, params) {
44
+ const updateFields = [];
45
+ const taskBody = {};
46
+ if (params.summary) {
47
+ taskBody.summary = params.summary;
48
+ updateFields.push("summary");
49
+ }
50
+ if (params.due) {
51
+ const dueDate = /* @__PURE__ */ new Date(params.due + "T23:59:59+08:00");
52
+ taskBody.due = { timestamp: dueDate.getTime().toString(), is_all_day: true };
53
+ updateFields.push("due");
54
+ }
55
+ console.log(`[task] \u66F4\u65B0\u98DE\u4E66\u4EFB\u52A1: taskId=${taskId}`);
56
+ await this.client.task.v2.task.patch({
57
+ path: { task_guid: taskId },
58
+ params: { user_id_type: "open_id" },
59
+ data: { task: taskBody, update_fields: updateFields }
60
+ });
61
+ if (params.assigneeOpenId) {
62
+ await this.client.task.v2.task.addMembers({
63
+ path: { task_guid: taskId },
64
+ params: { user_id_type: "open_id" },
65
+ data: {
66
+ members: [{ id: params.assigneeOpenId, type: "user", role: "assignee" }]
67
+ }
68
+ });
69
+ }
70
+ console.log(`[task] \u4EFB\u52A1\u66F4\u65B0\u6210\u529F: taskId=${taskId}`);
71
+ }
40
72
  /**
41
73
  * 查询飞书任务的最新状态
42
74
  */
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.63") {
9
+ if (data.version && data.version !== "1.0.64") {
10
10
  console.log(`
11
- \u2B06\uFE0F \u65B0\u7248\u672C\u53EF\u7528: ${"1.0.63"} \u2192 ${data.version}`);
11
+ \u2B06\uFE0F \u65B0\u7248\u672C\u53EF\u7528: ${"1.0.64"} \u2192 ${data.version}`);
12
12
  console.log(` \u8FD0\u884C npm install -g ${"@lih-x-x/kmr"} \u66F4\u65B0
13
13
  `);
14
14
  }
@@ -56,12 +56,12 @@ 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.63");
59
+ console.log("1.0.64");
60
60
  } else if (command === "list") {
61
61
  const { loadConfig } = await import("./config-WIQGW5OC.js");
62
62
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
63
63
  const { createLarkClient } = await import("./client-DFBBDD77.js");
64
- const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
64
+ const { TaskCreator } = await import("./taskCreator-LQ75UCNQ.js");
65
65
  const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
66
66
  const config = loadConfig();
67
67
  const store = new JsonStore(config.storage.dataDir);
@@ -84,7 +84,7 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
84
84
  const { loadConfig } = await import("./config-WIQGW5OC.js");
85
85
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
86
86
  const { createLarkClient } = await import("./client-DFBBDD77.js");
87
- const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
87
+ const { TaskCreator } = await import("./taskCreator-LQ75UCNQ.js");
88
88
  const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
89
89
  const config = loadConfig();
90
90
  const store = new JsonStore(config.storage.dataDir);
@@ -101,7 +101,7 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
101
101
  const { loadConfig } = await import("./config-WIQGW5OC.js");
102
102
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
103
103
  const { createLarkClient } = await import("./client-DFBBDD77.js");
104
- const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
104
+ const { TaskCreator } = await import("./taskCreator-LQ75UCNQ.js");
105
105
  const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
106
106
  const config = loadConfig();
107
107
  const store = new JsonStore(config.storage.dataDir);
@@ -162,7 +162,7 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
162
162
  }
163
163
  const { loadConfig } = await import("./config-WIQGW5OC.js");
164
164
  const { createLarkClient } = await import("./client-DFBBDD77.js");
165
- const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
165
+ const { TaskCreator } = await import("./taskCreator-LQ75UCNQ.js");
166
166
  const { UserResolver } = await import("./userResolver-F76R3ZMT.js");
167
167
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
168
168
  const config = loadConfig();
@@ -226,6 +226,69 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
226
226
  await store.save(standalone);
227
227
  console.log(` \u5DF2\u4FDD\u5B58\u5230\u72EC\u7ACB\u4EFB\u52A1\u8BB0\u5F55`);
228
228
  }
229
+ } else if (command === "update-task") {
230
+ const args = argv.slice(3);
231
+ const taskId = args[0];
232
+ if (!taskId || taskId.startsWith("--")) {
233
+ console.error("\u7528\u6CD5: kmr update-task <taskId> [--summary \u65B0\u6807\u9898] [--due YYYY-MM-DD] [--assignee \u59D3\u540D]");
234
+ process.exit(1);
235
+ }
236
+ let summary;
237
+ let due;
238
+ let assignee;
239
+ for (let i = 1; i < args.length; i++) {
240
+ if (args[i] === "--summary" && args[i + 1]) {
241
+ summary = args[++i];
242
+ } else if (args[i] === "--due" && args[i + 1]) {
243
+ due = args[++i];
244
+ } else if (args[i] === "--assignee" && args[i + 1]) {
245
+ assignee = args[++i];
246
+ }
247
+ }
248
+ if (!summary && !due && !assignee) {
249
+ console.error("\u8BF7\u81F3\u5C11\u6307\u5B9A\u4E00\u4E2A\u8981\u66F4\u65B0\u7684\u5B57\u6BB5\uFF1A--summary\u3001--due\u3001--assignee");
250
+ process.exit(1);
251
+ }
252
+ const { loadConfig } = await import("./config-WIQGW5OC.js");
253
+ const { createLarkClient } = await import("./client-DFBBDD77.js");
254
+ const { TaskCreator } = await import("./taskCreator-LQ75UCNQ.js");
255
+ const { UserResolver } = await import("./userResolver-F76R3ZMT.js");
256
+ const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
257
+ const config = loadConfig();
258
+ const client = createLarkClient(config);
259
+ const taskCreator = new TaskCreator(client);
260
+ const store = new JsonStore(config.storage.dataDir);
261
+ let assigneeOpenId;
262
+ if (assignee) {
263
+ const userResolver = new UserResolver(client);
264
+ try {
265
+ const chatListRes = await client.im.chat.list({ params: { page_size: 50 } });
266
+ const chats = chatListRes.data?.items || [];
267
+ for (const chat of chats) {
268
+ await userResolver.loadChatMembers(chat.chat_id);
269
+ }
270
+ } catch {
271
+ }
272
+ assigneeOpenId = userResolver.resolve(assignee);
273
+ if (!assigneeOpenId) {
274
+ console.error(`\u26A0\uFE0F \u672A\u627E\u5230\u7528\u6237 "${assignee}"\uFF0C\u8D1F\u8D23\u4EBA\u4E0D\u4F1A\u66F4\u65B0`);
275
+ }
276
+ }
277
+ await taskCreator.updateTask(taskId, { summary, due, assigneeOpenId });
278
+ console.log(`\u2705 \u4EFB\u52A1\u5DF2\u66F4\u65B0: ${taskId}`);
279
+ if (summary) {
280
+ const all = await store.list();
281
+ for (const record of all) {
282
+ if (!record.createdTasks) continue;
283
+ const task = record.createdTasks.find((t) => t.taskId === taskId);
284
+ if (task) {
285
+ task.summary = summary;
286
+ await store.save(record);
287
+ console.log(` \u672C\u5730\u8BB0\u5F55\u5DF2\u540C\u6B65\u66F4\u65B0`);
288
+ break;
289
+ }
290
+ }
291
+ }
229
292
  } else if (command === "find") {
230
293
  const query = argv.slice(3).join(" ");
231
294
  if (!query) {
@@ -237,7 +300,7 @@ KMR\uFF08Key Meetings Record\uFF09\u2014 \u4F1A\u8BAE\u6316\u6398\u673A
237
300
  const { QueryHandler } = await import("./handler-46CQQIA2.js");
238
301
  const { JsonStore } = await import("./jsonStore-AL73KEUG.js");
239
302
  const { createLarkClient } = await import("./client-DFBBDD77.js");
240
- const { TaskCreator } = await import("./taskCreator-TCI3VB5D.js");
303
+ const { TaskCreator } = await import("./taskCreator-LQ75UCNQ.js");
241
304
  const { syncTaskStatuses } = await import("./sync-FJA2I3HE.js");
242
305
  const config = loadConfig();
243
306
  const store = new JsonStore(config.storage.dataDir);
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-3F3LSPSA.js";
23
23
  import {
24
24
  TaskCreator
25
- } from "./chunk-KAWJNGXR.js";
25
+ } from "./chunk-IZKYPG5M.js";
26
26
  import {
27
27
  syncTaskStatuses
28
28
  } from "./chunk-XQVLJTP4.js";
@@ -599,6 +599,7 @@ var SESSION_SKILL = `\u4F60\u662F KMR\uFF08Key Meetings Record\uFF09\u7684\u667A
599
599
  - kmr task \u2014 \u67E5\u770B\u6240\u6709\u4EFB\u52A1
600
600
  - kmr del <id> \u2014 \u5220\u9664\u8BB0\u5F55
601
601
  - kmr create-task <\u4EFB\u52A1\u6807\u9898> [--due YYYY-MM-DD] [--assignee \u59D3\u540D] [--desc \u63CF\u8FF0] [--meeting <id>] \u2014 \u521B\u5EFA\u98DE\u4E66\u4EFB\u52A1\u5E76\u4FDD\u5B58\u5230\u672C\u5730\uFF08--meeting \u53EF\u5173\u8054\u5230\u6307\u5B9A\u4F1A\u8BAE\u8BB0\u5F55\uFF0C\u82E5\u6709\uFF0C\u53EF\u9009\uFF09
602
+ - kmr update-task <taskId> [--summary \u65B0\u6807\u9898] [--due YYYY-MM-DD] [--assignee \u59D3\u540D] \u2014 \u66F4\u65B0\u98DE\u4E66\u4EFB\u52A1\uFF08\u4FEE\u6539\u6807\u9898\u3001\u622A\u6B62\u65E5\u671F\u3001\u8D1F\u8D23\u4EBA\uFF09
602
603
 
603
604
  \u64CD\u4F5C\u6307\u5357\uFF1A
604
605
  - \u5F53\u7528\u6237\u8981\u6C42\u521B\u5EFA\u4EFB\u52A1\u65F6\uFF0C\u76F4\u63A5\u6267\u884C kmr create-task \u547D\u4EE4\uFF0C\u4F8B\u5982\uFF1Akmr create-task "\u5B8C\u6210\u65B9\u6848\u8BBE\u8BA1" --due 2026-05-15 --assignee \u5F20\u4E09\uFF1B\u5982\u679C\u80FD\u5173\u8054\u5230\u67D0\u6761\u4F1A\u8BAE\u8BB0\u5F55\uFF0C\u52A0\u4E0A --meeting <id>
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TaskCreator
3
- } from "./chunk-KAWJNGXR.js";
3
+ } from "./chunk-IZKYPG5M.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.63",
3
+ "version": "1.0.64",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {