@openclaw/slack 2026.7.1-beta.2 → 2026.7.1-beta.5

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 (696) hide show
  1. package/dist/{account-inspect-DOtQbKkB.js → account-inspect-Di7ditqZ.js} +1 -1
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/{accounts-BPCiCe8y.js → accounts-BOJJiHSr.js} +14 -1
  4. package/dist/accounts.runtime-DWvaCb-X.js +2 -0
  5. package/dist/{action-runtime-E9QZMf0z.js → action-runtime-DoQGk_8D.js} +36 -32
  6. package/dist/action-runtime.runtime-BABj3aM-.js +2 -0
  7. package/dist/{actions-CqRHPciJ.js → actions-DMpDmKEA.js} +211 -57
  8. package/dist/actions.runtime-C103_BPW.js +2 -0
  9. package/dist/api.js +13 -13
  10. package/dist/{approval-handler.runtime-BqNO_HC_.js → approval-handler.runtime-CIUbOt5T.js} +2 -2
  11. package/dist/{channel-jO8Jdkge.js → channel-CG29WLVd.js} +198 -87
  12. package/dist/channel-plugin-api.js +1 -1
  13. package/dist/{channel.setup-CDOZ8V3p.js → channel.setup-Dq6syTNU.js} +3 -3
  14. package/dist/{client-DG9cyk55.js → client-DGxwSL7f.js} +0 -1
  15. package/dist/{directory-config-DDVHDmrN.js → directory-config-BZuS8141.js} +1 -1
  16. package/dist/directory-contract-api.js +1 -1
  17. package/dist/{directory-live-DC-YA5SQ.js → directory-live-BNsxCgqP.js} +2 -2
  18. package/dist/format-YCNoNkM2.js +107 -0
  19. package/dist/http-routes-api.js +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/{interactive-replies-D-22gTp3.js → interactive-replies-CXpT-vA_.js} +13 -2
  22. package/dist/interactive-replies-api.js +1 -1
  23. package/dist/{message-tool-api--zYyTqrR.js → message-tool-api-BgWKyu2r.js} +11 -4
  24. package/dist/message-tool-api.js +1 -1
  25. package/dist/{monitor-BQ7P93ll.js → monitor-D6Km2CFH.js} +3 -3
  26. package/dist/outbound-adapter-DVoBfBW5.js +272 -0
  27. package/dist/{pipeline.runtime-cxw6Zihc.js → pipeline.runtime-0wEFX2CS.js} +184 -260
  28. package/dist/{plugin-routes-B9PvcDQJ.js → plugin-routes-CLp4obpN.js} +1 -1
  29. package/dist/{policy-DAE6BTN3.js → policy-Dj-puVPb.js} +10 -4
  30. package/dist/{probe-DFKt9Ute.js → probe-CuwRDE5j.js} +10 -4
  31. package/dist/{provider-BdoeWKr8.js → provider-Cot8h818.js} +153 -120
  32. package/dist/{relay-source-OcqQzKfX.js → relay-source-CU1LhyBj.js} +2 -2
  33. package/dist/{replies-D_G-EPr8.js → replies-Bbx6pG_B.js} +4 -3
  34. package/dist/{reply-blocks-CfJqf7eq.js → reply-blocks-BGQ6zSqM.js} +184 -36
  35. package/dist/{resolve-channels-eniB45fy.js → resolve-channels-CstkChBE.js} +1 -1
  36. package/dist/{resolve-users-DDKzl37a.js → resolve-users-C3NP2c-Q.js} +1 -1
  37. package/dist/{runtime-api-DHJ8ntLr.js → runtime-api-CEmqYxR-.js} +1 -1
  38. package/dist/runtime-api.js +12 -12
  39. package/dist/{scopes-BdVdJxFf.js → scopes-DCWVD5-8.js} +2 -2
  40. package/dist/{send-Dg6U9K7_.js → send-DKDXoeoV.js} +392 -225
  41. package/dist/send.runtime-GPRa63l1.js +2 -0
  42. package/dist/{setup-core-BCGzyZhx.js → setup-core-fGd6Gquy.js} +4 -3
  43. package/dist/setup-entry.js +1 -1
  44. package/dist/setup-plugin-api.js +1 -1
  45. package/dist/{setup-surface-D7xdZLxB.js → setup-surface-Dv2fIJNB.js} +5 -5
  46. package/dist/{shared-iMaNxOIL.js → shared-CosfcFri.js} +5 -5
  47. package/dist/{slash-dispatch.runtime-DVhs_fpQ.js → slash-dispatch.runtime-Ccm3quU1.js} +1 -1
  48. package/node_modules/@slack/web-api/dist/chat-stream.d.ts +6 -0
  49. package/node_modules/@slack/web-api/dist/chat-stream.d.ts.map +1 -1
  50. package/node_modules/@slack/web-api/dist/chat-stream.js +8 -0
  51. package/node_modules/@slack/web-api/dist/chat-stream.js.map +1 -1
  52. package/node_modules/@slack/web-api/dist/types/request/assistant.d.ts +1 -1
  53. package/node_modules/@slack/web-api/dist/types/request/assistant.d.ts.map +1 -1
  54. package/node_modules/@slack/web-api/package.json +1 -1
  55. package/node_modules/@types/node/README.md +1 -1
  56. package/node_modules/@types/node/assert/strict.d.ts +10 -1
  57. package/node_modules/@types/node/assert.d.ts +144 -17
  58. package/node_modules/@types/node/async_hooks.d.ts +9 -9
  59. package/node_modules/@types/node/buffer.d.ts +64 -30
  60. package/node_modules/@types/node/child_process.d.ts +17 -21
  61. package/node_modules/@types/node/cluster.d.ts +13 -13
  62. package/node_modules/@types/node/console.d.ts +1 -1
  63. package/node_modules/@types/node/crypto.d.ts +471 -575
  64. package/node_modules/@types/node/diagnostics_channel.d.ts +274 -32
  65. package/node_modules/@types/node/dns.d.ts +15 -15
  66. package/node_modules/@types/node/events.d.ts +3 -3
  67. package/node_modules/@types/node/ffi.d.ts +486 -0
  68. package/node_modules/@types/node/fs/promises.d.ts +7 -4
  69. package/node_modules/@types/node/fs.d.ts +24 -18
  70. package/node_modules/@types/node/globals.d.ts +4 -4
  71. package/node_modules/@types/node/http.d.ts +30 -5
  72. package/node_modules/@types/node/http2.d.ts +2 -1
  73. package/node_modules/@types/node/index.d.ts +1 -3
  74. package/node_modules/@types/node/inspector.d.ts +1 -1
  75. package/node_modules/@types/node/module.d.ts +16 -45
  76. package/node_modules/@types/node/net.d.ts +1 -1
  77. package/node_modules/@types/node/os.d.ts +2 -2
  78. package/node_modules/@types/node/package.json +4 -4
  79. package/node_modules/@types/node/perf_hooks.d.ts +1 -9
  80. package/node_modules/@types/node/process.d.ts +25 -12
  81. package/node_modules/@types/node/quic.d.ts +92 -11
  82. package/node_modules/@types/node/readline.d.ts +12 -11
  83. package/node_modules/@types/node/repl.d.ts +10 -10
  84. package/node_modules/@types/node/sqlite.d.ts +56 -1
  85. package/node_modules/@types/node/stream/iter.d.ts +150 -0
  86. package/node_modules/@types/node/stream/promises.d.ts +2 -2
  87. package/node_modules/@types/node/stream/web.d.ts +1 -1
  88. package/node_modules/@types/node/stream.d.ts +37 -5
  89. package/node_modules/@types/node/test/reporters.d.ts +1 -1
  90. package/node_modules/@types/node/test.d.ts +120 -10
  91. package/node_modules/@types/node/tls.d.ts +1 -1
  92. package/node_modules/@types/node/ts5.6/index.d.ts +2 -4
  93. package/node_modules/@types/node/ts5.7/index.d.ts +1 -3
  94. package/node_modules/@types/node/url.d.ts +3 -3
  95. package/node_modules/@types/node/util/types.d.ts +1 -1
  96. package/node_modules/@types/node/util.d.ts +22 -22
  97. package/node_modules/@types/node/v8.d.ts +85 -3
  98. package/node_modules/@types/node/vm.d.ts +9 -9
  99. package/node_modules/@types/node/web-globals/domexception.d.ts +15 -0
  100. package/node_modules/@types/node/worker_threads.d.ts +10 -12
  101. package/node_modules/@types/node/zlib.d.ts +3 -3
  102. package/node_modules/body-parser/README.md +16 -1
  103. package/node_modules/body-parser/index.js +4 -20
  104. package/node_modules/body-parser/lib/read.js +17 -17
  105. package/node_modules/body-parser/lib/types/json.js +60 -32
  106. package/node_modules/body-parser/lib/types/raw.js +3 -3
  107. package/node_modules/body-parser/lib/types/text.js +3 -3
  108. package/node_modules/body-parser/lib/types/urlencoded.js +16 -20
  109. package/node_modules/body-parser/lib/utils.js +18 -16
  110. package/node_modules/body-parser/node_modules/content-type/LICENSE +22 -0
  111. package/node_modules/body-parser/node_modules/content-type/README.md +69 -0
  112. package/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +26 -0
  113. package/node_modules/body-parser/node_modules/content-type/dist/index.js +170 -0
  114. package/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -0
  115. package/node_modules/body-parser/node_modules/content-type/package.json +52 -0
  116. package/node_modules/body-parser/package.json +23 -10
  117. package/node_modules/range-parser/README.md +13 -12
  118. package/node_modules/range-parser/index.js +27 -8
  119. package/node_modules/range-parser/package.json +12 -8
  120. package/node_modules/semver/classes/range.js +6 -2
  121. package/node_modules/semver/package.json +1 -1
  122. package/node_modules/side-channel/CHANGELOG.md +10 -0
  123. package/node_modules/side-channel/README.md +1 -1
  124. package/node_modules/side-channel/index.js +5 -2
  125. package/node_modules/side-channel/package.json +10 -10
  126. package/node_modules/side-channel/test/index.js +16 -0
  127. package/node_modules/typebox/build/compile/validator.d.mts +2 -7
  128. package/node_modules/typebox/build/compile/validator.mjs +6 -36
  129. package/node_modules/typebox/build/error/errors.d.mts +1 -7
  130. package/node_modules/typebox/build/format/_idna.mjs +36 -6
  131. package/node_modules/typebox/build/format/_puny.mjs +4 -1
  132. package/node_modules/typebox/build/format/uuid.d.mts +2 -2
  133. package/node_modules/typebox/build/format/uuid.mjs +3 -3
  134. package/node_modules/typebox/build/guard/emit.d.mts +0 -4
  135. package/node_modules/typebox/build/guard/emit.mjs +0 -8
  136. package/node_modules/typebox/build/guard/guard.d.mts +4 -8
  137. package/node_modules/typebox/build/guard/guard.mjs +5 -13
  138. package/node_modules/typebox/build/schema/engine/boolean.d.mts +3 -3
  139. package/node_modules/typebox/build/schema/engine/boolean.mjs +4 -4
  140. package/node_modules/typebox/build/schema/engine/index.d.mts +0 -1
  141. package/node_modules/typebox/build/schema/engine/index.mjs +0 -1
  142. package/node_modules/typebox/build/schema/engine/schema.mjs +5 -10
  143. package/node_modules/typebox/build/schema/engine/type.mjs +14 -18
  144. package/node_modules/typebox/build/schema/types/dependencies.mjs +1 -1
  145. package/node_modules/typebox/build/schema/types/index.d.mts +0 -1
  146. package/node_modules/typebox/build/schema/types/index.mjs +0 -1
  147. package/node_modules/typebox/build/schema/types/schema.d.mts +1 -1
  148. package/node_modules/typebox/build/schema/types/schema.mjs +2 -2
  149. package/node_modules/typebox/build/system/locale/ar_001.mjs +0 -1
  150. package/node_modules/typebox/build/system/locale/bn_BD.mjs +0 -1
  151. package/node_modules/typebox/build/system/locale/cs_CZ.mjs +0 -1
  152. package/node_modules/typebox/build/system/locale/de_DE.mjs +0 -1
  153. package/node_modules/typebox/build/system/locale/el_GR.mjs +0 -1
  154. package/node_modules/typebox/build/system/locale/en_US.mjs +0 -1
  155. package/node_modules/typebox/build/system/locale/es_419.mjs +0 -1
  156. package/node_modules/typebox/build/system/locale/es_AR.mjs +0 -1
  157. package/node_modules/typebox/build/system/locale/es_ES.mjs +0 -1
  158. package/node_modules/typebox/build/system/locale/es_MX.mjs +0 -1
  159. package/node_modules/typebox/build/system/locale/fa_IR.mjs +0 -1
  160. package/node_modules/typebox/build/system/locale/fil_PH.mjs +0 -1
  161. package/node_modules/typebox/build/system/locale/fr_CA.mjs +0 -1
  162. package/node_modules/typebox/build/system/locale/fr_FR.mjs +0 -1
  163. package/node_modules/typebox/build/system/locale/ha_NG.mjs +0 -1
  164. package/node_modules/typebox/build/system/locale/hi_IN.mjs +0 -1
  165. package/node_modules/typebox/build/system/locale/hu_HU.mjs +0 -1
  166. package/node_modules/typebox/build/system/locale/id_ID.mjs +0 -1
  167. package/node_modules/typebox/build/system/locale/it_IT.mjs +0 -1
  168. package/node_modules/typebox/build/system/locale/ja_JP.mjs +0 -1
  169. package/node_modules/typebox/build/system/locale/ko_KR.mjs +0 -1
  170. package/node_modules/typebox/build/system/locale/ms_MY.mjs +0 -1
  171. package/node_modules/typebox/build/system/locale/nl_NL.mjs +0 -1
  172. package/node_modules/typebox/build/system/locale/pl_PL.mjs +0 -1
  173. package/node_modules/typebox/build/system/locale/pt_BR.mjs +0 -1
  174. package/node_modules/typebox/build/system/locale/pt_PT.mjs +0 -1
  175. package/node_modules/typebox/build/system/locale/ro_RO.mjs +0 -1
  176. package/node_modules/typebox/build/system/locale/ru_RU.mjs +0 -1
  177. package/node_modules/typebox/build/system/locale/sv_SE.mjs +0 -1
  178. package/node_modules/typebox/build/system/locale/sw_TZ.mjs +0 -1
  179. package/node_modules/typebox/build/system/locale/th_TH.mjs +0 -1
  180. package/node_modules/typebox/build/system/locale/tr_TR.mjs +0 -1
  181. package/node_modules/typebox/build/system/locale/uk_UA.mjs +0 -1
  182. package/node_modules/typebox/build/system/locale/ur_PK.mjs +0 -1
  183. package/node_modules/typebox/build/system/locale/vi_VN.mjs +0 -1
  184. package/node_modules/typebox/build/system/locale/yo_NG.mjs +0 -1
  185. package/node_modules/typebox/build/system/locale/zh_Hans.mjs +0 -1
  186. package/node_modules/typebox/build/system/locale/zh_Hant.mjs +0 -1
  187. package/node_modules/typebox/build/system/memory/clone.d.mts +2 -3
  188. package/node_modules/typebox/build/system/memory/clone.mjs +73 -26
  189. package/node_modules/typebox/build/system/settings/settings.d.mts +15 -0
  190. package/node_modules/typebox/build/system/settings/settings.mjs +3 -1
  191. package/node_modules/typebox/build/type/action/_add_immutable.d.mts +11 -0
  192. package/node_modules/typebox/build/type/action/_add_immutable.mjs +11 -0
  193. package/node_modules/typebox/build/type/action/_add_optional.d.mts +11 -0
  194. package/node_modules/typebox/build/type/action/_add_optional.mjs +11 -0
  195. package/node_modules/typebox/build/type/action/_add_readonly.d.mts +11 -0
  196. package/node_modules/typebox/build/type/action/_add_readonly.mjs +11 -0
  197. package/node_modules/typebox/build/type/action/_remove_immutable.d.mts +11 -0
  198. package/node_modules/typebox/build/type/action/_remove_immutable.mjs +11 -0
  199. package/node_modules/typebox/build/type/action/_remove_optional.d.mts +11 -0
  200. package/node_modules/typebox/build/type/action/_remove_optional.mjs +11 -0
  201. package/node_modules/typebox/build/type/action/_remove_readonly.d.mts +11 -0
  202. package/node_modules/typebox/build/type/action/_remove_readonly.mjs +11 -0
  203. package/node_modules/typebox/build/type/action/conditional.d.mts +2 -3
  204. package/node_modules/typebox/build/type/action/conditional.mjs +2 -1
  205. package/node_modules/typebox/build/type/action/index.d.mts +7 -4
  206. package/node_modules/typebox/build/type/action/index.mjs +7 -4
  207. package/node_modules/typebox/build/type/action/mapped.d.mts +2 -3
  208. package/node_modules/typebox/build/type/action/mapped.mjs +2 -1
  209. package/node_modules/typebox/build/type/action/module.d.mts +8 -7
  210. package/node_modules/typebox/build/type/action/module.mjs +7 -6
  211. package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
  212. package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -5
  213. package/node_modules/typebox/build/type/action/with.d.mts +11 -0
  214. package/node_modules/typebox/build/type/action/with.mjs +11 -0
  215. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +1 -1
  216. package/node_modules/typebox/build/type/engine/call/instantiate.d.mts +1 -3
  217. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +3 -2
  218. package/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs +2 -2
  219. package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.d.mts +3 -4
  220. package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs +2 -1
  221. package/node_modules/typebox/build/type/engine/cyclic/candidates.d.mts +2 -3
  222. package/node_modules/typebox/build/type/engine/cyclic/candidates.mjs +3 -6
  223. package/node_modules/typebox/build/type/engine/cyclic/check.d.mts +6 -9
  224. package/node_modules/typebox/build/type/engine/cyclic/check.mjs +10 -16
  225. package/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +1 -4
  226. package/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +9 -15
  227. package/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +1 -4
  228. package/node_modules/typebox/build/type/engine/cyclic/extends.mjs +8 -14
  229. package/node_modules/typebox/build/type/engine/cyclic/instantiate.d.mts +2 -5
  230. package/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs +3 -2
  231. package/node_modules/typebox/build/type/engine/enum/index.d.mts +0 -1
  232. package/node_modules/typebox/build/type/engine/enum/index.mjs +0 -1
  233. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +1 -2
  234. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +2 -6
  235. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +10 -6
  236. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +10 -6
  237. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +2 -1
  238. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +3 -3
  239. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +17 -5
  240. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +34 -8
  241. package/node_modules/typebox/build/type/engine/exclude/operation.d.mts +5 -6
  242. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +11 -12
  243. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +5 -6
  244. package/node_modules/typebox/build/type/engine/extract/operation.mjs +11 -12
  245. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +10 -0
  246. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +14 -0
  247. package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.d.mts +10 -0
  248. package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs +14 -0
  249. package/node_modules/typebox/build/type/engine/index.d.mts +2 -2
  250. package/node_modules/typebox/build/type/engine/index.mjs +2 -2
  251. package/node_modules/typebox/build/type/engine/indexable/from_dependent.d.mts +5 -0
  252. package/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs +8 -0
  253. package/node_modules/typebox/build/type/engine/indexable/from_enum.d.mts +3 -3
  254. package/node_modules/typebox/build/type/engine/indexable/from_enum.mjs +4 -4
  255. package/node_modules/typebox/build/type/engine/indexable/from_template_literal.d.mts +2 -2
  256. package/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs +3 -3
  257. package/node_modules/typebox/build/type/engine/indexable/from_type.d.mts +3 -1
  258. package/node_modules/typebox/build/type/engine/indexable/from_type.mjs +9 -6
  259. package/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +2 -1
  260. package/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +5 -2
  261. package/node_modules/typebox/build/type/engine/instantiate.d.mts +44 -31
  262. package/node_modules/typebox/build/type/engine/instantiate.mjs +82 -83
  263. package/node_modules/typebox/build/type/engine/interface/instantiate.d.mts +3 -6
  264. package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.d.mts +2 -2
  265. package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs +3 -3
  266. package/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +2 -1
  267. package/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +5 -1
  268. package/node_modules/typebox/build/type/engine/mapped/mapped_operation.d.mts +4 -4
  269. package/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs +3 -3
  270. package/node_modules/typebox/build/type/engine/mapped/mapped_variants.d.mts +5 -4
  271. package/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs +10 -5
  272. package/node_modules/typebox/build/type/engine/module/instantiate.d.mts +7 -9
  273. package/node_modules/typebox/build/type/engine/module/instantiate.mjs +17 -15
  274. package/node_modules/typebox/build/type/engine/object/from_dependent.d.mts +5 -0
  275. package/node_modules/typebox/build/type/engine/object/from_dependent.mjs +8 -0
  276. package/node_modules/typebox/build/type/engine/object/from_type.d.mts +3 -1
  277. package/node_modules/typebox/build/type/engine/object/from_type.mjs +8 -5
  278. package/node_modules/typebox/build/type/engine/object/from_union.mjs +2 -2
  279. package/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +10 -0
  280. package/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +14 -0
  281. package/node_modules/typebox/build/type/engine/optional/instantiate_remove.d.mts +10 -0
  282. package/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs +14 -0
  283. package/node_modules/typebox/build/type/engine/parameters/instantiate.d.mts +3 -4
  284. package/node_modules/typebox/build/type/engine/parameters/instantiate.mjs +2 -1
  285. package/node_modules/typebox/build/type/engine/partial/from_dependent.d.mts +5 -0
  286. package/node_modules/typebox/build/type/engine/partial/from_dependent.mjs +8 -0
  287. package/node_modules/typebox/build/type/engine/partial/from_intersect.d.mts +1 -1
  288. package/node_modules/typebox/build/type/engine/partial/from_intersect.mjs +3 -2
  289. package/node_modules/typebox/build/type/engine/partial/from_object.d.mts +2 -2
  290. package/node_modules/typebox/build/type/engine/partial/from_object.mjs +2 -2
  291. package/node_modules/typebox/build/type/engine/partial/from_type.d.mts +3 -1
  292. package/node_modules/typebox/build/type/engine/partial/from_type.mjs +7 -4
  293. package/node_modules/typebox/build/type/engine/priority/index.d.mts +1 -0
  294. package/node_modules/typebox/build/type/engine/priority/index.mjs +1 -0
  295. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +20 -0
  296. package/node_modules/typebox/build/type/engine/priority/priority.mjs +28 -0
  297. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +10 -0
  298. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +14 -0
  299. package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.d.mts +10 -0
  300. package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs +14 -0
  301. package/node_modules/typebox/build/type/engine/readonly_object/from_array.d.mts +2 -2
  302. package/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs +2 -2
  303. package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.d.mts +5 -0
  304. package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs +8 -0
  305. package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.d.mts +1 -1
  306. package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs +3 -2
  307. package/node_modules/typebox/build/type/engine/readonly_object/from_object.d.mts +2 -2
  308. package/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs +2 -2
  309. package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.d.mts +2 -2
  310. package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs +2 -2
  311. package/node_modules/typebox/build/type/engine/readonly_object/from_type.d.mts +3 -1
  312. package/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs +8 -5
  313. package/node_modules/typebox/build/type/engine/record/from_key_enum.d.mts +2 -2
  314. package/node_modules/typebox/build/type/engine/record/from_key_enum.mjs +2 -2
  315. package/node_modules/typebox/build/type/engine/record/from_key_template_literal.d.mts +2 -2
  316. package/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs +2 -2
  317. package/node_modules/typebox/build/type/engine/ref/instantiate.d.mts +3 -3
  318. package/node_modules/typebox/build/type/engine/ref/instantiate.mjs +6 -6
  319. package/node_modules/typebox/build/type/engine/required/from_dependent.d.mts +5 -0
  320. package/node_modules/typebox/build/type/engine/required/from_dependent.mjs +8 -0
  321. package/node_modules/typebox/build/type/engine/required/from_intersect.d.mts +1 -1
  322. package/node_modules/typebox/build/type/engine/required/from_intersect.mjs +3 -2
  323. package/node_modules/typebox/build/type/engine/required/from_object.d.mts +2 -2
  324. package/node_modules/typebox/build/type/engine/required/from_object.mjs +2 -2
  325. package/node_modules/typebox/build/type/engine/required/from_type.d.mts +3 -1
  326. package/node_modules/typebox/build/type/engine/required/from_type.mjs +7 -4
  327. package/node_modules/typebox/build/type/engine/template_literal/decode.mjs +3 -3
  328. package/node_modules/typebox/build/type/engine/template_literal/encode.d.mts +2 -2
  329. package/node_modules/typebox/build/type/engine/template_literal/encode.mjs +6 -6
  330. package/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs +1 -1
  331. package/node_modules/typebox/build/type/engine/template_literal/is_pattern.mjs +1 -0
  332. package/node_modules/typebox/build/type/engine/this/expand_this.d.mts +1 -4
  333. package/node_modules/typebox/build/type/engine/this/expand_this.mjs +7 -13
  334. package/node_modules/typebox/build/type/engine/with/instantiate.d.mts +8 -0
  335. package/node_modules/typebox/build/type/engine/{options → with}/instantiate.mjs +5 -5
  336. package/node_modules/typebox/build/type/extends/dependent.d.mts +6 -0
  337. package/node_modules/typebox/build/type/extends/dependent.mjs +6 -0
  338. package/node_modules/typebox/build/type/extends/enum.d.mts +4 -4
  339. package/node_modules/typebox/build/type/extends/enum.mjs +3 -2
  340. package/node_modules/typebox/build/type/extends/extends_left.d.mts +5 -7
  341. package/node_modules/typebox/build/type/extends/extends_left.mjs +24 -27
  342. package/node_modules/typebox/build/type/extends/extends_right.d.mts +7 -5
  343. package/node_modules/typebox/build/type/extends/extends_right.mjs +20 -15
  344. package/node_modules/typebox/build/type/extends/inference.mjs +1 -1
  345. package/node_modules/typebox/build/type/extends/object.d.mts +8 -1
  346. package/node_modules/typebox/build/type/extends/object.mjs +25 -3
  347. package/node_modules/typebox/build/type/extends/parameters.mjs +2 -2
  348. package/node_modules/typebox/build/type/extends/record.d.mts +13 -0
  349. package/node_modules/typebox/build/type/extends/record.mjs +23 -0
  350. package/node_modules/typebox/build/type/extends/template_literal.d.mts +3 -3
  351. package/node_modules/typebox/build/type/extends/template_literal.mjs +3 -3
  352. package/node_modules/typebox/build/type/extends/tuple.d.mts +3 -6
  353. package/node_modules/typebox/build/type/extends/tuple.mjs +6 -5
  354. package/node_modules/typebox/build/type/extends/union.mjs +2 -2
  355. package/node_modules/typebox/build/type/script/mapping.d.mts +84 -99
  356. package/node_modules/typebox/build/type/script/mapping.mjs +81 -85
  357. package/node_modules/typebox/build/type/script/parser.d.mts +40 -40
  358. package/node_modules/typebox/build/type/script/parser.mjs +22 -22
  359. package/node_modules/typebox/build/type/script/script.d.mts +3 -4
  360. package/node_modules/typebox/build/type/script/script.mjs +3 -2
  361. package/node_modules/typebox/build/type/script/token/internal/guard.d.mts +1 -1
  362. package/node_modules/typebox/build/type/script/token/internal/guard.mjs +1 -1
  363. package/node_modules/typebox/build/type/script/token/internal/take.mjs +1 -1
  364. package/node_modules/typebox/build/type/script/token/until.mjs +2 -2
  365. package/node_modules/typebox/build/type/types/_codec.d.mts +12 -12
  366. package/node_modules/typebox/build/type/types/_codec.mjs +0 -1
  367. package/node_modules/typebox/build/type/types/_immutable.d.mts +2 -9
  368. package/node_modules/typebox/build/type/types/_immutable.mjs +2 -10
  369. package/node_modules/typebox/build/type/types/_optional.d.mts +2 -9
  370. package/node_modules/typebox/build/type/types/_optional.mjs +2 -11
  371. package/node_modules/typebox/build/type/types/_readonly.d.mts +2 -9
  372. package/node_modules/typebox/build/type/types/_readonly.mjs +2 -10
  373. package/node_modules/typebox/build/type/types/_refine.d.mts +8 -10
  374. package/node_modules/typebox/build/type/types/_refine.mjs +1 -2
  375. package/node_modules/typebox/build/type/types/call.d.mts +3 -3
  376. package/node_modules/typebox/build/type/types/call.mjs +3 -2
  377. package/node_modules/typebox/build/type/types/deferred.d.mts +1 -0
  378. package/node_modules/typebox/build/type/types/deferred.mjs +1 -1
  379. package/node_modules/typebox/build/type/types/dependent.d.mts +17 -0
  380. package/node_modules/typebox/build/type/types/dependent.mjs +24 -0
  381. package/node_modules/typebox/build/type/types/enum.d.mts +3 -1
  382. package/node_modules/typebox/build/type/types/enum.mjs +5 -0
  383. package/node_modules/typebox/build/type/types/index.d.mts +1 -4
  384. package/node_modules/typebox/build/type/types/index.mjs +1 -4
  385. package/node_modules/typebox/build/type/types/number.d.mts +1 -1
  386. package/node_modules/typebox/build/type/types/number.mjs +1 -1
  387. package/node_modules/typebox/build/type/types/record.d.mts +13 -7
  388. package/node_modules/typebox/build/type/types/record.mjs +15 -9
  389. package/node_modules/typebox/build/type/types/static.d.mts +2 -5
  390. package/node_modules/typebox/build/typebox.d.mts +4 -8
  391. package/node_modules/typebox/build/typebox.mjs +4 -8
  392. package/node_modules/typebox/build/value/clean/clean.mjs +4 -2
  393. package/node_modules/typebox/build/value/clean/from_intersect.mjs +2 -2
  394. package/node_modules/typebox/build/value/clean/from_type.mjs +8 -10
  395. package/node_modules/typebox/build/value/clean/from_union.d.mts +1 -1
  396. package/node_modules/typebox/build/value/clean/from_union.mjs +1 -2
  397. package/node_modules/typebox/build/value/clone/clone.mjs +2 -73
  398. package/node_modules/typebox/build/value/codec/decode.mjs +4 -2
  399. package/node_modules/typebox/build/value/codec/encode.mjs +4 -2
  400. package/node_modules/typebox/build/value/codec/from_array.mjs +1 -4
  401. package/node_modules/typebox/build/value/codec/from_object.mjs +1 -4
  402. package/node_modules/typebox/build/value/codec/from_record.mjs +2 -7
  403. package/node_modules/typebox/build/value/codec/from_tuple.mjs +1 -4
  404. package/node_modules/typebox/build/value/codec/from_union.mjs +2 -3
  405. package/node_modules/typebox/build/value/convert/from_enum.mjs +3 -4
  406. package/node_modules/typebox/build/value/convert/from_template_literal.d.mts +1 -1
  407. package/node_modules/typebox/build/value/convert/from_template_literal.mjs +2 -3
  408. package/node_modules/typebox/build/value/convert/from_type.mjs +19 -21
  409. package/node_modules/typebox/build/value/create/from_enum.mjs +2 -2
  410. package/node_modules/typebox/build/value/create/from_type.mjs +23 -31
  411. package/node_modules/typebox/build/value/default/from_object.mjs +1 -1
  412. package/node_modules/typebox/build/value/default/from_type.mjs +8 -10
  413. package/node_modules/typebox/build/value/index.d.mts +0 -1
  414. package/node_modules/typebox/build/value/index.mjs +0 -1
  415. package/node_modules/typebox/build/value/repair/from_enum.mjs +2 -3
  416. package/node_modules/typebox/build/value/repair/from_type.mjs +24 -22
  417. package/node_modules/typebox/build/value/shared/union_priority_sort.d.mts +6 -2
  418. package/node_modules/typebox/build/value/shared/union_priority_sort.mjs +62 -26
  419. package/node_modules/typebox/build/value/value.d.mts +0 -1
  420. package/node_modules/typebox/build/value/value.mjs +0 -1
  421. package/node_modules/typebox/package.json +25 -25
  422. package/node_modules/typebox/readme.md +97 -80
  423. package/node_modules/undici-types/agent.d.ts +0 -2
  424. package/node_modules/undici-types/client.d.ts +25 -19
  425. package/node_modules/undici-types/dispatcher.d.ts +7 -33
  426. package/node_modules/undici-types/dispatcher1-wrapper.d.ts +7 -0
  427. package/node_modules/undici-types/fetch.d.ts +24 -4
  428. package/node_modules/undici-types/h2c-client.d.ts +6 -6
  429. package/node_modules/undici-types/handlers.d.ts +1 -2
  430. package/node_modules/undici-types/header.d.ts +5 -0
  431. package/node_modules/undici-types/index.d.ts +3 -1
  432. package/node_modules/undici-types/interceptors.d.ts +1 -1
  433. package/node_modules/undici-types/package.json +1 -1
  434. package/node_modules/undici-types/pool.d.ts +0 -2
  435. package/node_modules/undici-types/proxy-agent.d.ts +2 -2
  436. package/node_modules/undici-types/round-robin-pool.d.ts +0 -2
  437. package/node_modules/undici-types/snapshot-agent.d.ts +4 -0
  438. package/node_modules/undici-types/socks5-proxy-agent.d.ts +2 -2
  439. package/node_modules/undici-types/webidl.d.ts +0 -1
  440. package/npm-shrinkwrap.json +55 -56
  441. package/openclaw.plugin.json +46 -0
  442. package/package.json +6 -6
  443. package/dist/accounts.runtime-CgWgzjLX.js +0 -2
  444. package/dist/action-runtime.runtime-BQrVgSOq.js +0 -2
  445. package/dist/actions.runtime-Dl6AfO_g.js +0 -2
  446. package/dist/errors-CZtmv-h0.js +0 -107
  447. package/dist/outbound-adapter-BHUtpXz0.js +0 -188
  448. package/dist/send.runtime-a-O4PP2B.js +0 -2
  449. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/LICENSE +0 -21
  450. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/README.md +0 -15
  451. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/assert/strict.d.ts +0 -59
  452. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/assert.d.ts +0 -950
  453. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/async_hooks.d.ts +0 -711
  454. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/buffer.buffer.d.ts +0 -466
  455. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/buffer.d.ts +0 -1765
  456. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/child_process.d.ts +0 -1366
  457. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/cluster.d.ts +0 -432
  458. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  459. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/console.d.ts +0 -93
  460. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/constants.d.ts +0 -14
  461. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/crypto.d.ts +0 -4058
  462. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/dgram.d.ts +0 -537
  463. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/diagnostics_channel.d.ts +0 -552
  464. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/dns/promises.d.ts +0 -497
  465. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/dns.d.ts +0 -876
  466. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/domain.d.ts +0 -150
  467. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/events.d.ts +0 -1008
  468. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/fs/promises.d.ts +0 -1468
  469. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/fs.d.ts +0 -4780
  470. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/globals.d.ts +0 -150
  471. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/globals.typedarray.d.ts +0 -101
  472. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/http.d.ts +0 -2147
  473. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/http2.d.ts +0 -2485
  474. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/https.d.ts +0 -400
  475. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/index.d.ts +0 -117
  476. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/inspector/promises.d.ts +0 -35
  477. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/inspector.d.ts +0 -264
  478. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/inspector.generated.d.ts +0 -4406
  479. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/module.d.ts +0 -755
  480. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/net.d.ts +0 -970
  481. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/os.d.ts +0 -498
  482. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/package.json +0 -155
  483. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/path/posix.d.ts +0 -8
  484. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/path/win32.d.ts +0 -8
  485. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/path.d.ts +0 -178
  486. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/perf_hooks.d.ts +0 -612
  487. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/process.d.ts +0 -2204
  488. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/punycode.d.ts +0 -89
  489. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/querystring.d.ts +0 -139
  490. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/quic.d.ts +0 -897
  491. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/readline/promises.d.ts +0 -158
  492. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/readline.d.ts +0 -507
  493. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/repl.d.ts +0 -420
  494. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/sea.d.ts +0 -47
  495. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/sqlite.d.ts +0 -1068
  496. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/consumers.d.ts +0 -114
  497. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/iter.d.ts +0 -301
  498. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/promises.d.ts +0 -211
  499. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/web.d.ts +0 -300
  500. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream.d.ts +0 -1774
  501. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/string_decoder.d.ts +0 -27
  502. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/test/reporters.d.ts +0 -59
  503. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/test.d.ts +0 -2279
  504. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/timers/promises.d.ts +0 -93
  505. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/timers.d.ts +0 -149
  506. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/tls.d.ts +0 -1193
  507. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/trace_events.d.ts +0 -103
  508. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -462
  509. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
  510. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -36
  511. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/index.d.ts +0 -119
  512. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
  513. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.7/index.d.ts +0 -119
  514. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/tty.d.ts +0 -225
  515. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/url.d.ts +0 -556
  516. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/util/types.d.ts +0 -558
  517. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/util.d.ts +0 -1677
  518. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/v8.d.ts +0 -980
  519. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/vm.d.ts +0 -1136
  520. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/wasi.d.ts +0 -131
  521. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -59
  522. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/blob.d.ts +0 -23
  523. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/console.d.ts +0 -9
  524. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
  525. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  526. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
  527. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/events.d.ts +0 -106
  528. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/fetch.d.ts +0 -69
  529. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
  530. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
  531. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/navigator.d.ts +0 -25
  532. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/performance.d.ts +0 -45
  533. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  534. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/streams.d.ts +0 -115
  535. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/timers.d.ts +0 -44
  536. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/url.d.ts +0 -24
  537. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/worker_threads.d.ts +0 -671
  538. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/zlib/iter.d.ts +0 -131
  539. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/zlib.d.ts +0 -589
  540. package/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  541. package/node_modules/@types/ws/node_modules/@types/node/LICENSE +0 -21
  542. package/node_modules/@types/ws/node_modules/@types/node/README.md +0 -15
  543. package/node_modules/@types/ws/node_modules/@types/node/assert/strict.d.ts +0 -59
  544. package/node_modules/@types/ws/node_modules/@types/node/assert.d.ts +0 -950
  545. package/node_modules/@types/ws/node_modules/@types/node/async_hooks.d.ts +0 -711
  546. package/node_modules/@types/ws/node_modules/@types/node/buffer.buffer.d.ts +0 -466
  547. package/node_modules/@types/ws/node_modules/@types/node/buffer.d.ts +0 -1765
  548. package/node_modules/@types/ws/node_modules/@types/node/child_process.d.ts +0 -1366
  549. package/node_modules/@types/ws/node_modules/@types/node/cluster.d.ts +0 -432
  550. package/node_modules/@types/ws/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  551. package/node_modules/@types/ws/node_modules/@types/node/console.d.ts +0 -93
  552. package/node_modules/@types/ws/node_modules/@types/node/constants.d.ts +0 -14
  553. package/node_modules/@types/ws/node_modules/@types/node/crypto.d.ts +0 -4058
  554. package/node_modules/@types/ws/node_modules/@types/node/dgram.d.ts +0 -537
  555. package/node_modules/@types/ws/node_modules/@types/node/diagnostics_channel.d.ts +0 -552
  556. package/node_modules/@types/ws/node_modules/@types/node/dns/promises.d.ts +0 -497
  557. package/node_modules/@types/ws/node_modules/@types/node/dns.d.ts +0 -876
  558. package/node_modules/@types/ws/node_modules/@types/node/domain.d.ts +0 -150
  559. package/node_modules/@types/ws/node_modules/@types/node/events.d.ts +0 -1008
  560. package/node_modules/@types/ws/node_modules/@types/node/fs/promises.d.ts +0 -1468
  561. package/node_modules/@types/ws/node_modules/@types/node/fs.d.ts +0 -4780
  562. package/node_modules/@types/ws/node_modules/@types/node/globals.d.ts +0 -150
  563. package/node_modules/@types/ws/node_modules/@types/node/globals.typedarray.d.ts +0 -101
  564. package/node_modules/@types/ws/node_modules/@types/node/http.d.ts +0 -2147
  565. package/node_modules/@types/ws/node_modules/@types/node/http2.d.ts +0 -2485
  566. package/node_modules/@types/ws/node_modules/@types/node/https.d.ts +0 -400
  567. package/node_modules/@types/ws/node_modules/@types/node/index.d.ts +0 -117
  568. package/node_modules/@types/ws/node_modules/@types/node/inspector/promises.d.ts +0 -35
  569. package/node_modules/@types/ws/node_modules/@types/node/inspector.d.ts +0 -264
  570. package/node_modules/@types/ws/node_modules/@types/node/inspector.generated.d.ts +0 -4406
  571. package/node_modules/@types/ws/node_modules/@types/node/module.d.ts +0 -755
  572. package/node_modules/@types/ws/node_modules/@types/node/net.d.ts +0 -970
  573. package/node_modules/@types/ws/node_modules/@types/node/os.d.ts +0 -498
  574. package/node_modules/@types/ws/node_modules/@types/node/package.json +0 -155
  575. package/node_modules/@types/ws/node_modules/@types/node/path/posix.d.ts +0 -8
  576. package/node_modules/@types/ws/node_modules/@types/node/path/win32.d.ts +0 -8
  577. package/node_modules/@types/ws/node_modules/@types/node/path.d.ts +0 -178
  578. package/node_modules/@types/ws/node_modules/@types/node/perf_hooks.d.ts +0 -612
  579. package/node_modules/@types/ws/node_modules/@types/node/process.d.ts +0 -2204
  580. package/node_modules/@types/ws/node_modules/@types/node/punycode.d.ts +0 -89
  581. package/node_modules/@types/ws/node_modules/@types/node/querystring.d.ts +0 -139
  582. package/node_modules/@types/ws/node_modules/@types/node/quic.d.ts +0 -897
  583. package/node_modules/@types/ws/node_modules/@types/node/readline/promises.d.ts +0 -158
  584. package/node_modules/@types/ws/node_modules/@types/node/readline.d.ts +0 -507
  585. package/node_modules/@types/ws/node_modules/@types/node/repl.d.ts +0 -420
  586. package/node_modules/@types/ws/node_modules/@types/node/sea.d.ts +0 -47
  587. package/node_modules/@types/ws/node_modules/@types/node/sqlite.d.ts +0 -1068
  588. package/node_modules/@types/ws/node_modules/@types/node/stream/consumers.d.ts +0 -114
  589. package/node_modules/@types/ws/node_modules/@types/node/stream/iter.d.ts +0 -301
  590. package/node_modules/@types/ws/node_modules/@types/node/stream/promises.d.ts +0 -211
  591. package/node_modules/@types/ws/node_modules/@types/node/stream/web.d.ts +0 -300
  592. package/node_modules/@types/ws/node_modules/@types/node/stream.d.ts +0 -1774
  593. package/node_modules/@types/ws/node_modules/@types/node/string_decoder.d.ts +0 -27
  594. package/node_modules/@types/ws/node_modules/@types/node/test/reporters.d.ts +0 -59
  595. package/node_modules/@types/ws/node_modules/@types/node/test.d.ts +0 -2279
  596. package/node_modules/@types/ws/node_modules/@types/node/timers/promises.d.ts +0 -93
  597. package/node_modules/@types/ws/node_modules/@types/node/timers.d.ts +0 -149
  598. package/node_modules/@types/ws/node_modules/@types/node/tls.d.ts +0 -1193
  599. package/node_modules/@types/ws/node_modules/@types/node/trace_events.d.ts +0 -103
  600. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -462
  601. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
  602. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -36
  603. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/index.d.ts +0 -119
  604. package/node_modules/@types/ws/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
  605. package/node_modules/@types/ws/node_modules/@types/node/ts5.7/index.d.ts +0 -119
  606. package/node_modules/@types/ws/node_modules/@types/node/tty.d.ts +0 -225
  607. package/node_modules/@types/ws/node_modules/@types/node/url.d.ts +0 -556
  608. package/node_modules/@types/ws/node_modules/@types/node/util/types.d.ts +0 -558
  609. package/node_modules/@types/ws/node_modules/@types/node/util.d.ts +0 -1677
  610. package/node_modules/@types/ws/node_modules/@types/node/v8.d.ts +0 -980
  611. package/node_modules/@types/ws/node_modules/@types/node/vm.d.ts +0 -1136
  612. package/node_modules/@types/ws/node_modules/@types/node/wasi.d.ts +0 -131
  613. package/node_modules/@types/ws/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -59
  614. package/node_modules/@types/ws/node_modules/@types/node/web-globals/blob.d.ts +0 -23
  615. package/node_modules/@types/ws/node_modules/@types/node/web-globals/console.d.ts +0 -9
  616. package/node_modules/@types/ws/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
  617. package/node_modules/@types/ws/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  618. package/node_modules/@types/ws/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
  619. package/node_modules/@types/ws/node_modules/@types/node/web-globals/events.d.ts +0 -106
  620. package/node_modules/@types/ws/node_modules/@types/node/web-globals/fetch.d.ts +0 -69
  621. package/node_modules/@types/ws/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
  622. package/node_modules/@types/ws/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
  623. package/node_modules/@types/ws/node_modules/@types/node/web-globals/navigator.d.ts +0 -25
  624. package/node_modules/@types/ws/node_modules/@types/node/web-globals/performance.d.ts +0 -45
  625. package/node_modules/@types/ws/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  626. package/node_modules/@types/ws/node_modules/@types/node/web-globals/streams.d.ts +0 -115
  627. package/node_modules/@types/ws/node_modules/@types/node/web-globals/timers.d.ts +0 -44
  628. package/node_modules/@types/ws/node_modules/@types/node/web-globals/url.d.ts +0 -24
  629. package/node_modules/@types/ws/node_modules/@types/node/worker_threads.d.ts +0 -671
  630. package/node_modules/@types/ws/node_modules/@types/node/zlib/iter.d.ts +0 -131
  631. package/node_modules/@types/ws/node_modules/@types/node/zlib.d.ts +0 -589
  632. package/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
  633. package/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
  634. package/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
  635. package/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
  636. package/node_modules/typebox/build/type/action/_optional.d.mts +0 -19
  637. package/node_modules/typebox/build/type/action/_optional.mjs +0 -40
  638. package/node_modules/typebox/build/type/action/_readonly.d.mts +0 -19
  639. package/node_modules/typebox/build/type/action/_readonly.mjs +0 -40
  640. package/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
  641. package/node_modules/typebox/build/type/action/awaited.mjs +0 -15
  642. package/node_modules/typebox/build/type/action/options.d.mts +0 -11
  643. package/node_modules/typebox/build/type/action/options.mjs +0 -11
  644. package/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
  645. package/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
  646. package/node_modules/typebox/build/type/engine/enum/enum_to_union.d.mts +0 -14
  647. package/node_modules/typebox/build/type/engine/enum/enum_to_union.mjs +0 -24
  648. package/node_modules/typebox/build/type/engine/options/index.d.mts +0 -1
  649. package/node_modules/typebox/build/type/engine/options/index.mjs +0 -1
  650. package/node_modules/typebox/build/type/engine/options/instantiate.d.mts +0 -8
  651. package/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
  652. package/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
  653. package/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
  654. package/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
  655. package/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
  656. package/node_modules/typebox/build/type/extends/promise.mjs +0 -9
  657. package/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
  658. package/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
  659. package/node_modules/typebox/build/type/types/base.d.mts +0 -50
  660. package/node_modules/typebox/build/type/types/base.mjs +0 -84
  661. package/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
  662. package/node_modules/typebox/build/type/types/iterator.mjs +0 -28
  663. package/node_modules/typebox/build/type/types/promise.d.mts +0 -21
  664. package/node_modules/typebox/build/type/types/promise.mjs +0 -29
  665. package/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
  666. package/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
  667. package/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
  668. package/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
  669. package/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
  670. package/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
  671. package/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
  672. package/node_modules/typebox/build/value/create/from_base.mjs +0 -4
  673. package/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
  674. package/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
  675. package/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
  676. package/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
  677. package/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
  678. package/node_modules/typebox/build/value/default/from_base.mjs +0 -5
  679. package/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
  680. package/node_modules/typebox/build/value/mutate/error.mjs +0 -6
  681. package/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
  682. package/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
  683. package/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
  684. package/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
  685. package/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
  686. package/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
  687. package/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
  688. package/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
  689. package/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
  690. package/node_modules/typebox/build/value/mutate/index.mjs +0 -1
  691. package/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
  692. package/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
  693. package/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
  694. package/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
  695. /package/node_modules/typebox/build/type/engine/{awaited → with}/index.d.mts +0 -0
  696. /package/node_modules/typebox/build/type/engine/{awaited → with}/index.mjs +0 -0
