@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 @@
1
+ {"version":3,"file":"chat-manage.d.ts","sourceRoot":"","sources":["../../../../src/messaging/outbound/chat-manage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAmBD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAMD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB;AAMD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA8BjF"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Chat management for the Feishu/Lark channel plugin.
6
+ *
7
+ * Provides functions to update chat settings (name, avatar), manage
8
+ * members (add, remove, list) using the IM Chat API.
9
+ */
10
+ /* eslint-disable @typescript-eslint/no-explicit-any */
11
+ import { LarkClient } from '../../core/lark-client';
12
+ // ---------------------------------------------------------------------------
13
+ // Helpers
14
+ // ---------------------------------------------------------------------------
15
+ /** Assert that a Lark SDK response has code === 0 (or no code field). */
16
+ function assertLarkOk(res, context) {
17
+ const code = res?.code;
18
+ if (code !== undefined && code !== 0) {
19
+ const msg = res?.msg ?? 'unknown error';
20
+ throw new Error(`[feishu-chat-manage] ${context}: code=${code}, msg=${msg}`);
21
+ }
22
+ }
23
+ // ---------------------------------------------------------------------------
24
+ // updateChatFeishu
25
+ // ---------------------------------------------------------------------------
26
+ /**
27
+ * Update chat settings such as name or avatar.
28
+ */
29
+ export async function updateChatFeishu(params) {
30
+ const { cfg, chatId, name, avatar, accountId } = params;
31
+ const client = LarkClient.fromCfg(cfg, accountId).sdk;
32
+ const body = {};
33
+ if (name)
34
+ body.name = name;
35
+ if (avatar)
36
+ body.avatar = avatar;
37
+ const res = await client.im.chat.update({
38
+ path: { chat_id: chatId },
39
+ data: body,
40
+ });
41
+ assertLarkOk(res, `updateChat for ${chatId}`);
42
+ }
43
+ // ---------------------------------------------------------------------------
44
+ // addChatMembersFeishu
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Add members to a chat by their open_id list.
48
+ */
49
+ export async function addChatMembersFeishu(params) {
50
+ const { cfg, chatId, memberIds, accountId } = params;
51
+ const client = LarkClient.fromCfg(cfg, accountId).sdk;
52
+ const res = await client.im.v1.chatMembers.create({
53
+ path: { chat_id: chatId },
54
+ data: { id_list: memberIds },
55
+ params: { member_id_type: 'open_id' },
56
+ });
57
+ assertLarkOk(res, `addChatMembers for ${chatId}`);
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // removeChatMembersFeishu
61
+ // ---------------------------------------------------------------------------
62
+ /**
63
+ * Remove members from a chat by their open_id list.
64
+ */
65
+ export async function removeChatMembersFeishu(params) {
66
+ const { cfg, chatId, memberIds, accountId } = params;
67
+ const client = LarkClient.fromCfg(cfg, accountId).sdk;
68
+ const res = await client.im.v1.chatMembers.delete({
69
+ path: { chat_id: chatId },
70
+ data: { id_list: memberIds },
71
+ params: { member_id_type: 'open_id' },
72
+ });
73
+ assertLarkOk(res, `removeChatMembers for ${chatId}`);
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // listChatMembersFeishu
77
+ // ---------------------------------------------------------------------------
78
+ /**
79
+ * List members of a chat.
80
+ *
81
+ * Returns a single page (up to 100 members) to avoid unnecessary data
82
+ * overhead for large groups. Use the returned `pageToken` to fetch
83
+ * subsequent pages when needed.
84
+ */
85
+ export async function listChatMembersFeishu(params) {
86
+ const { cfg, chatId, accountId, pageToken } = params;
87
+ const client = LarkClient.fromCfg(cfg, accountId).sdk;
88
+ const response = await client.im.v1.chatMembers.get({
89
+ path: { chat_id: chatId },
90
+ params: {
91
+ member_id_type: 'open_id',
92
+ page_size: 100,
93
+ ...(pageToken ? { page_token: pageToken } : {}),
94
+ },
95
+ });
96
+ assertLarkOk(response, `listChatMembers for ${chatId}`);
97
+ const members = [];
98
+ const items = response?.data?.items;
99
+ if (items && Array.isArray(items)) {
100
+ for (const item of items) {
101
+ members.push({
102
+ memberId: item.member_id ?? '',
103
+ name: item.name ?? '',
104
+ memberIdType: item.member_id_type ?? 'open_id',
105
+ });
106
+ }
107
+ }
108
+ const nextPageToken = response?.data?.page_token ?? undefined;
109
+ const hasMore = response?.data?.has_more === true && !!nextPageToken;
110
+ return { members, pageToken: nextPageToken, hasMore };
111
+ }
112
+ //# sourceMappingURL=chat-manage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-manage.js","sourceRoot":"","sources":["../../../../src/messaging/outbound/chat-manage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Standalone text and media delivery functions for the Feishu/Lark channel.
3
+ *
4
+ * These functions operate directly on the Lark SDK without depending on
5
+ * {@link sendMessageFeishu} from `send.ts`. The outbound adapter delegates
6
+ * to these for its `sendText` and `sendMedia` implementations.
7
+ */
8
+ import type { ClawdbotConfig } from 'openclaw/plugin-sdk';
9
+ import type { FeishuSendResult } from '../types';
10
+ /**
11
+ * Parameters for sending a text message via Feishu.
12
+ */
13
+ export interface SendTextLarkParams {
14
+ /** Plugin configuration. */
15
+ cfg: ClawdbotConfig;
16
+ /** Target identifier (chat_id, open_id, or user_id). */
17
+ to: string;
18
+ /** Message text content (supports Feishu markdown subset). */
19
+ text: string;
20
+ /** When set, the message is sent as a threaded reply. */
21
+ replyToMessageId?: string;
22
+ /** When true, the reply appears in the thread instead of main chat. */
23
+ replyInThread?: boolean;
24
+ /** Optional account identifier for multi-account setups. */
25
+ accountId?: string;
26
+ }
27
+ /**
28
+ * Send a text message to a Feishu chat or user.
29
+ *
30
+ * Standalone implementation that directly operates the Lark SDK.
31
+ * The text is pre-processed (table conversion, style optimization)
32
+ * and sent as a Feishu "post" message with markdown rendering.
33
+ *
34
+ * If the entire text is a valid Feishu card JSON string (v1 or v2),
35
+ * it is automatically detected and routed to {@link sendCardLark}
36
+ * instead of being sent as plain text.
37
+ *
38
+ * @param params - See {@link SendTextLarkParams}.
39
+ * @returns The message ID and chat ID.
40
+ * @throws {Error} When the target is invalid or the API call fails.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const result = await sendTextLark({
45
+ * cfg,
46
+ * to: "oc_xxx",
47
+ * text: "Hello from Feishu",
48
+ * });
49
+ * ```
50
+ */
51
+ export declare function sendTextLark(params: SendTextLarkParams): Promise<FeishuSendResult>;
52
+ /**
53
+ * Parameters for sending an interactive card message via Feishu.
54
+ */
55
+ export interface SendCardLarkParams {
56
+ /** Plugin configuration. */
57
+ cfg: ClawdbotConfig;
58
+ /** Target identifier (chat_id, open_id, or user_id). */
59
+ to: string;
60
+ /**
61
+ * Complete card JSON object (v1 Message Card or v2 CardKit).
62
+ *
63
+ * - **v1**: top-level `config`, `header`, `elements`.
64
+ * - **v2**: `schema: "2.0"`, `config`, `header`, `body.elements`.
65
+ *
66
+ * The Feishu server determines the version by the presence of
67
+ * `schema: "2.0"`.
68
+ */
69
+ card: Record<string, unknown>;
70
+ /** When set, the card is sent as a threaded reply. */
71
+ replyToMessageId?: string;
72
+ /** When true, the reply appears in the thread instead of main chat. */
73
+ replyInThread?: boolean;
74
+ /** Optional account identifier for multi-account setups. */
75
+ accountId?: string;
76
+ }
77
+ /**
78
+ * Send an interactive card message to a Feishu chat or user.
79
+ *
80
+ * Supports both v1 (Message Card) and v2 (CardKit) card formats.
81
+ * The card JSON is serialised and sent as `msg_type: "interactive"`.
82
+ *
83
+ * @param params - See {@link SendCardLarkParams}.
84
+ * @returns The message ID and chat ID.
85
+ * @throws {Error} When the target is invalid or the API call fails.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * // v1 card
90
+ * const result = await sendCardLark({
91
+ * cfg,
92
+ * to: "oc_xxx",
93
+ * card: {
94
+ * config: { wide_screen_mode: true },
95
+ * header: { title: { tag: "plain_text", content: "Hello" }, template: "blue" },
96
+ * elements: [{ tag: "div", text: { tag: "lark_md", content: "world" } }],
97
+ * },
98
+ * });
99
+ *
100
+ * // v2 card
101
+ * const result2 = await sendCardLark({
102
+ * cfg,
103
+ * to: "oc_xxx",
104
+ * card: {
105
+ * schema: "2.0",
106
+ * config: { wide_screen_mode: true },
107
+ * body: { elements: [{ tag: "markdown", content: "Hello **world**" }] },
108
+ * },
109
+ * });
110
+ * ```
111
+ */
112
+ export declare function sendCardLark(params: SendCardLarkParams): Promise<FeishuSendResult>;
113
+ /**
114
+ * Parameters for sending a single media message via Feishu.
115
+ */
116
+ export interface SendMediaLarkParams {
117
+ /** Plugin configuration. */
118
+ cfg: ClawdbotConfig;
119
+ /** Target identifier (chat_id, open_id, or user_id). */
120
+ to: string;
121
+ /** Media URL to upload and send. */
122
+ mediaUrl: string;
123
+ /** When set, the message is sent as a threaded reply. */
124
+ replyToMessageId?: string;
125
+ /** When true, the reply appears in the thread instead of main chat. */
126
+ replyInThread?: boolean;
127
+ /** Optional account identifier for multi-account setups. */
128
+ accountId?: string;
129
+ /** Allowed root directories for local file access (SSRF prevention). */
130
+ mediaLocalRoots?: readonly string[];
131
+ }
132
+ /**
133
+ * Send a single media message to a Feishu chat or user.
134
+ *
135
+ * Pure atomic operation — uploads the media and sends it. On upload
136
+ * failure, falls back to sending the URL as a clickable text link.
137
+ *
138
+ * This function does **not** handle leading text or multi-media
139
+ * orchestration; those concerns belong to the adapter's `sendMedia`
140
+ * and `sendPayload` methods.
141
+ *
142
+ * @param params - See {@link SendMediaLarkParams}.
143
+ * @returns The message ID and chat ID of the sent message.
144
+ * @throws {Error} When the target is invalid or all send attempts fail.
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * const result = await sendMediaLark({
149
+ * cfg,
150
+ * to: "oc_xxx",
151
+ * mediaUrl: "https://example.com/image.png",
152
+ * });
153
+ * ```
154
+ */
155
+ export declare function sendMediaLark(params: SendMediaLarkParams): Promise<FeishuSendResult>;
156
+ //# sourceMappingURL=deliver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../../../src/messaging/outbound/deliver.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAqLjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,GAAG,EAAE,cAAc,CAAC;IACpB,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiBxF;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,GAAG,EAAE,cAAc,CAAC;IACpB,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;;;OAQG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwBxF;AAMD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4BAA4B;IAC5B,GAAG,EAAE,cAAc,CAAC;IACpB,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuC1F"}
@@ -0,0 +1,299 @@
1
+ // SPDX-License-Identifier: MIT
2
+ import { LarkClient } from '../../core/lark-client';
3
+ import { normalizeFeishuTarget, resolveReceiveIdType } from '../../core/targets';
4
+ import { optimizeMarkdownStyle } from '../../card/markdown-style';
5
+ import { uploadAndSendMediaLark } from './media';
6
+ import { formatLarkError } from '../../core/api-error';
7
+ import { larkLogger } from '../../core/lark-logger';
8
+ const log = larkLogger('outbound/deliver');
9
+ // ---------------------------------------------------------------------------
10
+ // Internal helpers
11
+ // ---------------------------------------------------------------------------
12
+ /**
13
+ * Build a Feishu post-format content envelope from processed text.
14
+ */
15
+ function buildPostContent(text) {
16
+ return JSON.stringify({
17
+ zh_cn: {
18
+ content: [[{ tag: 'md', text }]],
19
+ },
20
+ });
21
+ }
22
+ /**
23
+ * Normalise `<at>` mention tags that the AI frequently writes incorrectly.
24
+ *
25
+ * Correct Feishu syntax:
26
+ * `<at user_id="ou_xxx">name</at>` — mention a user
27
+ * `<at user_id="all"></at>` — mention everyone
28
+ *
29
+ * Common AI mistakes this function fixes:
30
+ * `<at id=all></at>` → `<at user_id="all"></at>`
31
+ * `<at id="ou_xxx"></at>` → `<at user_id="ou_xxx"></at>`
32
+ * `<at open_id="ou_xxx"></at>` → `<at user_id="ou_xxx"></at>`
33
+ * `<at user_id=ou_xxx></at>` → `<at user_id="ou_xxx"></at>`
34
+ */
35
+ function normalizeAtMentions(text) {
36
+ return text.replace(/<at\s+(?:id|open_id|user_id)\s*=\s*"?([^">\s]+)"?\s*>/gi, '<at user_id="$1">');
37
+ }
38
+ /**
39
+ * Pre-process text for Lark rendering:
40
+ * mention normalisation + table conversion + style optimization.
41
+ */
42
+ function prepareTextForLark(text) {
43
+ let processed = normalizeAtMentions(text);
44
+ // Convert markdown tables to Feishu-compatible format if the runtime
45
+ // provides a converter.
46
+ try {
47
+ const runtime = LarkClient.runtime;
48
+ if (runtime?.channel?.text?.convertMarkdownTables) {
49
+ processed = runtime.channel.text.convertMarkdownTables(processed, 'bullets');
50
+ }
51
+ }
52
+ catch {
53
+ // Runtime not available -- use the text as-is.
54
+ }
55
+ return optimizeMarkdownStyle(processed, 1);
56
+ }
57
+ /**
58
+ * Unified IM message sender — handles both reply and create paths for any
59
+ * `msg_type`. Replaces the former `replyPostMessage`, `createPostMessage`,
60
+ * `replyInteractiveMessage` and `createInteractiveMessage` helpers.
61
+ */
62
+ async function sendImMessage(params) {
63
+ const { client, to, content, msgType, replyToMessageId, replyInThread } = params;
64
+ // --- Reply path ---
65
+ if (replyToMessageId) {
66
+ log.info(`replying to message ${replyToMessageId} ` + `(msg_type=${msgType}, thread=${replyInThread ?? false})`);
67
+ const response = await client.im.message.reply({
68
+ path: { message_id: replyToMessageId },
69
+ data: { content, msg_type: msgType, reply_in_thread: replyInThread },
70
+ });
71
+ const result = {
72
+ messageId: response?.data?.message_id ?? '',
73
+ chatId: response?.data?.chat_id ?? '',
74
+ };
75
+ log.debug(`reply sent: messageId=${result.messageId}`);
76
+ return result;
77
+ }
78
+ // --- Create path ---
79
+ const target = normalizeFeishuTarget(to);
80
+ if (!target) {
81
+ throw new Error(`Cannot send message: "${to}" is not a valid target. ` + `Expected a chat_id (oc_*), open_id (ou_*), or user_id.`);
82
+ }
83
+ const receiveIdType = resolveReceiveIdType(target);
84
+ log.info(`creating message to ${target} (msg_type=${msgType})`);
85
+ const response = await client.im.message.create({
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ params: { receive_id_type: receiveIdType },
88
+ data: { receive_id: target, msg_type: msgType, content },
89
+ });
90
+ const result = {
91
+ messageId: response?.data?.message_id ?? '',
92
+ chatId: response?.data?.chat_id ?? '',
93
+ };
94
+ log.debug(`message created: messageId=${result.messageId}`);
95
+ return result;
96
+ }
97
+ /**
98
+ * Detect whether a text string is a complete Feishu card JSON (v1, v2, or template).
99
+ *
100
+ * Returns the parsed card object if the text is valid card JSON, or
101
+ * `undefined` if it is plain text. Detection is conservative — only
102
+ * triggers when the **entire** trimmed text is a JSON object with
103
+ * recognisable card structure markers.
104
+ *
105
+ * - **v2**: top-level `schema` equals `"2.0"`
106
+ * - **v1**: has an `elements` array AND at least `config` or `header`
107
+ * - **template**: `type` equals `"template"` with `data.template_id`
108
+ * - **wrapped**: `msg_type` or `type` equals `"interactive"` with a nested `card` object
109
+ */
110
+ function detectCardJson(text) {
111
+ const trimmed = text.trim();
112
+ if (!trimmed.startsWith('{') || !trimmed.endsWith('}'))
113
+ return undefined;
114
+ try {
115
+ const parsed = JSON.parse(trimmed);
116
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
117
+ return undefined;
118
+ }
119
+ const obj = parsed;
120
+ // v2 CardKit — must declare schema "2.0"
121
+ if (obj.schema === '2.0')
122
+ return obj;
123
+ // v1 Message Card — must have elements[] AND (config OR header)
124
+ if (Array.isArray(obj.elements) && (obj.config !== undefined || obj.header !== undefined)) {
125
+ return obj;
126
+ }
127
+ // Template card — type: "template" with data.template_id
128
+ if (obj.type === 'template' &&
129
+ typeof obj.data === 'object' &&
130
+ obj.data !== null &&
131
+ typeof obj.data.template_id === 'string') {
132
+ return obj;
133
+ }
134
+ // Wrapped card — AI sometimes wraps card JSON with msg_type/type: "interactive"
135
+ if ((obj.msg_type === 'interactive' || obj.type === 'interactive') &&
136
+ typeof obj.card === 'object' &&
137
+ obj.card !== null) {
138
+ return obj.card;
139
+ }
140
+ return undefined;
141
+ }
142
+ catch {
143
+ return undefined;
144
+ }
145
+ }
146
+ /**
147
+ * Send a text message to a Feishu chat or user.
148
+ *
149
+ * Standalone implementation that directly operates the Lark SDK.
150
+ * The text is pre-processed (table conversion, style optimization)
151
+ * and sent as a Feishu "post" message with markdown rendering.
152
+ *
153
+ * If the entire text is a valid Feishu card JSON string (v1 or v2),
154
+ * it is automatically detected and routed to {@link sendCardLark}
155
+ * instead of being sent as plain text.
156
+ *
157
+ * @param params - See {@link SendTextLarkParams}.
158
+ * @returns The message ID and chat ID.
159
+ * @throws {Error} When the target is invalid or the API call fails.
160
+ *
161
+ * @example
162
+ * ```ts
163
+ * const result = await sendTextLark({
164
+ * cfg,
165
+ * to: "oc_xxx",
166
+ * text: "Hello from Feishu",
167
+ * });
168
+ * ```
169
+ */
170
+ export async function sendTextLark(params) {
171
+ const { cfg, to, text, replyToMessageId, replyInThread, accountId } = params;
172
+ // Detect card JSON in text — route to card sending before text preprocessing.
173
+ const card = detectCardJson(text);
174
+ if (card) {
175
+ const version = card.schema === '2.0' ? 'v2' : 'v1';
176
+ log.info(`detected ${version} card JSON in text (target=${to}), routing to sendCardLark`);
177
+ return sendCardLark({ cfg, to, card, replyToMessageId, replyInThread, accountId });
178
+ }
179
+ log.info(`sendTextLark: target=${to}, textLength=${text.length}`);
180
+ const client = LarkClient.fromCfg(cfg, accountId).sdk;
181
+ const processedText = prepareTextForLark(text);
182
+ const content = buildPostContent(processedText);
183
+ return sendImMessage({ client, to, content, msgType: 'post', replyToMessageId, replyInThread });
184
+ }
185
+ /**
186
+ * Send an interactive card message to a Feishu chat or user.
187
+ *
188
+ * Supports both v1 (Message Card) and v2 (CardKit) card formats.
189
+ * The card JSON is serialised and sent as `msg_type: "interactive"`.
190
+ *
191
+ * @param params - See {@link SendCardLarkParams}.
192
+ * @returns The message ID and chat ID.
193
+ * @throws {Error} When the target is invalid or the API call fails.
194
+ *
195
+ * @example
196
+ * ```ts
197
+ * // v1 card
198
+ * const result = await sendCardLark({
199
+ * cfg,
200
+ * to: "oc_xxx",
201
+ * card: {
202
+ * config: { wide_screen_mode: true },
203
+ * header: { title: { tag: "plain_text", content: "Hello" }, template: "blue" },
204
+ * elements: [{ tag: "div", text: { tag: "lark_md", content: "world" } }],
205
+ * },
206
+ * });
207
+ *
208
+ * // v2 card
209
+ * const result2 = await sendCardLark({
210
+ * cfg,
211
+ * to: "oc_xxx",
212
+ * card: {
213
+ * schema: "2.0",
214
+ * config: { wide_screen_mode: true },
215
+ * body: { elements: [{ tag: "markdown", content: "Hello **world**" }] },
216
+ * },
217
+ * });
218
+ * ```
219
+ */
220
+ export async function sendCardLark(params) {
221
+ const { cfg, to, card, replyToMessageId, replyInThread, accountId } = params;
222
+ const version = card.schema === '2.0' ? 'v2' : 'v1';
223
+ log.info(`sendCardLark: target=${to}, cardVersion=${version}`);
224
+ const client = LarkClient.fromCfg(cfg, accountId).sdk;
225
+ const content = JSON.stringify(card);
226
+ try {
227
+ return await sendImMessage({ client, to, content, msgType: 'interactive', replyToMessageId, replyInThread });
228
+ }
229
+ catch (err) {
230
+ const detail = formatLarkError(err);
231
+ log.error(`sendCardLark failed: ${detail}`);
232
+ throw new Error(`Card send failed: ${detail}\n\n` +
233
+ `Troubleshooting:\n` +
234
+ `- Do NOT use img/image elements with fabricated img_key values — Feishu rejects invalid keys.\n` +
235
+ `- Do NOT put URLs in img_key — it must be a real image_key from uploadImage.\n` +
236
+ `- Prefer text-only cards (markdown elements) which have 100% success rate.\n` +
237
+ `- If you need images, send them as separate media messages, not inside cards.`);
238
+ }
239
+ }
240
+ /**
241
+ * Send a single media message to a Feishu chat or user.
242
+ *
243
+ * Pure atomic operation — uploads the media and sends it. On upload
244
+ * failure, falls back to sending the URL as a clickable text link.
245
+ *
246
+ * This function does **not** handle leading text or multi-media
247
+ * orchestration; those concerns belong to the adapter's `sendMedia`
248
+ * and `sendPayload` methods.
249
+ *
250
+ * @param params - See {@link SendMediaLarkParams}.
251
+ * @returns The message ID and chat ID of the sent message.
252
+ * @throws {Error} When the target is invalid or all send attempts fail.
253
+ *
254
+ * @example
255
+ * ```ts
256
+ * const result = await sendMediaLark({
257
+ * cfg,
258
+ * to: "oc_xxx",
259
+ * mediaUrl: "https://example.com/image.png",
260
+ * });
261
+ * ```
262
+ */
263
+ export async function sendMediaLark(params) {
264
+ const { cfg, to, mediaUrl, replyToMessageId, replyInThread, accountId, mediaLocalRoots } = params;
265
+ log.info(`sendMediaLark: target=${to}, mediaUrl=${mediaUrl}`);
266
+ try {
267
+ const result = await uploadAndSendMediaLark({
268
+ cfg,
269
+ to,
270
+ mediaUrl,
271
+ replyToMessageId,
272
+ replyInThread,
273
+ accountId,
274
+ mediaLocalRoots,
275
+ });
276
+ log.info(`media sent: messageId=${result.messageId}`);
277
+ return { messageId: result.messageId, chatId: result.chatId };
278
+ }
279
+ catch (err) {
280
+ const errMsg = err instanceof Error ? err.message : String(err);
281
+ log.error(`sendMediaLark failed for "${mediaUrl}": ${errMsg}`);
282
+ // Fallback: send the URL as a clickable text link.
283
+ log.info(`falling back to text link for "${mediaUrl}"`);
284
+ const fallbackResult = await sendTextLark({
285
+ cfg,
286
+ to,
287
+ text: `\u{1F4CE} ${mediaUrl}`,
288
+ replyToMessageId,
289
+ replyInThread,
290
+ accountId,
291
+ });
292
+ return {
293
+ ...fallbackResult,
294
+ warning: `Media upload failed for "${mediaUrl}" (${errMsg}). ` +
295
+ `A text link was sent instead. The user may need to open the link manually.`,
296
+ };
297
+ }
298
+ }
299
+ //# sourceMappingURL=deliver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../../../src/messaging/outbound/deliver.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAY/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,GAAG,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAE3C,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SACjC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,yDAAyD,EAAE,mBAAmB,CAAC,CAAC;AACtG,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1C,qEAAqE;IACrE,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;YAClD,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;IAED,OAAO,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAAC,MAO5B;IACC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAEjF,qBAAqB;IACrB,IAAI,gBAAgB,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,uBAAuB,gBAAgB,GAAG,GAAG,aAAa,OAAO,YAAY,aAAa,IAAI,KAAK,GAAG,CAAC,CAAC;QACjH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7C,IAAI,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;YACtC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE;SACrE,CAAC,CAAC;QAEH,MAAM,MAAM,GAAqB;YAC/B,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE;YAC3C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;SACtC,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,yBAAyB,EAAE,2BAA2B,GAAG,wDAAwD,CAClH,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnD,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,cAAc,OAAO,GAAG,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9C,8DAA8D;QAC9D,MAAM,EAAE,EAAE,eAAe,EAAE,aAAoB,EAAE;QACjD,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;KACzD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAqB;QAC/B,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE;QAC3C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;KACtC,CAAC;IACF,GAAG,CAAC,KAAK,CAAC,8BAA8B,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzE,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,GAAG,GAAG,MAAiC,CAAC;QAE9C,yCAAyC;QACzC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,GAAG,CAAC;QAErC,gEAAgE;QAChE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YAC1F,OAAO,GAAG,CAAC;QACb,CAAC;QAED,yDAAyD;QACzD,IACE,GAAG,CAAC,IAAI,KAAK,UAAU;YACvB,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAC5B,GAAG,CAAC,IAAI,KAAK,IAAI;YACjB,OAAQ,GAAG,CAAC,IAAgC,CAAC,WAAW,KAAK,QAAQ,EACrE,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,gFAAgF;QAChF,IACE,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC;YAC9D,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAC5B,GAAG,CAAC,IAAI,KAAK,IAAI,EACjB,CAAC;YACD,OAAO,GAAG,CAAC,IAA+B,CAAC;QAC7C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAwBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA0B;IAC3D,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7E,8EAA8E;IAC9E,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,8BAA8B,EAAE,4BAA4B,CAAC,CAAC;QAC1F,OAAO,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC;IACtD,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEhD,OAAO,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAC;AAClG,CAAC;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA0B;IAC3D,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,OAAO,EAAE,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAE5C,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,MAAM;YAC/B,oBAAoB;YACpB,iGAAiG;YACjG,gFAAgF;YAChF,8EAA8E;YAC9E,+EAA+E,CAClF,CAAC;IACJ,CAAC;AACH,CAAC;AA0BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAElG,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,cAAc,QAAQ,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;YAC1C,GAAG;YACH,EAAE;YACF,QAAQ;YACR,gBAAgB;YAChB,aAAa;YACb,SAAS;YACT,eAAe;SAChB,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,6BAA6B,QAAQ,MAAM,MAAM,EAAE,CAAC,CAAC;QAE/D,mDAAmD;QACnD,GAAG,CAAC,IAAI,CAAC,kCAAkC,QAAQ,GAAG,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC;YACxC,GAAG;YACH,EAAE;YACF,IAAI,EAAE,aAAa,QAAQ,EAAE;YAC7B,gBAAgB;YAChB,aAAa;YACb,SAAS;SACV,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,cAAc;YACjB,OAAO,EACL,4BAA4B,QAAQ,MAAM,MAAM,KAAK;gBACrD,4EAA4E;SAC/E,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Message fetching re-exports for backward compatibility.
6
+ *
7
+ * The actual implementations have been moved to:
8
+ * - `getMessageFeishu` / `FeishuMessageInfo` → `../shared/message-lookup.ts`
9
+ * - `getChatTypeFeishu` → `../../core/chat-info-cache.ts`
10
+ */
11
+ export { getMessageFeishu, type FeishuMessageInfo } from '../shared/message-lookup';
12
+ export { getChatTypeFeishu } from '../../core/chat-info-cache';
13
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/messaging/outbound/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Message fetching re-exports for backward compatibility.
6
+ *
7
+ * The actual implementations have been moved to:
8
+ * - `getMessageFeishu` / `FeishuMessageInfo` → `../shared/message-lookup.ts`
9
+ * - `getChatTypeFeishu` → `../../core/chat-info-cache.ts`
10
+ */
11
+ export { getMessageFeishu } from '../shared/message-lookup';
12
+ export { getChatTypeFeishu } from '../../core/chat-info-cache';
13
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/messaging/outbound/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
3
+ * SPDX-License-Identifier: MIT
4
+ *
5
+ * Message forwarding for the Feishu/Lark channel plugin.
6
+ *
7
+ * Provides a function to forward an existing message to another chat
8
+ * or user using the IM Message Forward API.
9
+ */
10
+ import type { OpenClawConfig } from 'openclaw/plugin-sdk';
11
+ import type { FeishuSendResult } from '../types';
12
+ /**
13
+ * Forward an existing message to another chat or user.
14
+ *
15
+ * @param params.cfg - Plugin configuration with Feishu credentials.
16
+ * @param params.messageId - The message ID to forward.
17
+ * @param params.to - Target identifier (chat_id, open_id, or user_id).
18
+ * @param params.accountId - Optional account identifier for multi-account setups.
19
+ * @returns The send result containing the new forwarded message ID.
20
+ */
21
+ export declare function forwardMessageFeishu(params: {
22
+ cfg: OpenClawConfig;
23
+ messageId: string;
24
+ to: string;
25
+ accountId?: string;
26
+ }): Promise<FeishuSendResult>;
27
+ //# sourceMappingURL=forward.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../../../../src/messaging/outbound/forward.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAQjD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6B5B"}