@xgjktech/xg_cwork_im 1.19.25 → 1.19.26

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 (616) hide show
  1. package/README.md +490 -489
  2. package/dist/index.js +1 -1
  3. package/dist/src/connection/account-connection.d.ts.map +1 -1
  4. package/dist/src/connection/account-connection.js +3 -0
  5. package/dist/src/connection/account-connection.js.map +1 -1
  6. package/dist/src/connection/connection.d.ts +0 -6
  7. package/dist/src/connection/connection.d.ts.map +1 -1
  8. package/dist/src/connection/connection.js +0 -6
  9. package/dist/src/connection/connection.js.map +1 -1
  10. package/dist/src/connection/connection.test.js +1 -17
  11. package/dist/src/connection/connection.test.js.map +1 -1
  12. package/dist/src/inbound/inbound-url-rewrite.d.ts +32 -0
  13. package/dist/src/inbound/inbound-url-rewrite.d.ts.map +1 -0
  14. package/dist/src/inbound/inbound-url-rewrite.js +94 -0
  15. package/dist/src/inbound/inbound-url-rewrite.js.map +1 -0
  16. package/dist/src/inbound/inbound-url-rewrite.test.d.ts +2 -0
  17. package/dist/src/inbound/inbound-url-rewrite.test.d.ts.map +1 -0
  18. package/dist/src/inbound/inbound-url-rewrite.test.js +90 -0
  19. package/dist/src/inbound/inbound-url-rewrite.test.js.map +1 -0
  20. package/dist/src/plan/plan-core-adapter.d.ts +1 -26
  21. package/dist/src/plan/plan-core-adapter.d.ts.map +1 -1
  22. package/dist/src/plan/plan-core-adapter.js +5 -67
  23. package/dist/src/plan/plan-core-adapter.js.map +1 -1
  24. package/dist/src/plan/plan-core-adapter.test.js +1 -76
  25. package/dist/src/plan/plan-core-adapter.test.js.map +1 -1
  26. package/dist/src/plan/plan-stat-event.d.ts +0 -2
  27. package/dist/src/plan/plan-stat-event.d.ts.map +1 -1
  28. package/dist/src/plan/plan-stat-event.js +2 -12
  29. package/dist/src/plan/plan-stat-event.js.map +1 -1
  30. package/dist/src/plugin/channel-config.d.ts +32 -0
  31. package/dist/src/plugin/channel-config.d.ts.map +1 -1
  32. package/dist/src/plugin/channel-config.js +12 -0
  33. package/dist/src/plugin/channel-config.js.map +1 -1
  34. package/dist/src/plugin/channel-config.test.js +15 -0
  35. package/dist/src/plugin/channel-config.test.js.map +1 -1
  36. package/dist/src/plugin/types.d.ts +15 -0
  37. package/dist/src/plugin/types.d.ts.map +1 -1
  38. package/dist/src/plugin/types.js.map +1 -1
  39. package/dist/src/turn/turn-agent-event-subscription.d.ts.map +1 -1
  40. package/dist/src/turn/turn-agent-event-subscription.js +2 -66
  41. package/dist/src/turn/turn-agent-event-subscription.js.map +1 -1
  42. package/dist/src/turn/turn-agent-event-subscription.test.js +1 -114
  43. package/dist/src/turn/turn-agent-event-subscription.test.js.map +1 -1
  44. package/package.json +82 -82
  45. package/dist/src/account-connection.d.ts +0 -37
  46. package/dist/src/account-connection.d.ts.map +0 -1
  47. package/dist/src/account-connection.js +0 -548
  48. package/dist/src/account-connection.js.map +0 -1
  49. package/dist/src/account-reconciler.d.ts +0 -64
  50. package/dist/src/account-reconciler.d.ts.map +0 -1
  51. package/dist/src/account-reconciler.js +0 -314
  52. package/dist/src/account-reconciler.js.map +0 -1
  53. package/dist/src/account-reconciler.test.d.ts +0 -2
  54. package/dist/src/account-reconciler.test.d.ts.map +0 -1
  55. package/dist/src/account-reconciler.test.js +0 -166
  56. package/dist/src/account-reconciler.test.js.map +0 -1
  57. package/dist/src/action-run-event.d.ts +0 -20
  58. package/dist/src/action-run-event.d.ts.map +0 -1
  59. package/dist/src/action-run-event.js +0 -62
  60. package/dist/src/action-run-event.js.map +0 -1
  61. package/dist/src/action-run-event.test.d.ts +0 -2
  62. package/dist/src/action-run-event.test.d.ts.map +0 -1
  63. package/dist/src/action-run-event.test.js +0 -83
  64. package/dist/src/action-run-event.test.js.map +0 -1
  65. package/dist/src/action-store-access.d.ts +0 -29
  66. package/dist/src/action-store-access.d.ts.map +0 -1
  67. package/dist/src/action-store-access.js +0 -81
  68. package/dist/src/action-store-access.js.map +0 -1
  69. package/dist/src/action-store-lifecycle.test.d.ts +0 -2
  70. package/dist/src/action-store-lifecycle.test.d.ts.map +0 -1
  71. package/dist/src/action-store-lifecycle.test.js +0 -195
  72. package/dist/src/action-store-lifecycle.test.js.map +0 -1
  73. package/dist/src/active-cron-context-store.d.ts +0 -20
  74. package/dist/src/active-cron-context-store.d.ts.map +0 -1
  75. package/dist/src/active-cron-context-store.js +0 -73
  76. package/dist/src/active-cron-context-store.js.map +0 -1
  77. package/dist/src/active-round-registry.d.ts +0 -35
  78. package/dist/src/active-round-registry.d.ts.map +0 -1
  79. package/dist/src/active-round-registry.js +0 -85
  80. package/dist/src/active-round-registry.js.map +0 -1
  81. package/dist/src/active-round-registry.test.d.ts +0 -2
  82. package/dist/src/active-round-registry.test.d.ts.map +0 -1
  83. package/dist/src/active-round-registry.test.js +0 -62
  84. package/dist/src/active-round-registry.test.js.map +0 -1
  85. package/dist/src/agent-context-types.d.ts +0 -205
  86. package/dist/src/agent-context-types.d.ts.map +0 -1
  87. package/dist/src/agent-context-types.js +0 -132
  88. package/dist/src/agent-context-types.js.map +0 -1
  89. package/dist/src/agent-context-types.test.d.ts +0 -2
  90. package/dist/src/agent-context-types.test.d.ts.map +0 -1
  91. package/dist/src/agent-context-types.test.js +0 -123
  92. package/dist/src/agent-context-types.test.js.map +0 -1
  93. package/dist/src/agent-stream-client-registry.d.ts +0 -8
  94. package/dist/src/agent-stream-client-registry.d.ts.map +0 -1
  95. package/dist/src/agent-stream-client-registry.js +0 -19
  96. package/dist/src/agent-stream-client-registry.js.map +0 -1
  97. package/dist/src/apply-sync-mapping.d.ts +0 -15
  98. package/dist/src/apply-sync-mapping.d.ts.map +0 -1
  99. package/dist/src/apply-sync-mapping.js +0 -98
  100. package/dist/src/apply-sync-mapping.js.map +0 -1
  101. package/dist/src/assistant-item-delivery.d.ts +0 -27
  102. package/dist/src/assistant-item-delivery.d.ts.map +0 -1
  103. package/dist/src/assistant-item-delivery.js +0 -134
  104. package/dist/src/assistant-item-delivery.js.map +0 -1
  105. package/dist/src/assistant-item-delivery.test.d.ts +0 -2
  106. package/dist/src/assistant-item-delivery.test.d.ts.map +0 -1
  107. package/dist/src/assistant-item-delivery.test.js +0 -116
  108. package/dist/src/assistant-item-delivery.test.js.map +0 -1
  109. package/dist/src/assistant-item-sink.d.ts +0 -17
  110. package/dist/src/assistant-item-sink.d.ts.map +0 -1
  111. package/dist/src/assistant-item-sink.js +0 -34
  112. package/dist/src/assistant-item-sink.js.map +0 -1
  113. package/dist/src/auth.d.ts +0 -32
  114. package/dist/src/auth.d.ts.map +0 -1
  115. package/dist/src/auth.js +0 -70
  116. package/dist/src/auth.js.map +0 -1
  117. package/dist/src/auto-model-router.d.ts +0 -36
  118. package/dist/src/auto-model-router.d.ts.map +0 -1
  119. package/dist/src/auto-model-router.js +0 -60
  120. package/dist/src/auto-model-router.js.map +0 -1
  121. package/dist/src/auto-model-router.test.d.ts +0 -2
  122. package/dist/src/auto-model-router.test.d.ts.map +0 -1
  123. package/dist/src/auto-model-router.test.js +0 -99
  124. package/dist/src/auto-model-router.test.js.map +0 -1
  125. package/dist/src/block-streaming-config.test.d.ts +0 -2
  126. package/dist/src/block-streaming-config.test.d.ts.map +0 -1
  127. package/dist/src/block-streaming-config.test.js +0 -91
  128. package/dist/src/block-streaming-config.test.js.map +0 -1
  129. package/dist/src/build-project-prompt.d.ts +0 -40
  130. package/dist/src/build-project-prompt.d.ts.map +0 -1
  131. package/dist/src/build-project-prompt.js +0 -183
  132. package/dist/src/build-project-prompt.js.map +0 -1
  133. package/dist/src/build-project-prompt.test.d.ts +0 -2
  134. package/dist/src/build-project-prompt.test.d.ts.map +0 -1
  135. package/dist/src/build-project-prompt.test.js +0 -100
  136. package/dist/src/build-project-prompt.test.js.map +0 -1
  137. package/dist/src/channel-config.d.ts +0 -716
  138. package/dist/src/channel-config.d.ts.map +0 -1
  139. package/dist/src/channel-config.js +0 -405
  140. package/dist/src/channel-config.js.map +0 -1
  141. package/dist/src/channel-config.test.d.ts +0 -2
  142. package/dist/src/channel-config.test.d.ts.map +0 -1
  143. package/dist/src/channel-config.test.js +0 -113
  144. package/dist/src/channel-config.test.js.map +0 -1
  145. package/dist/src/channel-disabled-account.test.d.ts +0 -2
  146. package/dist/src/channel-disabled-account.test.d.ts.map +0 -1
  147. package/dist/src/channel-disabled-account.test.js +0 -44
  148. package/dist/src/channel-disabled-account.test.js.map +0 -1
  149. package/dist/src/channel-log.d.ts +0 -17
  150. package/dist/src/channel-log.d.ts.map +0 -1
  151. package/dist/src/channel-log.js +0 -45
  152. package/dist/src/channel-log.js.map +0 -1
  153. package/dist/src/channel.d.ts +0 -17
  154. package/dist/src/channel.d.ts.map +0 -1
  155. package/dist/src/channel.js +0 -272
  156. package/dist/src/channel.js.map +0 -1
  157. package/dist/src/connection-workspace-event.test.d.ts +0 -2
  158. package/dist/src/connection-workspace-event.test.d.ts.map +0 -1
  159. package/dist/src/connection-workspace-event.test.js +0 -74
  160. package/dist/src/connection-workspace-event.test.js.map +0 -1
  161. package/dist/src/connection.d.ts +0 -110
  162. package/dist/src/connection.d.ts.map +0 -1
  163. package/dist/src/connection.js +0 -463
  164. package/dist/src/connection.js.map +0 -1
  165. package/dist/src/connection.test.d.ts +0 -2
  166. package/dist/src/connection.test.d.ts.map +0 -1
  167. package/dist/src/connection.test.js +0 -110
  168. package/dist/src/connection.test.js.map +0 -1
  169. package/dist/src/cron-appkey-binding-store.d.ts +0 -29
  170. package/dist/src/cron-appkey-binding-store.d.ts.map +0 -1
  171. package/dist/src/cron-appkey-binding-store.js +0 -239
  172. package/dist/src/cron-appkey-binding-store.js.map +0 -1
  173. package/dist/src/cron-appkey-binding-store.test.d.ts +0 -2
  174. package/dist/src/cron-appkey-binding-store.test.d.ts.map +0 -1
  175. package/dist/src/cron-appkey-binding-store.test.js +0 -387
  176. package/dist/src/cron-appkey-binding-store.test.js.map +0 -1
  177. package/dist/src/deliver-text.d.ts +0 -30
  178. package/dist/src/deliver-text.d.ts.map +0 -1
  179. package/dist/src/deliver-text.js +0 -88
  180. package/dist/src/deliver-text.js.map +0 -1
  181. package/dist/src/deliver-text.test.d.ts +0 -2
  182. package/dist/src/deliver-text.test.d.ts.map +0 -1
  183. package/dist/src/deliver-text.test.js +0 -117
  184. package/dist/src/deliver-text.test.js.map +0 -1
  185. package/dist/src/dispatch-mentioned-reply.d.ts +0 -47
  186. package/dist/src/dispatch-mentioned-reply.d.ts.map +0 -1
  187. package/dist/src/dispatch-mentioned-reply.js +0 -997
  188. package/dist/src/dispatch-mentioned-reply.js.map +0 -1
  189. package/dist/src/gateway-session-queue.d.ts +0 -37
  190. package/dist/src/gateway-session-queue.d.ts.map +0 -1
  191. package/dist/src/gateway-session-queue.js +0 -86
  192. package/dist/src/gateway-session-queue.js.map +0 -1
  193. package/dist/src/group-history-tool.d.ts +0 -31
  194. package/dist/src/group-history-tool.d.ts.map +0 -1
  195. package/dist/src/group-history-tool.js +0 -177
  196. package/dist/src/group-history-tool.js.map +0 -1
  197. package/dist/src/im-tool-progress.d.ts +0 -4
  198. package/dist/src/im-tool-progress.d.ts.map +0 -1
  199. package/dist/src/im-tool-progress.js +0 -87
  200. package/dist/src/im-tool-progress.js.map +0 -1
  201. package/dist/src/inbound-archive.d.ts +0 -4
  202. package/dist/src/inbound-archive.d.ts.map +0 -1
  203. package/dist/src/inbound-archive.js +0 -105
  204. package/dist/src/inbound-archive.js.map +0 -1
  205. package/dist/src/inbound-attachment-meta.d.ts +0 -13
  206. package/dist/src/inbound-attachment-meta.d.ts.map +0 -1
  207. package/dist/src/inbound-attachment-meta.js +0 -39
  208. package/dist/src/inbound-attachment-meta.js.map +0 -1
  209. package/dist/src/inbound-chat-type.d.ts +0 -33
  210. package/dist/src/inbound-chat-type.d.ts.map +0 -1
  211. package/dist/src/inbound-chat-type.js +0 -52
  212. package/dist/src/inbound-chat-type.js.map +0 -1
  213. package/dist/src/inbound-display.d.ts +0 -41
  214. package/dist/src/inbound-display.d.ts.map +0 -1
  215. package/dist/src/inbound-display.js +0 -170
  216. package/dist/src/inbound-display.js.map +0 -1
  217. package/dist/src/inbound-file-download.d.ts +0 -15
  218. package/dist/src/inbound-file-download.d.ts.map +0 -1
  219. package/dist/src/inbound-file-download.js +0 -48
  220. package/dist/src/inbound-file-download.js.map +0 -1
  221. package/dist/src/inbound-input-media.d.ts +0 -43
  222. package/dist/src/inbound-input-media.d.ts.map +0 -1
  223. package/dist/src/inbound-input-media.js +0 -230
  224. package/dist/src/inbound-input-media.js.map +0 -1
  225. package/dist/src/inbound-media-local.d.ts +0 -49
  226. package/dist/src/inbound-media-local.d.ts.map +0 -1
  227. package/dist/src/inbound-media-local.js +0 -194
  228. package/dist/src/inbound-media-local.js.map +0 -1
  229. package/dist/src/inbound-model.d.ts +0 -39
  230. package/dist/src/inbound-model.d.ts.map +0 -1
  231. package/dist/src/inbound-model.js +0 -66
  232. package/dist/src/inbound-model.js.map +0 -1
  233. package/dist/src/inbound-model.test.d.ts +0 -2
  234. package/dist/src/inbound-model.test.d.ts.map +0 -1
  235. package/dist/src/inbound-model.test.js +0 -88
  236. package/dist/src/inbound-model.test.js.map +0 -1
  237. package/dist/src/inbound-terminal-delivery.d.ts +0 -77
  238. package/dist/src/inbound-terminal-delivery.d.ts.map +0 -1
  239. package/dist/src/inbound-terminal-delivery.js +0 -251
  240. package/dist/src/inbound-terminal-delivery.js.map +0 -1
  241. package/dist/src/inbound-terminal-state.d.ts +0 -68
  242. package/dist/src/inbound-terminal-state.d.ts.map +0 -1
  243. package/dist/src/inbound-terminal-state.js +0 -185
  244. package/dist/src/inbound-terminal-state.js.map +0 -1
  245. package/dist/src/inbound-terminal-state.test.d.ts +0 -2
  246. package/dist/src/inbound-terminal-state.test.d.ts.map +0 -1
  247. package/dist/src/inbound-terminal-state.test.js +0 -224
  248. package/dist/src/inbound-terminal-state.test.js.map +0 -1
  249. package/dist/src/interrupt-round.d.ts +0 -9
  250. package/dist/src/interrupt-round.d.ts.map +0 -1
  251. package/dist/src/interrupt-round.js +0 -44
  252. package/dist/src/interrupt-round.js.map +0 -1
  253. package/dist/src/interrupt-round.test.d.ts +0 -2
  254. package/dist/src/interrupt-round.test.d.ts.map +0 -1
  255. package/dist/src/interrupt-round.test.js +0 -133
  256. package/dist/src/interrupt-round.test.js.map +0 -1
  257. package/dist/src/item-event-guard.d.ts +0 -28
  258. package/dist/src/item-event-guard.d.ts.map +0 -1
  259. package/dist/src/item-event-guard.js +0 -22
  260. package/dist/src/item-event-guard.js.map +0 -1
  261. package/dist/src/item-event-guard.test.d.ts +0 -2
  262. package/dist/src/item-event-guard.test.d.ts.map +0 -1
  263. package/dist/src/item-event-guard.test.js +0 -55
  264. package/dist/src/item-event-guard.test.js.map +0 -1
  265. package/dist/src/nas-site.d.ts +0 -16
  266. package/dist/src/nas-site.d.ts.map +0 -1
  267. package/dist/src/nas-site.js +0 -17
  268. package/dist/src/nas-site.js.map +0 -1
  269. package/dist/src/nas-volumes.d.ts +0 -53
  270. package/dist/src/nas-volumes.d.ts.map +0 -1
  271. package/dist/src/nas-volumes.js +0 -417
  272. package/dist/src/nas-volumes.js.map +0 -1
  273. package/dist/src/nas-volumes.test.d.ts +0 -2
  274. package/dist/src/nas-volumes.test.d.ts.map +0 -1
  275. package/dist/src/nas-volumes.test.js +0 -261
  276. package/dist/src/nas-volumes.test.js.map +0 -1
  277. package/dist/src/per-message-fallback-notice.d.ts +0 -43
  278. package/dist/src/per-message-fallback-notice.d.ts.map +0 -1
  279. package/dist/src/per-message-fallback-notice.js +0 -93
  280. package/dist/src/per-message-fallback-notice.js.map +0 -1
  281. package/dist/src/per-message-fallback-notice.test.d.ts +0 -2
  282. package/dist/src/per-message-fallback-notice.test.d.ts.map +0 -1
  283. package/dist/src/per-message-fallback-notice.test.js +0 -47
  284. package/dist/src/per-message-fallback-notice.test.js.map +0 -1
  285. package/dist/src/per-message-model-pending.d.ts +0 -52
  286. package/dist/src/per-message-model-pending.d.ts.map +0 -1
  287. package/dist/src/per-message-model-pending.js +0 -134
  288. package/dist/src/per-message-model-pending.js.map +0 -1
  289. package/dist/src/plan-blocked-notice.d.ts +0 -14
  290. package/dist/src/plan-blocked-notice.d.ts.map +0 -1
  291. package/dist/src/plan-blocked-notice.js +0 -41
  292. package/dist/src/plan-blocked-notice.js.map +0 -1
  293. package/dist/src/plan-blocked-notice.test.d.ts +0 -2
  294. package/dist/src/plan-blocked-notice.test.d.ts.map +0 -1
  295. package/dist/src/plan-blocked-notice.test.js +0 -96
  296. package/dist/src/plan-blocked-notice.test.js.map +0 -1
  297. package/dist/src/plan-core-adapter.d.ts +0 -54
  298. package/dist/src/plan-core-adapter.d.ts.map +0 -1
  299. package/dist/src/plan-core-adapter.js +0 -104
  300. package/dist/src/plan-core-adapter.js.map +0 -1
  301. package/dist/src/plan-core-adapter.test.d.ts +0 -2
  302. package/dist/src/plan-core-adapter.test.d.ts.map +0 -1
  303. package/dist/src/plan-core-adapter.test.js +0 -183
  304. package/dist/src/plan-core-adapter.test.js.map +0 -1
  305. package/dist/src/plan-core-db.d.ts +0 -22
  306. package/dist/src/plan-core-db.d.ts.map +0 -1
  307. package/dist/src/plan-core-db.js +0 -91
  308. package/dist/src/plan-core-db.js.map +0 -1
  309. package/dist/src/plan-core-db.test.d.ts +0 -2
  310. package/dist/src/plan-core-db.test.d.ts.map +0 -1
  311. package/dist/src/plan-core-db.test.js +0 -115
  312. package/dist/src/plan-core-db.test.js.map +0 -1
  313. package/dist/src/plan-core-snapshot.d.ts +0 -23
  314. package/dist/src/plan-core-snapshot.d.ts.map +0 -1
  315. package/dist/src/plan-core-snapshot.js +0 -66
  316. package/dist/src/plan-core-snapshot.js.map +0 -1
  317. package/dist/src/plan-core-snapshot.test.d.ts +0 -2
  318. package/dist/src/plan-core-snapshot.test.d.ts.map +0 -1
  319. package/dist/src/plan-core-snapshot.test.js +0 -157
  320. package/dist/src/plan-core-snapshot.test.js.map +0 -1
  321. package/dist/src/plan-event-subscription.d.ts +0 -36
  322. package/dist/src/plan-event-subscription.d.ts.map +0 -1
  323. package/dist/src/plan-event-subscription.js +0 -57
  324. package/dist/src/plan-event-subscription.js.map +0 -1
  325. package/dist/src/plan-event-subscription.test.d.ts +0 -2
  326. package/dist/src/plan-event-subscription.test.d.ts.map +0 -1
  327. package/dist/src/plan-event-subscription.test.js +0 -167
  328. package/dist/src/plan-event-subscription.test.js.map +0 -1
  329. package/dist/src/plan-stat-event.d.ts +0 -17
  330. package/dist/src/plan-stat-event.d.ts.map +0 -1
  331. package/dist/src/plan-stat-event.js +0 -41
  332. package/dist/src/plan-stat-event.js.map +0 -1
  333. package/dist/src/plan-stat-event.test.d.ts +0 -2
  334. package/dist/src/plan-stat-event.test.d.ts.map +0 -1
  335. package/dist/src/plan-stat-event.test.js +0 -131
  336. package/dist/src/plan-stat-event.test.js.map +0 -1
  337. package/dist/src/plan-store-access.d.ts +0 -25
  338. package/dist/src/plan-store-access.d.ts.map +0 -1
  339. package/dist/src/plan-store-access.js +0 -100
  340. package/dist/src/plan-store-access.js.map +0 -1
  341. package/dist/src/plan-store-access.test.d.ts +0 -2
  342. package/dist/src/plan-store-access.test.d.ts.map +0 -1
  343. package/dist/src/plan-store-access.test.js +0 -207
  344. package/dist/src/plan-store-access.test.js.map +0 -1
  345. package/dist/src/plan-tool-middleware.d.ts +0 -19
  346. package/dist/src/plan-tool-middleware.d.ts.map +0 -1
  347. package/dist/src/plan-tool-middleware.js +0 -63
  348. package/dist/src/plan-tool-middleware.js.map +0 -1
  349. package/dist/src/plan-tool-middleware.test.d.ts +0 -2
  350. package/dist/src/plan-tool-middleware.test.d.ts.map +0 -1
  351. package/dist/src/plan-tool-middleware.test.js +0 -103
  352. package/dist/src/plan-tool-middleware.test.js.map +0 -1
  353. package/dist/src/plan-tool-result.d.ts +0 -18
  354. package/dist/src/plan-tool-result.d.ts.map +0 -1
  355. package/dist/src/plan-tool-result.js +0 -77
  356. package/dist/src/plan-tool-result.js.map +0 -1
  357. package/dist/src/plan-tool-result.test.d.ts +0 -2
  358. package/dist/src/plan-tool-result.test.d.ts.map +0 -1
  359. package/dist/src/plan-tool-result.test.js +0 -129
  360. package/dist/src/plan-tool-result.test.js.map +0 -1
  361. package/dist/src/plan-ws-registry.d.ts +0 -15
  362. package/dist/src/plan-ws-registry.d.ts.map +0 -1
  363. package/dist/src/plan-ws-registry.js +0 -39
  364. package/dist/src/plan-ws-registry.js.map +0 -1
  365. package/dist/src/plan-ws-registry.test.d.ts +0 -2
  366. package/dist/src/plan-ws-registry.test.d.ts.map +0 -1
  367. package/dist/src/plan-ws-registry.test.js +0 -61
  368. package/dist/src/plan-ws-registry.test.js.map +0 -1
  369. package/dist/src/plugin-dispose.d.ts +0 -22
  370. package/dist/src/plugin-dispose.d.ts.map +0 -1
  371. package/dist/src/plugin-dispose.js +0 -66
  372. package/dist/src/plugin-dispose.js.map +0 -1
  373. package/dist/src/process-shared-store.d.ts +0 -48
  374. package/dist/src/process-shared-store.d.ts.map +0 -1
  375. package/dist/src/process-shared-store.js +0 -89
  376. package/dist/src/process-shared-store.js.map +0 -1
  377. package/dist/src/process-shared-store.test.d.ts +0 -2
  378. package/dist/src/process-shared-store.test.d.ts.map +0 -1
  379. package/dist/src/process-shared-store.test.js +0 -60
  380. package/dist/src/process-shared-store.test.js.map +0 -1
  381. package/dist/src/project-path-normalize.d.ts +0 -30
  382. package/dist/src/project-path-normalize.d.ts.map +0 -1
  383. package/dist/src/project-path-normalize.js +0 -101
  384. package/dist/src/project-path-normalize.js.map +0 -1
  385. package/dist/src/recommended-system-prompt.d.ts +0 -3
  386. package/dist/src/recommended-system-prompt.d.ts.map +0 -1
  387. package/dist/src/recommended-system-prompt.js +0 -8
  388. package/dist/src/recommended-system-prompt.js.map +0 -1
  389. package/dist/src/register-exec-env-hook.d.ts +0 -44
  390. package/dist/src/register-exec-env-hook.d.ts.map +0 -1
  391. package/dist/src/register-exec-env-hook.js +0 -473
  392. package/dist/src/register-exec-env-hook.js.map +0 -1
  393. package/dist/src/register-exec-env-hook.test.d.ts +0 -2
  394. package/dist/src/register-exec-env-hook.test.d.ts.map +0 -1
  395. package/dist/src/register-exec-env-hook.test.js +0 -189
  396. package/dist/src/register-exec-env-hook.test.js.map +0 -1
  397. package/dist/src/register-group-prompt-hook.d.ts +0 -17
  398. package/dist/src/register-group-prompt-hook.d.ts.map +0 -1
  399. package/dist/src/register-group-prompt-hook.js +0 -45
  400. package/dist/src/register-group-prompt-hook.js.map +0 -1
  401. package/dist/src/register-group-prompt-hook.test.d.ts +0 -2
  402. package/dist/src/register-group-prompt-hook.test.d.ts.map +0 -1
  403. package/dist/src/register-group-prompt-hook.test.js +0 -60
  404. package/dist/src/register-group-prompt-hook.test.js.map +0 -1
  405. package/dist/src/register-per-message-model-hook.d.ts +0 -14
  406. package/dist/src/register-per-message-model-hook.d.ts.map +0 -1
  407. package/dist/src/register-per-message-model-hook.js +0 -48
  408. package/dist/src/register-per-message-model-hook.js.map +0 -1
  409. package/dist/src/register-per-message-model-hook.test.d.ts +0 -2
  410. package/dist/src/register-per-message-model-hook.test.d.ts.map +0 -1
  411. package/dist/src/register-per-message-model-hook.test.js +0 -208
  412. package/dist/src/register-per-message-model-hook.test.js.map +0 -1
  413. package/dist/src/register-run-model-context-hook.d.ts +0 -11
  414. package/dist/src/register-run-model-context-hook.d.ts.map +0 -1
  415. package/dist/src/register-run-model-context-hook.js +0 -23
  416. package/dist/src/register-run-model-context-hook.js.map +0 -1
  417. package/dist/src/reply-dispatch-driver.d.ts +0 -89
  418. package/dist/src/reply-dispatch-driver.d.ts.map +0 -1
  419. package/dist/src/reply-dispatch-driver.js +0 -294
  420. package/dist/src/reply-dispatch-driver.js.map +0 -1
  421. package/dist/src/reply-dispatch-driver.test.d.ts +0 -2
  422. package/dist/src/reply-dispatch-driver.test.d.ts.map +0 -1
  423. package/dist/src/reply-dispatch-driver.test.js +0 -363
  424. package/dist/src/reply-dispatch-driver.test.js.map +0 -1
  425. package/dist/src/resolve-inbound-group-prompt.d.ts +0 -37
  426. package/dist/src/resolve-inbound-group-prompt.d.ts.map +0 -1
  427. package/dist/src/resolve-inbound-group-prompt.js +0 -57
  428. package/dist/src/resolve-inbound-group-prompt.js.map +0 -1
  429. package/dist/src/resource-file.d.ts +0 -119
  430. package/dist/src/resource-file.d.ts.map +0 -1
  431. package/dist/src/resource-file.js +0 -533
  432. package/dist/src/resource-file.js.map +0 -1
  433. package/dist/src/resource-file.test.d.ts +0 -2
  434. package/dist/src/resource-file.test.d.ts.map +0 -1
  435. package/dist/src/resource-file.test.js +0 -64
  436. package/dist/src/resource-file.test.js.map +0 -1
  437. package/dist/src/run-model-context.d.ts +0 -45
  438. package/dist/src/run-model-context.d.ts.map +0 -1
  439. package/dist/src/run-model-context.js +0 -108
  440. package/dist/src/run-model-context.js.map +0 -1
  441. package/dist/src/run-model-context.test.d.ts +0 -2
  442. package/dist/src/run-model-context.test.d.ts.map +0 -1
  443. package/dist/src/run-model-context.test.js +0 -68
  444. package/dist/src/run-model-context.test.js.map +0 -1
  445. package/dist/src/run-usage-session.d.ts +0 -13
  446. package/dist/src/run-usage-session.d.ts.map +0 -1
  447. package/dist/src/run-usage-session.js +0 -41
  448. package/dist/src/run-usage-session.js.map +0 -1
  449. package/dist/src/run-usage.d.ts +0 -67
  450. package/dist/src/run-usage.d.ts.map +0 -1
  451. package/dist/src/run-usage.js +0 -119
  452. package/dist/src/run-usage.js.map +0 -1
  453. package/dist/src/run-usage.test.d.ts +0 -2
  454. package/dist/src/run-usage.test.d.ts.map +0 -1
  455. package/dist/src/run-usage.test.js +0 -178
  456. package/dist/src/run-usage.test.js.map +0 -1
  457. package/dist/src/send-file-event.d.ts +0 -26
  458. package/dist/src/send-file-event.d.ts.map +0 -1
  459. package/dist/src/send-file-event.js +0 -33
  460. package/dist/src/send-file-event.js.map +0 -1
  461. package/dist/src/send-file-event.test.d.ts +0 -2
  462. package/dist/src/send-file-event.test.d.ts.map +0 -1
  463. package/dist/src/send-file-event.test.js +0 -86
  464. package/dist/src/send-file-event.test.js.map +0 -1
  465. package/dist/src/send-file-tool.d.ts +0 -81
  466. package/dist/src/send-file-tool.d.ts.map +0 -1
  467. package/dist/src/send-file-tool.js +0 -363
  468. package/dist/src/send-file-tool.js.map +0 -1
  469. package/dist/src/send-file-tool.test.d.ts +0 -2
  470. package/dist/src/send-file-tool.test.d.ts.map +0 -1
  471. package/dist/src/send-file-tool.test.js +0 -176
  472. package/dist/src/send-file-tool.test.js.map +0 -1
  473. package/dist/src/send-group-message-tool.d.ts +0 -17
  474. package/dist/src/send-group-message-tool.d.ts.map +0 -1
  475. package/dist/src/send-group-message-tool.js +0 -82
  476. package/dist/src/send-group-message-tool.js.map +0 -1
  477. package/dist/src/send-service.d.ts +0 -83
  478. package/dist/src/send-service.d.ts.map +0 -1
  479. package/dist/src/send-service.js +0 -324
  480. package/dist/src/send-service.js.map +0 -1
  481. package/dist/src/send-service.test.d.ts +0 -2
  482. package/dist/src/send-service.test.d.ts.map +0 -1
  483. package/dist/src/send-service.test.js +0 -40
  484. package/dist/src/send-service.test.js.map +0 -1
  485. package/dist/src/session-env-store.d.ts +0 -55
  486. package/dist/src/session-env-store.d.ts.map +0 -1
  487. package/dist/src/session-env-store.js +0 -328
  488. package/dist/src/session-env-store.js.map +0 -1
  489. package/dist/src/session-env-store.test.d.ts +0 -2
  490. package/dist/src/session-env-store.test.d.ts.map +0 -1
  491. package/dist/src/session-env-store.test.js +0 -151
  492. package/dist/src/session-env-store.test.js.map +0 -1
  493. package/dist/src/session-group-prompt.d.ts +0 -34
  494. package/dist/src/session-group-prompt.d.ts.map +0 -1
  495. package/dist/src/session-group-prompt.js +0 -101
  496. package/dist/src/session-group-prompt.js.map +0 -1
  497. package/dist/src/session-group-prompt.test.d.ts +0 -2
  498. package/dist/src/session-group-prompt.test.d.ts.map +0 -1
  499. package/dist/src/session-group-prompt.test.js +0 -72
  500. package/dist/src/session-group-prompt.test.js.map +0 -1
  501. package/dist/src/session-im-context.d.ts +0 -15
  502. package/dist/src/session-im-context.d.ts.map +0 -1
  503. package/dist/src/session-im-context.js +0 -54
  504. package/dist/src/session-im-context.js.map +0 -1
  505. package/dist/src/session-model-fallback.d.ts +0 -13
  506. package/dist/src/session-model-fallback.d.ts.map +0 -1
  507. package/dist/src/session-model-fallback.js +0 -24
  508. package/dist/src/session-model-fallback.js.map +0 -1
  509. package/dist/src/subagent-monitor.d.ts +0 -45
  510. package/dist/src/subagent-monitor.d.ts.map +0 -1
  511. package/dist/src/subagent-monitor.js +0 -498
  512. package/dist/src/subagent-monitor.js.map +0 -1
  513. package/dist/src/subagent-monitor.test.d.ts +0 -2
  514. package/dist/src/subagent-monitor.test.d.ts.map +0 -1
  515. package/dist/src/subagent-monitor.test.js +0 -335
  516. package/dist/src/subagent-monitor.test.js.map +0 -1
  517. package/dist/src/sync-mapping-types.d.ts +0 -220
  518. package/dist/src/sync-mapping-types.d.ts.map +0 -1
  519. package/dist/src/sync-mapping-types.js +0 -55
  520. package/dist/src/sync-mapping-types.js.map +0 -1
  521. package/dist/src/sync-service-client.d.ts +0 -29
  522. package/dist/src/sync-service-client.d.ts.map +0 -1
  523. package/dist/src/sync-service-client.js +0 -72
  524. package/dist/src/sync-service-client.js.map +0 -1
  525. package/dist/src/thinking-ws-progress.d.ts +0 -24
  526. package/dist/src/thinking-ws-progress.d.ts.map +0 -1
  527. package/dist/src/thinking-ws-progress.js +0 -45
  528. package/dist/src/thinking-ws-progress.js.map +0 -1
  529. package/dist/src/thinking-ws-progress.test.d.ts +0 -2
  530. package/dist/src/thinking-ws-progress.test.d.ts.map +0 -1
  531. package/dist/src/thinking-ws-progress.test.js +0 -38
  532. package/dist/src/thinking-ws-progress.test.js.map +0 -1
  533. package/dist/src/tool-event-adapter.d.ts +0 -31
  534. package/dist/src/tool-event-adapter.d.ts.map +0 -1
  535. package/dist/src/tool-event-adapter.js +0 -83
  536. package/dist/src/tool-event-adapter.js.map +0 -1
  537. package/dist/src/tool-event-adapter.test.d.ts +0 -2
  538. package/dist/src/tool-event-adapter.test.d.ts.map +0 -1
  539. package/dist/src/tool-event-adapter.test.js +0 -93
  540. package/dist/src/tool-event-adapter.test.js.map +0 -1
  541. package/dist/src/tool-json-result.d.ts +0 -14
  542. package/dist/src/tool-json-result.d.ts.map +0 -1
  543. package/dist/src/tool-json-result.js +0 -20
  544. package/dist/src/tool-json-result.js.map +0 -1
  545. package/dist/src/turn-agent-event-subscription.d.ts +0 -29
  546. package/dist/src/turn-agent-event-subscription.d.ts.map +0 -1
  547. package/dist/src/turn-agent-event-subscription.js +0 -289
  548. package/dist/src/turn-agent-event-subscription.js.map +0 -1
  549. package/dist/src/turn-agent-event-subscription.test.d.ts +0 -2
  550. package/dist/src/turn-agent-event-subscription.test.d.ts.map +0 -1
  551. package/dist/src/turn-agent-event-subscription.test.js +0 -165
  552. package/dist/src/turn-agent-event-subscription.test.js.map +0 -1
  553. package/dist/src/turn-deliver-buffer.d.ts +0 -60
  554. package/dist/src/turn-deliver-buffer.d.ts.map +0 -1
  555. package/dist/src/turn-deliver-buffer.js +0 -133
  556. package/dist/src/turn-deliver-buffer.js.map +0 -1
  557. package/dist/src/turn-deliver-buffer.test.d.ts +0 -2
  558. package/dist/src/turn-deliver-buffer.test.d.ts.map +0 -1
  559. package/dist/src/turn-deliver-buffer.test.js +0 -184
  560. package/dist/src/turn-deliver-buffer.test.js.map +0 -1
  561. package/dist/src/turn-end-controller.d.ts +0 -61
  562. package/dist/src/turn-end-controller.d.ts.map +0 -1
  563. package/dist/src/turn-end-controller.js +0 -239
  564. package/dist/src/turn-end-controller.js.map +0 -1
  565. package/dist/src/turn-end-controller.test.d.ts +0 -2
  566. package/dist/src/turn-end-controller.test.d.ts.map +0 -1
  567. package/dist/src/turn-end-controller.test.js +0 -97
  568. package/dist/src/turn-end-controller.test.js.map +0 -1
  569. package/dist/src/types.d.ts +0 -433
  570. package/dist/src/types.d.ts.map +0 -1
  571. package/dist/src/types.js +0 -32
  572. package/dist/src/types.js.map +0 -1
  573. package/dist/src/user-facing-errors.d.ts +0 -32
  574. package/dist/src/user-facing-errors.d.ts.map +0 -1
  575. package/dist/src/user-facing-errors.js +0 -120
  576. package/dist/src/user-facing-errors.js.map +0 -1
  577. package/dist/src/user-facing-errors.test.d.ts +0 -2
  578. package/dist/src/user-facing-errors.test.d.ts.map +0 -1
  579. package/dist/src/user-facing-errors.test.js +0 -102
  580. package/dist/src/user-facing-errors.test.js.map +0 -1
  581. package/dist/src/workspace-event-protocol.d.ts +0 -3
  582. package/dist/src/workspace-event-protocol.d.ts.map +0 -1
  583. package/dist/src/workspace-event-protocol.js +0 -3
  584. package/dist/src/workspace-event-protocol.js.map +0 -1
  585. package/dist/src/workspace-event-scheduler.d.ts +0 -54
  586. package/dist/src/workspace-event-scheduler.d.ts.map +0 -1
  587. package/dist/src/workspace-event-scheduler.js +0 -131
  588. package/dist/src/workspace-event-scheduler.js.map +0 -1
  589. package/dist/src/workspace-event-scheduler.test.d.ts +0 -2
  590. package/dist/src/workspace-event-scheduler.test.d.ts.map +0 -1
  591. package/dist/src/workspace-event-scheduler.test.js +0 -157
  592. package/dist/src/workspace-event-scheduler.test.js.map +0 -1
  593. package/dist/src/workspace-event.d.ts +0 -28
  594. package/dist/src/workspace-event.d.ts.map +0 -1
  595. package/dist/src/workspace-event.js +0 -674
  596. package/dist/src/workspace-event.js.map +0 -1
  597. package/dist/src/workspace-event.test.d.ts +0 -2
  598. package/dist/src/workspace-event.test.d.ts.map +0 -1
  599. package/dist/src/workspace-event.test.js +0 -265
  600. package/dist/src/workspace-event.test.js.map +0 -1
  601. package/dist/src/ws-inbound-schema.d.ts +0 -14
  602. package/dist/src/ws-inbound-schema.d.ts.map +0 -1
  603. package/dist/src/ws-inbound-schema.js +0 -68
  604. package/dist/src/ws-inbound-schema.js.map +0 -1
  605. package/dist/src/ws-inbound-schema.test.d.ts +0 -2
  606. package/dist/src/ws-inbound-schema.test.d.ts.map +0 -1
  607. package/dist/src/ws-inbound-schema.test.js +0 -58
  608. package/dist/src/ws-inbound-schema.test.js.map +0 -1
  609. package/dist/src/ws-run-event-unmapped.d.ts +0 -10
  610. package/dist/src/ws-run-event-unmapped.d.ts.map +0 -1
  611. package/dist/src/ws-run-event-unmapped.js +0 -16
  612. package/dist/src/ws-run-event-unmapped.js.map +0 -1
  613. package/dist/src/ws-run-event-unmapped.test.d.ts +0 -2
  614. package/dist/src/ws-run-event-unmapped.test.d.ts.map +0 -1
  615. package/dist/src/ws-run-event-unmapped.test.js +0 -15
  616. package/dist/src/ws-run-event-unmapped.test.js.map +0 -1
