@openclaw/slack 2026.7.1-beta.1 → 2026.7.1-beta.4

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 (605) 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-BLu039dd.js → action-runtime-DoQGk_8D.js} +37 -40
  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-DjNY4ik7.js → channel-CG29WLVd.js} +198 -111
  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-Cf50drfK.js → monitor-D6Km2CFH.js} +3 -3
  26. package/dist/outbound-adapter-DVoBfBW5.js +272 -0
  27. package/dist/{pipeline.runtime-BKICBY52.js → pipeline.runtime-0wEFX2CS.js} +185 -268
  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-DOZHzRWi.js → provider-Cot8h818.js} +199 -154
  32. package/dist/{relay-source-BpBIUaF8.js → relay-source-CU1LhyBj.js} +2 -2
  33. package/dist/{replies-CMZq3Lcb.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-C-1pDqWi.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 -47
  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-Pwl_ixsr.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-WHn1M1t4.js +0 -191
  448. package/dist/send.runtime-a-O4PP2B.js +0 -2
  449. package/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  450. package/node_modules/@types/ws/node_modules/@types/node/LICENSE +0 -21
  451. package/node_modules/@types/ws/node_modules/@types/node/README.md +0 -15
  452. package/node_modules/@types/ws/node_modules/@types/node/assert/strict.d.ts +0 -59
  453. package/node_modules/@types/ws/node_modules/@types/node/assert.d.ts +0 -950
  454. package/node_modules/@types/ws/node_modules/@types/node/async_hooks.d.ts +0 -711
  455. package/node_modules/@types/ws/node_modules/@types/node/buffer.buffer.d.ts +0 -466
  456. package/node_modules/@types/ws/node_modules/@types/node/buffer.d.ts +0 -1765
  457. package/node_modules/@types/ws/node_modules/@types/node/child_process.d.ts +0 -1366
  458. package/node_modules/@types/ws/node_modules/@types/node/cluster.d.ts +0 -432
  459. package/node_modules/@types/ws/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  460. package/node_modules/@types/ws/node_modules/@types/node/console.d.ts +0 -93
  461. package/node_modules/@types/ws/node_modules/@types/node/constants.d.ts +0 -14
  462. package/node_modules/@types/ws/node_modules/@types/node/crypto.d.ts +0 -4058
  463. package/node_modules/@types/ws/node_modules/@types/node/dgram.d.ts +0 -537
  464. package/node_modules/@types/ws/node_modules/@types/node/diagnostics_channel.d.ts +0 -552
  465. package/node_modules/@types/ws/node_modules/@types/node/dns/promises.d.ts +0 -497
  466. package/node_modules/@types/ws/node_modules/@types/node/dns.d.ts +0 -876
  467. package/node_modules/@types/ws/node_modules/@types/node/domain.d.ts +0 -150
  468. package/node_modules/@types/ws/node_modules/@types/node/events.d.ts +0 -1008
  469. package/node_modules/@types/ws/node_modules/@types/node/fs/promises.d.ts +0 -1468
  470. package/node_modules/@types/ws/node_modules/@types/node/fs.d.ts +0 -4780
  471. package/node_modules/@types/ws/node_modules/@types/node/globals.d.ts +0 -150
  472. package/node_modules/@types/ws/node_modules/@types/node/globals.typedarray.d.ts +0 -101
  473. package/node_modules/@types/ws/node_modules/@types/node/http.d.ts +0 -2147
  474. package/node_modules/@types/ws/node_modules/@types/node/http2.d.ts +0 -2485
  475. package/node_modules/@types/ws/node_modules/@types/node/https.d.ts +0 -400
  476. package/node_modules/@types/ws/node_modules/@types/node/index.d.ts +0 -117
  477. package/node_modules/@types/ws/node_modules/@types/node/inspector/promises.d.ts +0 -35
  478. package/node_modules/@types/ws/node_modules/@types/node/inspector.d.ts +0 -264
  479. package/node_modules/@types/ws/node_modules/@types/node/inspector.generated.d.ts +0 -4406
  480. package/node_modules/@types/ws/node_modules/@types/node/module.d.ts +0 -755
  481. package/node_modules/@types/ws/node_modules/@types/node/net.d.ts +0 -970
  482. package/node_modules/@types/ws/node_modules/@types/node/os.d.ts +0 -498
  483. package/node_modules/@types/ws/node_modules/@types/node/package.json +0 -155
  484. package/node_modules/@types/ws/node_modules/@types/node/path/posix.d.ts +0 -8
  485. package/node_modules/@types/ws/node_modules/@types/node/path/win32.d.ts +0 -8
  486. package/node_modules/@types/ws/node_modules/@types/node/path.d.ts +0 -178
  487. package/node_modules/@types/ws/node_modules/@types/node/perf_hooks.d.ts +0 -612
  488. package/node_modules/@types/ws/node_modules/@types/node/process.d.ts +0 -2204
  489. package/node_modules/@types/ws/node_modules/@types/node/punycode.d.ts +0 -89
  490. package/node_modules/@types/ws/node_modules/@types/node/querystring.d.ts +0 -139
  491. package/node_modules/@types/ws/node_modules/@types/node/quic.d.ts +0 -897
  492. package/node_modules/@types/ws/node_modules/@types/node/readline/promises.d.ts +0 -158
  493. package/node_modules/@types/ws/node_modules/@types/node/readline.d.ts +0 -507
  494. package/node_modules/@types/ws/node_modules/@types/node/repl.d.ts +0 -420
  495. package/node_modules/@types/ws/node_modules/@types/node/sea.d.ts +0 -47
  496. package/node_modules/@types/ws/node_modules/@types/node/sqlite.d.ts +0 -1068
  497. package/node_modules/@types/ws/node_modules/@types/node/stream/consumers.d.ts +0 -114
  498. package/node_modules/@types/ws/node_modules/@types/node/stream/iter.d.ts +0 -301
  499. package/node_modules/@types/ws/node_modules/@types/node/stream/promises.d.ts +0 -211
  500. package/node_modules/@types/ws/node_modules/@types/node/stream/web.d.ts +0 -300
  501. package/node_modules/@types/ws/node_modules/@types/node/stream.d.ts +0 -1774
  502. package/node_modules/@types/ws/node_modules/@types/node/string_decoder.d.ts +0 -27
  503. package/node_modules/@types/ws/node_modules/@types/node/test/reporters.d.ts +0 -59
  504. package/node_modules/@types/ws/node_modules/@types/node/test.d.ts +0 -2279
  505. package/node_modules/@types/ws/node_modules/@types/node/timers/promises.d.ts +0 -93
  506. package/node_modules/@types/ws/node_modules/@types/node/timers.d.ts +0 -149
  507. package/node_modules/@types/ws/node_modules/@types/node/tls.d.ts +0 -1193
  508. package/node_modules/@types/ws/node_modules/@types/node/trace_events.d.ts +0 -103
  509. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -462
  510. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
  511. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -36
  512. package/node_modules/@types/ws/node_modules/@types/node/ts5.6/index.d.ts +0 -119
  513. package/node_modules/@types/ws/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
  514. package/node_modules/@types/ws/node_modules/@types/node/ts5.7/index.d.ts +0 -119
  515. package/node_modules/@types/ws/node_modules/@types/node/tty.d.ts +0 -225
  516. package/node_modules/@types/ws/node_modules/@types/node/url.d.ts +0 -556
  517. package/node_modules/@types/ws/node_modules/@types/node/util/types.d.ts +0 -558
  518. package/node_modules/@types/ws/node_modules/@types/node/util.d.ts +0 -1677
  519. package/node_modules/@types/ws/node_modules/@types/node/v8.d.ts +0 -980
  520. package/node_modules/@types/ws/node_modules/@types/node/vm.d.ts +0 -1136
  521. package/node_modules/@types/ws/node_modules/@types/node/wasi.d.ts +0 -131
  522. package/node_modules/@types/ws/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -59
  523. package/node_modules/@types/ws/node_modules/@types/node/web-globals/blob.d.ts +0 -23
  524. package/node_modules/@types/ws/node_modules/@types/node/web-globals/console.d.ts +0 -9
  525. package/node_modules/@types/ws/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
  526. package/node_modules/@types/ws/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  527. package/node_modules/@types/ws/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
  528. package/node_modules/@types/ws/node_modules/@types/node/web-globals/events.d.ts +0 -106
  529. package/node_modules/@types/ws/node_modules/@types/node/web-globals/fetch.d.ts +0 -69
  530. package/node_modules/@types/ws/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
  531. package/node_modules/@types/ws/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
  532. package/node_modules/@types/ws/node_modules/@types/node/web-globals/navigator.d.ts +0 -25
  533. package/node_modules/@types/ws/node_modules/@types/node/web-globals/performance.d.ts +0 -45
  534. package/node_modules/@types/ws/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  535. package/node_modules/@types/ws/node_modules/@types/node/web-globals/streams.d.ts +0 -115
  536. package/node_modules/@types/ws/node_modules/@types/node/web-globals/timers.d.ts +0 -44
  537. package/node_modules/@types/ws/node_modules/@types/node/web-globals/url.d.ts +0 -24
  538. package/node_modules/@types/ws/node_modules/@types/node/worker_threads.d.ts +0 -671
  539. package/node_modules/@types/ws/node_modules/@types/node/zlib/iter.d.ts +0 -131
  540. package/node_modules/@types/ws/node_modules/@types/node/zlib.d.ts +0 -589
  541. package/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
  542. package/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
  543. package/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
  544. package/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
  545. package/node_modules/typebox/build/type/action/_optional.d.mts +0 -19
  546. package/node_modules/typebox/build/type/action/_optional.mjs +0 -40
  547. package/node_modules/typebox/build/type/action/_readonly.d.mts +0 -19
  548. package/node_modules/typebox/build/type/action/_readonly.mjs +0 -40
  549. package/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
  550. package/node_modules/typebox/build/type/action/awaited.mjs +0 -15
  551. package/node_modules/typebox/build/type/action/options.d.mts +0 -11
  552. package/node_modules/typebox/build/type/action/options.mjs +0 -11
  553. package/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
  554. package/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
  555. package/node_modules/typebox/build/type/engine/enum/enum_to_union.d.mts +0 -14
  556. package/node_modules/typebox/build/type/engine/enum/enum_to_union.mjs +0 -24
  557. package/node_modules/typebox/build/type/engine/options/index.d.mts +0 -1
  558. package/node_modules/typebox/build/type/engine/options/index.mjs +0 -1
  559. package/node_modules/typebox/build/type/engine/options/instantiate.d.mts +0 -8
  560. package/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
  561. package/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
  562. package/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
  563. package/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
  564. package/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
  565. package/node_modules/typebox/build/type/extends/promise.mjs +0 -9
  566. package/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
  567. package/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
  568. package/node_modules/typebox/build/type/types/base.d.mts +0 -50
  569. package/node_modules/typebox/build/type/types/base.mjs +0 -84
  570. package/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
  571. package/node_modules/typebox/build/type/types/iterator.mjs +0 -28
  572. package/node_modules/typebox/build/type/types/promise.d.mts +0 -21
  573. package/node_modules/typebox/build/type/types/promise.mjs +0 -29
  574. package/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
  575. package/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
  576. package/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
  577. package/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
  578. package/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
  579. package/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
  580. package/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
  581. package/node_modules/typebox/build/value/create/from_base.mjs +0 -4
  582. package/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
  583. package/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
  584. package/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
  585. package/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
  586. package/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
  587. package/node_modules/typebox/build/value/default/from_base.mjs +0 -5
  588. package/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
  589. package/node_modules/typebox/build/value/mutate/error.mjs +0 -6
  590. package/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
  591. package/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
  592. package/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
  593. package/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
  594. package/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
  595. package/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
  596. package/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
  597. package/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
  598. package/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
  599. package/node_modules/typebox/build/value/mutate/index.mjs +0 -1
  600. package/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
  601. package/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
  602. package/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
  603. package/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
  604. /package/node_modules/typebox/build/type/engine/{awaited → with}/index.d.mts +0 -0
  605. /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 };