@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,208 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Register all chat commands (/feishu_diagnose, /feishu_doctor, /feishu_auth, /feishu).
6
+ */
7
+ import { runDiagnosis, formatDiagReportText } from './diagnose';
8
+ import { runFeishuDoctor } from './doctor';
9
+ import { runFeishuAuth } from './auth';
10
+ import { getPluginVersion } from '../core/version';
11
+ // TODO: 暂时注释掉,等产品策略明确后再放开
12
+ // import {
13
+ // checkMultiAccountIsolation,
14
+ // formatIsolationWarning,
15
+ // generateIsolationFixCommands,
16
+ // generateSharedAgentCommands,
17
+ // needsDmScopeFix,
18
+ // } from "../core/security-check";
19
+ export function registerCommands(api) {
20
+ // /feishu_diagnose
21
+ api.registerCommand({
22
+ name: 'feishu_diagnose',
23
+ description: '运行飞书插件诊断,检查配置、连通性和权限状态',
24
+ acceptsArgs: false,
25
+ requireAuth: true,
26
+ async handler(ctx) {
27
+ try {
28
+ const report = await runDiagnosis({ config: ctx.config });
29
+ return { text: formatDiagReportText(report) };
30
+ }
31
+ catch (err) {
32
+ return {
33
+ text: `诊断执行失败: ${err instanceof Error ? err.message : String(err)}`,
34
+ };
35
+ }
36
+ },
37
+ });
38
+ // /feishu_doctor
39
+ api.registerCommand({
40
+ name: 'feishu_doctor',
41
+ description: '运行飞书插件诊断',
42
+ acceptsArgs: false,
43
+ requireAuth: true,
44
+ async handler(ctx) {
45
+ try {
46
+ const markdown = await runFeishuDoctor(ctx.config, ctx.accountId);
47
+ return { text: markdown };
48
+ }
49
+ catch (err) {
50
+ return {
51
+ text: `诊断执行失败: ${err instanceof Error ? err.message : String(err)}`,
52
+ };
53
+ }
54
+ },
55
+ });
56
+ // /feishu_auth
57
+ api.registerCommand({
58
+ name: 'feishu_auth',
59
+ description: '飞书用户权限批量授权',
60
+ acceptsArgs: false,
61
+ requireAuth: true,
62
+ async handler(ctx) {
63
+ try {
64
+ const result = await runFeishuAuth(ctx.config);
65
+ return { text: result };
66
+ }
67
+ catch (err) {
68
+ return {
69
+ text: `授权执行失败: ${err instanceof Error ? err.message : String(err)}`,
70
+ };
71
+ }
72
+ },
73
+ });
74
+ // /feishu (统一入口,支持子命令)
75
+ api.registerCommand({
76
+ name: 'feishu',
77
+ description: '飞书插件命令(支持子命令: auth, doctor, start)',
78
+ acceptsArgs: true,
79
+ requireAuth: true,
80
+ async handler(ctx) {
81
+ const args = ctx.args?.trim().split(/\s+/) || [];
82
+ const subcommand = args[0]?.toLowerCase();
83
+ try {
84
+ // /feishu auth 或 /feishu onboarding
85
+ if (subcommand === 'auth' || subcommand === 'onboarding') {
86
+ const result = await runFeishuAuth(ctx.config);
87
+ return { text: result };
88
+ }
89
+ // /feishu doctor
90
+ if (subcommand === 'doctor') {
91
+ const markdown = await runFeishuDoctor(ctx.config, ctx.accountId);
92
+ return { text: markdown };
93
+ }
94
+ // /feishu start
95
+ if (subcommand === 'start') {
96
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
+ const cfg = ctx.config;
98
+ const errors = [];
99
+ const warnings = [];
100
+ // 检查旧版插件是否已禁用 (error)
101
+ const feishuEntry = cfg.plugins?.entries?.feishu;
102
+ if (feishuEntry && feishuEntry.enabled !== false) {
103
+ errors.push('❌ 检测到旧版插件未禁用。\n' +
104
+ '👉 请依次运行命令:\n' +
105
+ '```\n' +
106
+ 'openclaw config set plugins.entries.feishu.enabled false --json\n' +
107
+ 'openclaw gateway restart\n' +
108
+ '```');
109
+ }
110
+ // 检查 tools.profile (warning)
111
+ const profile = cfg.tools?.profile;
112
+ const incompleteProfiles = new Set(['minimal', 'coding', 'messaging']);
113
+ if (profile && incompleteProfiles.has(profile)) {
114
+ warnings.push(`⚠️ 工具 Profile 当前为 \`${profile}\`,飞书工具可能无法加载。请检查配置是否正确。\n`);
115
+ }
116
+ // 检查多账号隔离
117
+ // TODO: 暂时注释掉,等产品策略明确后再放开
118
+ // const isolationWarning = formatIsolationWarning(
119
+ // checkMultiAccountIsolation(cfg),
120
+ // cfg,
121
+ // );
122
+ // if (isolationWarning) {
123
+ // warnings.push(isolationWarning);
124
+ // }
125
+ if (errors.length > 0) {
126
+ const all = [...errors, ...warnings];
127
+ return {
128
+ text: `❌ 飞书 OpenClaw 插件启动失败:\n\n${all.join('\n\n')}`,
129
+ };
130
+ }
131
+ if (warnings.length > 0) {
132
+ return {
133
+ text: `⚠️ 飞书 OpenClaw 插件已启动 v${getPluginVersion()}(存在警告)\n\n${warnings.join('\n\n')}`,
134
+ };
135
+ }
136
+ return { text: `✅ 飞书 OpenClaw 插件已启动 v${getPluginVersion()}` };
137
+ }
138
+ // /feishu isolate
139
+ // TODO: 暂时注释掉,等产品策略明确后再放开
140
+ // if (subcommand === "isolate") {
141
+ // return handleIsolate(ctx.config);
142
+ // }
143
+ // /feishu help 或无效子命令或无参数
144
+ return {
145
+ text: `飞书OpenClaw插件 v${getPluginVersion()}\n\n` +
146
+ '用法:\n' +
147
+ ' /feishu start - 校验插件配置\n' +
148
+ ' /feishu auth - 批量授权用户权限\n' +
149
+ ' /feishu doctor - 运行诊断\n' +
150
+ ' /feishu help - 显示此帮助',
151
+ };
152
+ }
153
+ catch (err) {
154
+ return {
155
+ text: `执行失败: ${err instanceof Error ? err.message : String(err)}`,
156
+ };
157
+ }
158
+ },
159
+ });
160
+ }
161
+ // ---------------------------------------------------------------------------
162
+ // /feishu isolate handler
163
+ // TODO: 暂时注释掉,等产品策略明确后再放开
164
+ // ---------------------------------------------------------------------------
165
+ // function handleIsolate(config: any): { text: string } {
166
+ // const status = checkMultiAccountIsolation(config);
167
+ // const hasDmIssue = needsDmScopeFix(config);
168
+ //
169
+ // if (status.mode === "not-applicable") {
170
+ // return { text: "✅ 当前只有一个飞书机器人,无需配置。" };
171
+ // }
172
+ // if (status.mode === "isolated") {
173
+ // const names = status.accounts.map((a) => a.name ?? a.accountId).join("、");
174
+ // const lines = [`✅ **记忆已隔离** — ${status.accounts.length} 个机器人(${names})各自拥有独立记忆,互不干扰。`];
175
+ // if (hasDmIssue) { lines.push("", "---", "", ...formatDmIssueSection()); }
176
+ // return { text: lines.join("\n") };
177
+ // }
178
+ // if (status.mode === "shared-explicit") {
179
+ // const names = status.accounts.map((a) => a.name ?? a.accountId).join("、");
180
+ // const lines = [
181
+ // `✅ **记忆共用(已确认)** — ${status.accounts.length} 个机器人(${names})共用同一份记忆(${status.sharedAgentId})。`,
182
+ // "", "这是您主动配置的。如需改为各自独立,先删除现有 bindings 后重新执行 **/feishu isolate**。",
183
+ // ];
184
+ // if (hasDmIssue) { lines.push("", "---", "", ...formatDmIssueSection()); }
185
+ // return { text: lines.join("\n") };
186
+ // }
187
+ // const fix = generateIsolationFixCommands(config);
188
+ // const shared = generateSharedAgentCommands(config);
189
+ // const names = status.accounts.map((a) => a.name ?? a.accountId);
190
+ // const lines: string[] = [];
191
+ // lines.push("⚠️ **检测到以下问题,建议修复:**", "");
192
+ // lines.push(`**1. 多个机器人共用记忆** — 用户跟「${names[0]}」说的话,可能出现在「${names[1] ?? "..."}」的回复里。`);
193
+ // if (hasDmIssue) { lines.push(`**2. 私聊消息串混** — 同一用户跟不同机器人的私聊会混在一段对话中,AI 无法分辨。`); }
194
+ // if (fix) { lines.push("", "---", "", "✅ **方案一:各自独立**(推荐)", "", "每个机器人拥有独立的记忆,互不干扰:", "", fix.preview, "", "复制到终端执行:", "", "```"); for (const cmd of fix.commands) lines.push(cmd); lines.push("```"); }
195
+ // if (shared) { lines.push("", "---", "", "☑️ **方案二:确认共用**", "", "所有机器人共享同一份记忆(消除告警,不再提示):", "", shared.preview, "", "复制到终端执行:", "", "```"); for (const cmd of shared.commands) lines.push(cmd); lines.push("```"); }
196
+ // lines.push("", "---", "", "执行后重新发送 **/feishu isolate** 验证。");
197
+ // return { text: lines.join("\n") };
198
+ // }
199
+ //
200
+ // function formatDmIssueSection(): string[] {
201
+ // return [
202
+ // "⚠️ **私聊消息串混**", "",
203
+ // "同一用户跟不同机器人的私聊会混在同一段对话中,AI 无法分辨在跟哪个机器人说话。", "",
204
+ // "复制到终端执行:", "",
205
+ // "```", `openclaw config set session.dmScope "per-account-channel-peer"`, "openclaw gateway restart", "```",
206
+ // ];
207
+ // }
208
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Lark multi-account management.
6
+ *
7
+ * Account overrides live under `cfg.channels.feishu.accounts`.
8
+ * Each account may override any top-level Feishu config field;
9
+ * unset fields fall back to the top-level defaults.
10
+ */
11
+ import type { ClawdbotConfig } from 'openclaw/plugin-sdk';
12
+ import type { FeishuConfig, LarkAccount, LarkCredentials, ConfiguredLarkAccount } from './types';
13
+ /**
14
+ * List all account IDs defined in the Lark config.
15
+ *
16
+ * Returns `[DEFAULT_ACCOUNT_ID]` when no explicit accounts exist.
17
+ */
18
+ export declare function getLarkAccountIds(cfg: ClawdbotConfig): string[];
19
+ /** Return the first (default) account ID. */
20
+ export declare function getDefaultLarkAccountId(cfg: ClawdbotConfig): string;
21
+ /**
22
+ * Resolve a single account by merging the top-level config with
23
+ * account-level overrides. Account fields take precedence.
24
+ *
25
+ * Falls back to the default account when `accountId` is omitted or `null`.
26
+ */
27
+ export declare function getLarkAccount(cfg: ClawdbotConfig, accountId?: string | null): LarkAccount;
28
+ /** Return all accounts that are both configured and enabled. */
29
+ export declare function getEnabledLarkAccounts(cfg: ClawdbotConfig): LarkAccount[];
30
+ /**
31
+ * Extract API credentials from a Feishu config fragment.
32
+ *
33
+ * Returns `null` when `appId` or `appSecret` is missing.
34
+ */
35
+ export declare function getLarkCredentials(feishuCfg?: FeishuConfig): LarkCredentials | null;
36
+ /** Type guard: narrow `LarkAccount` to `ConfiguredLarkAccount`. */
37
+ export declare function isConfigured(account: LarkAccount): account is ConfiguredLarkAccount;
38
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../src/core/accounts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAa,WAAW,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAsD5G;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAuB/D;AAED,6CAA6C;AAC7C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CA8D1F;AAED,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,WAAW,EAAE,CAYzE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAenF;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,qBAAqB,CAEnF"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Lark multi-account management.
6
+ *
7
+ * Account overrides live under `cfg.channels.feishu.accounts`.
8
+ * Each account may override any top-level Feishu config field;
9
+ * unset fields fall back to the top-level defaults.
10
+ */
11
+ import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from 'openclaw/plugin-sdk';
12
+ // ---------------------------------------------------------------------------
13
+ // Internal helpers
14
+ // ---------------------------------------------------------------------------
15
+ /** Extract the `channels.feishu` section from the top-level config. */
16
+ function getLarkConfig(cfg) {
17
+ return cfg?.channels?.feishu;
18
+ }
19
+ /** Return the per-account override map, if present. */
20
+ function getAccountMap(section) {
21
+ return section.accounts;
22
+ }
23
+ /** Strip the `accounts` key and return the remaining top-level config. */
24
+ function baseConfig(section) {
25
+ const { accounts: _ignored, ...rest } = section;
26
+ return rest;
27
+ }
28
+ /**
29
+ * 合并 base config 与 account override。
30
+ *
31
+ * 当 account 将策略设为 "open" 时,剔除从 base 继承的限制性字段,
32
+ * 避免与 "open" 语义冲突。
33
+ */
34
+ function mergeAccountConfig(base, override) {
35
+ const merged = { ...base, ...override };
36
+ if (override.groupPolicy === 'open') {
37
+ if (!('groups' in override))
38
+ merged.groups = undefined;
39
+ if (!('groupAllowFrom' in override))
40
+ merged.groupAllowFrom = undefined;
41
+ }
42
+ if (override.dmPolicy === 'open' && !('allowFrom' in override)) {
43
+ merged.allowFrom = ['*'];
44
+ }
45
+ return merged;
46
+ }
47
+ /** Coerce a domain string to `LarkBrand`, defaulting to `"feishu"`. */
48
+ function toBrand(domain) {
49
+ return domain ?? 'feishu';
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Public API
53
+ // ---------------------------------------------------------------------------
54
+ /**
55
+ * List all account IDs defined in the Lark config.
56
+ *
57
+ * Returns `[DEFAULT_ACCOUNT_ID]` when no explicit accounts exist.
58
+ */
59
+ export function getLarkAccountIds(cfg) {
60
+ const section = getLarkConfig(cfg);
61
+ if (!section)
62
+ return [DEFAULT_ACCOUNT_ID];
63
+ const accountMap = getAccountMap(section);
64
+ if (!accountMap || Object.keys(accountMap).length === 0) {
65
+ return [DEFAULT_ACCOUNT_ID];
66
+ }
67
+ const accountIds = Object.keys(accountMap);
68
+ // 当 accounts 存在时,如果顶层也配置了 appId/appSecret(即默认机器人),
69
+ // 将 DEFAULT_ACCOUNT_ID 加入列表,确保顶层机器人不会被忽略。
70
+ // 但如果 accountMap 已经包含 default,则不重复添加。
71
+ const hasDefault = accountIds.some((id) => id.trim().toLowerCase() === DEFAULT_ACCOUNT_ID);
72
+ if (!hasDefault) {
73
+ const base = baseConfig(section);
74
+ if (base.appId && base.appSecret) {
75
+ return [DEFAULT_ACCOUNT_ID, ...accountIds];
76
+ }
77
+ }
78
+ return accountIds;
79
+ }
80
+ /** Return the first (default) account ID. */
81
+ export function getDefaultLarkAccountId(cfg) {
82
+ return getLarkAccountIds(cfg)[0];
83
+ }
84
+ /**
85
+ * Resolve a single account by merging the top-level config with
86
+ * account-level overrides. Account fields take precedence.
87
+ *
88
+ * Falls back to the default account when `accountId` is omitted or `null`.
89
+ */
90
+ export function getLarkAccount(cfg, accountId) {
91
+ const requestedId = accountId ? (normalizeAccountId(accountId) ?? DEFAULT_ACCOUNT_ID) : DEFAULT_ACCOUNT_ID;
92
+ const section = getLarkConfig(cfg);
93
+ if (!section) {
94
+ return {
95
+ accountId: requestedId,
96
+ enabled: false,
97
+ configured: false,
98
+ brand: 'feishu',
99
+ config: {},
100
+ };
101
+ }
102
+ const base = baseConfig(section);
103
+ const accountMap = getAccountMap(section);
104
+ const accountOverride = accountMap && requestedId !== DEFAULT_ACCOUNT_ID
105
+ ? accountMap[requestedId]
106
+ : undefined;
107
+ const merged = accountOverride
108
+ ? mergeAccountConfig(base, accountOverride)
109
+ : { ...base };
110
+ const appId = merged.appId;
111
+ const appSecret = merged.appSecret;
112
+ const configured = !!(appId && appSecret);
113
+ // Respect explicit `enabled` when set; otherwise derive from `configured`.
114
+ const enabled = !!(merged.enabled ?? configured);
115
+ const brand = toBrand(merged.domain);
116
+ if (configured) {
117
+ return {
118
+ accountId: requestedId,
119
+ enabled,
120
+ configured: true,
121
+ name: merged.name ?? undefined,
122
+ appId: appId,
123
+ appSecret: appSecret,
124
+ encryptKey: merged.encryptKey ?? undefined,
125
+ verificationToken: merged.verificationToken ?? undefined,
126
+ brand,
127
+ config: merged,
128
+ };
129
+ }
130
+ return {
131
+ accountId: requestedId,
132
+ enabled,
133
+ configured: false,
134
+ name: merged.name ?? undefined,
135
+ appId: appId ?? undefined,
136
+ appSecret: appSecret ?? undefined,
137
+ encryptKey: merged.encryptKey ?? undefined,
138
+ verificationToken: merged.verificationToken ?? undefined,
139
+ brand,
140
+ config: merged,
141
+ };
142
+ }
143
+ /** Return all accounts that are both configured and enabled. */
144
+ export function getEnabledLarkAccounts(cfg) {
145
+ const ids = getLarkAccountIds(cfg);
146
+ const results = [];
147
+ for (const id of ids) {
148
+ const account = getLarkAccount(cfg, id);
149
+ if (account.enabled && account.configured) {
150
+ results.push(account);
151
+ }
152
+ }
153
+ return results;
154
+ }
155
+ /**
156
+ * Extract API credentials from a Feishu config fragment.
157
+ *
158
+ * Returns `null` when `appId` or `appSecret` is missing.
159
+ */
160
+ export function getLarkCredentials(feishuCfg) {
161
+ if (!feishuCfg)
162
+ return null;
163
+ const appId = feishuCfg.appId;
164
+ const appSecret = feishuCfg.appSecret;
165
+ if (!appId || !appSecret)
166
+ return null;
167
+ return {
168
+ appId,
169
+ appSecret,
170
+ encryptKey: feishuCfg.encryptKey ?? undefined,
171
+ verificationToken: feishuCfg.verificationToken ?? undefined,
172
+ brand: toBrand(feishuCfg.domain),
173
+ };
174
+ }
175
+ /** Type guard: narrow `LarkAccount` to `ConfiguredLarkAccount`. */
176
+ export function isConfigured(account) {
177
+ return account.configured;
178
+ }
179
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/core/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Agent configuration helpers for the Feishu/Lark channel plugin.
3
+ *
4
+ * Reads agent-level configuration (identity, skills, tools, subagents)
5
+ * from the top-level `agents.list` in OpenClawConfig. These helpers
6
+ * bridge the gap between the SDK's agent infrastructure and the Feishu
7
+ * plugin's dispatch/reply layers.
8
+ */
9
+ import type { ClawdbotConfig } from 'openclaw/plugin-sdk';
10
+ /** Minimal agent identity fields used by the Feishu plugin. */
11
+ interface AgentIdentity {
12
+ name?: string;
13
+ emoji?: string;
14
+ avatar?: string;
15
+ }
16
+ /** Minimal agent tools policy fields. */
17
+ interface AgentToolsPolicy {
18
+ allow?: string[];
19
+ deny?: string[];
20
+ }
21
+ /** Shape of an agent entry in `config.agents.list`. */
22
+ interface AgentEntry {
23
+ id: string;
24
+ name?: string;
25
+ skills?: string[];
26
+ identity?: AgentIdentity;
27
+ tools?: AgentToolsPolicy & Record<string, unknown>;
28
+ subagents?: {
29
+ allowAgents?: string[];
30
+ };
31
+ }
32
+ /**
33
+ * Retrieve the full list of configured agents from config.
34
+ *
35
+ * @param cfg - The top-level application config.
36
+ * @returns Array of agent entries, or empty array if none configured.
37
+ */
38
+ export declare function listConfiguredAgents(cfg: ClawdbotConfig): AgentEntry[];
39
+ /**
40
+ * Look up a specific agent's configuration by its ID.
41
+ *
42
+ * @param cfg - The top-level application config.
43
+ * @param agentId - The agent ID to search for.
44
+ * @returns The matching agent entry, or `undefined` if not found.
45
+ */
46
+ export declare function resolveAgentEntry(cfg: ClawdbotConfig, agentId: string): AgentEntry | undefined;
47
+ /**
48
+ * Resolve a human-readable display name for an agent.
49
+ *
50
+ * Priority: `identity.name` > `name` > `undefined`.
51
+ *
52
+ * @param cfg - The top-level application config.
53
+ * @param agentId - The agent ID.
54
+ * @returns The display name, or `undefined` if none configured.
55
+ */
56
+ export declare function getAgentDisplayName(cfg: ClawdbotConfig, agentId: string): string | undefined;
57
+ /**
58
+ * Resolve the per-agent skills filter.
59
+ *
60
+ * @param cfg - The top-level application config.
61
+ * @param agentId - The agent ID.
62
+ * @returns Skill allowlist, or `undefined` if no agent-level filter.
63
+ */
64
+ export declare function getAgentSkillsFilter(cfg: ClawdbotConfig, agentId: string): string[] | undefined;
65
+ /**
66
+ * Resolve the per-agent tools policy (allow/deny lists).
67
+ *
68
+ * @param cfg - The top-level application config.
69
+ * @param agentId - The agent ID.
70
+ * @returns Tools policy object, or `undefined` if none configured.
71
+ */
72
+ export declare function getAgentToolsPolicy(cfg: ClawdbotConfig, agentId: string): AgentToolsPolicy | undefined;
73
+ /**
74
+ * Merge agent-level and group-level skill filters.
75
+ *
76
+ * When both are present, the effective filter is the intersection:
77
+ * a skill must appear in both lists to be included. When only one
78
+ * is present, that list is used as-is.
79
+ *
80
+ * @param agentSkills - Per-agent skill allowlist (from AgentConfig.skills).
81
+ * @param groupSkills - Per-group skill allowlist (from FeishuGroupConfig.skills).
82
+ * @returns Merged skill filter, or `undefined` if neither is set.
83
+ */
84
+ export declare function mergeSkillFilters(agentSkills: string[] | undefined, groupSkills: string[] | undefined): string[] | undefined;
85
+ /**
86
+ * Check whether a tool name is permitted by an agent's tool policy.
87
+ *
88
+ * Evaluation order:
89
+ * 1. If `deny` list exists and tool matches → denied.
90
+ * 2. If `allow` list exists and tool does NOT match → denied.
91
+ * 3. Otherwise → allowed.
92
+ *
93
+ * Supports glob-like patterns with trailing `*` (e.g. `feishu_calendar_*`).
94
+ *
95
+ * @param toolName - The tool name being invoked.
96
+ * @param policy - The agent's tool policy.
97
+ * @returns `true` if the tool is allowed, `false` if denied.
98
+ */
99
+ export declare function isToolAllowedByPolicy(toolName: string, policy: AgentToolsPolicy | undefined): boolean;
100
+ export {};
101
+ //# sourceMappingURL=agent-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../../src/core/agent-config.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,+DAA+D;AAC/D,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,uDAAuD;AACvD,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE;QACV,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,EAAE,CAGtE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI5F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAE/F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAMtG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,GAChC,MAAM,EAAE,GAAG,SAAS,CAQtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAYrG"}