@@ -1,22 +1,24 @@
1
- import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-BPCiCe8y.js";
1
+ import { a as resolveSlackAccount, l as resolveSlackOperationToken, p as resolveSlackBotToken } from "./accounts-BOJJiHSr.js";
2
2
  import { r as parseSlackTarget } from "./target-parsing-3jYH8LfB.js";
3
3
  import "./targets-Dll4NJgs.js";
4
- import { a as SLACK_TEXT_LIMIT, i as validateSlackBlocksArray, v as truncateSlackText } from "./reply-blocks-CfJqf7eq.js";
5
- import { t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
6
- import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-DG9cyk55.js";
4
+ import { a as SLACK_TEXT_LIMIT, b as truncateSlackText, i as validateSlackBlocksArray } from "./reply-blocks-BGQ6zSqM.js";
5
+ import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
6
+ import { a as getSlackWriteClient, n as createSlackTokenCacheKey, r as createSlackWebClient } from "./client-DGxwSL7f.js";
7
7
  import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
8
- import { i as loadOutboundMediaFromUrl } from "./runtime-api-DHJ8ntLr.js";
8
+ import { t as markdownToSlackMrkdwnChunks } from "./format-YCNoNkM2.js";
9
+ import { i as loadOutboundMediaFromUrl } from "./runtime-api-CEmqYxR-.js";
9
10
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
10
11
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
11
- import { markdownToIR, renderMarkdownIRChunksWithinLimit, renderMarkdownWithMarkers } from "openclaw/plugin-sdk/text-chunking";
12
+ import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
13
+ import { createHash, createHmac, timingSafeEqual } from "node:crypto";
12
14
  import { withTrustedEnvProxyGuardedFetchMode } from "openclaw/plugin-sdk/fetch-runtime";
13
15
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
14
- import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
16
+ import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
15
17
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
16
18
  import { chunkMarkdownTextWithMode, isSilentReplyText, resolveChunkMode, resolveTextChunkLimit } from "openclaw/plugin-sdk/reply-chunking";
17
19
  import { resolveTextChunksWithFallback } from "openclaw/plugin-sdk/reply-payload";
18
20
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
19
- import { resolveGlobalDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
21
+ import { createPersistentDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
20
22
  //#region extensions/slack/src/blocks-fallback.ts
21
23
  function cleanCandidate(value) {
22
24
  if (typeof value !== "string") return;
@@ -76,185 +78,33 @@ function buildSlackBlocksFallbackText(blocks) {
76
78
  return "Shared a Block Kit message";
77
79
  }
78
80
  //#endregion
79
- //#region extensions/slack/src/format.ts
80
- function escapeSlackMrkdwnSegment(text) {
81
- return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
82
- }
83
- const SLACK_ANGLE_TOKEN_RE = /<[^>\n]+>/g;
84
- function isAllowedSlackAngleToken(token) {
85
- if (!token.startsWith("<") || !token.endsWith(">")) return false;
86
- const inner = token.slice(1, -1);
87
- return inner.startsWith("@") || inner.startsWith("#") || inner.startsWith("!") || inner.startsWith("mailto:") || inner.startsWith("tel:") || inner.startsWith("http://") || inner.startsWith("https://") || inner.startsWith("slack://");
88
- }
89
- function escapeSlackMrkdwnContent(text) {
90
- if (!text) return "";
91
- if (!text.includes("&") && !text.includes("<") && !text.includes(">")) return text;
92
- SLACK_ANGLE_TOKEN_RE.lastIndex = 0;
93
- const out = [];
94
- let lastIndex = 0;
95
- for (let match = SLACK_ANGLE_TOKEN_RE.exec(text); match; match = SLACK_ANGLE_TOKEN_RE.exec(text)) {
96
- const matchIndex = match.index ?? 0;
97
- out.push(escapeSlackMrkdwnSegment(text.slice(lastIndex, matchIndex)));
98
- const token = match[0] ?? "";
99
- out.push(isAllowedSlackAngleToken(token) ? token : escapeSlackMrkdwnSegment(token));
100
- lastIndex = matchIndex + token.length;
101
- }
102
- out.push(escapeSlackMrkdwnSegment(text.slice(lastIndex)));
103
- return out.join("");
104
- }
105
- function escapeSlackMrkdwnText(text) {
106
- if (!text) return "";
107
- if (!text.includes("&") && !text.includes("<") && !text.includes(">")) return text;
108
- return text.split("\n").map((line) => {
109
- if (line.startsWith("> ")) return `> ${escapeSlackMrkdwnContent(line.slice(2))}`;
110
- return escapeSlackMrkdwnContent(line);
111
- }).join("\n");
112
- }
113
- function buildSlackLink(link, text) {
114
- const href = link.href.trim();
115
- if (!href) return null;
116
- const trimmedLabel = text.slice(link.start, link.end).trim();
117
- const comparableHref = href.startsWith("mailto:") ? href.slice(7) : href;
118
- if (!(trimmedLabel.length > 0 && trimmedLabel !== href && trimmedLabel !== comparableHref)) return null;
119
- const safeHref = escapeSlackMrkdwnSegment(href);
120
- return {
121
- start: link.start,
122
- end: link.end,
123
- open: `<${safeHref}|`,
124
- close: ">"
125
- };
126
- }
127
- function buildSlackRenderOptions() {
128
- return {
129
- styleMarkers: {
130
- bold: {
131
- open: "*",
132
- close: "*"
133
- },
134
- italic: {
135
- open: "_",
136
- close: "_"
137
- },
138
- strikethrough: {
139
- open: "~",
140
- close: "~"
141
- },
142
- code: {
143
- open: "`",
144
- close: "`"
145
- },
146
- code_block: {
147
- open: "```\n",
148
- close: "```"
149
- }
150
- },
151
- escapeText: escapeSlackMrkdwnText,
152
- buildLink: buildSlackLink
153
- };
154
- }
155
- function markdownToSlackMrkdwn(markdown, options = {}) {
156
- return renderMarkdownWithMarkers(markdownToIR(markdown ?? "", {
157
- linkify: false,
158
- autolink: false,
159
- headingStyle: "bold",
160
- blockquotePrefix: "> ",
161
- tableMode: options.tableMode
162
- }), buildSlackRenderOptions());
163
- }
164
- function normalizeSlackOutboundText(markdown) {
165
- return markdownToSlackMrkdwn(markdown ?? "");
166
- }
167
- function markdownToSlackMrkdwnChunks(markdown, limit, options = {}) {
168
- const ir = markdownToIR(markdown ?? "", {
169
- linkify: false,
170
- autolink: false,
171
- headingStyle: "bold",
172
- blockquotePrefix: "> ",
173
- tableMode: options.tableMode
174
- });
175
- const renderOptions = buildSlackRenderOptions();
176
- return renderMarkdownIRChunksWithinLimit({
177
- ir,
178
- limit,
179
- renderChunk: (chunk) => renderMarkdownWithMarkers(chunk, renderOptions),
180
- measureRendered: (rendered) => rendered.length
181
- }).map(({ rendered }) => rendered);
182
- }
183
- //#endregion
184
81
  //#region extensions/slack/src/sent-thread-cache.ts
185
- /**
186
- * In-memory cache of Slack threads the bot has participated in.
187
- * Used to auto-respond in threads without requiring @mention after the first reply.
188
- * Follows a similar TTL pattern to the MS Teams and Telegram sent-message caches.
189
- */
190
- const TTL_MS = 1440 * 60 * 1e3;
191
- const MAX_ENTRIES = 5e3;
192
- const PERSISTENT_MAX_ENTRIES = 1e3;
193
- const PERSISTENT_NAMESPACE = "slack.thread-participation";
194
- const threadParticipation = resolveGlobalDedupeCache(Symbol.for("openclaw.slackThreadParticipation"), {
195
- ttlMs: TTL_MS,
196
- maxSize: MAX_ENTRIES
82
+ const threadParticipation = createPersistentDedupeCache({
83
+ globalKey: Symbol.for("openclaw.slackThreadParticipation"),
84
+ ttlMs: 1440 * 60 * 1e3,
85
+ maxSize: 5e3,
86
+ persistent: {
87
+ namespace: "slack.thread-participation",
88
+ maxEntries: 1e3,
89
+ openStore: (options) => getOptionalSlackRuntime()?.state.openKeyedStore(options),
90
+ logError: (error) => {
91
+ try {
92
+ getOptionalSlackRuntime()?.logging.getChildLogger({
93
+ plugin: "slack",
94
+ feature: "thread-participation-state"
95
+ }).warn("Slack persistent thread participation state failed", { error: String(error) });
96
+ } catch {}
97
+ }
98
+ }
197
99
  });
198
- let persistentStore;
199
- let persistentStoreDisabled = false;
200
100
  function makeKey(accountId, channelId, threadTs) {
201
101
  return `${accountId}:${channelId}:${threadTs}`;
202
102
  }
203
- function reportPersistentThreadParticipationError(error) {
204
- try {
205
- getOptionalSlackRuntime()?.logging.getChildLogger({
206
- plugin: "slack",
207
- feature: "thread-participation-state"
208
- }).warn("Slack persistent thread participation state failed", { error: String(error) });
209
- } catch {}
210
- }
211
- function disablePersistentThreadParticipation(error) {
212
- persistentStoreDisabled = true;
213
- persistentStore = void 0;
214
- reportPersistentThreadParticipationError(error);
215
- }
216
- function getPersistentThreadParticipationStore() {
217
- if (persistentStoreDisabled) return;
218
- if (persistentStore) return persistentStore;
219
- const runtime = getOptionalSlackRuntime();
220
- if (!runtime) return;
221
- try {
222
- persistentStore = runtime.state.openKeyedStore({
223
- namespace: PERSISTENT_NAMESPACE,
224
- maxEntries: PERSISTENT_MAX_ENTRIES,
225
- defaultTtlMs: TTL_MS
226
- });
227
- return persistentStore;
228
- } catch (error) {
229
- disablePersistentThreadParticipation(error);
230
- return;
231
- }
232
- }
233
- function rememberPersistentThreadParticipation(params) {
234
- const store = getPersistentThreadParticipationStore();
235
- if (!store) return;
236
- store.register(params.key, {
237
- ...params.agentId ? { agentId: params.agentId } : {},
238
- repliedAt: Date.now()
239
- }).catch(disablePersistentThreadParticipation);
240
- }
241
- async function lookupPersistentThreadParticipation(key) {
242
- const store = getPersistentThreadParticipationStore();
243
- if (!store) return false;
244
- try {
245
- return Boolean(await store.lookup(key));
246
- } catch (error) {
247
- disablePersistentThreadParticipation(error);
248
- return false;
249
- }
250
- }
251
103
  function recordSlackThreadParticipation(accountId, channelId, threadTs, opts) {
252
104
  if (!accountId || !channelId || !threadTs) return;
253
- const key = makeKey(accountId, channelId, threadTs);
254
- threadParticipation.check(key);
255
- rememberPersistentThreadParticipation({
256
- key,
257
- agentId: opts?.agentId
105
+ threadParticipation.register(makeKey(accountId, channelId, threadTs), {
106
+ ...opts?.agentId ? { agentId: opts.agentId } : {},
107
+ repliedAt: Date.now()
258
108
  });
259
109
  }
260
110
  function hasSlackThreadParticipation(accountId, channelId, threadTs) {
@@ -263,16 +113,10 @@ function hasSlackThreadParticipation(accountId, channelId, threadTs) {
263
113
  }
264
114
  async function hasSlackThreadParticipationWithPersistence(params) {
265
115
  if (!params.accountId || !params.channelId || !params.threadTs) return false;
266
- const key = makeKey(params.accountId, params.channelId, params.threadTs);
267
- if (threadParticipation.peek(key)) return true;
268
- const found = await lookupPersistentThreadParticipation(key);
269
- if (found) threadParticipation.check(key);
270
- return found;
116
+ return await threadParticipation.lookup(makeKey(params.accountId, params.channelId, params.threadTs));
271
117
  }
272
118
  function clearSlackThreadParticipationCache() {
273
- threadParticipation.clear();
274
- persistentStore = void 0;
275
- persistentStoreDisabled = false;
119
+ threadParticipation.clearForTest();
276
120
  }
277
121
  //#endregion
278
122
  //#region extensions/slack/src/send.ts
@@ -285,15 +129,24 @@ const SLACK_UPLOAD_SSRF_POLICY = {
285
129
  allowRfc2544BenchmarkRange: true
286
130
  };
287
131
  const SLACK_DM_CHANNEL_CACHE_MAX = 1024;
288
- const SLACK_DNS_RETRY_CODES = new Set([
132
+ const SLACK_DNS_RETRY_CODES = /* @__PURE__ */ new Set([
289
133
  "EAI_AGAIN",
290
134
  "ENOTFOUND",
291
135
  "UND_ERR_DNS_RESOLVE_FAILED"
292
136
  ]);
293
137
  const SLACK_DNS_RETRY_ATTEMPTS = 2;
294
138
  const SLACK_DNS_RETRY_BASE_DELAY_MS = 250;
139
+ const SLACK_DELIVERY_METADATA_EVENT = "openclaw_delivery";
140
+ const SLACK_DELIVERY_METADATA_KEY = "openclaw_delivery_id";
141
+ const SLACK_DELIVERY_METADATA_PART_INDEX_KEY = "openclaw_delivery_part_index";
142
+ const SLACK_DELIVERY_METADATA_PART_COUNT_KEY = "openclaw_delivery_part_count";
143
+ const SLACK_DELIVERY_METADATA_SIGNATURE_KEY = "openclaw_delivery_signature";
144
+ const SLACK_RECONCILE_LOOKBACK_MS = 3e4;
145
+ const SLACK_RECONCILE_CLOCK_SKEW_MS = 5 * 6e4;
146
+ const SLACK_RECONCILE_LIMIT = 100;
147
+ const SLACK_RECONCILE_MAX_PAGES = 10;
295
148
  const slackDmChannelCache = /* @__PURE__ */ new Map();
296
- const slackSendQueues = /* @__PURE__ */ new Map();
149
+ const slackSendQueue = new KeyedAsyncQueue();
297
150
  const slackDefaultSendIdentities = /* @__PURE__ */ new Map();
298
151
  function hasCustomIdentity(identity) {
299
152
  return Boolean(identity?.username || identity?.iconUrl || identity?.iconEmoji);
@@ -427,29 +280,50 @@ function isSlackCustomizeScopeError(err) {
427
280
  if (normalizeLowercaseStringOrEmpty(normalizeOptionalString(data?.needed))?.includes("chat:write.customize")) return true;
428
281
  return [...normalizeSlackScopeList(data?.response_metadata?.scopes), ...normalizeSlackScopeList(data?.response_metadata?.acceptedScopes)].map((scope) => normalizeLowercaseStringOrEmpty(scope)).includes("chat:write.customize");
429
282
  }
283
+ function isSlackCustomIdentityRejectedError(err) {
284
+ if (isSlackCustomizeScopeError(err)) return true;
285
+ const code = normalizeLowercaseStringOrEmpty(normalizeOptionalString(getSlackWebApiErrorData(err)?.error));
286
+ return code === "invalid_arguments" || code === "invalid_arg_name";
287
+ }
430
288
  async function postSlackMessageBestEffort(params) {
431
289
  const basePayload = buildSlackPostMessagePayload(params);
432
290
  const postChatMessage = params.client.chat.postMessage.bind(params.client.chat);
291
+ const post = async (payload, identity) => ({
292
+ response: await withSlackDnsRequestRetry("chat.postMessage", () => postChatMessage(payload)),
293
+ identity
294
+ });
433
295
  try {
434
296
  const identity = params.identity;
435
- if (identity?.iconUrl) return await withSlackDnsRequestRetry("chat.postMessage", () => postChatMessage({
297
+ if (identity?.iconUrl) return await post({
436
298
  ...basePayload,
437
299
  ...identity.username ? { username: identity.username } : {},
438
300
  icon_url: identity.iconUrl
439
- }));
440
- if (identity?.iconEmoji) return await withSlackDnsRequestRetry("chat.postMessage", () => postChatMessage({
301
+ }, identity);
302
+ if (identity?.iconEmoji) return await post({
441
303
  ...basePayload,
442
304
  ...identity.username ? { username: identity.username } : {},
443
305
  icon_emoji: identity.iconEmoji
444
- }));
445
- return await withSlackDnsRequestRetry("chat.postMessage", () => postChatMessage({
306
+ }, identity);
307
+ return await post({
446
308
  ...basePayload,
447
309
  ...identity?.username ? { username: identity.username } : {}
448
- }));
310
+ }, identity);
449
311
  } catch (err) {
450
- if (!hasCustomIdentity(params.identity) || !isSlackCustomizeScopeError(err)) throw err;
451
- logVerbose("slack send: missing chat:write.customize, retrying without custom identity");
452
- return withSlackDnsRequestRetry("chat.postMessage", () => postChatMessage(basePayload));
312
+ const identity = params.identity;
313
+ if (!identity || !hasCustomIdentity(identity) || !isSlackCustomIdentityRejectedError(err)) throw err;
314
+ if (!isSlackCustomizeScopeError(err) && identity.username && (identity.iconUrl || identity.iconEmoji)) {
315
+ logVerbose("slack send: custom icon rejected, retrying with username only");
316
+ try {
317
+ return await post({
318
+ ...basePayload,
319
+ username: identity.username
320
+ }, { username: identity.username });
321
+ } catch (retryError) {
322
+ if (!isSlackCustomIdentityRejectedError(retryError)) throw retryError;
323
+ }
324
+ }
325
+ logVerbose("slack send: custom identity rejected, retrying without custom identity");
326
+ return post(basePayload);
453
327
  }
454
328
  }
455
329
  function resolvePostedMessageThreadTs(response) {
@@ -493,20 +367,7 @@ function createSlackSendQueueKey(params) {
493
367
  return `${params.accountId}:${createSlackTokenCacheKey(params.token)}:${recipientKey}:${params.threadTs ?? ""}`;
494
368
  }
495
369
  async function runQueuedSlackSend(key, task) {
496
- const previous = slackSendQueues.get(key) ?? Promise.resolve();
497
- let releaseCurrent;
498
- const current = new Promise((resolve) => {
499
- releaseCurrent = resolve;
500
- });
501
- const queuedCurrent = previous.catch(() => void 0).then(() => current);
502
- slackSendQueues.set(key, queuedCurrent);
503
- await previous.catch(() => void 0);
504
- try {
505
- return await task();
506
- } finally {
507
- releaseCurrent();
508
- if (slackSendQueues.get(key) === queuedCurrent) slackSendQueues.delete(key);
509
- }
370
+ return await slackSendQueue.enqueue(key, task);
510
371
  }
511
372
  function createSlackDmCacheKey(params) {
512
373
  return `${params.accountId ?? "default"}:${createSlackTokenCacheKey(params.token)}:${params.recipientId}`;
@@ -551,6 +412,268 @@ async function resolveChannelId(client, recipient, params) {
551
412
  cacheHit: false
552
413
  };
553
414
  }
415
+ async function resolveSlackDmChannelId(params) {
416
+ return (await resolveChannelId(params.client, {
417
+ kind: "user",
418
+ id: params.userId
419
+ }, {
420
+ accountId: params.accountId,
421
+ token: params.token
422
+ })).channelId;
423
+ }
424
+ function createSlackDeliveryMetadataId(queueId) {
425
+ const normalized = normalizeOptionalString(queueId);
426
+ if (!normalized) return;
427
+ return createHash("sha256").update(normalized).digest("base64url");
428
+ }
429
+ function createSlackDeliveryMetadataSignature(params) {
430
+ return createHmac("sha256", params.queueId).update(JSON.stringify([
431
+ SLACK_DELIVERY_METADATA_EVENT,
432
+ params.channelId,
433
+ params.threadTs ?? "",
434
+ params.partIndex,
435
+ params.partCount
436
+ ])).digest("base64url");
437
+ }
438
+ function matchesSlackDeliveryMetadataSignature(actual, expected) {
439
+ if (typeof actual !== "string" || actual.length !== expected.length) return false;
440
+ return timingSafeEqual(Buffer.from(actual), Buffer.from(expected));
441
+ }
442
+ function withSlackDeliveryMetadata(metadata, params) {
443
+ const queueId = normalizeOptionalString(params.queueId);
444
+ const deliveryId = createSlackDeliveryMetadataId(queueId);
445
+ if (!queueId || !deliveryId) return metadata;
446
+ const marker = {
447
+ [SLACK_DELIVERY_METADATA_KEY]: deliveryId,
448
+ [SLACK_DELIVERY_METADATA_PART_INDEX_KEY]: params.partIndex,
449
+ [SLACK_DELIVERY_METADATA_PART_COUNT_KEY]: params.partCount,
450
+ [SLACK_DELIVERY_METADATA_SIGNATURE_KEY]: createSlackDeliveryMetadataSignature({
451
+ queueId,
452
+ channelId: params.channelId,
453
+ threadTs: params.threadTs,
454
+ partIndex: params.partIndex,
455
+ partCount: params.partCount
456
+ })
457
+ };
458
+ if (!metadata) return {
459
+ event_type: SLACK_DELIVERY_METADATA_EVENT,
460
+ event_payload: marker
461
+ };
462
+ return {
463
+ ...metadata,
464
+ event_payload: {
465
+ ...metadata.event_payload,
466
+ ...marker
467
+ }
468
+ };
469
+ }
470
+ function formatSlackTimestampFromMs(ms) {
471
+ return (Math.max(0, ms) / 1e3).toFixed(6);
472
+ }
473
+ function asSlackConversationMessages(response) {
474
+ return Array.isArray(response.messages) ? response.messages.filter((message) => typeof message === "object" && message !== null && !Array.isArray(message)) : [];
475
+ }
476
+ const SLACK_RECONCILIATION_EVIDENCE_RANK = {
477
+ none: 0,
478
+ partial: 1,
479
+ conflict: 2,
480
+ complete: 3
481
+ };
482
+ function findSlackConversationDeliveryParts(params) {
483
+ const matches = [];
484
+ for (const message of params.messages) {
485
+ if (!message.metadata || typeof message.metadata !== "object" || Array.isArray(message.metadata)) continue;
486
+ const eventPayload = message.metadata.event_payload;
487
+ if (!eventPayload || typeof eventPayload !== "object" || Array.isArray(eventPayload)) continue;
488
+ const marker = eventPayload;
489
+ if (marker[SLACK_DELIVERY_METADATA_KEY] !== params.deliveryId) continue;
490
+ const partIndex = marker[SLACK_DELIVERY_METADATA_PART_INDEX_KEY];
491
+ const partCount = marker[SLACK_DELIVERY_METADATA_PART_COUNT_KEY];
492
+ if (typeof partIndex !== "number" || !Number.isInteger(partIndex) || typeof partCount !== "number" || !Number.isInteger(partCount) || partIndex < 0 || partCount <= 0 || partIndex >= partCount) continue;
493
+ const expectedSignature = createSlackDeliveryMetadataSignature({
494
+ queueId: params.queueId,
495
+ channelId: params.channelId,
496
+ threadTs: params.threadTs,
497
+ partIndex,
498
+ partCount
499
+ });
500
+ if (!matchesSlackDeliveryMetadataSignature(marker[SLACK_DELIVERY_METADATA_SIGNATURE_KEY], expectedSignature)) continue;
501
+ const messageId = typeof message.ts === "string" ? normalizeSlackThreadTsCandidate(message.ts) : void 0;
502
+ if (!messageId) continue;
503
+ const threadTs = typeof message.thread_ts === "string" ? normalizeSlackThreadTsCandidate(message.thread_ts) : void 0;
504
+ matches.push({
505
+ messageId,
506
+ partIndex,
507
+ partCount,
508
+ ...threadTs ? { threadTs } : {}
509
+ });
510
+ }
511
+ return matches;
512
+ }
513
+ async function scanSlackConversationForDelivery(params) {
514
+ const threadTs = params.threadTs;
515
+ let cursor;
516
+ let expectedPartCount;
517
+ const deliveryParts = /* @__PURE__ */ new Map();
518
+ for (let page = 0; page < SLACK_RECONCILE_MAX_PAGES; page += 1) {
519
+ const response = threadTs ? await withSlackDnsRequestRetry("conversations.replies", () => params.client.conversations.replies({
520
+ channel: params.channelId,
521
+ ts: threadTs,
522
+ oldest: params.oldest,
523
+ latest: params.latest,
524
+ include_all_metadata: true,
525
+ limit: SLACK_RECONCILE_LIMIT,
526
+ ...cursor ? { cursor } : {}
527
+ })) : await withSlackDnsRequestRetry("conversations.history", () => params.client.conversations.history({
528
+ channel: params.channelId,
529
+ oldest: params.oldest,
530
+ latest: params.latest,
531
+ include_all_metadata: true,
532
+ limit: SLACK_RECONCILE_LIMIT,
533
+ ...cursor ? { cursor } : {}
534
+ }));
535
+ const matches = findSlackConversationDeliveryParts({
536
+ messages: asSlackConversationMessages(response),
537
+ queueId: params.queueId,
538
+ deliveryId: params.deliveryId,
539
+ channelId: params.channelId,
540
+ ...threadTs ? { threadTs } : {}
541
+ });
542
+ for (const match of matches) {
543
+ expectedPartCount ??= match.partCount;
544
+ const existing = deliveryParts.get(match.partIndex);
545
+ if (expectedPartCount !== match.partCount || existing && existing.messageId !== match.messageId) return {
546
+ reconciliation: {
547
+ status: "unresolved",
548
+ error: "Slack history contains conflicting durable delivery markers",
549
+ retryable: false
550
+ },
551
+ evidence: "conflict"
552
+ };
553
+ deliveryParts.set(match.partIndex, match);
554
+ }
555
+ if (expectedPartCount !== void 0 && deliveryParts.size === expectedPartCount) {
556
+ const orderedParts = Array.from({ length: expectedPartCount }, (_, index) => deliveryParts.get(index));
557
+ if (orderedParts.some((part) => !part)) return {
558
+ reconciliation: {
559
+ status: "unresolved",
560
+ error: "Slack history contains an invalid durable delivery marker set",
561
+ retryable: false
562
+ },
563
+ evidence: "conflict"
564
+ };
565
+ const completeParts = orderedParts;
566
+ const reconciledThreadTs = completeParts[0]?.threadTs ?? params.threadTs;
567
+ const platformMessageIds = completeParts.map((part) => part.messageId);
568
+ return {
569
+ reconciliation: {
570
+ status: "sent",
571
+ messageId: platformMessageIds[0],
572
+ receipt: createSlackSendReceipt({
573
+ platformMessageIds,
574
+ channelId: params.channelId,
575
+ kind: "text",
576
+ ...reconciledThreadTs ? { threadTs: reconciledThreadTs } : {}
577
+ })
578
+ },
579
+ evidence: "complete"
580
+ };
581
+ }
582
+ const nextCursor = normalizeOptionalString(response.response_metadata?.next_cursor);
583
+ if (!nextCursor) {
584
+ if (response.has_more === true) break;
585
+ return {
586
+ reconciliation: {
587
+ status: "unresolved",
588
+ error: deliveryParts.size > 0 ? "Slack history contains an incomplete durable delivery marker set" : "Slack history contains no exact durable delivery marker",
589
+ retryable: params.retryCount < 2
590
+ },
591
+ evidence: deliveryParts.size > 0 ? "partial" : "none"
592
+ };
593
+ }
594
+ cursor = nextCursor;
595
+ }
596
+ return {
597
+ reconciliation: {
598
+ status: "unresolved",
599
+ error: "Slack unknown-send reconciliation exceeded its history page budget",
600
+ retryable: params.retryCount < 2
601
+ },
602
+ evidence: deliveryParts.size > 0 ? "partial" : "none"
603
+ };
604
+ }
605
+ async function reconcileSlackUnknownSend(ctx, opts) {
606
+ const account = resolveSlackAccount({
607
+ cfg: requireRuntimeConfig(ctx.cfg, "Slack delivery reconciliation"),
608
+ accountId: ctx.accountId ?? void 0
609
+ });
610
+ const deliveryId = createSlackDeliveryMetadataId(ctx.queueId);
611
+ if (!deliveryId) return {
612
+ status: "unresolved",
613
+ error: "Slack unknown-send reconciliation requires a durable delivery id",
614
+ retryable: false
615
+ };
616
+ const readToken = resolveSlackOperationToken(account, "read");
617
+ if (!readToken) return {
618
+ status: "unresolved",
619
+ error: `Slack read token missing for account "${account.accountId}"`,
620
+ retryable: false
621
+ };
622
+ const recipient = parseRecipient(ctx.to);
623
+ const userRecipient = isSlackUserRecipient(recipient);
624
+ const writeToken = resolveSlackOperationToken(account, "write");
625
+ if (userRecipient && !writeToken) return {
626
+ status: "unresolved",
627
+ error: `Slack write token missing for direct-message reconciliation on account "${account.accountId}"`,
628
+ retryable: false
629
+ };
630
+ const readClient = opts?.client ?? createSlackWebClient(readToken);
631
+ const writeClient = opts?.client ?? (writeToken ? getSlackWriteClient(writeToken) : void 0);
632
+ const payloadReplyToId = ctx.payloads[0]?.replyToId;
633
+ const threadTs = resolveSlackThreadTsValue({
634
+ replyToId: Object.hasOwn(ctx, "effectiveReplyToId") ? normalizeOptionalString(ctx.effectiveReplyToId) : payloadReplyToId != null ? normalizeOptionalString(payloadReplyToId) : ctx.replyToMode === "off" ? void 0 : normalizeOptionalString(ctx.replyToId),
635
+ threadId: ctx.threadId
636
+ });
637
+ const searchStartedAt = ctx.platformSendStartedAt ?? ctx.enqueuedAt;
638
+ const oldest = formatSlackTimestampFromMs(searchStartedAt - SLACK_RECONCILE_LOOKBACK_MS - SLACK_RECONCILE_CLOCK_SKEW_MS);
639
+ const latest = formatSlackTimestampFromMs(searchStartedAt + SLACK_RECONCILE_CLOCK_SKEW_MS);
640
+ try {
641
+ const channelClient = userRecipient ? writeClient : readClient;
642
+ const channelToken = userRecipient ? writeToken : readToken;
643
+ if (!channelClient || !channelToken) throw new Error(`Slack channel resolution token missing for account "${account.accountId}"`);
644
+ const { channelId } = await resolveChannelId(channelClient, recipient, {
645
+ accountId: account.accountId,
646
+ token: channelToken
647
+ });
648
+ const lookupClients = opts?.client ? [opts.client] : [readClient, ...writeClient && writeToken !== readToken ? [writeClient] : []];
649
+ let lookupError;
650
+ let bestUnresolvedScan;
651
+ for (const lookupClient of lookupClients) try {
652
+ const scan = await scanSlackConversationForDelivery({
653
+ client: lookupClient,
654
+ channelId,
655
+ ...threadTs ? { threadTs } : {},
656
+ oldest,
657
+ latest,
658
+ queueId: ctx.queueId,
659
+ deliveryId,
660
+ retryCount: ctx.retryCount
661
+ });
662
+ if (scan.reconciliation.status === "sent") return scan.reconciliation;
663
+ if (!bestUnresolvedScan || SLACK_RECONCILIATION_EVIDENCE_RANK[scan.evidence] > SLACK_RECONCILIATION_EVIDENCE_RANK[bestUnresolvedScan.evidence]) bestUnresolvedScan = scan;
664
+ } catch (err) {
665
+ lookupError = err;
666
+ }
667
+ if (bestUnresolvedScan) return bestUnresolvedScan.reconciliation;
668
+ throw lookupError;
669
+ } catch (err) {
670
+ return {
671
+ status: "unresolved",
672
+ error: readSlackRequestErrorMessage(enrichSlackWebApiError(err)),
673
+ retryable: ctx.retryCount < 3
674
+ };
675
+ }
676
+ }
554
677
  async function uploadSlackFile(params) {
555
678
  const { buffer, contentType, fileName } = await loadOutboundMediaFromUrl(params.mediaUrl, {
556
679
  maxBytes: params.maxBytes,
@@ -582,6 +705,7 @@ async function uploadSlackFile(params) {
582
705
  } finally {
583
706
  await release();
584
707
  }
708
+ await params.onPlatformSendDispatch?.();
585
709
  const completeResp = await withSlackDnsRequestRetry("files.completeUploadExternal", () => params.client.files.completeUploadExternal({
586
710
  files: [{
587
711
  id: uploadFileId,
@@ -658,7 +782,7 @@ async function sendMessageSlackQueuedInner(params) {
658
782
  unfurlLinks: account.config.unfurlLinks,
659
783
  unfurlMedia: account.config.unfurlMedia
660
784
  };
661
- const directUserPostChannelId = resolveDirectUserPostChannelId({
785
+ const directUserPostChannelId = opts.deliveryQueueId ? void 0 : resolveDirectUserPostChannelId({
662
786
  recipient,
663
787
  hasMedia: Boolean(opts.mediaUrl),
664
788
  ...opts.threadTs ? { threadTs: opts.threadTs } : {}
@@ -667,12 +791,18 @@ async function sendMessageSlackQueuedInner(params) {
667
791
  accountId: account.accountId,
668
792
  token
669
793
  });
794
+ const reportDelivery = async (result) => {
795
+ await opts.onDeliveryResult?.(result);
796
+ return result;
797
+ };
670
798
  if (blocks) {
671
799
  if (opts.mediaUrl) throw new Error("Slack send does not support blocks with mediaUrl");
672
- const response = await postSlackMessageBestEffort({
800
+ const fallbackText = truncateSlackText(trimmedMessage || buildSlackBlocksFallbackText(blocks), SLACK_TEXT_LIMIT);
801
+ await opts.onPlatformSendDispatch?.();
802
+ const { response } = await postSlackMessageBestEffort({
673
803
  client,
674
804
  channelId,
675
- text: truncateSlackText(trimmedMessage || buildSlackBlocksFallbackText(blocks), SLACK_TEXT_LIMIT),
805
+ text: fallbackText,
676
806
  threadTs: opts.threadTs,
677
807
  replyBroadcast: opts.replyBroadcast,
678
808
  identity,
@@ -683,7 +813,7 @@ async function sendMessageSlackQueuedInner(params) {
683
813
  const messageId = response.ts ?? "unknown";
684
814
  const deliveredChannelId = resolvePostedMessageChannelId(response, channelId);
685
815
  const deliveredThreadTs = resolvePostedMessageThreadTs(response) ?? normalizeSlackThreadTsCandidate(opts.threadTs);
686
- return {
816
+ return await reportDelivery({
687
817
  messageId,
688
818
  channelId: deliveredChannelId,
689
819
  threadTs: deliveredThreadTs,
@@ -693,7 +823,7 @@ async function sendMessageSlackQueuedInner(params) {
693
823
  kind: "card",
694
824
  threadTs: deliveredThreadTs
695
825
  })
696
- };
826
+ });
697
827
  }
698
828
  const textLimit = resolveTextChunkLimit(cfg, "slack", account.accountId, { fallbackLimit: SLACK_TEXT_LIMIT });
699
829
  const chunkLimit = Math.min(textLimit, SLACK_TEXT_LIMIT);
@@ -723,26 +853,63 @@ async function sendMessageSlackQueuedInner(params) {
723
853
  mediaReadFile: opts.mediaReadFile,
724
854
  caption: firstChunk,
725
855
  threadTs: opts.threadTs,
726
- maxBytes: mediaMaxBytes
856
+ maxBytes: mediaMaxBytes,
857
+ onPlatformSendDispatch: opts.onPlatformSendDispatch
727
858
  });
728
859
  sentMessageIds.push(lastMessageId);
860
+ await reportDelivery({
861
+ messageId: lastMessageId,
862
+ channelId,
863
+ threadTs: normalizeSlackThreadTsCandidate(opts.threadTs),
864
+ receipt: createSlackSendReceipt({
865
+ platformMessageIds: [lastMessageId],
866
+ channelId,
867
+ kind: "media",
868
+ threadTs: normalizeSlackThreadTsCandidate(opts.threadTs)
869
+ })
870
+ });
729
871
  chunksToPost = rest;
730
872
  } else chunksToPost = resolvedChunks.length ? resolvedChunks : [""];
731
- for (const chunk of chunksToPost) {
732
- const response = await postSlackMessageBestEffort({
873
+ let sendIdentity = identity;
874
+ for (const [partIndex, chunk] of chunksToPost.entries()) {
875
+ const baseMetadata = sentMessageIds.length === 0 ? opts.metadata : void 0;
876
+ const metadata = opts.mediaUrl ? baseMetadata : withSlackDeliveryMetadata(baseMetadata, {
877
+ queueId: opts.deliveryQueueId,
878
+ channelId,
879
+ threadTs: opts.threadTs,
880
+ partIndex,
881
+ partCount: chunksToPost.length
882
+ });
883
+ if (partIndex === 0 && !opts.mediaUrl) await opts.onPlatformSendDispatch?.();
884
+ const posted = await postSlackMessageBestEffort({
733
885
  client,
734
886
  channelId,
735
887
  text: chunk,
736
888
  threadTs: opts.threadTs,
737
889
  replyBroadcast: sentMessageIds.length === 0 ? opts.replyBroadcast : void 0,
738
- identity,
739
- metadata: sentMessageIds.length === 0 ? opts.metadata : void 0,
890
+ identity: sendIdentity,
891
+ metadata,
740
892
  unfurl
741
893
  });
894
+ const response = posted.response;
895
+ sendIdentity = posted.identity;
742
896
  lastMessageId = response.ts ?? lastMessageId;
743
897
  deliveredChannelId = resolvePostedMessageChannelId(response, deliveredChannelId);
744
898
  canonicalDeliveredThreadTs ??= resolvePostedMessageThreadTs(response);
745
- if (response.ts) sentMessageIds.push(response.ts);
899
+ if (response.ts) {
900
+ sentMessageIds.push(response.ts);
901
+ await reportDelivery({
902
+ messageId: response.ts,
903
+ channelId: deliveredChannelId,
904
+ threadTs: resolvePostedMessageThreadTs(response) ?? normalizeSlackThreadTsCandidate(opts.threadTs),
905
+ receipt: createSlackSendReceipt({
906
+ platformMessageIds: [response.ts],
907
+ channelId: deliveredChannelId,
908
+ kind: "text",
909
+ threadTs: resolvePostedMessageThreadTs(response) ?? normalizeSlackThreadTsCandidate(opts.threadTs)
910
+ })
911
+ });
912
+ }
746
913
  }
747
914
  const messageId = lastMessageId || "unknown";
748
915
  const deliveredThreadTs = canonicalDeliveredThreadTs ?? normalizeSlackThreadTsCandidate(opts.threadTs);
@@ -759,4 +926,4 @@ async function sendMessageSlackQueuedInner(params) {
759
926
  };
760
927
  }
761
928
  //#endregion
762
- export { hasSlackThreadParticipationWithPersistence as a, normalizeSlackOutboundText as c, hasSlackThreadParticipation as i, buildSlackBlocksFallbackText as l, setSlackDefaultSendIdentity as n, recordSlackThreadParticipation as o, clearSlackThreadParticipationCache as r, markdownToSlackMrkdwnChunks as s, sendMessageSlack as t };
929
+ export { clearSlackThreadParticipationCache as a, recordSlackThreadParticipation as c, setSlackDefaultSendIdentity as i, buildSlackBlocksFallbackText as l, resolveSlackDmChannelId as n, hasSlackThreadParticipation as o, sendMessageSlack as r, hasSlackThreadParticipationWithPersistence as s, reconcileSlackUnknownSend as t };