@@ -1,82 +0,0 @@
1
- /**
2
- * XG-IM「主动推消息」工具(供 OpenClaw 在非对话场景下调用)
3
- *
4
- * 用途:定时任务、Cron、后台任务等需要 **经本 channel 主动把结果推送到 IM 群** 时,发一条纯文本。
5
- * **不用于**用户正通过 IM 与助手聊天时的回合内回复——那种情况走正常助手回复流,用不上本工具。
6
- *
7
- * 通过 api.registerTool() 注入,工具内部自动获取机器人 token。
8
- */
9
- import { Type } from "@sinclair/typebox";
10
- import { prefixProactiveOutboundText } from "./inbound-terminal-delivery.js";
11
- import { toolJsonResult } from "./tool-json-result.js";
12
- import { getToken } from "./auth.js";
13
- import { sendTextMessage } from "./send-service.js";
14
- import { resolveAccountConfig } from "./group-history-tool.js";
15
- // ─── 工具参数 Schema ─────────────────────────────────────────────────────────
16
- const SendGroupMessageParams = Type.Object({
17
- groupId: Type.String({
18
- description: "目标群聊 ID(IM 系统的群组唯一标识符,即 groupId / gid)",
19
- }),
20
- accountId: Type.Optional(Type.String({
21
- description: "(可选)要使用的 xg_cwork_im 账户 ID(即 accounts 的 key);若省略则使用当前 IM 通道绑定的账户(由网关注入)。",
22
- })),
23
- text: Type.String({
24
- description: "要发送的消息内容(仅纯文本,不支持附件/文件)",
25
- }),
26
- atUserIds: Type.Optional(Type.Array(Type.String(), {
27
- description: "需要 @ 的用户 ID 列表,可为空数组",
28
- })),
29
- });
30
- // ─── 工具构建函数 ─────────────────────────────────────────────────────────────
31
- /**
32
- * 构建「主动推送群消息」工具(纯文本)。
33
- * 建议使用工厂 `(ctx) => buildSendGroupMessageTool(cfg, hints)` 注册以带上通道账户上下文。
34
- */
35
- export function buildSendGroupMessageTool(config, hints) {
36
- return {
37
- name: "xg_cwork_im_send_group_message",
38
- label: "【xg_cwork_im】主动推送群消息(纯文本)",
39
- description: [
40
- "【用途】仅用于 OpenClaw **主动推消息**:例如定时任务 / Cron / 后台任务完成后,经 xg_cwork_im 向群里发一条**纯文字**结果或通知。",
41
- "【不要用错】用户正在 IM 里和助手**对话**时,**不要**用本工具回话——对话回复由 OpenClaw 正常走 channel,**用不上**本工具。",
42
- "【发文件】本工具**只能发纯文本,不能发附件**。用户要「发报告/发文件」时,必须改用 `xg_cwork_im_send_file` 工具(传 workspace 相对路径);禁止用 MEDIA 或上传到外站。",
43
- "【参数】groupId 为 IM 群唯一 ID;主动推送时若需告知某人,可填 atUserIds。",
44
- ].join("\n"),
45
- parameters: SendGroupMessageParams,
46
- async execute(_toolCallId, params) {
47
- const { groupId, text, atUserIds = [] } = params;
48
- const accountId = params.accountId ?? hints?.channelAccountId;
49
- console.log(`[cwork_im][tool] xg_cwork_im_send_group_message called: groupId=${groupId} atUsers=${JSON.stringify(atUserIds)}`);
50
- let identity;
51
- try {
52
- const accountConfig = resolveAccountConfig(config, accountId);
53
- identity = await getToken(accountConfig);
54
- console.log(`[cwork_im][tool] xg_cwork_im_send_group_message token acquired for userId=${identity.userId} using accountId=${accountId ?? "0"}`);
55
- }
56
- catch (err) {
57
- return toolJsonResult({
58
- ok: false,
59
- error: `Failed to obtain access token: ${String(err)}`,
60
- });
61
- }
62
- try {
63
- const accountConfig = resolveAccountConfig(config, accountId);
64
- const outboundText = prefixProactiveOutboundText(text, "cron");
65
- await sendTextMessage(accountConfig, identity.token, groupId, outboundText, atUserIds);
66
- console.log(`[cwork_im][tool] xg_cwork_im_send_group_message success: groupId=${groupId} trigger=cron using accountId=${accountId ?? "0"}`);
67
- }
68
- catch (err) {
69
- return toolJsonResult({
70
- ok: false,
71
- error: `Failed to send message to group ${groupId}: ${String(err)}`,
72
- });
73
- }
74
- return toolJsonResult({
75
- ok: true,
76
- groupId,
77
- sentBy: identity.userId,
78
- });
79
- },
80
- };
81
- }
82
- //# sourceMappingURL=send-group-message-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-group-message-tool.js","sourceRoot":"","sources":["../../src/send-group-message-tool.ts"],"names":[],"mappings":"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"}
@@ -1,83 +0,0 @@
1
- /**
2
- * XG-IM 消息发送模块
3
- *
4
- * 调用 IM 接口将 AI 回复发送到指定群聊,并 @ 原始发送者。
5
- * 支持 RICH_TEXT 与带资源 fileId 的 FILE 类型(attachments)。
6
- */
7
- import type { Log } from "./auth.js";
8
- import type { SendMessageFileAttachment, SendMessageReply, XgImConfig } from "./types.js";
9
- /**
10
- * 生成一次投递的客户端幂等键。
11
- *
12
- * 服务端按 `clientMsgId + groupId + 最近 10 分钟` 去重:同一逻辑消息在其内部 6 次重试间
13
- * 复用同一 `clientMsgId`,超时/断连重发会命中服务端已有消息,不产生重复气泡。
14
- * 每个独立投递块生成一次(不同块必须不同)。
15
- */
16
- export declare function generateClientMsgId(): string;
17
- /** 从发送接口响应中解析服务端消息 id(`data.id`)与回显 `clientMsgId`,用于对账日志。 */
18
- export declare function extractSentMessageInfo(resData: unknown): {
19
- serverMsgId?: string;
20
- clientMsgId?: string;
21
- };
22
- /** OpenClaw dispatch deliver 单块载荷:文本 + 可选媒体 URL(与 plugin-sdk 约定对齐)。 */
23
- export type ReplyDeliverPayload = {
24
- markdown?: string;
25
- text?: string;
26
- isThinking?: boolean;
27
- mediaUrl?: string;
28
- mediaUrls?: string[];
29
- /** OpenClaw 运营通知:模型 failover 状态变化(非助手正文) */
30
- isFallbackNotice?: boolean;
31
- isCompactionNotice?: boolean;
32
- isError?: boolean;
33
- /** OpenClaw assistant thinking/reasoning 块(对应 transcript type: thinking) */
34
- isReasoning?: boolean;
35
- };
36
- /**
37
- * 将 deliver 块发到 IM:若有媒体则先 POST baseUrl/file/upDownload/uploadWholeFile 再发 FILE;否则发 RICH_TEXT。
38
- *
39
- * @param agentWorkspaceDir 可选。Agent 在宿主机的 workspace 绝对路径(由 resolveAgentWorkspaceDir 得到)。
40
- * 用于在多沙箱 agent 场景下正确解析 /workspace/ 前缀路径。
41
- * 未传时回退到 process.cwd(),单 agent 部署下行为不变。
42
- */
43
- export declare function sendReplyDeliverBlock(config: XgImConfig, token: string, groupId: string, payload: ReplyDeliverPayload, atUserIds?: string[], log?: Log, _deprecatedMsgId?: string, reply?: SendMessageReply, agentWorkspaceDir?: string): Promise<void>;
44
- /**
45
- * 发送一条已上传资源的 FILE 消息到指定 IM 群聊。
46
- *
47
- * 与 {@link sendReplyDeliverBlock} 不同:本函数**不做** URL 下载 / 上传失败降级为文本的逻辑,
48
- * 仅负责把已经拿到 fileId 的附件组装成 FILE 消息发出。失败直接抛出,由调用方(工具)返回明确错误,
49
- * 不会产生「降级成文本却报成功」的假成功。上传步骤请在调用前用
50
- * {@link uploadWholeResourceFileWithRetry} 完成。
51
- *
52
- * 复用 {@link postImMessage} 的 6 次网络重试与服务端 clientMsgId 去重。
53
- */
54
- export declare function sendUploadedFileMessage(args: {
55
- config: XgImConfig;
56
- token: string;
57
- groupId: string;
58
- /** 附件说明;为空时用单空格占位,避免部分 IM 接口拒收空文本 */
59
- caption?: string;
60
- attachment: SendMessageFileAttachment;
61
- atUserIds?: string[];
62
- /** 幂等键;省略时自动生成 */
63
- clientMsgId?: string;
64
- reply?: SendMessageReply;
65
- log?: Log;
66
- }): Promise<{
67
- clientMsgId: string;
68
- serverMsgId?: string;
69
- }>;
70
- /**
71
- * 发送文本消息到指定 IM 群聊。
72
- *
73
- * @param config 插件配置
74
- * @param token 鉴权 token
75
- * @param groupId 目标群聊 ID(gid / groupId)
76
- * @param content 消息内容文本
77
- * @param atUserIds 需要 @ 的用户 ID 列表(可为空)
78
- * @param log 日志接口
79
- * @param _deprecatedMsgId 已废弃的占位消息 ID 参数,不再使用(保留以兼容旧调用签名)
80
- * @param reply 可选的被回复消息信息(用于在 IM 中建立“回复某条消息”的关联)
81
- */
82
- export declare function sendTextMessage(config: XgImConfig, token: string, groupId: string, content: string, atUserIds?: string[], log?: Log, _deprecatedMsgId?: string, reply?: SendMessageReply): Promise<void>;
83
- //# sourceMappingURL=send-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-service.d.ts","sourceRoot":"","sources":["../../src/send-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAWrC,OAAO,KAAK,EAAmB,yBAAyB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA6B3G;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,6DAA6D;AAC7D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAQvG;AA0KD,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACvC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,EAC5B,SAAS,GAAE,MAAM,EAAO,EACxB,GAAG,CAAC,EAAE,GAAG,EACT,gBAAgB,CAAC,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,gBAAgB,EACxB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Gf;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAChD,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,yBAAyB,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,GAAG,CAAC,EAAE,GAAG,CAAC;CACb,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACjC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAM,EAAO,EACxB,GAAG,CAAC,EAAE,GAAG,EACT,gBAAgB,CAAC,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -1,324 +0,0 @@
1
- /**
2
- * XG-IM 消息发送模块
3
- *
4
- * 调用 IM 接口将 AI 回复发送到指定群聊,并 @ 原始发送者。
5
- * 支持 RICH_TEXT 与带资源 fileId 的 FILE 类型(attachments)。
6
- */
7
- import { randomUUID } from "node:crypto";
8
- import axios from "axios";
9
- import { downloadMediaBuffer, formatFromFilename, parseWorkspaceRelativeMediaRef, resolveMaxAttachmentBytes, resolveResourceUploadUrl, uploadWholeResourceFile, } from "./resource-file.js";
10
- import { stripMediaDirectiveLines, stripModelUsageFooter } from "./deliver-text.js";
11
- import { formatUserFacingMediaDeliverError } from "./user-facing-errors.js";
12
- function formatDeliverError(err) {
13
- if (axios.isAxiosError(err)) {
14
- const parts = [err.message];
15
- if (err.code)
16
- parts.push(`axiosCode=${err.code}`);
17
- if (err.response?.status != null)
18
- parts.push(`httpStatus=${err.response.status}`);
19
- return parts.join(" ");
20
- }
21
- if (err instanceof Error)
22
- return err.message;
23
- return String(err);
24
- }
25
- /** 文件下载/上传失败时:正文 + 原始媒体链接 + 失败说明(链接可供用户或后续轮次使用)。 */
26
- function buildFileDeliverFallbackText(textToSend, mediaUrls, err) {
27
- const errNote = `(${formatUserFacingMediaDeliverError(err, mediaUrls)})`;
28
- const urlBlock = mediaUrls.length > 0
29
- ? `\n\n**附件链接(未能上传 IM)**\n${mediaUrls.map((u) => `- \`${u.trim()}\``).join("\n")}`
30
- : "";
31
- if (textToSend.length > 0) {
32
- return `${textToSend}${urlBlock}\n\n${errNote}`;
33
- }
34
- if (urlBlock.trim()) {
35
- return `${urlBlock.trim()}\n\n${errNote}`;
36
- }
37
- return errNote;
38
- }
39
- /**
40
- * 生成一次投递的客户端幂等键。
41
- *
42
- * 服务端按 `clientMsgId + groupId + 最近 10 分钟` 去重:同一逻辑消息在其内部 6 次重试间
43
- * 复用同一 `clientMsgId`,超时/断连重发会命中服务端已有消息,不产生重复气泡。
44
- * 每个独立投递块生成一次(不同块必须不同)。
45
- */
46
- export function generateClientMsgId() {
47
- return `ocw_${Date.now()}_${randomUUID()}`;
48
- }
49
- /** 从发送接口响应中解析服务端消息 id(`data.id`)与回显 `clientMsgId`,用于对账日志。 */
50
- export function extractSentMessageInfo(resData) {
51
- if (!resData || typeof resData !== "object")
52
- return {};
53
- const data = resData.data;
54
- if (!data || typeof data !== "object")
55
- return {};
56
- const d = data;
57
- const serverMsgId = typeof d.id === "string" ? d.id : d.id != null ? String(d.id) : undefined;
58
- const clientMsgId = typeof d.clientMsgId === "string" ? d.clientMsgId : undefined;
59
- return { serverMsgId, clientMsgId };
60
- }
61
- /**
62
- * 发消息接口的重试参数。
63
- *
64
- * 总尝试次数 = 1(首次) + IM_SEND_MAX_RETRIES(重试) = 6。
65
- * 重试间隔指数退避:1s → 2s → 4s → 8s → 16s(上限 IM_SEND_RETRY_DELAY_CAP_MS)。
66
- * 仅对网络层瞬时错误(无响应 / 5xx / 408 / 429)重试;4xx 与业务 resultCode 错误视为永久失败,立即抛出。
67
- */
68
- const IM_SEND_MAX_RETRIES = 5;
69
- const IM_SEND_RETRY_DELAY_BASE_MS = 1_000;
70
- const IM_SEND_RETRY_DELAY_CAP_MS = 30_000;
71
- function calcSendRetryDelayMs(attempt) {
72
- const exp = IM_SEND_RETRY_DELAY_BASE_MS * 2 ** Math.max(0, attempt - 1);
73
- return Math.min(exp, IM_SEND_RETRY_DELAY_CAP_MS);
74
- }
75
- function delay(ms) {
76
- return new Promise((resolve) => setTimeout(resolve, ms));
77
- }
78
- /**
79
- * 判断错误是否值得重试。
80
- *
81
- * - axios 网络错误 / 超时 / 5xx / 408 / 429 → 重试
82
- * - 4xx(其它)/ 业务 resultCode 错误(普通 Error)→ 永久失败,不重试
83
- */
84
- function isRetryableSendError(err) {
85
- if (axios.isAxiosError(err)) {
86
- const status = err.response?.status;
87
- if (status === undefined)
88
- return true;
89
- if (status >= 500)
90
- return true;
91
- if (status === 408 || status === 429)
92
- return true;
93
- return false;
94
- }
95
- return false;
96
- }
97
- /** POST /im/message/send 相关日志:`log` 未传入或网关未绑定时仍输出到 console,避免「消息已发出却看不到接口日志」 */
98
- function sendLogInfo(log, msg) {
99
- if (typeof log?.info === "function") {
100
- log.info(msg);
101
- return;
102
- }
103
- const alt = log;
104
- if (typeof alt?.log === "function") {
105
- alt.log(msg);
106
- return;
107
- }
108
- console.log(`[xg_cwork_im] ${msg}`);
109
- }
110
- function sendLogWarn(log, msg) {
111
- if (typeof log?.warn === "function") {
112
- log.warn(msg);
113
- return;
114
- }
115
- sendLogInfo(log, msg);
116
- }
117
- function sendLogError(log, msg) {
118
- if (typeof log?.error === "function") {
119
- log.error(msg);
120
- return;
121
- }
122
- console.error(`[xg_cwork_im] ${msg}`);
123
- }
124
- function sendLogDebug(log, config, msg) {
125
- if (!config.debug)
126
- return;
127
- if (typeof log?.debug === "function") {
128
- log.debug(msg);
129
- return;
130
- }
131
- console.log(`[xg_cwork_im] ${msg}`);
132
- }
133
- async function postImMessage(config, token, groupId, body, atUserIds = [], log) {
134
- const url = `${config.baseUrl}/im/message/send`;
135
- const full = {
136
- ...body,
137
- groupId,
138
- ...(atUserIds.length > 0 ? { atUserIds } : {}),
139
- };
140
- const bodyClientMsgId = typeof full.clientMsgId === "string" ? full.clientMsgId : undefined;
141
- sendLogInfo(log, `[cwork_im:send] POST ${url} groupId=${groupId} type=${full.type} ` +
142
- `clientMsgId=${bodyClientMsgId ?? "none"} ` +
143
- `atUsers=${JSON.stringify(atUserIds)}`);
144
- sendLogDebug(log, config, `[cwork_im:send] Request body: ${JSON.stringify(full)}`);
145
- const totalAttempts = 1 + IM_SEND_MAX_RETRIES;
146
- let lastErr = undefined;
147
- for (let attempt = 1; attempt <= totalAttempts; attempt++) {
148
- try {
149
- const res = await axios.post(url, full, {
150
- headers: {
151
- "Content-Type": "application/json",
152
- "access-token": token,
153
- },
154
- timeout: 10_000,
155
- });
156
- sendLogInfo(log, `[cwork_im:send] Response status=${res.status} (attempt=${attempt}/${totalAttempts})`);
157
- sendLogDebug(log, config, `[cwork_im:send] Response body: ${JSON.stringify(res.data)}`);
158
- // Detect business-level errors that arrive with HTTP 200.
159
- // IM API unified response: { data, resultCode: 1, resultMsg: "" } — resultCode=1 means success.
160
- const d = res.data;
161
- if (d && typeof d === "object") {
162
- const resultCode = d.resultCode;
163
- const resultMsg = d.resultMsg;
164
- if (resultCode !== undefined && resultCode !== 1) {
165
- throw new Error(`IM API error resultCode=${resultCode}${resultMsg ? ` resultMsg=${resultMsg}` : ""}`);
166
- }
167
- }
168
- // 对账日志:服务端消息 id(data.id)+ 回显 clientMsgId;重试命中去重时会返回既有消息。
169
- const sent = extractSentMessageInfo(d);
170
- sendLogInfo(log, `[cwork_im:send] Delivered groupId=${groupId} ` +
171
- `serverMsgId=${sent.serverMsgId ?? "unknown"} ` +
172
- `clientMsgId=${sent.clientMsgId ?? bodyClientMsgId ?? "none"} ` +
173
- `(attempt=${attempt}/${totalAttempts})`);
174
- return { serverMsgId: sent.serverMsgId, clientMsgId: sent.clientMsgId ?? bodyClientMsgId };
175
- }
176
- catch (err) {
177
- lastErr = err;
178
- const msg = formatDeliverError(err);
179
- const retryable = isRetryableSendError(err);
180
- const isLast = attempt >= totalAttempts;
181
- if (!retryable || isLast) {
182
- sendLogError(log, `[cwork_im:send] Failed to send message to groupId=${groupId} ` +
183
- `(attempt=${attempt}/${totalAttempts}, retryable=${retryable}): ${msg}`);
184
- throw err;
185
- }
186
- const retryDelayMs = calcSendRetryDelayMs(attempt);
187
- sendLogWarn(log, `[cwork_im:send] Send failed (attempt=${attempt}/${totalAttempts}), ` +
188
- `retrying in ${retryDelayMs}ms: ${msg}`);
189
- await delay(retryDelayMs);
190
- }
191
- }
192
- // 理论上不可达:上面循环里要么 return 要么 throw。这里只是给 TS 一个安全兜底。
193
- throw lastErr ?? new Error("[cwork_im:send] Send failed after retries");
194
- }
195
- /**
196
- * 将 deliver 块发到 IM:若有媒体则先 POST baseUrl/file/upDownload/uploadWholeFile 再发 FILE;否则发 RICH_TEXT。
197
- *
198
- * @param agentWorkspaceDir 可选。Agent 在宿主机的 workspace 绝对路径(由 resolveAgentWorkspaceDir 得到)。
199
- * 用于在多沙箱 agent 场景下正确解析 /workspace/ 前缀路径。
200
- * 未传时回退到 process.cwd(),单 agent 部署下行为不变。
201
- */
202
- export async function sendReplyDeliverBlock(config, token, groupId, payload, atUserIds = [], log, _deprecatedMsgId, reply, agentWorkspaceDir) {
203
- // 一个投递块一个 clientMsgId:内部 6 次重试复用同值 → 命中服务端去重,不重复投递。
204
- const clientMsgId = generateClientMsgId();
205
- const textToSend = stripModelUsageFooter(stripMediaDirectiveLines((payload.markdown || payload.text || "").trim()));
206
- const mediaList = [
207
- ...(payload.mediaUrl ? [payload.mediaUrl] : []),
208
- ...((payload.mediaUrls ?? []).filter((u) => typeof u === "string" && u.trim())),
209
- ];
210
- const uniqueUrls = [...new Set(mediaList)];
211
- const maxBytes = resolveMaxAttachmentBytes(config);
212
- const formField = config.fileUploadFormField?.trim() || "file";
213
- const wantFile = uniqueUrls.length > 0 && !payload.isThinking;
214
- sendLogInfo(log, `[cwork_im:send] sendReplyDeliverBlock plan kind=${wantFile ? "FILE" : textToSend.length > 0 ? "RICH_TEXT" : "none"} ` +
215
- `clientMsgId=${clientMsgId} ` +
216
- `isThinking=${payload.isThinking ?? false}`);
217
- if (wantFile) {
218
- const fileUploadUrl = resolveResourceUploadUrl(config.baseUrl);
219
- if (!agentWorkspaceDir?.trim() && uniqueUrls.some((u) => {
220
- const t = u.trim();
221
- return t.startsWith("/workspace") || parseWorkspaceRelativeMediaRef(t) != null;
222
- })) {
223
- sendLogWarn(log, `[cwork_im:send] agentWorkspaceDir missing for workspace media; ` +
224
- `falling back to cwd and /workspace candidates (text-only unaffected) refs=${uniqueUrls.length}`);
225
- }
226
- try {
227
- const attachments = [];
228
- for (const u of uniqueUrls) {
229
- const { buffer, filename } = await downloadMediaBuffer(u, maxBytes, log, agentWorkspaceDir);
230
- const { fileId } = await uploadWholeResourceFile({
231
- fileUploadUrl,
232
- token,
233
- buffer,
234
- filename,
235
- formField,
236
- log,
237
- });
238
- attachments.push({
239
- fileId,
240
- fileType: "FILE",
241
- format: formatFromFilename(filename),
242
- name: filename,
243
- size: buffer.length,
244
- source: "resource",
245
- });
246
- }
247
- const caption = textToSend.length > 0 ? textToSend : " ";
248
- await postImMessage(config, token, groupId, {
249
- type: "FILE",
250
- text: caption,
251
- attachments,
252
- clientMsgId,
253
- ...(reply ? { reply } : {}),
254
- }, atUserIds, log);
255
- return;
256
- }
257
- catch (err) {
258
- sendLogError(log, `[cwork_im:send] FILE deliver failed, fallback to text if any: ${formatDeliverError(err)}`);
259
- const fallbackText = buildFileDeliverFallbackText(textToSend, uniqueUrls, err);
260
- // 下载/上传失败不阻塞:仍发 RICH_TEXT,并附带原始媒体链接
261
- await postImMessage(config, token, groupId, {
262
- type: "RICH_TEXT",
263
- text: fallbackText,
264
- clientMsgId,
265
- ...(reply ? { reply } : {}),
266
- }, atUserIds, log);
267
- return;
268
- }
269
- }
270
- if (textToSend.length > 0) {
271
- await postImMessage(config, token, groupId, {
272
- type: "RICH_TEXT",
273
- text: textToSend,
274
- clientMsgId,
275
- ...(reply ? { reply } : {}),
276
- }, atUserIds, log);
277
- }
278
- }
279
- /**
280
- * 发送一条已上传资源的 FILE 消息到指定 IM 群聊。
281
- *
282
- * 与 {@link sendReplyDeliverBlock} 不同:本函数**不做** URL 下载 / 上传失败降级为文本的逻辑,
283
- * 仅负责把已经拿到 fileId 的附件组装成 FILE 消息发出。失败直接抛出,由调用方(工具)返回明确错误,
284
- * 不会产生「降级成文本却报成功」的假成功。上传步骤请在调用前用
285
- * {@link uploadWholeResourceFileWithRetry} 完成。
286
- *
287
- * 复用 {@link postImMessage} 的 6 次网络重试与服务端 clientMsgId 去重。
288
- */
289
- export async function sendUploadedFileMessage(args) {
290
- const caption = args.caption && args.caption.trim().length > 0 ? args.caption : " ";
291
- const clientMsgId = args.clientMsgId ?? generateClientMsgId();
292
- const sent = await postImMessage(args.config, args.token, args.groupId, {
293
- type: "FILE",
294
- text: caption,
295
- attachments: [args.attachment],
296
- clientMsgId,
297
- ...(args.reply ? { reply: args.reply } : {}),
298
- }, args.atUserIds ?? [], args.log);
299
- return { clientMsgId, serverMsgId: sent.serverMsgId };
300
- }
301
- /**
302
- * 发送文本消息到指定 IM 群聊。
303
- *
304
- * @param config 插件配置
305
- * @param token 鉴权 token
306
- * @param groupId 目标群聊 ID(gid / groupId)
307
- * @param content 消息内容文本
308
- * @param atUserIds 需要 @ 的用户 ID 列表(可为空)
309
- * @param log 日志接口
310
- * @param _deprecatedMsgId 已废弃的占位消息 ID 参数,不再使用(保留以兼容旧调用签名)
311
- * @param reply 可选的被回复消息信息(用于在 IM 中建立“回复某条消息”的关联)
312
- */
313
- export async function sendTextMessage(config, token, groupId, content, atUserIds = [], log, _deprecatedMsgId, reply) {
314
- const text = stripModelUsageFooter(stripMediaDirectiveLines(content.trim()));
315
- if (!text)
316
- return;
317
- await postImMessage(config, token, groupId, {
318
- type: "RICH_TEXT",
319
- text,
320
- clientMsgId: generateClientMsgId(),
321
- ...(reply ? { reply } : {}),
322
- }, atUserIds, log);
323
- }
324
- //# sourceMappingURL=send-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-service.js","sourceRoot":"","sources":["../../src/send-service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=send-service.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-service.test.d.ts","sourceRoot":"","sources":["../../src/send-service.test.ts"],"names":[],"mappings":""}
@@ -1,40 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { describe, it } from "node:test";
3
- import { extractSentMessageInfo, generateClientMsgId } from "./send-service.js";
4
- describe("generateClientMsgId", () => {
5
- it("is unique per call (distinct logical messages)", () => {
6
- const a = generateClientMsgId();
7
- const b = generateClientMsgId();
8
- assert.notEqual(a, b);
9
- assert.match(a, /^ocw_\d+_/);
10
- });
11
- });
12
- describe("extractSentMessageInfo", () => {
13
- it("reads server id and echoed clientMsgId from real send response", () => {
14
- const res = {
15
- resultCode: 1,
16
- resultMsg: null,
17
- data: {
18
- id: "2077657906769403905",
19
- groupId: "2072518674467676162",
20
- type: "TEXT",
21
- text: "1",
22
- clientMsgId: "temp_1784187222818_oe8fjl",
23
- },
24
- };
25
- const info = extractSentMessageInfo(res);
26
- assert.equal(info.serverMsgId, "2077657906769403905");
27
- assert.equal(info.clientMsgId, "temp_1784187222818_oe8fjl");
28
- });
29
- it("coerces numeric id to string", () => {
30
- const info = extractSentMessageInfo({ data: { id: 12345 } });
31
- assert.equal(info.serverMsgId, "12345");
32
- });
33
- it("returns empty when data missing or malformed", () => {
34
- assert.deepEqual(extractSentMessageInfo(null), {});
35
- assert.deepEqual(extractSentMessageInfo({}), {});
36
- assert.deepEqual(extractSentMessageInfo({ data: null }), {});
37
- assert.deepEqual(extractSentMessageInfo({ data: "nope" }), {});
38
- });
39
- });
40
- //# sourceMappingURL=send-service.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-service.test.js","sourceRoot":"","sources":["../../src/send-service.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,GAAG,GAAG;YACR,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,IAAI;YACf,IAAI,EAAE;gBACF,EAAE,EAAE,qBAAqB;gBACzB,OAAO,EAAE,qBAAqB;gBAC9B,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,2BAA2B;aAC3C;SACJ,CAAC;QACF,MAAM,IAAI,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * 会话级环境变量存储:按 sessionKey 保存每个会话的 exec 环境变量,
3
- * 供 before_tool_call 向 exec 子进程注入(多用户并发安全,不碰 process.env)。
4
- *
5
- * 语义:同一群内消息按当前会话写入;subagent 的权威父链由 OpenClaw
6
- * Session 元数据提供,linkChildSession 仅保留作运行时兼容/性能回退。
7
- *
8
- * 持久化:仅持久化会话级 env(当前为 XG_OPENAPI_APP_KEY)。写入后防抖落盘到
9
- * stateDir/xgjktech/session-env.json,openclaw 重启后恢复;subagent 父子链是
10
- * 运行时关系,不持久化。baseUrl 等配置值不在此存储(hook 侧直接读配置)。
11
- */
12
- export declare const XG_OPENAPI_APP_KEY = "XG_OPENAPI_APP_KEY";
13
- /** 过滤非法/危险 env 键值对(key 命名、长度、null 字节)。 */
14
- export declare function sanitizeSessionEnv(env: Record<string, string>): Record<string, string>;
15
- export declare function isRecord(value: unknown): value is Record<string, unknown>;
16
- /**
17
- * 初始化持久化(register(api) 时调用一次,传入 api.runtime.state.resolveStateDir())。
18
- * 读盘加载到内存;失败降级为纯内存模式,绝不抛。
19
- * 进程级共享:整个进程只从磁盘加载一次,避免插件重载后新模块实例重新 init 覆盖共享内存态。
20
- */
21
- export declare function initSessionEnvPersistence(stateDir: string): void;
22
- /** 立即落盘(测试 / 进程退出钩子使用)。 */
23
- export declare function flushSessionEnvPersistence(): void;
24
- /** 合并写入某个会话的 env(覆盖同 key;空/非法值会被过滤)。 */
25
- export declare function setSessionEnv(sessionKey: string, env: Record<string, string>): void;
26
- /** 设置/删除某个会话的单个 env 键;value 为 undefined 时删除。 */
27
- export declare function setSessionEnvEntry(sessionKey: string, key: string, value: string | undefined): void;
28
- /** 读取某个会话的 env 快照(浅拷贝)。 */
29
- export declare function getSessionEnv(sessionKey: string): Record<string, string> | undefined;
30
- /** 清空某个会话的 env 与父子关联。 */
31
- export declare function clearSessionEnv(sessionKey: string): void;
32
- /** 删除某个会话的单个 env 键。 */
33
- export declare function removeSessionEnvKey(sessionKey: string, key: string): void;
34
- /** 登记 subagent 子会话到父会话的关联,供 exec env 父子链反查。 */
35
- export declare function linkChildSession(childSessionKey: string, parentSessionKey: string): void;
36
- /** 读取运行时登记的 child -> parent 关系;仅作为宿主父链不可用时的兼容回退。 */
37
- export declare function getLinkedParentSessionKey(sessionKey: string | undefined): string | undefined;
38
- /** Record the last IM sender for optional Cron binding audit metadata. */
39
- export declare function setSessionUserContext(sessionKey: string, userId?: string, userName?: string): void;
40
- export declare function getSessionUserContext(sessionKey: string | undefined): {
41
- userId?: string;
42
- userName?: string;
43
- } | undefined;
44
- /**
45
- * 解析某个会话应注入 exec 的 env:先查本会话;查不到则沿 subagent 父子链
46
- * 反查父会话(限深,防环)。subagent 内 exec 触发 hook 时 sessionKey 是子会话 key。
47
- */
48
- export declare function resolveEnvForSession(sessionKey: string | undefined): Record<string, string>;
49
- export declare function __resetSessionEnvStoreForTests(): void;
50
- /**
51
- * 插件真卸载/网关停止时:先把待写数据落盘,再清空共享内存与定时器并复位持久化机器
52
- * (下次进程/重载可重新从磁盘加载)。注意:热重载接管场景不应调用本函数(见 plugin-dispose)。
53
- */
54
- export declare function disposeSessionEnvStore(): void;
55
- //# sourceMappingURL=session-env-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-env-store.d.ts","sourceRoot":"","sources":["../../src/session-env-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAsDvD,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQtF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AA+GD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQhE;AAED,2BAA2B;AAC3B,wBAAgB,0BAA0B,IAAI,IAAI,CASjD;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CASnF;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAC1B,IAAI,CAqBN;AAED,2BAA2B;AAC3B,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAMpF;AAED,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAOxD;AAED,uBAAuB;AACvB,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAIxF;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE5F;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAGlG;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAExH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc3F;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAkB7C"}