cc-lark 0.1.1

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 (298) hide show
  1. package/.github/workflows/ci.yml +47 -0
  2. package/.github/workflows/release.yml +47 -0
  3. package/.github/workflows/sync-upstream.yml +127 -0
  4. package/.prettierrc.json +7 -0
  5. package/README.md +214 -0
  6. package/dist/core/api-error.d.ts +193 -0
  7. package/dist/core/api-error.d.ts.map +1 -0
  8. package/dist/core/api-error.js +263 -0
  9. package/dist/core/api-error.js.map +1 -0
  10. package/dist/core/auth-errors.d.ts +13 -0
  11. package/dist/core/auth-errors.d.ts.map +1 -0
  12. package/dist/core/auth-errors.js +14 -0
  13. package/dist/core/auth-errors.js.map +1 -0
  14. package/dist/core/config.d.ts +60 -0
  15. package/dist/core/config.d.ts.map +1 -0
  16. package/dist/core/config.js +115 -0
  17. package/dist/core/config.js.map +1 -0
  18. package/dist/core/device-flow.d.ts +80 -0
  19. package/dist/core/device-flow.d.ts.map +1 -0
  20. package/dist/core/device-flow.js +231 -0
  21. package/dist/core/device-flow.js.map +1 -0
  22. package/dist/core/index.d.ts +16 -0
  23. package/dist/core/index.d.ts.map +1 -0
  24. package/dist/core/index.js +16 -0
  25. package/dist/core/index.js.map +1 -0
  26. package/dist/core/lark-client.d.ts +136 -0
  27. package/dist/core/lark-client.d.ts.map +1 -0
  28. package/dist/core/lark-client.js +315 -0
  29. package/dist/core/lark-client.js.map +1 -0
  30. package/dist/core/token-store.d.ts +67 -0
  31. package/dist/core/token-store.d.ts.map +1 -0
  32. package/dist/core/token-store.js +215 -0
  33. package/dist/core/token-store.js.map +1 -0
  34. package/dist/core/types.d.ts +286 -0
  35. package/dist/core/types.d.ts.map +1 -0
  36. package/dist/core/types.js +11 -0
  37. package/dist/core/types.js.map +1 -0
  38. package/dist/core/uat-client.d.ts +64 -0
  39. package/dist/core/uat-client.d.ts.map +1 -0
  40. package/dist/core/uat-client.js +227 -0
  41. package/dist/core/uat-client.js.map +1 -0
  42. package/dist/core/version.d.ts +26 -0
  43. package/dist/core/version.d.ts.map +1 -0
  44. package/dist/core/version.js +50 -0
  45. package/dist/core/version.js.map +1 -0
  46. package/dist/index.d.ts +12 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +116 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/tools/bitable/app.d.ts +20 -0
  51. package/dist/tools/bitable/app.d.ts.map +1 -0
  52. package/dist/tools/bitable/app.js +301 -0
  53. package/dist/tools/bitable/app.js.map +1 -0
  54. package/dist/tools/bitable/field.d.ts +19 -0
  55. package/dist/tools/bitable/field.d.ts.map +1 -0
  56. package/dist/tools/bitable/field.js +315 -0
  57. package/dist/tools/bitable/field.js.map +1 -0
  58. package/dist/tools/bitable/index.d.ts +21 -0
  59. package/dist/tools/bitable/index.d.ts.map +1 -0
  60. package/dist/tools/bitable/index.js +39 -0
  61. package/dist/tools/bitable/index.js.map +1 -0
  62. package/dist/tools/bitable/record.d.ts +22 -0
  63. package/dist/tools/bitable/record.d.ts.map +1 -0
  64. package/dist/tools/bitable/record.js +434 -0
  65. package/dist/tools/bitable/record.js.map +1 -0
  66. package/dist/tools/bitable/table.d.ts +21 -0
  67. package/dist/tools/bitable/table.d.ts.map +1 -0
  68. package/dist/tools/bitable/table.js +361 -0
  69. package/dist/tools/bitable/table.js.map +1 -0
  70. package/dist/tools/calendar/calendar.d.ts +18 -0
  71. package/dist/tools/calendar/calendar.d.ts.map +1 -0
  72. package/dist/tools/calendar/calendar.js +192 -0
  73. package/dist/tools/calendar/calendar.js.map +1 -0
  74. package/dist/tools/calendar/event.d.ts +20 -0
  75. package/dist/tools/calendar/event.d.ts.map +1 -0
  76. package/dist/tools/calendar/event.js +465 -0
  77. package/dist/tools/calendar/event.js.map +1 -0
  78. package/dist/tools/calendar/index.d.ts +19 -0
  79. package/dist/tools/calendar/index.d.ts.map +1 -0
  80. package/dist/tools/calendar/index.js +37 -0
  81. package/dist/tools/calendar/index.js.map +1 -0
  82. package/dist/tools/chat/chat.d.ts +11 -0
  83. package/dist/tools/chat/chat.d.ts.map +1 -0
  84. package/dist/tools/chat/chat.js +106 -0
  85. package/dist/tools/chat/chat.js.map +1 -0
  86. package/dist/tools/chat/index.d.ts +11 -0
  87. package/dist/tools/chat/index.d.ts.map +1 -0
  88. package/dist/tools/chat/index.js +20 -0
  89. package/dist/tools/chat/index.js.map +1 -0
  90. package/dist/tools/chat/members.d.ts +9 -0
  91. package/dist/tools/chat/members.d.ts.map +1 -0
  92. package/dist/tools/chat/members.js +80 -0
  93. package/dist/tools/chat/members.js.map +1 -0
  94. package/dist/tools/common/get-user.d.ts +11 -0
  95. package/dist/tools/common/get-user.d.ts.map +1 -0
  96. package/dist/tools/common/get-user.js +112 -0
  97. package/dist/tools/common/get-user.js.map +1 -0
  98. package/dist/tools/common/index.d.ts +11 -0
  99. package/dist/tools/common/index.d.ts.map +1 -0
  100. package/dist/tools/common/index.js +20 -0
  101. package/dist/tools/common/index.js.map +1 -0
  102. package/dist/tools/common/search-user.d.ts +9 -0
  103. package/dist/tools/common/search-user.d.ts.map +1 -0
  104. package/dist/tools/common/search-user.js +88 -0
  105. package/dist/tools/common/search-user.js.map +1 -0
  106. package/dist/tools/doc/create.d.ts +17 -0
  107. package/dist/tools/doc/create.d.ts.map +1 -0
  108. package/dist/tools/doc/create.js +159 -0
  109. package/dist/tools/doc/create.js.map +1 -0
  110. package/dist/tools/doc/fetch.d.ts +17 -0
  111. package/dist/tools/doc/fetch.d.ts.map +1 -0
  112. package/dist/tools/doc/fetch.js +123 -0
  113. package/dist/tools/doc/fetch.js.map +1 -0
  114. package/dist/tools/doc/index.d.ts +21 -0
  115. package/dist/tools/doc/index.d.ts.map +1 -0
  116. package/dist/tools/doc/index.js +33 -0
  117. package/dist/tools/doc/index.js.map +1 -0
  118. package/dist/tools/doc/shared.d.ts +69 -0
  119. package/dist/tools/doc/shared.d.ts.map +1 -0
  120. package/dist/tools/doc/shared.js +172 -0
  121. package/dist/tools/doc/shared.js.map +1 -0
  122. package/dist/tools/doc/update.d.ts +25 -0
  123. package/dist/tools/doc/update.d.ts.map +1 -0
  124. package/dist/tools/doc/update.js +208 -0
  125. package/dist/tools/doc/update.js.map +1 -0
  126. package/dist/tools/drive/file.d.ts +13 -0
  127. package/dist/tools/drive/file.d.ts.map +1 -0
  128. package/dist/tools/drive/file.js +212 -0
  129. package/dist/tools/drive/file.js.map +1 -0
  130. package/dist/tools/drive/index.d.ts +12 -0
  131. package/dist/tools/drive/index.d.ts.map +1 -0
  132. package/dist/tools/drive/index.js +25 -0
  133. package/dist/tools/drive/index.js.map +1 -0
  134. package/dist/tools/im/format-messages.d.ts +99 -0
  135. package/dist/tools/im/format-messages.d.ts.map +1 -0
  136. package/dist/tools/im/format-messages.js +277 -0
  137. package/dist/tools/im/format-messages.js.map +1 -0
  138. package/dist/tools/im/helpers.d.ts +53 -0
  139. package/dist/tools/im/helpers.d.ts.map +1 -0
  140. package/dist/tools/im/helpers.js +85 -0
  141. package/dist/tools/im/helpers.js.map +1 -0
  142. package/dist/tools/im/index.d.ts +25 -0
  143. package/dist/tools/im/index.d.ts.map +1 -0
  144. package/dist/tools/im/index.js +44 -0
  145. package/dist/tools/im/index.js.map +1 -0
  146. package/dist/tools/im/message-read.d.ts +19 -0
  147. package/dist/tools/im/message-read.d.ts.map +1 -0
  148. package/dist/tools/im/message-read.js +526 -0
  149. package/dist/tools/im/message-read.js.map +1 -0
  150. package/dist/tools/im/message.d.ts +22 -0
  151. package/dist/tools/im/message.d.ts.map +1 -0
  152. package/dist/tools/im/message.js +233 -0
  153. package/dist/tools/im/message.js.map +1 -0
  154. package/dist/tools/im/resource.d.ts +19 -0
  155. package/dist/tools/im/resource.d.ts.map +1 -0
  156. package/dist/tools/im/resource.js +185 -0
  157. package/dist/tools/im/resource.js.map +1 -0
  158. package/dist/tools/im/time-utils.d.ts +70 -0
  159. package/dist/tools/im/time-utils.d.ts.map +1 -0
  160. package/dist/tools/im/time-utils.js +277 -0
  161. package/dist/tools/im/time-utils.js.map +1 -0
  162. package/dist/tools/index.d.ts +85 -0
  163. package/dist/tools/index.d.ts.map +1 -0
  164. package/dist/tools/index.js +135 -0
  165. package/dist/tools/index.js.map +1 -0
  166. package/dist/tools/oauth.d.ts +15 -0
  167. package/dist/tools/oauth.d.ts.map +1 -0
  168. package/dist/tools/oauth.js +379 -0
  169. package/dist/tools/oauth.js.map +1 -0
  170. package/dist/tools/search/doc-search.d.ts +9 -0
  171. package/dist/tools/search/doc-search.d.ts.map +1 -0
  172. package/dist/tools/search/doc-search.js +219 -0
  173. package/dist/tools/search/doc-search.js.map +1 -0
  174. package/dist/tools/search/index.d.ts +11 -0
  175. package/dist/tools/search/index.d.ts.map +1 -0
  176. package/dist/tools/search/index.js +18 -0
  177. package/dist/tools/search/index.js.map +1 -0
  178. package/dist/tools/sheets/index.d.ts +11 -0
  179. package/dist/tools/sheets/index.d.ts.map +1 -0
  180. package/dist/tools/sheets/index.js +18 -0
  181. package/dist/tools/sheets/index.js.map +1 -0
  182. package/dist/tools/sheets/sheet.d.ts +11 -0
  183. package/dist/tools/sheets/sheet.d.ts.map +1 -0
  184. package/dist/tools/sheets/sheet.js +332 -0
  185. package/dist/tools/sheets/sheet.js.map +1 -0
  186. package/dist/tools/task/index.d.ts +12 -0
  187. package/dist/tools/task/index.d.ts.map +1 -0
  188. package/dist/tools/task/index.js +30 -0
  189. package/dist/tools/task/index.js.map +1 -0
  190. package/dist/tools/task/task.d.ts +13 -0
  191. package/dist/tools/task/task.d.ts.map +1 -0
  192. package/dist/tools/task/task.js +225 -0
  193. package/dist/tools/task/task.js.map +1 -0
  194. package/dist/tools/task/tasklist.d.ts +13 -0
  195. package/dist/tools/task/tasklist.d.ts.map +1 -0
  196. package/dist/tools/task/tasklist.js +206 -0
  197. package/dist/tools/task/tasklist.js.map +1 -0
  198. package/dist/tools/wiki/index.d.ts +11 -0
  199. package/dist/tools/wiki/index.d.ts.map +1 -0
  200. package/dist/tools/wiki/index.js +20 -0
  201. package/dist/tools/wiki/index.js.map +1 -0
  202. package/dist/tools/wiki/node.d.ts +11 -0
  203. package/dist/tools/wiki/node.d.ts.map +1 -0
  204. package/dist/tools/wiki/node.js +112 -0
  205. package/dist/tools/wiki/node.js.map +1 -0
  206. package/dist/tools/wiki/space.d.ts +11 -0
  207. package/dist/tools/wiki/space.d.ts.map +1 -0
  208. package/dist/tools/wiki/space.js +125 -0
  209. package/dist/tools/wiki/space.js.map +1 -0
  210. package/dist/utils/index.d.ts +8 -0
  211. package/dist/utils/index.d.ts.map +1 -0
  212. package/dist/utils/index.js +8 -0
  213. package/dist/utils/index.js.map +1 -0
  214. package/dist/utils/logger.d.ts +36 -0
  215. package/dist/utils/logger.d.ts.map +1 -0
  216. package/dist/utils/logger.js +101 -0
  217. package/dist/utils/logger.js.map +1 -0
  218. package/eslint.config.js +13 -0
  219. package/package.json +54 -0
  220. package/skills/feishu-bitable/SKILL.md +248 -0
  221. package/skills/feishu-bitable/references/examples.md +813 -0
  222. package/skills/feishu-bitable/references/field-properties.md +763 -0
  223. package/skills/feishu-bitable/references/record-values.md +911 -0
  224. package/skills/feishu-calendar/SKILL.md +244 -0
  225. package/skills/feishu-channel-rules/SKILL.md +18 -0
  226. package/skills/feishu-channel-rules/references/markdown-syntax.md +138 -0
  227. package/skills/feishu-create-doc/SKILL.md +719 -0
  228. package/skills/feishu-fetch-doc/SKILL.md +93 -0
  229. package/skills/feishu-im-read/SKILL.md +163 -0
  230. package/skills/feishu-task/SKILL.md +293 -0
  231. package/skills/feishu-troubleshoot/SKILL.md +70 -0
  232. package/skills/feishu-update-doc/SKILL.md +285 -0
  233. package/src/core/api-error.ts +342 -0
  234. package/src/core/auth-errors.ts +27 -0
  235. package/src/core/config.ts +134 -0
  236. package/src/core/device-flow.ts +314 -0
  237. package/src/core/index.ts +16 -0
  238. package/src/core/lark-client.ts +391 -0
  239. package/src/core/token-store.ts +249 -0
  240. package/src/core/types.ts +302 -0
  241. package/src/core/uat-client.ts +298 -0
  242. package/src/core/version.ts +53 -0
  243. package/src/index.ts +138 -0
  244. package/src/tools/bitable/app.ts +390 -0
  245. package/src/tools/bitable/field.ts +406 -0
  246. package/src/tools/bitable/index.ts +43 -0
  247. package/src/tools/bitable/record.ts +559 -0
  248. package/src/tools/bitable/table.ts +472 -0
  249. package/src/tools/calendar/calendar.ts +254 -0
  250. package/src/tools/calendar/event.ts +606 -0
  251. package/src/tools/calendar/index.ts +41 -0
  252. package/src/tools/chat/chat.ts +127 -0
  253. package/src/tools/chat/index.ts +24 -0
  254. package/src/tools/chat/members.ts +93 -0
  255. package/src/tools/common/get-user.ts +127 -0
  256. package/src/tools/common/index.ts +24 -0
  257. package/src/tools/common/search-user.ts +99 -0
  258. package/src/tools/doc/create.ts +184 -0
  259. package/src/tools/doc/fetch.ts +149 -0
  260. package/src/tools/doc/index.ts +38 -0
  261. package/src/tools/doc/shared.ts +228 -0
  262. package/src/tools/doc/update.ts +240 -0
  263. package/src/tools/drive/file.ts +265 -0
  264. package/src/tools/drive/index.ts +29 -0
  265. package/src/tools/im/format-messages.ts +391 -0
  266. package/src/tools/im/helpers.ts +109 -0
  267. package/src/tools/im/index.ts +49 -0
  268. package/src/tools/im/message-read.ts +676 -0
  269. package/src/tools/im/message.ts +303 -0
  270. package/src/tools/im/resource.ts +225 -0
  271. package/src/tools/im/time-utils.ts +347 -0
  272. package/src/tools/index.ts +205 -0
  273. package/src/tools/oauth.ts +460 -0
  274. package/src/tools/search/doc-search.ts +250 -0
  275. package/src/tools/search/index.ts +22 -0
  276. package/src/tools/sheets/index.ts +22 -0
  277. package/src/tools/sheets/sheet.ts +382 -0
  278. package/src/tools/task/index.ts +34 -0
  279. package/src/tools/task/task.ts +265 -0
  280. package/src/tools/task/tasklist.ts +262 -0
  281. package/src/tools/wiki/index.ts +24 -0
  282. package/src/tools/wiki/node.ts +131 -0
  283. package/src/tools/wiki/space.ts +152 -0
  284. package/src/utils/index.ts +8 -0
  285. package/src/utils/logger.ts +132 -0
  286. package/tests/core/config.test.ts +238 -0
  287. package/tests/core/device-flow.test.ts +490 -0
  288. package/tests/core/lark-client.test.ts +378 -0
  289. package/tests/core/token-store.test.ts +438 -0
  290. package/tests/index.test.ts +360 -0
  291. package/tests/tools/doc/create.test.ts +224 -0
  292. package/tests/tools/doc/fetch.test.ts +182 -0
  293. package/tests/tools/doc/shared.test.ts +183 -0
  294. package/tests/tools/doc/update.test.ts +330 -0
  295. package/tests/tools/im/format-messages.test.ts +184 -0
  296. package/tests/tools/im/time-utils.test.ts +178 -0
  297. package/tests/utils/logger.test.ts +140 -0
  298. package/tsconfig.json +20 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Search Tools Index
