@larksuite/openclaw-lark 2026.3.9

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 (689) hide show
  1. package/LICENSE +10 -0
  2. package/README.md +283 -0
  3. package/index.d.ts +37 -0
  4. package/index.d.ts.map +1 -0
  5. package/index.js +119 -0
  6. package/index.js.map +1 -0
  7. package/openclaw.plugin.json +10 -0
  8. package/package.json +47 -0
  9. package/skills/feishu-bitable/SKILL.md +248 -0
  10. package/skills/feishu-bitable/references/examples.md +813 -0
  11. package/skills/feishu-bitable/references/field-properties.md +763 -0
  12. package/skills/feishu-bitable/references/record-values.md +911 -0
  13. package/skills/feishu-calendar/SKILL.md +244 -0
  14. package/skills/feishu-channel-rules/SKILL.md +18 -0
  15. package/skills/feishu-channel-rules/references/markdown-syntax.md +138 -0
  16. package/skills/feishu-create-doc/SKILL.md +719 -0
  17. package/skills/feishu-fetch-doc/SKILL.md +93 -0
  18. package/skills/feishu-im-read/SKILL.md +163 -0
  19. package/skills/feishu-task/SKILL.md +293 -0
  20. package/skills/feishu-troubleshoot/SKILL.md +70 -0
  21. package/skills/feishu-update-doc/SKILL.md +285 -0
  22. package/src/card/builder.d.ts +100 -0
  23. package/src/card/builder.d.ts.map +1 -0
  24. package/src/card/builder.js +381 -0
  25. package/src/card/builder.js.map +1 -0
  26. package/src/card/cardkit.d.ts +91 -0
  27. package/src/card/cardkit.d.ts.map +1 -0
  28. package/src/card/cardkit.js +182 -0
  29. package/src/card/cardkit.js.map +1 -0
  30. package/src/card/flush-controller.d.ts +46 -0
  31. package/src/card/flush-controller.d.ts.map +1 -0
  32. package/src/card/flush-controller.js +135 -0
  33. package/src/card/flush-controller.js.map +1 -0
  34. package/src/card/markdown-style.d.ts +17 -0
  35. package/src/card/markdown-style.d.ts.map +1 -0
  36. package/src/card/markdown-style.js +98 -0
  37. package/src/card/markdown-style.js.map +1 -0
  38. package/src/card/reply-dispatcher-types.d.ts +121 -0
  39. package/src/card/reply-dispatcher-types.d.ts.map +1 -0
  40. package/src/card/reply-dispatcher-types.js +58 -0
  41. package/src/card/reply-dispatcher-types.js.map +1 -0
  42. package/src/card/reply-dispatcher.d.ts +16 -0
  43. package/src/card/reply-dispatcher.d.ts.map +1 -0
  44. package/src/card/reply-dispatcher.js +293 -0
  45. package/src/card/reply-dispatcher.js.map +1 -0
  46. package/src/card/reply-mode.d.ts +39 -0
  47. package/src/card/reply-mode.d.ts.map +1 -0
  48. package/src/card/reply-mode.js +66 -0
  49. package/src/card/reply-mode.js.map +1 -0
  50. package/src/card/streaming-card-controller.d.ts +88 -0
  51. package/src/card/streaming-card-controller.d.ts.map +1 -0
  52. package/src/card/streaming-card-controller.js +717 -0
  53. package/src/card/streaming-card-controller.js.map +1 -0
  54. package/src/card/unavailable-guard.d.ts +36 -0
  55. package/src/card/unavailable-guard.d.ts.map +1 -0
  56. package/src/card/unavailable-guard.js +84 -0
  57. package/src/card/unavailable-guard.js.map +1 -0
  58. package/src/channel/abort-detect.d.ts +35 -0
  59. package/src/channel/abort-detect.d.ts.map +1 -0
  60. package/src/channel/abort-detect.js +125 -0
  61. package/src/channel/abort-detect.js.map +1 -0
  62. package/src/channel/chat-queue.d.ts +42 -0
  63. package/src/channel/chat-queue.d.ts.map +1 -0
  64. package/src/channel/chat-queue.js +59 -0
  65. package/src/channel/chat-queue.js.map +1 -0
  66. package/src/channel/config-adapter.d.ts +24 -0
  67. package/src/channel/config-adapter.d.ts.map +1 -0
  68. package/src/channel/config-adapter.js +102 -0
  69. package/src/channel/config-adapter.js.map +1 -0
  70. package/src/channel/directory.d.ts +58 -0
  71. package/src/channel/directory.d.ts.map +1 -0
  72. package/src/channel/directory.js +192 -0
  73. package/src/channel/directory.js.map +1 -0
  74. package/src/channel/event-handlers.d.ts +16 -0
  75. package/src/channel/event-handlers.d.ts.map +1 -0
  76. package/src/channel/event-handlers.js +222 -0
  77. package/src/channel/event-handlers.js.map +1 -0
  78. package/src/channel/monitor.d.ts +18 -0
  79. package/src/channel/monitor.d.ts.map +1 -0
  80. package/src/channel/monitor.js +128 -0
  81. package/src/channel/monitor.js.map +1 -0
  82. package/src/channel/onboarding-config.d.ts +18 -0
  83. package/src/channel/onboarding-config.d.ts.map +1 -0
  84. package/src/channel/onboarding-config.js +89 -0
  85. package/src/channel/onboarding-config.js.map +1 -0
  86. package/src/channel/onboarding-migrate.d.ts +26 -0
  87. package/src/channel/onboarding-migrate.d.ts.map +1 -0
  88. package/src/channel/onboarding-migrate.js +68 -0
  89. package/src/channel/onboarding-migrate.js.map +1 -0
  90. package/src/channel/onboarding.d.ts +13 -0
  91. package/src/channel/onboarding.d.ts.map +1 -0
  92. package/src/channel/onboarding.js +297 -0
  93. package/src/channel/onboarding.js.map +1 -0
  94. package/src/channel/plugin.d.ts +14 -0
  95. package/src/channel/plugin.d.ts.map +1 -0
  96. package/src/channel/plugin.js +279 -0
  97. package/src/channel/plugin.js.map +1 -0
  98. package/src/channel/probe.d.ts +15 -0
  99. package/src/channel/probe.d.ts.map +1 -0
  100. package/src/channel/probe.js +22 -0
  101. package/src/channel/probe.js.map +1 -0
  102. package/src/channel/types.d.ts +37 -0
  103. package/src/channel/types.d.ts.map +1 -0
  104. package/src/channel/types.js +8 -0
  105. package/src/channel/types.js.map +1 -0
  106. package/src/commands/auth.d.ts +16 -0
  107. package/src/commands/auth.d.ts.map +1 -0
  108. package/src/commands/auth.js +85 -0
  109. package/src/commands/auth.js.map +1 -0
  110. package/src/commands/diagnose.d.ts +70 -0
  111. package/src/commands/diagnose.d.ts.map +1 -0
  112. package/src/commands/diagnose.js +808 -0
  113. package/src/commands/diagnose.js.map +1 -0
  114. package/src/commands/doctor.d.ts +18 -0
  115. package/src/commands/doctor.d.ts.map +1 -0
  116. package/src/commands/doctor.js +439 -0
  117. package/src/commands/doctor.js.map +1 -0
  118. package/src/commands/index.d.ts +9 -0
  119. package/src/commands/index.d.ts.map +1 -0
  120. package/src/commands/index.js +208 -0
  121. package/src/commands/index.js.map +1 -0
  122. package/src/core/accounts.d.ts +38 -0
  123. package/src/core/accounts.d.ts.map +1 -0
  124. package/src/core/accounts.js +179 -0
  125. package/src/core/accounts.js.map +1 -0
  126. package/src/core/agent-config.d.ts +101 -0
  127. package/src/core/agent-config.d.ts.map +1 -0
  128. package/src/core/agent-config.js +140 -0
  129. package/src/core/agent-config.js.map +1 -0
  130. package/src/core/api-error.d.ts +49 -0
  131. package/src/core/api-error.d.ts.map +1 -0
  132. package/src/core/api-error.js +113 -0
  133. package/src/core/api-error.js.map +1 -0
  134. package/src/core/app-owner-fallback.d.ts +22 -0
  135. package/src/core/app-owner-fallback.d.ts.map +1 -0
  136. package/src/core/app-owner-fallback.js +39 -0
  137. package/src/core/app-owner-fallback.js.map +1 -0
  138. package/src/core/app-scope-checker.d.ts +88 -0
  139. package/src/core/app-scope-checker.d.ts.map +1 -0
  140. package/src/core/app-scope-checker.js +191 -0
  141. package/src/core/app-scope-checker.js.map +1 -0
  142. package/src/core/auth-errors.d.ts +143 -0
  143. package/src/core/auth-errors.d.ts.map +1 -0
  144. package/src/core/auth-errors.js +156 -0
  145. package/src/core/auth-errors.js.map +1 -0
  146. package/src/core/chat-info-cache.d.ts +58 -0
  147. package/src/core/chat-info-cache.d.ts.map +1 -0
  148. package/src/core/chat-info-cache.js +153 -0
  149. package/src/core/chat-info-cache.js.map +1 -0
  150. package/src/core/config-schema.d.ts +449 -0
  151. package/src/core/config-schema.d.ts.map +1 -0
  152. package/src/core/config-schema.js +201 -0
  153. package/src/core/config-schema.js.map +1 -0
  154. package/src/core/device-flow.d.ts +78 -0
  155. package/src/core/device-flow.d.ts.map +1 -0
  156. package/src/core/device-flow.js +213 -0
  157. package/src/core/device-flow.js.map +1 -0
  158. package/src/core/feishu-fetch.d.ts +19 -0
  159. package/src/core/feishu-fetch.d.ts.map +1 -0
  160. package/src/core/feishu-fetch.js +26 -0
  161. package/src/core/feishu-fetch.js.map +1 -0
  162. package/src/core/footer-config.d.ts +25 -0
  163. package/src/core/footer-config.d.ts.map +1 -0
  164. package/src/core/footer-config.js +40 -0
  165. package/src/core/footer-config.js.map +1 -0
  166. package/src/core/lark-client.d.ts +109 -0
  167. package/src/core/lark-client.d.ts.map +1 -0
  168. package/src/core/lark-client.js +354 -0
  169. package/src/core/lark-client.js.map +1 -0
  170. package/src/core/lark-logger.d.ts +24 -0
  171. package/src/core/lark-logger.d.ts.map +1 -0
  172. package/src/core/lark-logger.js +155 -0
  173. package/src/core/lark-logger.js.map +1 -0
  174. package/src/core/lark-ticket.d.ts +30 -0
  175. package/src/core/lark-ticket.d.ts.map +1 -0
  176. package/src/core/lark-ticket.js +36 -0
  177. package/src/core/lark-ticket.js.map +1 -0
  178. package/src/core/message-unavailable.d.ts +54 -0
  179. package/src/core/message-unavailable.d.ts.map +1 -0
  180. package/src/core/message-unavailable.js +131 -0
  181. package/src/core/message-unavailable.js.map +1 -0
  182. package/src/core/owner-policy.d.ts +32 -0
  183. package/src/core/owner-policy.d.ts.map +1 -0
  184. package/src/core/owner-policy.js +53 -0
  185. package/src/core/owner-policy.js.map +1 -0
  186. package/src/core/permission-url.d.ts +23 -0
  187. package/src/core/permission-url.d.ts.map +1 -0
  188. package/src/core/permission-url.js +73 -0
  189. package/src/core/permission-url.js.map +1 -0
  190. package/src/core/raw-request.d.ts +28 -0
  191. package/src/core/raw-request.d.ts.map +1 -0
  192. package/src/core/raw-request.js +63 -0
  193. package/src/core/raw-request.js.map +1 -0
  194. package/src/core/scope-manager.d.ts +169 -0
  195. package/src/core/scope-manager.d.ts.map +1 -0
  196. package/src/core/scope-manager.js +214 -0
  197. package/src/core/scope-manager.js.map +1 -0
  198. package/src/core/security-check.d.ts +73 -0
  199. package/src/core/security-check.d.ts.map +1 -0
  200. package/src/core/security-check.js +175 -0
  201. package/src/core/security-check.js.map +1 -0
  202. package/src/core/shutdown-hooks.d.ts +23 -0
  203. package/src/core/shutdown-hooks.d.ts.map +1 -0
  204. package/src/core/shutdown-hooks.js +57 -0
  205. package/src/core/shutdown-hooks.js.map +1 -0
  206. package/src/core/targets.d.ts +50 -0
  207. package/src/core/targets.d.ts.map +1 -0
  208. package/src/core/targets.js +128 -0
  209. package/src/core/targets.js.map +1 -0
  210. package/src/core/token-store.d.ts +55 -0
  211. package/src/core/token-store.d.ts.map +1 -0
  212. package/src/core/token-store.js +315 -0
  213. package/src/core/token-store.js.map +1 -0
  214. package/src/core/tool-client.d.ts +177 -0
  215. package/src/core/tool-client.d.ts.map +1 -0
  216. package/src/core/tool-client.js +381 -0
  217. package/src/core/tool-client.js.map +1 -0
  218. package/src/core/tool-scopes.d.ts +154 -0
  219. package/src/core/tool-scopes.d.ts.map +1 -0
  220. package/src/core/tool-scopes.js +326 -0
  221. package/src/core/tool-scopes.js.map +1 -0
  222. package/src/core/tools-config.d.ts +35 -0
  223. package/src/core/tools-config.d.ts.map +1 -0
  224. package/src/core/tools-config.js +88 -0
  225. package/src/core/tools-config.js.map +1 -0
  226. package/src/core/types.d.ts +88 -0
  227. package/src/core/types.d.ts.map +1 -0
  228. package/src/core/types.js +12 -0
  229. package/src/core/types.js.map +1 -0
  230. package/src/core/uat-client.d.ts +47 -0
  231. package/src/core/uat-client.d.ts.map +1 -0
  232. package/src/core/uat-client.js +173 -0
  233. package/src/core/uat-client.js.map +1 -0
  234. package/src/core/version.d.ts +26 -0
  235. package/src/core/version.d.ts.map +1 -0
  236. package/src/core/version.js +50 -0
  237. package/src/core/version.js.map +1 -0
  238. package/src/messaging/converters/audio.d.ts +9 -0
  239. package/src/messaging/converters/audio.d.ts.map +1 -0
  240. package/src/messaging/converters/audio.js +22 -0
  241. package/src/messaging/converters/audio.js.map +1 -0
  242. package/src/messaging/converters/calendar.d.ts +14 -0
  243. package/src/messaging/converters/calendar.d.ts.map +1 -0
  244. package/src/messaging/converters/calendar.js +51 -0
  245. package/src/messaging/converters/calendar.js.map +1 -0
  246. package/src/messaging/converters/content-converter.d.ts +42 -0
  247. package/src/messaging/converters/content-converter.d.ts.map +1 -0
  248. package/src/messaging/converters/content-converter.js +107 -0
  249. package/src/messaging/converters/content-converter.js.map +1 -0
  250. package/src/messaging/converters/file.d.ts +9 -0
  251. package/src/messaging/converters/file.d.ts.map +1 -0
  252. package/src/messaging/converters/file.js +21 -0
  253. package/src/messaging/converters/file.js.map +1 -0
  254. package/src/messaging/converters/folder.d.ts +9 -0
  255. package/src/messaging/converters/folder.d.ts.map +1 -0
  256. package/src/messaging/converters/folder.js +21 -0
  257. package/src/messaging/converters/folder.js.map +1 -0
  258. package/src/messaging/converters/hongbao.d.ts +9 -0
  259. package/src/messaging/converters/hongbao.d.ts.map +1 -0
  260. package/src/messaging/converters/hongbao.js +17 -0
  261. package/src/messaging/converters/hongbao.js.map +1 -0
  262. package/src/messaging/converters/image.d.ts +9 -0
  263. package/src/messaging/converters/image.d.ts.map +1 -0
  264. package/src/messaging/converters/image.js +19 -0
  265. package/src/messaging/converters/image.js.map +1 -0
  266. package/src/messaging/converters/index.d.ts +9 -0
  267. package/src/messaging/converters/index.d.ts.map +1 -0
  268. package/src/messaging/converters/index.js +51 -0
  269. package/src/messaging/converters/index.js.map +1 -0
  270. package/src/messaging/converters/interactive/card-converter.d.ts +77 -0
  271. package/src/messaging/converters/interactive/card-converter.d.ts.map +1 -0
  272. package/src/messaging/converters/interactive/card-converter.js +1174 -0
  273. package/src/messaging/converters/interactive/card-converter.js.map +1 -0
  274. package/src/messaging/converters/interactive/card-utils.d.ts +10 -0
  275. package/src/messaging/converters/interactive/card-utils.d.ts.map +1 -0
  276. package/src/messaging/converters/interactive/card-utils.js +43 -0
  277. package/src/messaging/converters/interactive/card-utils.js.map +1 -0
  278. package/src/messaging/converters/interactive/index.d.ts +9 -0
  279. package/src/messaging/converters/interactive/index.d.ts.map +1 -0
  280. package/src/messaging/converters/interactive/index.js +22 -0
  281. package/src/messaging/converters/interactive/index.js.map +1 -0
  282. package/src/messaging/converters/interactive/legacy.d.ts +12 -0
  283. package/src/messaging/converters/interactive/legacy.d.ts.map +1 -0
  284. package/src/messaging/converters/interactive/legacy.js +58 -0
  285. package/src/messaging/converters/interactive/legacy.js.map +1 -0
  286. package/src/messaging/converters/interactive/types.d.ts +24 -0
  287. package/src/messaging/converters/interactive/types.d.ts.map +1 -0
  288. package/src/messaging/converters/interactive/types.js +25 -0
  289. package/src/messaging/converters/interactive/types.js.map +1 -0
  290. package/src/messaging/converters/location.d.ts +9 -0
  291. package/src/messaging/converters/location.d.ts.map +1 -0
  292. package/src/messaging/converters/location.js +20 -0
  293. package/src/messaging/converters/location.js.map +1 -0
  294. package/src/messaging/converters/merge-forward.d.ts +33 -0
  295. package/src/messaging/converters/merge-forward.d.ts.map +1 -0
  296. package/src/messaging/converters/merge-forward.js +226 -0
  297. package/src/messaging/converters/merge-forward.js.map +1 -0
  298. package/src/messaging/converters/post.d.ts +12 -0
  299. package/src/messaging/converters/post.d.ts.map +1 -0
  300. package/src/messaging/converters/post.js +136 -0
  301. package/src/messaging/converters/post.js.map +1 -0
  302. package/src/messaging/converters/share.d.ts +10 -0
  303. package/src/messaging/converters/share.d.ts.map +1 -0
  304. package/src/messaging/converters/share.js +24 -0
  305. package/src/messaging/converters/share.js.map +1 -0
  306. package/src/messaging/converters/sticker.d.ts +9 -0
  307. package/src/messaging/converters/sticker.d.ts.map +1 -0
  308. package/src/messaging/converters/sticker.js +19 -0
  309. package/src/messaging/converters/sticker.js.map +1 -0
  310. package/src/messaging/converters/system.d.ts +13 -0
  311. package/src/messaging/converters/system.d.ts.map +1 -0
  312. package/src/messaging/converters/system.js +33 -0
  313. package/src/messaging/converters/system.js.map +1 -0
  314. package/src/messaging/converters/text.d.ts +9 -0
  315. package/src/messaging/converters/text.d.ts.map +1 -0
  316. package/src/messaging/converters/text.js +15 -0
  317. package/src/messaging/converters/text.js.map +1 -0
  318. package/src/messaging/converters/todo.d.ts +9 -0
  319. package/src/messaging/converters/todo.d.ts.map +1 -0
  320. package/src/messaging/converters/todo.js +42 -0
  321. package/src/messaging/converters/todo.js.map +1 -0
  322. package/src/messaging/converters/types.d.ts +108 -0
  323. package/src/messaging/converters/types.d.ts.map +1 -0
  324. package/src/messaging/converters/types.js +8 -0
  325. package/src/messaging/converters/types.js.map +1 -0
  326. package/src/messaging/converters/unknown.d.ts +9 -0
  327. package/src/messaging/converters/unknown.d.ts.map +1 -0
  328. package/src/messaging/converters/unknown.js +17 -0
  329. package/src/messaging/converters/unknown.js.map +1 -0
  330. package/src/messaging/converters/utils.d.ts +23 -0
  331. package/src/messaging/converters/utils.d.ts.map +1 -0
  332. package/src/messaging/converters/utils.js +52 -0
  333. package/src/messaging/converters/utils.js.map +1 -0
  334. package/src/messaging/converters/video-chat.d.ts +9 -0
  335. package/src/messaging/converters/video-chat.d.ts.map +1 -0
  336. package/src/messaging/converters/video-chat.js +24 -0
  337. package/src/messaging/converters/video-chat.js.map +1 -0
  338. package/src/messaging/converters/video.d.ts +9 -0
  339. package/src/messaging/converters/video.d.ts.map +1 -0
  340. package/src/messaging/converters/video.js +33 -0
  341. package/src/messaging/converters/video.js.map +1 -0
  342. package/src/messaging/converters/vote.d.ts +9 -0
  343. package/src/messaging/converters/vote.d.ts.map +1 -0
  344. package/src/messaging/converters/vote.js +25 -0
  345. package/src/messaging/converters/vote.js.map +1 -0
  346. package/src/messaging/inbound/dedup.d.ts +60 -0
  347. package/src/messaging/inbound/dedup.d.ts.map +1 -0
  348. package/src/messaging/inbound/dedup.js +117 -0
  349. package/src/messaging/inbound/dedup.js.map +1 -0
  350. package/src/messaging/inbound/dispatch-builders.d.ts +84 -0
  351. package/src/messaging/inbound/dispatch-builders.d.ts.map +1 -0
  352. package/src/messaging/inbound/dispatch-builders.js +153 -0
  353. package/src/messaging/inbound/dispatch-builders.js.map +1 -0
  354. package/src/messaging/inbound/dispatch-commands.d.ts +28 -0
  355. package/src/messaging/inbound/dispatch-commands.d.ts.map +1 -0
  356. package/src/messaging/inbound/dispatch-commands.js +113 -0
  357. package/src/messaging/inbound/dispatch-commands.js.map +1 -0
  358. package/src/messaging/inbound/dispatch-context.d.ts +68 -0
  359. package/src/messaging/inbound/dispatch-context.d.ts.map +1 -0
  360. package/src/messaging/inbound/dispatch-context.js +137 -0
  361. package/src/messaging/inbound/dispatch-context.js.map +1 -0
  362. package/src/messaging/inbound/dispatch.d.ts +48 -0
  363. package/src/messaging/inbound/dispatch.d.ts.map +1 -0
  364. package/src/messaging/inbound/dispatch.js +193 -0
  365. package/src/messaging/inbound/dispatch.js.map +1 -0
  366. package/src/messaging/inbound/enrich.d.ts +103 -0
  367. package/src/messaging/inbound/enrich.d.ts.map +1 -0
  368. package/src/messaging/inbound/enrich.js +228 -0
  369. package/src/messaging/inbound/enrich.js.map +1 -0
  370. package/src/messaging/inbound/gate-effects.d.ts +24 -0
  371. package/src/messaging/inbound/gate-effects.d.ts.map +1 -0
  372. package/src/messaging/inbound/gate-effects.js +44 -0
  373. package/src/messaging/inbound/gate-effects.js.map +1 -0
  374. package/src/messaging/inbound/gate.d.ts +61 -0
  375. package/src/messaging/inbound/gate.d.ts.map +1 -0
  376. package/src/messaging/inbound/gate.js +234 -0
  377. package/src/messaging/inbound/gate.js.map +1 -0
  378. package/src/messaging/inbound/handler.d.ts +36 -0
  379. package/src/messaging/inbound/handler.d.ts.map +1 -0
  380. package/src/messaging/inbound/handler.js +174 -0
  381. package/src/messaging/inbound/handler.js.map +1 -0
  382. package/src/messaging/inbound/media-resolver.d.ts +33 -0
  383. package/src/messaging/inbound/media-resolver.d.ts.map +1 -0
  384. package/src/messaging/inbound/media-resolver.js +88 -0
  385. package/src/messaging/inbound/media-resolver.js.map +1 -0
  386. package/src/messaging/inbound/mention.d.ts +40 -0
  387. package/src/messaging/inbound/mention.d.ts.map +1 -0
  388. package/src/messaging/inbound/mention.js +82 -0
  389. package/src/messaging/inbound/mention.js.map +1 -0
  390. package/src/messaging/inbound/parse-io.d.ts +51 -0
  391. package/src/messaging/inbound/parse-io.d.ts.map +1 -0
  392. package/src/messaging/inbound/parse-io.js +82 -0
  393. package/src/messaging/inbound/parse-io.js.map +1 -0
  394. package/src/messaging/inbound/parse.d.ts +29 -0
  395. package/src/messaging/inbound/parse.d.ts.map +1 -0
  396. package/src/messaging/inbound/parse.js +107 -0
  397. package/src/messaging/inbound/parse.js.map +1 -0
  398. package/src/messaging/inbound/permission.d.ts +18 -0
  399. package/src/messaging/inbound/permission.d.ts.map +1 -0
  400. package/src/messaging/inbound/permission.js +41 -0
  401. package/src/messaging/inbound/permission.js.map +1 -0
  402. package/src/messaging/inbound/policy.d.ts +95 -0
  403. package/src/messaging/inbound/policy.d.ts.map +1 -0
  404. package/src/messaging/inbound/policy.js +161 -0
  405. package/src/messaging/inbound/policy.js.map +1 -0
  406. package/src/messaging/inbound/reaction-handler.d.ts +62 -0
  407. package/src/messaging/inbound/reaction-handler.d.ts.map +1 -0
  408. package/src/messaging/inbound/reaction-handler.js +221 -0
  409. package/src/messaging/inbound/reaction-handler.js.map +1 -0
  410. package/src/messaging/inbound/user-name-cache.d.ts +83 -0
  411. package/src/messaging/inbound/user-name-cache.d.ts.map +1 -0
  412. package/src/messaging/inbound/user-name-cache.js +242 -0
  413. package/src/messaging/inbound/user-name-cache.js.map +1 -0
  414. package/src/messaging/outbound/actions.d.ts +17 -0
  415. package/src/messaging/outbound/actions.d.ts.map +1 -0
  416. package/src/messaging/outbound/actions.js +310 -0
  417. package/src/messaging/outbound/actions.js.map +1 -0
  418. package/src/messaging/outbound/chat-manage.d.ts +65 -0
  419. package/src/messaging/outbound/chat-manage.d.ts.map +1 -0
  420. package/src/messaging/outbound/chat-manage.js +112 -0
  421. package/src/messaging/outbound/chat-manage.js.map +1 -0
  422. package/src/messaging/outbound/deliver.d.ts +156 -0
  423. package/src/messaging/outbound/deliver.d.ts.map +1 -0
  424. package/src/messaging/outbound/deliver.js +299 -0
  425. package/src/messaging/outbound/deliver.js.map +1 -0
  426. package/src/messaging/outbound/fetch.d.ts +13 -0
  427. package/src/messaging/outbound/fetch.d.ts.map +1 -0
  428. package/src/messaging/outbound/fetch.js +13 -0
  429. package/src/messaging/outbound/fetch.js.map +1 -0
  430. package/src/messaging/outbound/forward.d.ts +27 -0
  431. package/src/messaging/outbound/forward.d.ts.map +1 -0
  432. package/src/messaging/outbound/forward.js +49 -0
  433. package/src/messaging/outbound/forward.js.map +1 -0
  434. package/src/messaging/outbound/media-url-utils.d.ts +30 -0
  435. package/src/messaging/outbound/media-url-utils.d.ts.map +1 -0
  436. package/src/messaging/outbound/media-url-utils.js +131 -0
  437. package/src/messaging/outbound/media-url-utils.js.map +1 -0
  438. package/src/messaging/outbound/media.d.ts +256 -0
  439. package/src/messaging/outbound/media.d.ts.map +1 -0
  440. package/src/messaging/outbound/media.js +749 -0
  441. package/src/messaging/outbound/media.js.map +1 -0
  442. package/src/messaging/outbound/outbound.d.ts +90 -0
  443. package/src/messaging/outbound/outbound.d.ts.map +1 -0
  444. package/src/messaging/outbound/outbound.js +112 -0
  445. package/src/messaging/outbound/outbound.js.map +1 -0
  446. package/src/messaging/outbound/reactions.d.ts +125 -0
  447. package/src/messaging/outbound/reactions.d.ts.map +1 -0
  448. package/src/messaging/outbound/reactions.js +379 -0
  449. package/src/messaging/outbound/reactions.js.map +1 -0
  450. package/src/messaging/outbound/send.d.ts +136 -0
  451. package/src/messaging/outbound/send.d.ts.map +1 -0
  452. package/src/messaging/outbound/send.js +289 -0
  453. package/src/messaging/outbound/send.js.map +1 -0
  454. package/src/messaging/outbound/typing.d.ts +61 -0
  455. package/src/messaging/outbound/typing.d.ts.map +1 -0
  456. package/src/messaging/outbound/typing.js +136 -0
  457. package/src/messaging/outbound/typing.js.map +1 -0
  458. package/src/messaging/shared/message-lookup.d.ts +55 -0
  459. package/src/messaging/shared/message-lookup.d.ts.map +1 -0
  460. package/src/messaging/shared/message-lookup.js +118 -0
  461. package/src/messaging/shared/message-lookup.js.map +1 -0
  462. package/src/messaging/types.d.ts +177 -0
  463. package/src/messaging/types.d.ts.map +1 -0
  464. package/src/messaging/types.js +11 -0
  465. package/src/messaging/types.js.map +1 -0
  466. package/src/tools/auto-auth.d.ts +57 -0
  467. package/src/tools/auto-auth.d.ts.map +1 -0
  468. package/src/tools/auto-auth.js +925 -0
  469. package/src/tools/auto-auth.js.map +1 -0
  470. package/src/tools/helpers.d.ts +220 -0
  471. package/src/tools/helpers.d.ts.map +1 -0
  472. package/src/tools/helpers.js +298 -0
  473. package/src/tools/helpers.js.map +1 -0
  474. package/src/tools/mcp/doc/create.d.ts +13 -0
  475. package/src/tools/mcp/doc/create.d.ts.map +1 -0
  476. package/src/tools/mcp/doc/create.js +45 -0
  477. package/src/tools/mcp/doc/create.js.map +1 -0
  478. package/src/tools/mcp/doc/fetch.d.ts +13 -0
  479. package/src/tools/mcp/doc/fetch.d.ts.map +1 -0
  480. package/src/tools/mcp/doc/fetch.js +37 -0
  481. package/src/tools/mcp/doc/fetch.js.map +1 -0
  482. package/src/tools/mcp/doc/index.d.ts +13 -0
  483. package/src/tools/mcp/doc/index.d.ts.map +1 -0
  484. package/src/tools/mcp/doc/index.js +42 -0
  485. package/src/tools/mcp/doc/index.js.map +1 -0
  486. package/src/tools/mcp/doc/update.d.ts +13 -0
  487. package/src/tools/mcp/doc/update.d.ts.map +1 -0
  488. package/src/tools/mcp/doc/update.js +62 -0
  489. package/src/tools/mcp/doc/update.js.map +1 -0
  490. package/src/tools/mcp/shared.d.ts +58 -0
  491. package/src/tools/mcp/shared.d.ts.map +1 -0
  492. package/src/tools/mcp/shared.js +224 -0
  493. package/src/tools/mcp/shared.js.map +1 -0
  494. package/src/tools/oapi/bitable/app-table-field.d.ts +17 -0
  495. package/src/tools/oapi/bitable/app-table-field.d.ts.map +1 -0
  496. package/src/tools/oapi/bitable/app-table-field.js +224 -0
  497. package/src/tools/oapi/bitable/app-table-field.js.map +1 -0
  498. package/src/tools/oapi/bitable/app-table-record.d.ts +21 -0
  499. package/src/tools/oapi/bitable/app-table-record.d.ts.map +1 -0
  500. package/src/tools/oapi/bitable/app-table-record.js +449 -0
  501. package/src/tools/oapi/bitable/app-table-record.js.map +1 -0
  502. package/src/tools/oapi/bitable/app-table-view.d.ts +18 -0
  503. package/src/tools/oapi/bitable/app-table-view.d.ts.map +1 -0
  504. package/src/tools/oapi/bitable/app-table-view.js +197 -0
  505. package/src/tools/oapi/bitable/app-table-view.js.map +1 -0
  506. package/src/tools/oapi/bitable/app-table.d.ts +20 -0
  507. package/src/tools/oapi/bitable/app-table.d.ts.map +1 -0
  508. package/src/tools/oapi/bitable/app-table.js +249 -0
  509. package/src/tools/oapi/bitable/app-table.js.map +1 -0
  510. package/src/tools/oapi/bitable/app.d.ts +19 -0
  511. package/src/tools/oapi/bitable/app.d.ts.map +1 -0
  512. package/src/tools/oapi/bitable/app.js +188 -0
  513. package/src/tools/oapi/bitable/app.js.map +1 -0
  514. package/src/tools/oapi/bitable/index.d.ts +10 -0
  515. package/src/tools/oapi/bitable/index.d.ts.map +1 -0
  516. package/src/tools/oapi/bitable/index.js +10 -0
  517. package/src/tools/oapi/bitable/index.js.map +1 -0
  518. package/src/tools/oapi/calendar/calendar.d.ts +16 -0
  519. package/src/tools/oapi/calendar/calendar.d.ts.map +1 -0
  520. package/src/tools/oapi/calendar/calendar.js +124 -0
  521. package/src/tools/oapi/calendar/calendar.js.map +1 -0
  522. package/src/tools/oapi/calendar/event-attendee.d.ts +17 -0
  523. package/src/tools/oapi/calendar/event-attendee.d.ts.map +1 -0
  524. package/src/tools/oapi/calendar/event-attendee.js +275 -0
  525. package/src/tools/oapi/calendar/event-attendee.js.map +1 -0
  526. package/src/tools/oapi/calendar/event.d.ts +17 -0
  527. package/src/tools/oapi/calendar/event.d.ts.map +1 -0
  528. package/src/tools/oapi/calendar/event.js +721 -0
  529. package/src/tools/oapi/calendar/event.js.map +1 -0
  530. package/src/tools/oapi/calendar/freebusy.d.ts +14 -0
  531. package/src/tools/oapi/calendar/freebusy.d.ts.map +1 -0
  532. package/src/tools/oapi/calendar/freebusy.js +113 -0
  533. package/src/tools/oapi/calendar/freebusy.js.map +1 -0
  534. package/src/tools/oapi/calendar/index.d.ts +9 -0
  535. package/src/tools/oapi/calendar/index.d.ts.map +1 -0
  536. package/src/tools/oapi/calendar/index.js +9 -0
  537. package/src/tools/oapi/calendar/index.js.map +1 -0
  538. package/src/tools/oapi/chat/chat.d.ts +17 -0
  539. package/src/tools/oapi/chat/chat.d.ts.map +1 -0
  540. package/src/tools/oapi/chat/chat.js +126 -0
  541. package/src/tools/oapi/chat/chat.js.map +1 -0
  542. package/src/tools/oapi/chat/index.d.ts +11 -0
  543. package/src/tools/oapi/chat/index.d.ts.map +1 -0
  544. package/src/tools/oapi/chat/index.js +16 -0
  545. package/src/tools/oapi/chat/index.js.map +1 -0
  546. package/src/tools/oapi/chat/members.d.ts +12 -0
  547. package/src/tools/oapi/chat/members.d.ts.map +1 -0
  548. package/src/tools/oapi/chat/members.js +83 -0
  549. package/src/tools/oapi/chat/members.js.map +1 -0
  550. package/src/tools/oapi/common/get-user.d.ts +13 -0
  551. package/src/tools/oapi/common/get-user.d.ts.map +1 -0
  552. package/src/tools/oapi/common/get-user.js +108 -0
  553. package/src/tools/oapi/common/get-user.js.map +1 -0
  554. package/src/tools/oapi/common/index.d.ts +7 -0
  555. package/src/tools/oapi/common/index.d.ts.map +1 -0
  556. package/src/tools/oapi/common/index.js +7 -0
  557. package/src/tools/oapi/common/index.js.map +1 -0
  558. package/src/tools/oapi/common/search-user.d.ts +12 -0
  559. package/src/tools/oapi/common/search-user.d.ts.map +1 -0
  560. package/src/tools/oapi/common/search-user.js +75 -0
  561. package/src/tools/oapi/common/search-user.js.map +1 -0
  562. package/src/tools/oapi/drive/doc-comments.d.ts +16 -0
  563. package/src/tools/oapi/drive/doc-comments.d.ts.map +1 -0
  564. package/src/tools/oapi/drive/doc-comments.js +288 -0
  565. package/src/tools/oapi/drive/doc-comments.js.map +1 -0
  566. package/src/tools/oapi/drive/doc-media.d.ts +20 -0
  567. package/src/tools/oapi/drive/doc-media.d.ts.map +1 -0
  568. package/src/tools/oapi/drive/doc-media.js +337 -0
  569. package/src/tools/oapi/drive/doc-media.js.map +1 -0
  570. package/src/tools/oapi/drive/file.d.ts +20 -0
  571. package/src/tools/oapi/drive/file.d.ts.map +1 -0
  572. package/src/tools/oapi/drive/file.js +485 -0
  573. package/src/tools/oapi/drive/file.js.map +1 -0
  574. package/src/tools/oapi/drive/index.d.ts +13 -0
  575. package/src/tools/oapi/drive/index.d.ts.map +1 -0
  576. package/src/tools/oapi/drive/index.js +37 -0
  577. package/src/tools/oapi/drive/index.js.map +1 -0
  578. package/src/tools/oapi/helpers.d.ts +174 -0
  579. package/src/tools/oapi/helpers.d.ts.map +1 -0
  580. package/src/tools/oapi/helpers.js +341 -0
  581. package/src/tools/oapi/helpers.js.map +1 -0
  582. package/src/tools/oapi/im/format-messages.d.ts +51 -0
  583. package/src/tools/oapi/im/format-messages.d.ts.map +1 -0
  584. package/src/tools/oapi/im/format-messages.js +166 -0
  585. package/src/tools/oapi/im/format-messages.js.map +1 -0
  586. package/src/tools/oapi/im/index.d.ts +11 -0
  587. package/src/tools/oapi/im/index.d.ts.map +1 -0
  588. package/src/tools/oapi/im/index.js +18 -0
  589. package/src/tools/oapi/im/index.js.map +1 -0
  590. package/src/tools/oapi/im/message-read.d.ts +14 -0
  591. package/src/tools/oapi/im/message-read.d.ts.map +1 -0
  592. package/src/tools/oapi/im/message-read.js +412 -0
  593. package/src/tools/oapi/im/message-read.js.map +1 -0
  594. package/src/tools/oapi/im/message.d.ts +17 -0
  595. package/src/tools/oapi/im/message.d.ts.map +1 -0
  596. package/src/tools/oapi/im/message.js +171 -0
  597. package/src/tools/oapi/im/message.js.map +1 -0
  598. package/src/tools/oapi/im/resource.d.ts +14 -0
  599. package/src/tools/oapi/im/resource.d.ts.map +1 -0
  600. package/src/tools/oapi/im/resource.js +152 -0
  601. package/src/tools/oapi/im/resource.js.map +1 -0
  602. package/src/tools/oapi/im/time-utils.d.ts +47 -0
  603. package/src/tools/oapi/im/time-utils.d.ts.map +1 -0
  604. package/src/tools/oapi/im/time-utils.js +202 -0
  605. package/src/tools/oapi/im/time-utils.js.map +1 -0
  606. package/src/tools/oapi/im/user-name-uat.d.ts +24 -0
  607. package/src/tools/oapi/im/user-name-uat.d.ts.map +1 -0
  608. package/src/tools/oapi/im/user-name-uat.js +128 -0
  609. package/src/tools/oapi/im/user-name-uat.js.map +1 -0
  610. package/src/tools/oapi/index.d.ts +12 -0
  611. package/src/tools/oapi/index.d.ts.map +1 -0
  612. package/src/tools/oapi/index.js +59 -0
  613. package/src/tools/oapi/index.js.map +1 -0
  614. package/src/tools/oapi/sdk-types.d.ts +97 -0
  615. package/src/tools/oapi/sdk-types.d.ts.map +1 -0
  616. package/src/tools/oapi/sdk-types.js +13 -0
  617. package/src/tools/oapi/sdk-types.js.map +1 -0
  618. package/src/tools/oapi/search/doc-search.d.ts +14 -0
  619. package/src/tools/oapi/search/doc-search.d.ts.map +1 -0
  620. package/src/tools/oapi/search/doc-search.js +203 -0
  621. package/src/tools/oapi/search/doc-search.js.map +1 -0
  622. package/src/tools/oapi/search/index.d.ts +13 -0
  623. package/src/tools/oapi/search/index.d.ts.map +1 -0
  624. package/src/tools/oapi/search/index.js +34 -0
  625. package/src/tools/oapi/search/index.js.map +1 -0
  626. package/src/tools/oapi/sheets/index.d.ts +13 -0
  627. package/src/tools/oapi/sheets/index.d.ts.map +1 -0
  628. package/src/tools/oapi/sheets/index.js +32 -0
  629. package/src/tools/oapi/sheets/index.js.map +1 -0
  630. package/src/tools/oapi/sheets/sheet.d.ts +17 -0
  631. package/src/tools/oapi/sheets/sheet.d.ts.map +1 -0
  632. package/src/tools/oapi/sheets/sheet.js +652 -0
  633. package/src/tools/oapi/sheets/sheet.js.map +1 -0
  634. package/src/tools/oapi/task/comment.d.ts +16 -0
  635. package/src/tools/oapi/task/comment.d.ts.map +1 -0
  636. package/src/tools/oapi/task/comment.js +142 -0
  637. package/src/tools/oapi/task/comment.js.map +1 -0
  638. package/src/tools/oapi/task/index.d.ts +9 -0
  639. package/src/tools/oapi/task/index.d.ts.map +1 -0
  640. package/src/tools/oapi/task/index.js +9 -0
  641. package/src/tools/oapi/task/index.js.map +1 -0
  642. package/src/tools/oapi/task/subtask.d.ts +15 -0
  643. package/src/tools/oapi/task/subtask.d.ts.map +1 -0
  644. package/src/tools/oapi/task/subtask.js +164 -0
  645. package/src/tools/oapi/task/subtask.js.map +1 -0
  646. package/src/tools/oapi/task/task.d.ts +17 -0
  647. package/src/tools/oapi/task/task.d.ts.map +1 -0
  648. package/src/tools/oapi/task/task.js +346 -0
  649. package/src/tools/oapi/task/task.js.map +1 -0
  650. package/src/tools/oapi/task/tasklist.d.ts +22 -0
  651. package/src/tools/oapi/task/tasklist.d.ts.map +1 -0
  652. package/src/tools/oapi/task/tasklist.js +323 -0
  653. package/src/tools/oapi/task/tasklist.js.map +1 -0
  654. package/src/tools/oapi/wiki/index.d.ts +13 -0
  655. package/src/tools/oapi/wiki/index.d.ts.map +1 -0
  656. package/src/tools/oapi/wiki/index.js +35 -0
  657. package/src/tools/oapi/wiki/index.js.map +1 -0
  658. package/src/tools/oapi/wiki/space-node.d.ts +18 -0
  659. package/src/tools/oapi/wiki/space-node.d.ts.map +1 -0
  660. package/src/tools/oapi/wiki/space-node.js +253 -0
  661. package/src/tools/oapi/wiki/space-node.js.map +1 -0
  662. package/src/tools/oapi/wiki/space.d.ts +16 -0
  663. package/src/tools/oapi/wiki/space.d.ts.map +1 -0
  664. package/src/tools/oapi/wiki/space.js +132 -0
  665. package/src/tools/oapi/wiki/space.js.map +1 -0
  666. package/src/tools/oauth-batch-auth.d.ts +12 -0
  667. package/src/tools/oauth-batch-auth.d.ts.map +1 -0
  668. package/src/tools/oauth-batch-auth.js +142 -0
  669. package/src/tools/oauth-batch-auth.js.map +1 -0
  670. package/src/tools/oauth-cards.d.ts +27 -0
  671. package/src/tools/oauth-cards.d.ts.map +1 -0
  672. package/src/tools/oauth-cards.js +251 -0
  673. package/src/tools/oauth-cards.js.map +1 -0
  674. package/src/tools/oauth.d.ts +48 -0
  675. package/src/tools/oauth.d.ts.map +1 -0
  676. package/src/tools/oauth.js +619 -0
  677. package/src/tools/oauth.js.map +1 -0
  678. package/src/tools/onboarding-auth.d.ts +28 -0
  679. package/src/tools/onboarding-auth.d.ts.map +1 -0
  680. package/src/tools/onboarding-auth.js +131 -0
  681. package/src/tools/onboarding-auth.js.map +1 -0
  682. package/src/tools/tat/im/index.d.ts +16 -0
  683. package/src/tools/tat/im/index.d.ts.map +1 -0
  684. package/src/tools/tat/im/index.js +19 -0
  685. package/src/tools/tat/im/index.js.map +1 -0
  686. package/src/tools/tat/im/resource.d.ts +16 -0
  687. package/src/tools/tat/im/resource.d.ts.map +1 -0
  688. package/src/tools/tat/im/resource.js +158 -0
  689. package/src/tools/tat/im/resource.js.map +1 -0
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: feishu-fetch-doc
3
+ description: |
4
+ 获取飞书云文档内容。返回文档的 Markdown 内容,支持处理文档中的图片、文件和画板(需配合 feishu_doc_media 工具)。
5
+ ---
6
+
7
+ # feishu_mcp_fetch_doc
8
+
9
+ 获取飞书云文档的 Markdown 内容(Lark-flavored 格式)。
10
+
11
+ ## 重要:图片、文件、画板的处理
12
+
13
+ **文档中的图片、文件、画板需要通过 `feishu_doc_media`(action: download)工具单独获取!**
14
+
15
+ ### 识别格式
16
+
17
+ 返回的 Markdown 中,媒体文件以 HTML 标签形式出现:
18
+
19
+ - **图片**:
20
+ ```html
21
+ <image token="Z1FjxxxxxxxxxxxxxxxxxxxtnAc" width="1833" height="2491" align="center"/>
22
+ ```
23
+
24
+ - **文件**:
25
+ ```html
26
+ <view type="1">
27
+ <file token="Z1FjxxxxxxxxxxxxxxxxxxxtnAc" name="skills.zip"/>
28
+ </view>
29
+ ```
30
+
31
+ - **画板**:
32
+ ```html
33
+ <whiteboard token="Z1FjxxxxxxxxxxxxxxxxxxxtnAc"/>
34
+ ```
35
+
36
+ ### 获取步骤
37
+
38
+ 1. 从 HTML 标签中提取 `token` 属性值
39
+ 2. 调用 `feishu_doc_media` 下载:
40
+ ```json
41
+ {
42
+ "action": "download",
43
+ "resource_token": "提取的token",
44
+ "resource_type": "media",
45
+ "output_path": "/path/to/save/file"
46
+ }
47
+ ```
48
+
49
+ ## 参数
50
+
51
+ - **`doc_id`**(必填):支持直接传文档 URL 或 token
52
+ - 直接传 URL:`https://xxx.feishu.cn/docx/Z1FjxxxxxxxxxxxxxxxxxxxtnAc`(系统自动提取 token)
53
+ - 直接传 token:`Z1FjxxxxxxxxxxxxxxxxxxxtnAc`
54
+ - 知识库 URL/token 也支持:`https://xxx.feishu.cn/wiki/Z1FjxxxxxxxxxxxxxxxxxxxtnAc` 或 `Z1FjxxxxxxxxxxxxxxxxxxxtnAc`
55
+
56
+ ## Wiki URL 处理策略
57
+
58
+ 知识库链接(`/wiki/TOKEN`)背后可能是云文档、电子表格、多维表格等不同类型的文档。当不确定类型时, **不能直接假设是云文档**,必须先查询实际类型。
59
+
60
+ ### 处理流程
61
+
62
+ 1. **先调用 `feishu_wiki_space_node`(action: get)解析 wiki token**:
63
+ ```json
64
+ { "action": "get", "token": "wiki_token_here" }
65
+ ```
66
+ 2. **从返回的 `node` 中获取 `obj_type`(实际文档类型)和 `obj_token`(实际文档 token)**
67
+ 3. **根据 `obj_type` 调用对应工具**:
68
+
69
+ | obj_type | 工具 | 传参 |
70
+ |----------|------|------|
71
+ | `docx` | `feishu_mcp_fetch_doc` | doc_id = obj_token |
72
+ | `sheet` | `feishu_sheet` | spreadsheet_token = obj_token |
73
+ | `bitable` | `feishu_bitable_*` 系列 | app_token = obj_token |
74
+ | 其他 | 告知用户暂不支持该类型 | — |
75
+
76
+
77
+ ### 示例
78
+
79
+ 用户:`帮我看下这个文档 https://xxx.feishu.cn/wiki/ABC123`
80
+
81
+ 1. 调用 `feishu_wiki_space_node`(action: get, token: ABC123)
82
+ 2. 返回 `obj_type: "docx"`, `obj_token: "doxcnXYZ789"`
83
+ 3. 调用 `feishu_mcp_fetch_doc`(doc_id: doxcnXYZ789)
84
+
85
+ ## 工具组合
86
+
87
+ | 需求 | 工具 |
88
+ |------|------|
89
+ | 获取文档文本 | `feishu_mcp_fetch_doc` |
90
+ | 下载图片/文件/画板 | `feishu_doc_media`(action: download) |
91
+ | 解析 wiki token 类型 | `feishu_wiki_space_node`(action: get) |
92
+ | 读写电子表格 | `feishu_sheet` |
93
+ | 操作多维表格 | `feishu_bitable_*` 系列 |
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: feishu-im-read
3
+ description: |
4
+ 飞书 IM 消息读取工具使用指南,覆盖会话消息获取、话题回复读取、跨会话消息搜索、图片/文件资源下载。
5
+
6
+ **当以下情况时使用此 Skill**:
7
+ (1) 需要获取群聊或单聊的历史消息
8
+ (2) 需要读取话题(thread)内的回复消息
9
+ (3) 需要跨会话搜索消息(按关键词、发送者、时间等条件)
10
+ (4) 消息中包含图片、文件、音频、视频,需要下载
11
+ (5) 用户提到"聊天记录"、"消息"、"群里说了什么"、"话题回复"、"搜索消息"、"图片"、"文件下载"
12
+ (6) 需要按时间范围过滤消息、分页获取更多消息
13
+ ---
14
+
15
+ # 飞书 IM 消息读取
16
+
17
+ ## 执行前必读
18
+
19
+ - 该 Skill 中的所有消息读取工具均以用户身份调用,只能读取用户有权限的会话
20
+ - `feishu_im_user_get_messages` 中 `open_id` 和 `chat_id` 必须二选一
21
+ - 消息中出现 `thread_id` 时,根据用户意图判断是否用 `feishu_im_user_get_thread_messages` 读取话题内回复
22
+ - 以用户身份读取后,如果消息内容中出现资源标记时,用 `feishu_im_user_fetch_resource` 下载,需要 `message_id` + `file_key` + `type`
23
+
24
+ ---
25
+
26
+ ## 快速索引:意图 → 工具
27
+
28
+ | 用户意图 | 工具 | 必填参数 | 常用可选 |
29
+ |---------|------|---------|---------|
30
+ | 获取群聊/单聊历史消息 | feishu_im_user_get_messages | chat_id 或 open_id(二选一) | relative_time, start_time/end_time, page_size, sort_rule |
31
+ | 获取话题内回复消息 | feishu_im_user_get_thread_messages | thread_id(omt_xxx) | page_size, sort_rule |
32
+ | 跨会话搜索消息 | feishu_im_user_search_messages | 至少一个过滤条件 | query, sender_ids, chat_id, relative_time, start_time/end_time, page_size |
33
+ | 下载消息中的图片 | feishu_im_user_fetch_resource | message_id, file_key(img_xxx), type="image" | - |
34
+ | 下载消息中的文件/音频/视频 | feishu_im_user_fetch_resource | message_id, file_key(file_xxx), type="file" | - |
35
+
36
+ ---
37
+
38
+ ## 核心约束
39
+
40
+ ### 1. 时间范围:确保消息覆盖完整
41
+
42
+ 当用户没有明确指定时间范围时,根据用户意图推断合适的 `relative_time`,确保返回的消息能完整覆盖用户关心的内容。用户明确指定时间时直接使用用户的值。
43
+
44
+ ### 2. 分页:根据需要翻页获取更多结果
45
+
46
+ - `page_size` 范围 1-50,默认 50
47
+ - 返回结果中 `has_more=true` 时,可使用 `page_token` 继续获取下一页
48
+ - 根据用户需求判断是否需要翻页:需要完整结果时继续翻页,浏览概览时第一页通常够用
49
+
50
+ ### 3. 话题回复:主动展开话题获取上下文
51
+
52
+ 获取历史消息时,返回的消息中如果包含 `thread_id` 字段,推荐主动获取话题的最新 10 条回复(`page_size: 10, sort_rule: "create_time_desc"`)以提供更完整的上下文。
53
+
54
+ | 场景 | 行为 |
55
+ |------|------|
56
+ | 获取历史消息并需要理解上下文(默认) | 对发现的 thread_id 调用 `feishu_im_user_get_thread_messages` 获取最新 10 条回复 |
57
+ | 用户要求"完整对话"、"详细讨论"、"看看回复" | 获取话题全部回复(`page_size: 50, sort_rule: "create_time_asc"`),需要时翻页 |
58
+ | 用户只浏览消息概览 / 用户明确说不看回复 | 跳过话题展开 |
59
+
60
+ **注意**:话题消息不支持时间过滤(飞书 API 限制),只能通过分页获取。
61
+
62
+ ### 4. 跨会话消息搜索
63
+
64
+ `feishu_im_user_search_messages` 支持跨所有会话搜索消息:
65
+
66
+ | 参数 | 说明 |
67
+ |------|------|
68
+ | `query` | 搜索关键词,匹配消息内容 |
69
+ | `sender_ids` | 发送者 open_id 列表 |
70
+ | `chat_id` | 限定搜索范围的会话 ID |
71
+ | `mention_ids` | 被@用户的 open_id 列表 |
72
+ | `message_type` | 消息类型:file / image / media |
73
+ | `sender_type` | 发送者类型:user / bot / all(默认 user) |
74
+ | `chat_type` | 会话类型:group / p2p |
75
+
76
+ 搜索结果每条消息额外包含 `chat_id`、`chat_type`(p2p/group)、`chat_name`。单聊消息还有 `chat_partner`(对方 open_id 和名字)。
77
+
78
+ ### 5. 图片/文件/媒体资源的提取
79
+
80
+ 消息内容中可能出现以下资源标记,用 `feishu_im_user_fetch_resource` 下载:
81
+
82
+ | 资源类型 | 内容中的标记格式 | fetch_resource 参数 |
83
+ |---------|-----------------|-------------------|
84
+ | 图片 | `![image](img_xxx)` | message_id=`om_xxx`, file_key=`img_xxx`, type=`"image"` |
85
+ | 文件 | `<file key="file_xxx" .../>` | message_id=`om_xxx`, file_key=`file_xxx`, type=`"file"` |
86
+ | 音频 | `<audio key="file_xxx" .../>` | message_id=`om_xxx`, file_key=`file_xxx`, type=`"file"` |
87
+ | 视频 | `<video key="file_xxx" .../>` | message_id=`om_xxx`, file_key=`file_xxx`, type=`"file"` |
88
+
89
+ 从消息的 `message_id` 字段和内容中的 `file_key` 组合即可调用 fetch_resource。
90
+
91
+ **注意**:文件大小限制 100MB,不支持下载表情包、卡片中的资源。
92
+
93
+ ### 6. 时间过滤
94
+
95
+ `feishu_im_user_get_messages` 和 `feishu_im_user_search_messages` 支持时间过滤,话题消息不支持。
96
+
97
+ | 方式 | 参数 | 示例 |
98
+ |------|------|------|
99
+ | 相对时间 | `relative_time` | `today`、`yesterday`、`this_week`、`last_3_days`、`last_24_hours` |
100
+ | 精确时间 | `start_time` + `end_time` | ISO 8601 格式:`2026-02-27T00:00:00+08:00` |
101
+
102
+ - `relative_time` 和 `start_time/end_time` **互斥**,不能同时使用
103
+ - 可用的 relative_time 值:`today`、`yesterday`、`day_before_yesterday`、`this_week`、`last_week`、`this_month`、`last_month`、`last_{N}_{unit}`(unit: minutes/hours/days)
104
+
105
+ ### 7. open_id 与 chat_id 的选择
106
+
107
+ | 参数 | 格式 | 适用场景 |
108
+ |------|------|---------|
109
+ | chat_id | `oc_xxx` | 已知会话 ID(群聊或单聊均可) |
110
+ | open_id | `ou_xxx` | 已知用户 ID,获取与该用户的单聊消息(自动解析为 chat_id) |
111
+
112
+ 两者必须二选一,优先使用 `chat_id`。
113
+
114
+ ---
115
+
116
+ ## 使用场景示例
117
+
118
+ ### 场景 1: 获取群聊消息并展开话题
119
+
120
+ **步骤 1**:获取群聊消息
121
+ ```json
122
+ { "chat_id": "oc_xxx" }
123
+ ```
124
+
125
+ **步骤 2**:返回的消息中发现 `thread_id`,展开话题最新回复:
126
+ ```json
127
+ { "thread_id": "omt_xxx", "page_size": 10, "sort_rule": "create_time_desc" }
128
+ ```
129
+
130
+ ### 场景 2: 跨会话搜索消息
131
+
132
+ ```json
133
+ { "query": "项目进度", "chat_id": "oc_xxx" }
134
+ ```
135
+
136
+ ### 场景 3: 分页获取更多消息
137
+
138
+ 第一次调用返回 `has_more: true` 和 `page_token: "xxx"`,继续获取:
139
+ ```json
140
+ { "chat_id": "oc_xxx", "page_token": "xxx" }
141
+ ```
142
+
143
+ ### 场景 4: 下载消息中的资源
144
+
145
+ ```json
146
+ { "message_id": "om_xxx", "file_key": "img_v3_xxx", "type": "image" }
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 常见错误与排查
152
+
153
+ | 错误现象 | 根本原因 | 解决方案 |
154
+ |---------|---------|---------|
155
+ | 消息结果太少 | 时间范围太窄或未传时间参数 | 根据用户意图推断合适的 `relative_time` |
156
+ | 消息不完整 | 没有检查 has_more 并翻页 | has_more=true 时用 page_token 翻页 |
157
+ | 话题讨论内容不完整 | 没有展开 thread_id | 发现 thread_id 时获取话题回复 |
158
+ | "open_id 和 chat_id 不能同时提供" | 同时传了两个参数 | 只传其中一个 |
159
+ | "relative_time 和 start_time/end_time 不能同时使用" | 时间参数冲突 | 选择一种时间过滤方式 |
160
+ | "未找到与 open_id=xxx 的单聊会话" | 没有单聊记录 | 改用 chat_id,或确认存在单聊 |
161
+ | 话题消息返回为空 | thread_id 格式不正确 | 确认为 `omt_xxx` 格式 |
162
+ | 图片/文件下载失败 | file_key 或 message_id 不匹配 | 确认 file_key 来自该 message_id |
163
+ | 权限不足 | 用户未授权或无权限 | 确认已完成 OAuth 授权且是会话成员 |
@@ -0,0 +1,293 @@
1
+ ---
2
+ name: feishu-task
3
+ description: |
4
+ 飞书任务管理工具,用于创建、查询、更新任务和清单。
5
+
6
+ **当以下情况时使用此 Skill**:
7
+ (1) 需要创建、查询、更新、删除任务
8
+ (2) 需要创建、管理任务清单
9
+ (3) 需要查看任务列表或清单内的任务
10
+ (4) 用户提到"任务"、"待办"、"to-do"、"清单"、"task"
11
+ (5) 需要设置任务负责人、关注人、截止时间
12
+ ---
13
+
14
+ # 飞书任务管理
15
+
16
+ ## 🚨 执行前必读
17
+
18
+ - ✅ **时间格式**:ISO 8601 / RFC 3339(带时区),例如 `2026-02-28T17:00:00+08:00`
19
+ - ✅ **current_user_id 强烈建议**:从消息上下文的 SenderId 获取(ou_...),工具会自动添加为 follower(如不在 members 中),确保创建者可以编辑任务
20
+ - ✅ **patch/get 必须**:task_guid
21
+ - ✅ **tasklist.tasks 必须**:tasklist_guid
22
+ - ✅ **完成任务**:completed_at = "2026-02-26 15:00:00"
23
+ - ✅ **反完成(恢复未完成)**:completed_at = "0"
24
+
25
+ ---
26
+
27
+ ## 📋 快速索引:意图 → 工具 → 必填参数
28
+
29
+ | 用户意图 | 工具 | action | 必填参数 | 强烈建议 | 常用可选 |
30
+ |---------|------|--------|---------|---------|---------|
31
+ | 新建待办 | feishu_task_task | create | summary | current_user_id(SenderId) | members, due, description |
32
+ | 查未完成任务 | feishu_task_task | list | - | completed=false | page_size |
33
+ | 获取任务详情 | feishu_task_task | get | task_guid | - | - |
34
+ | 完成任务 | feishu_task_task | patch | task_guid, completed_at | - | - |
35
+ | 反完成任务 | feishu_task_task | patch | task_guid, completed_at="0" | - | - |
36
+ | 改截止时间 | feishu_task_task | patch | task_guid, due | - | - |
37
+ | 创建清单 | feishu_task_tasklist | create | name | - | members |
38
+ | 查看清单任务 | feishu_task_tasklist | tasks | tasklist_guid | - | completed |
39
+ | 添加清单成员 | feishu_task_tasklist | add_members | tasklist_guid, members[] | - | - |
40
+
41
+ ---
42
+
43
+ ## 🎯 核心约束(Schema 未透露的知识)
44
+
45
+ ### 1. 当前工具使用用户身份(已内置保护)
46
+
47
+ **工具使用 `user_access_token`(用户身份)**
48
+
49
+ 这意味着:
50
+ - ✅ 创建任务时可以指定任意成员(包括只分配给别人)
51
+ - ⚠️ 只能查看和编辑**自己是成员的任务**
52
+ - ⚠️ **如果创建时没把自己加入成员,后续无法编辑该任务**
53
+
54
+ **自动保护机制**:
55
+ - 传入 `current_user_id` 参数(从 SenderId 获取)
56
+ - 如果 `members` 中不包含 `current_user_id`,工具会**自动添加为 follower**
57
+ - 确保创建者始终可以编辑任务
58
+
59
+ **推荐用法**:创建任务时始终传 `current_user_id`,工具会自动处理成员关系。
60
+
61
+ ### 2. 任务成员的角色说明
62
+
63
+ - **assignee(负责人)**:负责完成任务,可以编辑任务
64
+ - **follower(关注人)**:关注任务进展,接收通知
65
+
66
+ **添加成员示例**:
67
+ ```json
68
+ {
69
+ "members": [
70
+ {"id": "ou_xxx", "role": "assignee"}, // 负责人
71
+ {"id": "ou_yyy", "role": "follower"} // 关注人
72
+ ]
73
+ }
74
+ ```
75
+
76
+ **说明**:`id` 使用用户的 `open_id`(从消息上下文的 SenderId 获取)
77
+
78
+ ### 3. 任务清单角色冲突
79
+
80
+ **现象**:创建清单(`tasklist.create`)时传了 `members`,但返回的 `tasklist.members` 为空或缺少成员
81
+
82
+ **原因**:创建人自动成为清单 **owner**(所有者),如果 `members` 中包含创建人,该用户最终成为 owner 并从 `members` 中移除(同一用户只能有一个角色)
83
+
84
+ **建议**:不要在 `members` 中包含创建人,只添加其他协作成员
85
+
86
+ ### 4. completed_at 的三种用法
87
+
88
+ **1) 完成任务(设置完成时间)**:
89
+ ```json
90
+ {
91
+ "action": "patch",
92
+ "task_guid": "xxx",
93
+ "completed_at": "2026-02-26 15:30:00" // 北京时间字符串
94
+ }
95
+ ```
96
+
97
+ **2) 反完成(恢复未完成状态)**:
98
+ ```json
99
+ {
100
+ "action": "patch",
101
+ "task_guid": "xxx",
102
+ "completed_at": "0" // 特殊值 "0" 表示反完成
103
+ }
104
+ ```
105
+
106
+ **3) 毫秒时间戳**(不推荐,除非上层已严格生成):
107
+ ```json
108
+ {
109
+ "completed_at": "1740545400000" // 毫秒时间戳字符串
110
+ }
111
+ ```
112
+
113
+ ### 5. 清单成员的角色
114
+
115
+ | 成员类型 | 角色 | 说明 |
116
+ |---------|------|------|
117
+ | user(用户) | owner | 所有者,可转让所有权 |
118
+ | user(用户) | editor | 可编辑,可修改清单和任务 |
119
+ | user(用户) | viewer | 可查看,只读权限 |
120
+ | chat(群组) | editor/viewer | 整个群组获得权限 |
121
+
122
+ **说明**:创建清单时,创建者自动成为 owner,无需在 members 中指定。
123
+
124
+ ---
125
+
126
+ ## 📌 使用场景示例
127
+
128
+ ### 场景 1: 创建任务并分配负责人
129
+
130
+ ```json
131
+ {
132
+ "action": "create",
133
+ "summary": "准备周会材料",
134
+ "description": "整理本周工作进展和下周计划",
135
+ "current_user_id": "ou_发送者的open_id",
136
+ "due": {
137
+ "timestamp": "2026-02-28 17:00:00",
138
+ "is_all_day": false
139
+ },
140
+ "members": [
141
+ {"id": "ou_协作者的open_id", "role": "assignee"}
142
+ ]
143
+ }
144
+ ```
145
+
146
+ **说明**:
147
+ - `summary` 是必填字段
148
+ - `current_user_id` 强烈建议传入(从 SenderId 获取),工具会自动添加为 follower
149
+ - `members` 可以只包含其他协作者,当前用户会被自动添加
150
+ - 时间使用北京时间字符串格式
151
+
152
+ ### 场景 2: 查询我负责的未完成任务
153
+
154
+ ```json
155
+ {
156
+ "action": "list",
157
+ "completed": false,
158
+ "page_size": 20
159
+ }
160
+ ```
161
+
162
+ ### 场景 3: 完成任务
163
+
164
+ ```json
165
+ {
166
+ "action": "patch",
167
+ "task_guid": "任务的guid",
168
+ "completed_at": "2026-02-26 15:30:00"
169
+ }
170
+ ```
171
+
172
+ ### 场景 4: 反完成任务(恢复未完成状态)
173
+
174
+ ```json
175
+ {
176
+ "action": "patch",
177
+ "task_guid": "任务的guid",
178
+ "completed_at": "0"
179
+ }
180
+ ```
181
+
182
+ ### 场景 5: 创建清单并添加协作者
183
+
184
+ ```json
185
+ {
186
+ "action": "create",
187
+ "name": "产品迭代 v2.0",
188
+ "members": [
189
+ {"id": "ou_xxx", "role": "editor"},
190
+ {"id": "ou_yyy", "role": "viewer"}
191
+ ]
192
+ }
193
+ ```
194
+
195
+ ### 场景 6: 查看清单内的未完成任务
196
+
197
+ ```json
198
+ {
199
+ "action": "tasks",
200
+ "tasklist_guid": "清单的guid",
201
+ "completed": false
202
+ }
203
+ ```
204
+
205
+ ### 场景 7: 全天任务
206
+
207
+ ```json
208
+ {
209
+ "action": "create",
210
+ "summary": "年度总结",
211
+ "due": {
212
+ "timestamp": "2026-03-01 00:00:00",
213
+ "is_all_day": true
214
+ }
215
+ }
216
+ ```
217
+
218
+ ---
219
+
220
+ ## 🔍 常见错误与排查
221
+
222
+ | 错误现象 | 根本原因 | 解决方案 |
223
+ |---------|---------|---------|
224
+ | **创建后无法编辑任务** | 创建时未将自己加入 members | 创建时至少将当前用户(SenderId)加为 assignee 或 follower |
225
+ | **patch 失败提示 task_guid 缺失** | 未传 task_guid 参数 | patch/get 必须传 task_guid |
226
+ | **tasks 失败提示 tasklist_guid 缺失** | 未传 tasklist_guid 参数 | tasklist.tasks action 必须传 tasklist_guid |
227
+ | **反完成失败** | completed_at 格式错误 | 使用 `"0"` 字符串,不是数字 0 |
228
+ | **时间不对** | 使用了 Unix 时间戳 | 改用 ISO 8601 格式(带时区):`2024-01-01T00:00:00+08:00` |
229
+
230
+ ---
231
+
232
+ ## 📚 附录:背景知识
233
+
234
+ ### A. 资源关系
235
+
236
+ ```
237
+ 任务清单(Tasklist)
238
+ └─ 自定义分组(Section,可选)
239
+ └─ 任务(Task)
240
+ ├─ 成员:负责人(assignee)、关注人(follower)
241
+ ├─ 子任务(Subtask)
242
+ ├─ 截止时间(due)、开始时间(start)
243
+ └─ 附件、评论
244
+ ```
245
+
246
+ **核心概念**:
247
+ - **任务(Task)**:独立的待办事项,有唯一的 `task_guid`
248
+ - **清单(Tasklist)**:组织多个任务的容器,有唯一的 `tasklist_guid`
249
+ - **负责人(assignee)**:可以编辑任务并标记完成
250
+ - **关注人(follower)**:接收任务更新通知
251
+ - **我负责的(MyTasks)**:所有负责人为自己的任务集合
252
+
253
+ ### B. 如何获取 GUID
254
+
255
+ - **task_guid**:创建任务后从返回值的 `task.guid` 获取,或通过 `list` 查询
256
+ - **tasklist_guid**:创建清单后从返回值的 `tasklist.guid` 获取,或通过 `list` 查询
257
+
258
+ ### C. 如何将任务加入清单
259
+
260
+ 创建任务时指定 `tasklists` 参数:
261
+ ```json
262
+ {
263
+ "action": "create",
264
+ "summary": "任务标题",
265
+ "tasklists": [
266
+ {
267
+ "tasklist_guid": "清单的guid",
268
+ "section_guid": "分组的guid(可选)"
269
+ }
270
+ ]
271
+ }
272
+ ```
273
+
274
+ ### D. 重复任务如何创建
275
+
276
+ 使用 `repeat_rule` 参数,采用 RRULE 格式:
277
+ ```json
278
+ {
279
+ "action": "create",
280
+ "summary": "每周例会",
281
+ "due": {"timestamp": "2026-03-03 14:00:00", "is_all_day": false},
282
+ "repeat_rule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO"
283
+ }
284
+ ```
285
+
286
+ **说明**:只有设置了截止时间的任务才能设置重复规则。
287
+
288
+
289
+ ### E. 数据权限
290
+
291
+ - 只能操作自己有权限的任务(作为成员的任务)
292
+ - 只能操作自己有权限的清单(作为成员的清单)
293
+ - 将任务加入清单需要同时拥有任务和清单的编辑权限
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: feishu-troubleshoot
3
+ description: |
4
+ 飞书插件问题排查工具。包含常见问题 FAQ 和深度诊断命令(/feishu_doctor)。
5
+
6
+ 常见问题可随时查阅。诊断命令用于排查复杂问题(多次授权仍失败、自动授权无法解决等),
7
+ 会检查账户配置、API 连通性、应用权限、用户授权状态,并生成详细的诊断报告和解决方案。
8
+
9
+ ---
10
+
11
+ # 飞书插件问题排查
12
+
13
+ ## ❓ 常见问题(FAQ)
14
+
15
+ ### 卡片按钮点击无反应
16
+
17
+ **现象**:点击卡片按钮后没有任何反应,然后提示报错.
18
+
19
+ **原因**:应用未开通「消息卡片回传交互」权限。
20
+
21
+ **解决步骤**:
22
+
23
+ 1. 登录飞书开放平台:https://open.feishu.cn/app
24
+ 2. 选择您的应用 → **事件与回调**
25
+ 3. 在回调配置中,修改订阅方式为"长链接"并添加回调 "卡片回传交互"(card.action.trigger)
26
+ 4. 创建应用版本 → 提交审核 → 发布
27
+
28
+ ---
29
+
30
+ ## 🔍 诊断命令(深度工具)
31
+
32
+ **注意**:诊断命令仅用于排查复杂/疑难的**权限相关问题**。常规权限问题会自动触发授权流程,无需手动诊断。
33
+
34
+ **何时使用诊断**:
35
+ - 多次授权后仍然报错
36
+ - 自动授权流程无法解决的问题
37
+ - 需要查看完整的权限配置状态
38
+
39
+ **使用方法**:
40
+
41
+ 在飞书聊天会话中直接输入(作为用户消息发送):
42
+
43
+ /feishu doctor
44
+
45
+ 诊断命令会检查:
46
+
47
+ - **📋 诊断摘要**(首先展示):
48
+ - 总体状态(✅ 正常 / ⚠️ 警告 / ❌ 失败)
49
+ - 发现的问题列表和简要描述
50
+
51
+ - **环境信息**:
52
+ - 插件版本
53
+
54
+ - **账号信息**:
55
+ - 凭证完整性(appId, appSecret 掩码)
56
+ - 账户启用状态
57
+ - API 连通性测试
58
+ - Bot 信息(名称和 openId)
59
+
60
+ - **应用身份权限**:
61
+ - 应用已开通的必需权限数量
62
+ - 缺失的必需权限列表
63
+ - 一键申请链接(自动带上缺失权限参数)
64
+
65
+ - **用户身份权限**:
66
+ - 用户授权状态统计(✓ 有效 / ⟳ 需刷新 / ✗ 已过期)
67
+ - Token 自动刷新状态(是否包含 offline_access)
68
+ - 权限对照表(应用已开通 vs 用户已授权,逐项对比)
69
+ - 应用权限缺失时的申请指引和链接
70
+ - 用户授权不足时的重新授权操作方法