6
+ *
7
+ * Search tools for Feishu/Lark.
8
+ */
9
+ import { registerSearchDocWikiTool } from './doc-search.js';
10
+ import { logger } from '../../utils/logger.js';
11
+ const log = logger('tools:search');
12
+ export function registerSearchTools(registry) {
13
+ registerSearchDocWikiTool(registry);
14
+ log.info('Search tools registered', {
15
+ tools: ['feishu_search_doc_wiki'].join(', '),
16
+ });
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/search/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEnC,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAEpC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE;QAClC,KAAK,EAAE,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Sheets Tools Index
6
+ *
7
+ * Spreadsheet tools for Feishu/Lark.
8
+ */
9
+ import type { ToolRegistry } from '../index.js';
10
+ export declare function registerSheetsTools(registry: ToolRegistry): void;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/sheets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAMhE"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Sheets Tools Index
6
+ *
7
+ * Spreadsheet tools for Feishu/Lark.
8
+ */
9
+ import { registerSheetTool } from './sheet.js';
10
+ import { logger } from '../../utils/logger.js';
11
+ const log = logger('tools:sheets');
12
+ export function registerSheetsTools(registry) {
13
+ registerSheetTool(registry);
14
+ log.info('Sheets tools registered', {
15
+ tools: ['feishu_sheet_info', 'feishu_sheet_read', 'feishu_sheet_write', 'feishu_sheet_append', 'feishu_sheet_create'].join(', '),
16
+ });
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/sheets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEnC,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE5B,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE;QAClC,KAAK,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KACjI,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * feishu_sheet tool - Manage Feishu Spreadsheets.
6
+ *
7
+ * Actions: info, read, write, append, create
8
+ */
9
+ import type { ToolRegistry } from '../index.js';
10
+ export declare function registerSheetTool(registry: ToolRegistry): void;
11
+ //# sourceMappingURL=sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/tools/sheets/sheet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA2HhD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAwP9D"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * feishu_sheet tool - Manage Feishu Spreadsheets.
6
+ *
7
+ * Actions: info, read, write, append, create
8
+ */
9
+ import { z } from 'zod';
10
+ import { getValidAccessToken, NeedAuthorizationError } from '../../core/uat-client.js';
11
+ import { assertLarkOk } from '../../core/api-error.js';
12
+ import { json, jsonError } from '../im/helpers.js';
13
+ import { logger } from '../../utils/logger.js';
14
+ const log = logger('tools:sheets:sheet');
15
+ const MAX_READ_ROWS = 200;
16
+ /**
17
+ * Parse spreadsheet URL to extract token and optional sheet ID.
18
+ */
19
+ function parseSheetUrl(url) {
20
+ try {
21
+ const u = new URL(url);
22
+ const match = u.pathname.match(/\/(?:sheets|wiki)\/([^/?#]+)/);
23
+ if (!match)
24
+ return null;
25
+ return {
26
+ token: match[1],
27
+ sheetId: u.searchParams.get('sheet') || undefined,
28
+ };
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Convert column number to letter (A, B, ..., Z, AA, AB, ...).
36
+ */
37
+ function colLetter(n) {
38
+ let result = '';
39
+ while (n > 0) {
40
+ n--;
41
+ result = String.fromCharCode(65 + (n % 26)) + result;
42
+ n = Math.floor(n / 26);
43
+ }
44
+ return result;
45
+ }
46
+ // Schemas
47
+ const infoActionSchema = {
48
+ action: z.literal('info').describe('Get spreadsheet info'),
49
+ spreadsheet_token: z.string().optional().describe('Spreadsheet token'),
50
+ url: z.string().optional().describe('Spreadsheet URL'),
51
+ };
52
+ const readActionSchema = {
53
+ action: z.literal('read').describe('Read data from a spreadsheet'),
54
+ spreadsheet_token: z.string().optional().describe('Spreadsheet token'),
55
+ url: z.string().optional().describe('Spreadsheet URL'),
56
+ range: z.string().optional().describe('Range to read (e.g., Sheet1!A1:D10)'),
57
+ sheet_id: z.string().optional().describe('Sheet ID'),
58
+ };
59
+ const writeActionSchema = {
60
+ action: z.literal('write').describe('Write data to a spreadsheet (overwrites existing data)'),
61
+ spreadsheet_token: z.string().optional().describe('Spreadsheet token'),
62
+ url: z.string().optional().describe('Spreadsheet URL'),
63
+ range: z.string().optional().describe('Range to write (e.g., Sheet1!A1)'),
64
+ sheet_id: z.string().optional().describe('Sheet ID'),
65
+ values: z.array(z.array(z.any())).describe('Data to write (2D array)'),
66
+ };
67
+ const appendActionSchema = {
68
+ action: z.literal('append').describe('Append data to a spreadsheet'),
69
+ spreadsheet_token: z.string().optional().describe('Spreadsheet token'),
70
+ url: z.string().optional().describe('Spreadsheet URL'),
71
+ range: z.string().optional().describe('Range to append to (e.g., Sheet1)'),
72
+ sheet_id: z.string().optional().describe('Sheet ID'),
73
+ values: z.array(z.array(z.any())).describe('Data to append (2D array)'),
74
+ };
75
+ const createActionSchema = {
76
+ action: z.literal('create').describe('Create a new spreadsheet'),
77
+ title: z.string().describe('Spreadsheet title'),
78
+ folder_token: z.string().optional().describe('Folder token (optional)'),
79
+ };
80
+ async function getAccessToken(context) {
81
+ const { larkClient, config } = context;
82
+ if (!larkClient)
83
+ return jsonError('LarkClient not initialized.');
84
+ const { appId, appSecret, brand } = config;
85
+ if (!appId || !appSecret)
86
+ return jsonError('Missing FEISHU_APP_ID or FEISHU_APP_SECRET.');
87
+ const { listStoredTokens } = await import('../../core/token-store.js');
88
+ const tokens = await listStoredTokens(appId);
89
+ if (tokens.length === 0)
90
+ return jsonError('No user authorization found.');
91
+ const userOpenId = tokens[0].userOpenId;
92
+ try {
93
+ return await getValidAccessToken({ userOpenId, appId, appSecret, domain: brand ?? 'feishu' });
94
+ }
95
+ catch (err) {
96
+ if (err instanceof NeedAuthorizationError)
97
+ return jsonError('User authorization expired.');
98
+ throw err;
99
+ }
100
+ }
101
+ async function resolveToken(p, larkClient, accessToken) {
102
+ let token;
103
+ let urlSheetId;
104
+ if (p.spreadsheet_token) {
105
+ token = p.spreadsheet_token;
106
+ }
107
+ else if (p.url) {
108
+ const parsed = parseSheetUrl(p.url);
109
+ if (!parsed) {
110
+ throw new Error(`Failed to parse spreadsheet_token from URL: ${p.url}`);
111
+ }
112
+ token = parsed.token;
113
+ urlSheetId = parsed.sheetId;
114
+ }
115
+ else {
116
+ throw new Error('url or spreadsheet_token is required');
117
+ }
118
+ return { token, urlSheetId };
119
+ }
120
+ export function registerSheetTool(registry) {
121
+ // Info
122
+ registry.register({
123
+ name: 'feishu_sheet_info',
124
+ description: 'Get Feishu spreadsheet info and sheet list.\n\nRequires OAuth authorization.',
125
+ inputSchema: infoActionSchema,
126
+ handler: async (args, context) => {
127
+ const p = args;
128
+ const { larkClient } = context;
129
+ const tokenResult = await getAccessToken(context);
130
+ if (typeof tokenResult === 'object' && 'content' in tokenResult)
131
+ return tokenResult;
132
+ const accessToken = tokenResult;
133
+ const { token } = await resolveToken(p, larkClient, accessToken);
134
+ log.info(`info: token=${token}`);
135
+ const Lark = await import('@larksuiteoapi/node-sdk');
136
+ const opts = Lark.withUserAccessToken(accessToken);
137
+ const [spreadsheetRes, sheetsRes] = await Promise.all([
138
+ larkClient.sdk.sheets.spreadsheet.get({ path: { spreadsheet_token: token } }, opts),
139
+ larkClient.sdk.sheets.spreadsheetSheet.query({ path: { spreadsheet_token: token } }, opts),
140
+ ]);
141
+ assertLarkOk(spreadsheetRes);
142
+ assertLarkOk(sheetsRes);
143
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
144
+ const spreadsheet = spreadsheetRes.data?.spreadsheet;
145
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
+ const sheets = (sheetsRes.data?.sheets ?? []).map((s) => ({
147
+ sheet_id: s.sheet_id,
148
+ title: s.title,
149
+ index: s.index,
150
+ row_count: s.grid_properties?.row_count,
151
+ column_count: s.grid_properties?.column_count,
152
+ }));
153
+ return json({
154
+ title: spreadsheet?.title,
155
+ spreadsheet_token: token,
156
+ url: `https://www.feishu.cn/sheets/${token}`,
157
+ sheets,
158
+ });
159
+ },
160
+ });
161
+ // Read
162
+ registry.register({
163
+ name: 'feishu_sheet_read',
164
+ description: 'Read data from a Feishu spreadsheet.\n\nRequires OAuth authorization.',
165
+ inputSchema: readActionSchema,
166
+ handler: async (args, context) => {
167
+ const p = args;
168
+ const { larkClient } = context;
169
+ const tokenResult = await getAccessToken(context);
170
+ if (typeof tokenResult === 'object' && 'content' in tokenResult)
171
+ return tokenResult;
172
+ const accessToken = tokenResult;
173
+ const { token, urlSheetId } = await resolveToken(p, larkClient, accessToken);
174
+ let range = p.range;
175
+ if (!range && (p.sheet_id || urlSheetId)) {
176
+ range = p.sheet_id || urlSheetId;
177
+ }
178
+ if (!range) {
179
+ // Get first sheet
180
+ const Lark = await import('@larksuiteoapi/node-sdk');
181
+ const opts = Lark.withUserAccessToken(accessToken);
182
+ const sheetsRes = await larkClient.sdk.sheets.spreadsheetSheet.query({ path: { spreadsheet_token: token } }, opts);
183
+ assertLarkOk(sheetsRes);
184
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
+ const firstSheet = (sheetsRes.data?.sheets ?? [])[0];
186
+ if (!firstSheet?.sheet_id) {
187
+ return jsonError('Spreadsheet has no worksheets');
188
+ }
189
+ range = firstSheet.sheet_id;
190
+ }
191
+ log.info(`read: token=${token}, range=${range}`);
192
+ // Use direct API call for reading values
193
+ const Lark = await import('@larksuiteoapi/node-sdk');
194
+ const opts = Lark.withUserAccessToken(accessToken);
195
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
196
+ const res = await larkClient.sdk.request({
197
+ method: 'GET',
198
+ url: `/open-apis/sheets/v2/spreadsheets/${token}/values/${encodeURIComponent(range)}`,
199
+ headers: { Authorization: `Bearer ${accessToken}` },
200
+ }, opts);
201
+ if (res.code && res.code !== 0) {
202
+ return jsonError(res.msg || `API error: ${res.code}`);
203
+ }
204
+ const valueRange = res.data?.valueRange;
205
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
206
+ let values = valueRange?.values;
207
+ // Truncate if needed
208
+ let truncated = false;
209
+ let totalRows = values?.length ?? 0;
210
+ if (values && values.length > MAX_READ_ROWS) {
211
+ values = values.slice(0, MAX_READ_ROWS);
212
+ truncated = true;
213
+ }
214
+ return json({
215
+ range: valueRange?.range,
216
+ values,
217
+ ...(truncated ? { truncated: true, total_rows: totalRows, hint: `Data exceeds ${MAX_READ_ROWS} rows, truncated.` } : {}),
218
+ });
219
+ },
220
+ });
221
+ // Write
222
+ registry.register({
223
+ name: 'feishu_sheet_write',
224
+ description: 'Write data to a Feishu spreadsheet (overwrites existing data).\n\nRequires OAuth authorization.',
225
+ inputSchema: writeActionSchema,
226
+ handler: async (args, context) => {
227
+ const p = args;
228
+ const { larkClient } = context;
229
+ const tokenResult = await getAccessToken(context);
230
+ if (typeof tokenResult === 'object' && 'content' in tokenResult)
231
+ return tokenResult;
232
+ const accessToken = tokenResult;
233
+ const { token, urlSheetId } = await resolveToken(p, larkClient, accessToken);
234
+ let range = p.range;
235
+ if (!range && (p.sheet_id || urlSheetId)) {
236
+ range = p.sheet_id || urlSheetId;
237
+ }
238
+ log.info(`write: token=${token}, range=${range}, rows=${p.values?.length}`);
239
+ const Lark = await import('@larksuiteoapi/node-sdk');
240
+ const opts = Lark.withUserAccessToken(accessToken);
241
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
242
+ const res = await larkClient.sdk.request({
243
+ method: 'PUT',
244
+ url: `/open-apis/sheets/v2/spreadsheets/${token}/values`,
245
+ data: { valueRange: { range, values: p.values } },
246
+ headers: { Authorization: `Bearer ${accessToken}` },
247
+ }, opts);
248
+ if (res.code && res.code !== 0) {
249
+ return jsonError(res.msg || `API error: ${res.code}`);
250
+ }
251
+ return json({
252
+ updated_range: res.data?.updatedRange,
253
+ updated_rows: res.data?.updatedRows,
254
+ updated_columns: res.data?.updatedColumns,
255
+ updated_cells: res.data?.updatedCells,
256
+ });
257
+ },
258
+ });
259
+ // Append
260
+ registry.register({
261
+ name: 'feishu_sheet_append',
262
+ description: 'Append data to a Feishu spreadsheet.\n\nRequires OAuth authorization.',
263
+ inputSchema: appendActionSchema,
264
+ handler: async (args, context) => {
265
+ const p = args;
266
+ const { larkClient } = context;
267
+ const tokenResult = await getAccessToken(context);
268
+ if (typeof tokenResult === 'object' && 'content' in tokenResult)
269
+ return tokenResult;
270
+ const accessToken = tokenResult;
271
+ const { token, urlSheetId } = await resolveToken(p, larkClient, accessToken);
272
+ let range = p.range;
273
+ if (!range && (p.sheet_id || urlSheetId)) {
274
+ range = p.sheet_id || urlSheetId;
275
+ }
276
+ log.info(`append: token=${token}, range=${range}, rows=${p.values?.length}`);
277
+ const Lark = await import('@larksuiteoapi/node-sdk');
278
+ const opts = Lark.withUserAccessToken(accessToken);
279
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
+ const res = await larkClient.sdk.request({
281
+ method: 'POST',
282
+ url: `/open-apis/sheets/v2/spreadsheets/${token}/values_append`,
283
+ data: { valueRange: { range, values: p.values } },
284
+ headers: { Authorization: `Bearer ${accessToken}` },
285
+ }, opts);
286
+ if (res.code && res.code !== 0) {
287
+ return jsonError(res.msg || `API error: ${res.code}`);
288
+ }
289
+ const updates = res.data?.updates;
290
+ return json({
291
+ table_range: res.data?.tableRange,
292
+ updated_range: updates?.updatedRange,
293
+ updated_rows: updates?.updatedRows,
294
+ updated_columns: updates?.updatedColumns,
295
+ updated_cells: updates?.updatedCells,
296
+ });
297
+ },
298
+ });
299
+ // Create
300
+ registry.register({
301
+ name: 'feishu_sheet_create',
302
+ description: 'Create a new Feishu spreadsheet.\n\nRequires OAuth authorization.',
303
+ inputSchema: createActionSchema,
304
+ handler: async (args, context) => {
305
+ const p = args;
306
+ const { larkClient } = context;
307
+ const tokenResult = await getAccessToken(context);
308
+ if (typeof tokenResult === 'object' && 'content' in tokenResult)
309
+ return tokenResult;
310
+ const accessToken = tokenResult;
311
+ log.info(`create: title=${p.title}, folder=${p.folder_token ?? '(root)'}`);
312
+ const Lark = await import('@larksuiteoapi/node-sdk');
313
+ const opts = Lark.withUserAccessToken(accessToken);
314
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
315
+ const data = { title: p.title };
316
+ if (p.folder_token)
317
+ data.folder_token = p.folder_token;
318
+ const res = await larkClient.sdk.sheets.spreadsheet.create({ data }, opts);
319
+ assertLarkOk(res);
320
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
321
+ const spreadsheet = res.data?.spreadsheet;
322
+ const token = spreadsheet?.spreadsheet_token;
323
+ return json({
324
+ spreadsheet_token: token,
325
+ title: p.title,
326
+ url: `https://www.feishu.cn/sheets/${token}`,
327
+ });
328
+ },
329
+ });
330
+ log.debug('feishu_sheet tools registered');
331
+ }
332
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../src/tools/sheets/sheet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEzC,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS;SAClD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,CAAS;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,CAAC,EAAE,CAAC;QACJ,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;QACrD,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,UAAU;AACV,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC1D,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACtE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CACvD,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAClE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACtE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC5E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;CACrD,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IAC7F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACtE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACzE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CACvE,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACzB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACpE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACtE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACxE,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACzB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAChE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACxE,CAAC;AAEF,KAAK,UAAU,cAAc,CAAC,OAA8F;IAC1H,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACjE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC3C,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC,6CAA6C,CAAC,CAAC;IAE1F,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAExC,IAAI,CAAC;QACH,OAAO,MAAM,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,sBAAsB;YAAE,OAAO,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC3F,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,CAA+C,EAC/C,UAAsB,EACtB,WAAmB;IAEnB,IAAI,KAAa,CAAC;IAClB,IAAI,UAA8B,CAAC;IAEnC,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACxB,KAAK,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAC9B,CAAC;SAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACtD,OAAO;IACP,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAqE,CAAC;YAChF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAE/B,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,SAAS,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;YACpF,MAAM,WAAW,GAAG,WAAW,CAAC;YAEhC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,CAAC,EAAE,UAAW,EAAE,WAAW,CAAC,CAAC;YAClE,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;YAEjC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACpD,UAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC;gBACpF,UAAW,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC;aAC5F,CAAC,CAAC;YACH,YAAY,CAAC,cAAc,CAAC,CAAC;YAC7B,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,8DAA8D;YAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,WAAkB,CAAC;YAC5D,8DAA8D;YAC9D,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC7D,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,SAAS;gBACvC,YAAY,EAAE,CAAC,CAAC,eAAe,EAAE,YAAY;aAC9C,CAAC,CAAC,CAAC;YAEJ,OAAO,IAAI,CAAC;gBACV,KAAK,EAAE,WAAW,EAAE,KAAK;gBACzB,iBAAiB,EAAE,KAAK;gBACxB,GAAG,EAAE,gCAAgC,KAAK,EAAE;gBAC5C,MAAM;aACP,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;IACP,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAqE,CAAC;YAChF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAE/B,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,SAAS,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;YACpF,MAAM,WAAW,GAAG,WAAW,CAAC;YAEhC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CAAC,CAAC,EAAE,UAAW,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC;gBACzC,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;YACnC,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,kBAAkB;gBAClB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAG,MAAM,UAAW,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBACpH,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,8DAA8D;gBAC9D,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAQ,CAAC;gBAC5D,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;oBAC1B,OAAO,SAAS,CAAC,+BAA+B,CAAC,CAAC;gBACpD,CAAC;gBACD,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC9B,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,WAAW,KAAK,EAAE,CAAC,CAAC;YAEjD,yCAAyC;YACzC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEnD,8DAA8D;YAC9D,MAAM,GAAG,GAAG,MAAO,UAAW,CAAC,GAAW,CAAC,OAAO,CAAC;gBACjD,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,qCAAqC,KAAK,WAAW,kBAAkB,CAAC,KAAM,CAAC,EAAE;gBACtF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;aACpD,EAAE,IAAI,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;YACxC,8DAA8D;YAC9D,IAAI,MAAM,GAAG,UAAU,EAAE,MAA6B,CAAC;YAEvD,qBAAqB;YACrB,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,SAAS,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;YACpC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;gBAC5C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gBACxC,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;YAED,OAAO,IAAI,CAAC;gBACV,KAAK,EAAE,UAAU,EAAE,KAAK;gBACxB,MAAM;gBACN,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,aAAa,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzH,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,QAAQ;IACR,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,iGAAiG;QAC9G,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAsE,CAAC;YACjF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAE/B,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,SAAS,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;YACpF,MAAM,WAAW,GAAG,WAAW,CAAC;YAEhC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CAAC,CAAC,EAAE,UAAW,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC;gBACzC,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;YACnC,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,WAAW,KAAK,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAE5E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEnD,8DAA8D;YAC9D,MAAM,GAAG,GAAG,MAAO,UAAW,CAAC,GAAW,CAAC,OAAO,CAAC;gBACjD,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,qCAAqC,KAAK,SAAS;gBACxD,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;gBACjD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;aACpD,EAAE,IAAI,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,IAAI,CAAC;gBACV,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY;gBACrC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW;gBACnC,eAAe,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc;gBACzC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY;aACtC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,SAAS;IACT,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAuE,CAAC;YAClF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAE/B,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,SAAS,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;YACpF,MAAM,WAAW,GAAG,WAAW,CAAC;YAEhC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CAAC,CAAC,EAAE,UAAW,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC;gBACzC,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;YACnC,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,iBAAiB,KAAK,WAAW,KAAK,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAE7E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEnD,8DAA8D;YAC9D,MAAM,GAAG,GAAG,MAAO,UAAW,CAAC,GAAW,CAAC,OAAO,CAAC;gBACjD,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,qCAAqC,KAAK,gBAAgB;gBAC/D,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;gBACjD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;aACpD,EAAE,IAAI,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;YAElC,OAAO,IAAI,CAAC;gBACV,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU;gBACjC,aAAa,EAAE,OAAO,EAAE,YAAY;gBACpC,YAAY,EAAE,OAAO,EAAE,WAAW;gBAClC,eAAe,EAAE,OAAO,EAAE,cAAc;gBACxC,aAAa,EAAE,OAAO,EAAE,YAAY;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,SAAS;IACT,QAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,mEAAmE;QAChF,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAuE,CAAC;YAClF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAE/B,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,SAAS,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;YACpF,MAAM,WAAW,GAAG,WAAW,CAAC;YAEhC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;YAE3E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEnD,8DAA8D;YAC9D,MAAM,IAAI,GAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,CAAC,YAAY;gBAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;YAEvD,MAAM,GAAG,GAAG,MAAM,UAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5E,YAAY,CAAC,GAAG,CAAC,CAAC;YAElB,8DAA8D;YAC9D,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,EAAE,WAAkB,CAAC;YACjD,MAAM,KAAK,GAAG,WAAW,EAAE,iBAAiB,CAAC;YAE7C,OAAO,IAAI,CAAC;gBACV,iBAAiB,EAAE,KAAK;gBACxB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,GAAG,EAAE,gCAAgC,KAAK,EAAE;aAC7C,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Task Tools Index
6
+ *
7
+ * Task tools for Feishu/Lark.
8
+ * Adapted from openclaw-lark for MCP Server architecture.
9
+ */
10
+ import type { ToolRegistry } from '../index.js';
11
+ export declare function registerTaskTools(registry: ToolRegistry): void;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/task/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAgB9D"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Task Tools Index
6
+ *
7
+ * Task tools for Feishu/Lark.
8
+ * Adapted from openclaw-lark for MCP Server architecture.
9
+ */
10
+ import { registerTaskTool } from './task.js';
11
+ import { registerTasklistTool } from './tasklist.js';
12
+ import { logger } from '../../utils/logger.js';
13
+ const log = logger('tools:task');
14
+ export function registerTaskTools(registry) {
15
+ registerTaskTool(registry);
16
+ registerTasklistTool(registry);
17
+ log.info('Task tools registered', {
18
+ tools: [
19
+ 'feishu_task_create',
20
+ 'feishu_task_get',
21
+ 'feishu_task_list',
22
+ 'feishu_task_patch',
23
+ 'feishu_tasklist_create',
24
+ 'feishu_tasklist_get',
25
+ 'feishu_tasklist_list',
26
+ 'feishu_tasklist_tasks',
27
+ ].join(', '),
28
+ });
29
+ }
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/task/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAEjC,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACtD,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3B,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAE/B,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;QAChC,KAAK,EAAE;YACL,oBAAoB;YACpB,iBAAiB;YACjB,kBAAkB;YAClB,mBAAmB;YACnB,wBAAwB;YACxB,qBAAqB;YACrB,sBAAsB;YACtB,uBAAuB;SACxB,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Task Tools - Task management
6
+ *
7
+ * Actions: create, get, list, patch
8
+ *
9
+ * Adapted from openclaw-lark for MCP Server architecture.
10
+ */
11
+ import type { ToolRegistry } from '../index.js';
12
+ export declare function registerTaskTool(registry: ToolRegistry): void;
13
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/tools/task/task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqGhD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAuJ7D"}