@xgjktech/xg_cwork_im 1.19.43 → 1.19.45

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 (394) hide show
  1. package/README.md +492 -492
  2. package/dist/src/account-connection.d.ts +1 -1
  3. package/dist/src/account-connection.d.ts.map +1 -1
  4. package/dist/src/account-connection.js +136 -25
  5. package/dist/src/account-connection.js.map +1 -1
  6. package/dist/src/account-reconciler.d.ts +17 -8
  7. package/dist/src/account-reconciler.d.ts.map +1 -1
  8. package/dist/src/account-reconciler.js +31 -11
  9. package/dist/src/account-reconciler.js.map +1 -1
  10. package/dist/src/account-reconciler.test.js +19 -1
  11. package/dist/src/account-reconciler.test.js.map +1 -1
  12. package/dist/src/action-store-access.d.ts +2 -0
  13. package/dist/src/action-store-access.d.ts.map +1 -1
  14. package/dist/src/action-store-access.js +7 -0
  15. package/dist/src/action-store-access.js.map +1 -1
  16. package/dist/src/action-store-lifecycle.test.d.ts +2 -0
  17. package/dist/src/action-store-lifecycle.test.d.ts.map +1 -0
  18. package/dist/src/action-store-lifecycle.test.js +195 -0
  19. package/dist/src/action-store-lifecycle.test.js.map +1 -0
  20. package/dist/src/active-cron-context-store.d.ts +20 -0
  21. package/dist/src/active-cron-context-store.d.ts.map +1 -0
  22. package/dist/src/active-cron-context-store.js +73 -0
  23. package/dist/src/active-cron-context-store.js.map +1 -0
  24. package/dist/src/active-round-registry.d.ts +6 -0
  25. package/dist/src/active-round-registry.d.ts.map +1 -1
  26. package/dist/src/active-round-registry.js +27 -2
  27. package/dist/src/active-round-registry.js.map +1 -1
  28. package/dist/src/agent-stream-client-registry.d.ts +2 -0
  29. package/dist/src/agent-stream-client-registry.d.ts.map +1 -1
  30. package/dist/src/agent-stream-client-registry.js +6 -1
  31. package/dist/src/agent-stream-client-registry.js.map +1 -1
  32. package/dist/src/apply-sync-mapping.d.ts +1 -1
  33. package/dist/src/apply-sync-mapping.d.ts.map +1 -1
  34. package/dist/src/assistant-item-delivery.d.ts +27 -0
  35. package/dist/src/assistant-item-delivery.d.ts.map +1 -0
  36. package/dist/src/assistant-item-delivery.js +134 -0
  37. package/dist/src/assistant-item-delivery.js.map +1 -0
  38. package/dist/src/assistant-item-delivery.test.d.ts +2 -0
  39. package/dist/src/assistant-item-delivery.test.d.ts.map +1 -0
  40. package/dist/src/assistant-item-delivery.test.js +116 -0
  41. package/dist/src/assistant-item-delivery.test.js.map +1 -0
  42. package/dist/src/assistant-item-sink.d.ts +17 -0
  43. package/dist/src/assistant-item-sink.d.ts.map +1 -0
  44. package/dist/src/assistant-item-sink.js +34 -0
  45. package/dist/src/assistant-item-sink.js.map +1 -0
  46. package/dist/src/auth.d.ts +2 -0
  47. package/dist/src/auth.d.ts.map +1 -1
  48. package/dist/src/auth.js +4 -0
  49. package/dist/src/auth.js.map +1 -1
  50. package/dist/src/block-streaming-config.test.js +7 -1
  51. package/dist/src/block-streaming-config.test.js.map +1 -1
  52. package/dist/src/build-project-prompt.test.js +18 -18
  53. package/dist/src/channel-config.d.ts +83 -17
  54. package/dist/src/channel-config.d.ts.map +1 -1
  55. package/dist/src/channel-config.js +46 -13
  56. package/dist/src/channel-config.js.map +1 -1
  57. package/dist/src/channel-config.test.js +58 -1
  58. package/dist/src/channel-config.test.js.map +1 -1
  59. package/dist/src/channel.d.ts +4 -3
  60. package/dist/src/channel.d.ts.map +1 -1
  61. package/dist/src/channel.js +127 -4
  62. package/dist/src/channel.js.map +1 -1
  63. package/dist/src/connection-workspace-event.test.d.ts +2 -0
  64. package/dist/src/connection-workspace-event.test.d.ts.map +1 -0
  65. package/dist/src/connection-workspace-event.test.js +74 -0
  66. package/dist/src/connection-workspace-event.test.js.map +1 -0
  67. package/dist/src/connection.d.ts +28 -0
  68. package/dist/src/connection.d.ts.map +1 -1
  69. package/dist/src/connection.js +155 -78
  70. package/dist/src/connection.js.map +1 -1
  71. package/dist/src/connection.test.d.ts +2 -0
  72. package/dist/src/connection.test.d.ts.map +1 -0
  73. package/dist/src/connection.test.js +110 -0
  74. package/dist/src/connection.test.js.map +1 -0
  75. package/dist/src/cron-appkey-binding-store.d.ts +29 -0
  76. package/dist/src/cron-appkey-binding-store.d.ts.map +1 -0
  77. package/dist/src/cron-appkey-binding-store.js +239 -0
  78. package/dist/src/cron-appkey-binding-store.js.map +1 -0
  79. package/dist/src/cron-appkey-binding-store.test.d.ts +2 -0
  80. package/dist/src/cron-appkey-binding-store.test.d.ts.map +1 -0
  81. package/dist/src/cron-appkey-binding-store.test.js +387 -0
  82. package/dist/src/cron-appkey-binding-store.test.js.map +1 -0
  83. package/dist/src/deliver-text.test.js +22 -22
  84. package/dist/src/delivery/ai-task-push.d.ts +16 -0
  85. package/dist/src/delivery/ai-task-push.d.ts.map +1 -0
  86. package/dist/src/delivery/ai-task-push.js +44 -0
  87. package/dist/src/delivery/ai-task-push.js.map +1 -0
  88. package/dist/src/delivery/ai-task-push.test.d.ts +2 -0
  89. package/dist/src/delivery/ai-task-push.test.d.ts.map +1 -0
  90. package/dist/src/delivery/ai-task-push.test.js +44 -0
  91. package/dist/src/delivery/ai-task-push.test.js.map +1 -0
  92. package/dist/src/delivery/deliver-text.test.js +22 -22
  93. package/dist/src/delivery/send-service.d.ts +4 -1
  94. package/dist/src/delivery/send-service.d.ts.map +1 -1
  95. package/dist/src/delivery/send-service.js +3 -5
  96. package/dist/src/delivery/send-service.js.map +1 -1
  97. package/dist/src/delivery/turn-deliver-buffer.test.js +25 -25
  98. package/dist/src/dispatch-mentioned-reply.d.ts +7 -2
  99. package/dist/src/dispatch-mentioned-reply.d.ts.map +1 -1
  100. package/dist/src/dispatch-mentioned-reply.js +243 -68
  101. package/dist/src/dispatch-mentioned-reply.js.map +1 -1
  102. package/dist/src/gateway-session-queue.d.ts +2 -6
  103. package/dist/src/gateway-session-queue.d.ts.map +1 -1
  104. package/dist/src/gateway-session-queue.js +78 -21
  105. package/dist/src/gateway-session-queue.js.map +1 -1
  106. package/dist/src/group-history-tool.d.ts +1 -1
  107. package/dist/src/group-history-tool.d.ts.map +1 -1
  108. package/dist/src/inbound/dispatch-mentioned-reply.d.ts.map +1 -1
  109. package/dist/src/inbound/dispatch-mentioned-reply.js +43 -3
  110. package/dist/src/inbound/dispatch-mentioned-reply.js.map +1 -1
  111. package/dist/src/inbound/inbound-display.d.ts.map +1 -1
  112. package/dist/src/inbound/inbound-display.js +2 -0
  113. package/dist/src/inbound/inbound-display.js.map +1 -1
  114. package/dist/src/inbound/inbound-display.test.js +1 -0
  115. package/dist/src/inbound/inbound-display.test.js.map +1 -1
  116. package/dist/src/inbound-display.d.ts.map +1 -1
  117. package/dist/src/inbound-display.js +2 -1
  118. package/dist/src/inbound-display.js.map +1 -1
  119. package/dist/src/inbound-input-media.d.ts +1 -1
  120. package/dist/src/inbound-input-media.d.ts.map +1 -1
  121. package/dist/src/inbound-media-local.d.ts +1 -1
  122. package/dist/src/inbound-media-local.d.ts.map +1 -1
  123. package/dist/src/inbound-model.d.ts +9 -0
  124. package/dist/src/inbound-model.d.ts.map +1 -1
  125. package/dist/src/inbound-model.js +26 -0
  126. package/dist/src/inbound-model.js.map +1 -1
  127. package/dist/src/inbound-model.test.js +23 -1
  128. package/dist/src/inbound-model.test.js.map +1 -1
  129. package/dist/src/inbound-terminal-state.d.ts +2 -0
  130. package/dist/src/inbound-terminal-state.d.ts.map +1 -1
  131. package/dist/src/inbound-terminal-state.js +7 -2
  132. package/dist/src/inbound-terminal-state.js.map +1 -1
  133. package/dist/src/nas-site.d.ts +16 -0
  134. package/dist/src/nas-site.d.ts.map +1 -0
  135. package/dist/src/nas-site.js +17 -0
  136. package/dist/src/nas-site.js.map +1 -0
  137. package/dist/src/nas-volumes.d.ts +12 -2
  138. package/dist/src/nas-volumes.d.ts.map +1 -1
  139. package/dist/src/nas-volumes.js +147 -37
  140. package/dist/src/nas-volumes.js.map +1 -1
  141. package/dist/src/nas-volumes.test.js +39 -7
  142. package/dist/src/nas-volumes.test.js.map +1 -1
  143. package/dist/src/per-message-model-pending.d.ts +38 -3
  144. package/dist/src/per-message-model-pending.d.ts.map +1 -1
  145. package/dist/src/per-message-model-pending.js +96 -7
  146. package/dist/src/per-message-model-pending.js.map +1 -1
  147. package/dist/src/plan/action-store-lifecycle.test.js +5 -5
  148. package/dist/src/plan/plan-core-db.test.js +9 -9
  149. package/dist/src/plan/plan-core-snapshot.test.js +9 -9
  150. package/dist/src/plan-core-adapter.d.ts +54 -0
  151. package/dist/src/plan-core-adapter.d.ts.map +1 -0
  152. package/dist/src/plan-core-adapter.js +104 -0
  153. package/dist/src/plan-core-adapter.js.map +1 -0
  154. package/dist/src/plan-core-adapter.test.d.ts +2 -0
  155. package/dist/src/plan-core-adapter.test.d.ts.map +1 -0
  156. package/dist/src/plan-core-adapter.test.js +183 -0
  157. package/dist/src/plan-core-adapter.test.js.map +1 -0
  158. package/dist/src/plan-core-db.d.ts +22 -0
  159. package/dist/src/plan-core-db.d.ts.map +1 -0
  160. package/dist/src/plan-core-db.js +91 -0
  161. package/dist/src/plan-core-db.js.map +1 -0
  162. package/dist/src/plan-core-db.test.d.ts +2 -0
  163. package/dist/src/plan-core-db.test.d.ts.map +1 -0
  164. package/dist/src/plan-core-db.test.js +115 -0
  165. package/dist/src/plan-core-db.test.js.map +1 -0
  166. package/dist/src/plan-core-snapshot.d.ts +23 -0
  167. package/dist/src/plan-core-snapshot.d.ts.map +1 -0
  168. package/dist/src/plan-core-snapshot.js +66 -0
  169. package/dist/src/plan-core-snapshot.js.map +1 -0
  170. package/dist/src/plan-core-snapshot.test.d.ts +2 -0
  171. package/dist/src/plan-core-snapshot.test.d.ts.map +1 -0
  172. package/dist/src/plan-core-snapshot.test.js +157 -0
  173. package/dist/src/plan-core-snapshot.test.js.map +1 -0
  174. package/dist/src/plan-event-subscription.d.ts +1 -1
  175. package/dist/src/plan-event-subscription.d.ts.map +1 -1
  176. package/dist/src/plan-stat-event.d.ts +4 -15
  177. package/dist/src/plan-stat-event.d.ts.map +1 -1
  178. package/dist/src/plan-stat-event.js +4 -37
  179. package/dist/src/plan-stat-event.js.map +1 -1
  180. package/dist/src/plan-stat-event.test.js +1 -118
  181. package/dist/src/plan-stat-event.test.js.map +1 -1
  182. package/dist/src/plan-tool-middleware.d.ts +3 -11
  183. package/dist/src/plan-tool-middleware.d.ts.map +1 -1
  184. package/dist/src/plan-tool-middleware.js +11 -60
  185. package/dist/src/plan-tool-middleware.js.map +1 -1
  186. package/dist/src/plan-tool-middleware.test.js +83 -603
  187. package/dist/src/plan-tool-middleware.test.js.map +1 -1
  188. package/dist/src/plan-ws-registry.d.ts +4 -0
  189. package/dist/src/plan-ws-registry.d.ts.map +1 -1
  190. package/dist/src/plan-ws-registry.js +12 -0
  191. package/dist/src/plan-ws-registry.js.map +1 -1
  192. package/dist/src/plan-ws-registry.test.js +19 -1
  193. package/dist/src/plan-ws-registry.test.js.map +1 -1
  194. package/dist/src/plugin/types.d.ts +5 -0
  195. package/dist/src/plugin/types.d.ts.map +1 -1
  196. package/dist/src/plugin-dispose.d.ts +22 -0
  197. package/dist/src/plugin-dispose.d.ts.map +1 -0
  198. package/dist/src/plugin-dispose.js +66 -0
  199. package/dist/src/plugin-dispose.js.map +1 -0
  200. package/dist/src/process-shared-store.d.ts +48 -0
  201. package/dist/src/process-shared-store.d.ts.map +1 -0
  202. package/dist/src/process-shared-store.js +89 -0
  203. package/dist/src/process-shared-store.js.map +1 -0
  204. package/dist/src/process-shared-store.test.d.ts +2 -0
  205. package/dist/src/process-shared-store.test.d.ts.map +1 -0
  206. package/dist/src/process-shared-store.test.js +60 -0
  207. package/dist/src/process-shared-store.test.js.map +1 -0
  208. package/dist/src/register-exec-env-hook.d.ts +44 -0
  209. package/dist/src/register-exec-env-hook.d.ts.map +1 -0
  210. package/dist/src/register-exec-env-hook.js +473 -0
  211. package/dist/src/register-exec-env-hook.js.map +1 -0
  212. package/dist/src/register-exec-env-hook.test.d.ts +2 -0
  213. package/dist/src/register-exec-env-hook.test.d.ts.map +1 -0
  214. package/dist/src/register-exec-env-hook.test.js +189 -0
  215. package/dist/src/register-exec-env-hook.test.js.map +1 -0
  216. package/dist/src/register-group-prompt-hook.d.ts +17 -0
  217. package/dist/src/register-group-prompt-hook.d.ts.map +1 -0
  218. package/dist/src/register-group-prompt-hook.js +45 -0
  219. package/dist/src/register-group-prompt-hook.js.map +1 -0
  220. package/dist/src/register-group-prompt-hook.test.d.ts +2 -0
  221. package/dist/src/register-group-prompt-hook.test.d.ts.map +1 -0
  222. package/dist/src/register-group-prompt-hook.test.js +60 -0
  223. package/dist/src/register-group-prompt-hook.test.js.map +1 -0
  224. package/dist/src/register-per-message-model-hook.d.ts +10 -2
  225. package/dist/src/register-per-message-model-hook.d.ts.map +1 -1
  226. package/dist/src/register-per-message-model-hook.js +32 -6
  227. package/dist/src/register-per-message-model-hook.js.map +1 -1
  228. package/dist/src/register-per-message-model-hook.test.d.ts +2 -0
  229. package/dist/src/register-per-message-model-hook.test.d.ts.map +1 -0
  230. package/dist/src/register-per-message-model-hook.test.js +208 -0
  231. package/dist/src/register-per-message-model-hook.test.js.map +1 -0
  232. package/dist/src/register-run-model-context-hook.d.ts +11 -0
  233. package/dist/src/register-run-model-context-hook.d.ts.map +1 -0
  234. package/dist/src/register-run-model-context-hook.js +23 -0
  235. package/dist/src/register-run-model-context-hook.js.map +1 -0
  236. package/dist/src/reply-dispatch-driver.d.ts +89 -0
  237. package/dist/src/reply-dispatch-driver.d.ts.map +1 -0
  238. package/dist/src/reply-dispatch-driver.js +294 -0
  239. package/dist/src/reply-dispatch-driver.js.map +1 -0
  240. package/dist/src/reply-dispatch-driver.test.d.ts +2 -0
  241. package/dist/src/reply-dispatch-driver.test.d.ts.map +1 -0
  242. package/dist/src/reply-dispatch-driver.test.js +363 -0
  243. package/dist/src/reply-dispatch-driver.test.js.map +1 -0
  244. package/dist/src/resolve-inbound-group-prompt.d.ts +17 -1
  245. package/dist/src/resolve-inbound-group-prompt.d.ts.map +1 -1
  246. package/dist/src/resolve-inbound-group-prompt.js +16 -2
  247. package/dist/src/resolve-inbound-group-prompt.js.map +1 -1
  248. package/dist/src/run-model-context.d.ts +45 -0
  249. package/dist/src/run-model-context.d.ts.map +1 -0
  250. package/dist/src/run-model-context.js +108 -0
  251. package/dist/src/run-model-context.js.map +1 -0
  252. package/dist/src/run-model-context.test.d.ts +2 -0
  253. package/dist/src/run-model-context.test.d.ts.map +1 -0
  254. package/dist/src/run-model-context.test.js +68 -0
  255. package/dist/src/run-model-context.test.js.map +1 -0
  256. package/dist/src/run-usage-session.d.ts +4 -1
  257. package/dist/src/run-usage-session.d.ts.map +1 -1
  258. package/dist/src/run-usage-session.js +13 -1
  259. package/dist/src/run-usage-session.js.map +1 -1
  260. package/dist/src/run-usage.d.ts +15 -0
  261. package/dist/src/run-usage.d.ts.map +1 -1
  262. package/dist/src/run-usage.js +30 -4
  263. package/dist/src/run-usage.js.map +1 -1
  264. package/dist/src/run-usage.test.js +99 -11
  265. package/dist/src/run-usage.test.js.map +1 -1
  266. package/dist/src/send-file-tool.d.ts +1 -1
  267. package/dist/src/send-file-tool.d.ts.map +1 -1
  268. package/dist/src/send-group-message-tool.d.ts +1 -1
  269. package/dist/src/send-group-message-tool.d.ts.map +1 -1
  270. package/dist/src/session/build-project-prompt.test.js +18 -18
  271. package/dist/src/session/session-model-fallback.d.ts.map +1 -1
  272. package/dist/src/session/session-model-fallback.js +6 -3
  273. package/dist/src/session/session-model-fallback.js.map +1 -1
  274. package/dist/src/session-env-store.d.ts +55 -0
  275. package/dist/src/session-env-store.d.ts.map +1 -0
  276. package/dist/src/session-env-store.js +328 -0
  277. package/dist/src/session-env-store.js.map +1 -0
  278. package/dist/src/session-env-store.test.d.ts +2 -0
  279. package/dist/src/session-env-store.test.d.ts.map +1 -0
  280. package/dist/src/session-env-store.test.js +151 -0
  281. package/dist/src/session-env-store.test.js.map +1 -0
  282. package/dist/src/session-group-prompt.d.ts +34 -0
  283. package/dist/src/session-group-prompt.d.ts.map +1 -0
  284. package/dist/src/session-group-prompt.js +101 -0
  285. package/dist/src/session-group-prompt.js.map +1 -0
  286. package/dist/src/session-group-prompt.test.d.ts +2 -0
  287. package/dist/src/session-group-prompt.test.d.ts.map +1 -0
  288. package/dist/src/session-group-prompt.test.js +72 -0
  289. package/dist/src/session-group-prompt.test.js.map +1 -0
  290. package/dist/src/session-im-context.d.ts +2 -0
  291. package/dist/src/session-im-context.d.ts.map +1 -1
  292. package/dist/src/session-im-context.js +11 -2
  293. package/dist/src/session-im-context.js.map +1 -1
  294. package/dist/src/session-model-fallback.d.ts +13 -0
  295. package/dist/src/session-model-fallback.d.ts.map +1 -0
  296. package/dist/src/session-model-fallback.js +24 -0
  297. package/dist/src/session-model-fallback.js.map +1 -0
  298. package/dist/src/subagent-monitor.d.ts +14 -1
  299. package/dist/src/subagent-monitor.d.ts.map +1 -1
  300. package/dist/src/subagent-monitor.js +164 -36
  301. package/dist/src/subagent-monitor.js.map +1 -1
  302. package/dist/src/subagent-monitor.test.js +121 -0
  303. package/dist/src/subagent-monitor.test.js.map +1 -1
  304. package/dist/src/tool-event-adapter.d.ts +31 -0
  305. package/dist/src/tool-event-adapter.d.ts.map +1 -0
  306. package/dist/src/tool-event-adapter.js +83 -0
  307. package/dist/src/tool-event-adapter.js.map +1 -0
  308. package/dist/src/tool-event-adapter.test.d.ts +2 -0
  309. package/dist/src/tool-event-adapter.test.d.ts.map +1 -0
  310. package/dist/src/tool-event-adapter.test.js +93 -0
  311. package/dist/src/tool-event-adapter.test.js.map +1 -0
  312. package/dist/src/tool-json-result.d.ts +1 -1
  313. package/dist/src/tool-json-result.d.ts.map +1 -1
  314. package/dist/src/turn/run-usage-session.d.ts +1 -1
  315. package/dist/src/turn/run-usage-session.d.ts.map +1 -1
  316. package/dist/src/turn/run-usage-session.js +7 -4
  317. package/dist/src/turn/run-usage-session.js.map +1 -1
  318. package/dist/src/turn-agent-event-subscription.d.ts +29 -0
  319. package/dist/src/turn-agent-event-subscription.d.ts.map +1 -0
  320. package/dist/src/turn-agent-event-subscription.js +289 -0
  321. package/dist/src/turn-agent-event-subscription.js.map +1 -0
  322. package/dist/src/turn-agent-event-subscription.test.d.ts +2 -0
  323. package/dist/src/turn-agent-event-subscription.test.d.ts.map +1 -0
  324. package/dist/src/turn-agent-event-subscription.test.js +165 -0
  325. package/dist/src/turn-agent-event-subscription.test.js.map +1 -0
  326. package/dist/src/turn-deliver-buffer.test.js +25 -25
  327. package/dist/src/turn-end-controller.d.ts +61 -0
  328. package/dist/src/turn-end-controller.d.ts.map +1 -0
  329. package/dist/src/turn-end-controller.js +239 -0
  330. package/dist/src/turn-end-controller.js.map +1 -0
  331. package/dist/src/turn-end-controller.test.d.ts +2 -0
  332. package/dist/src/turn-end-controller.test.d.ts.map +1 -0
  333. package/dist/src/turn-end-controller.test.js +97 -0
  334. package/dist/src/turn-end-controller.test.js.map +1 -0
  335. package/dist/src/types.d.ts +48 -1
  336. package/dist/src/types.d.ts.map +1 -1
  337. package/dist/src/types.js.map +1 -1
  338. package/dist/src/workspace-event-protocol.d.ts +3 -0
  339. package/dist/src/workspace-event-protocol.d.ts.map +1 -0
  340. package/dist/src/workspace-event-protocol.js +3 -0
  341. package/dist/src/workspace-event-protocol.js.map +1 -0
  342. package/dist/src/workspace-event-scheduler.d.ts +54 -0
  343. package/dist/src/workspace-event-scheduler.d.ts.map +1 -0
  344. package/dist/src/workspace-event-scheduler.js +131 -0
  345. package/dist/src/workspace-event-scheduler.js.map +1 -0
  346. package/dist/src/workspace-event-scheduler.test.d.ts +2 -0
  347. package/dist/src/workspace-event-scheduler.test.d.ts.map +1 -0
  348. package/dist/src/workspace-event-scheduler.test.js +157 -0
  349. package/dist/src/workspace-event-scheduler.test.js.map +1 -0
  350. package/dist/src/workspace-event.d.ts +28 -0
  351. package/dist/src/workspace-event.d.ts.map +1 -0
  352. package/dist/src/workspace-event.js +674 -0
  353. package/dist/src/workspace-event.js.map +1 -0
  354. package/dist/src/workspace-event.test.d.ts +2 -0
  355. package/dist/src/workspace-event.test.d.ts.map +1 -0
  356. package/dist/src/workspace-event.test.js +265 -0
  357. package/dist/src/workspace-event.test.js.map +1 -0
  358. package/dist/src/ws-inbound-schema.d.ts.map +1 -1
  359. package/dist/src/ws-inbound-schema.js +1 -0
  360. package/dist/src/ws-inbound-schema.js.map +1 -1
  361. package/dist/src/ws-inbound-schema.test.d.ts +2 -0
  362. package/dist/src/ws-inbound-schema.test.d.ts.map +1 -0
  363. package/dist/src/ws-inbound-schema.test.js +58 -0
  364. package/dist/src/ws-inbound-schema.test.js.map +1 -0
  365. package/openclaw.plugin.json +30 -30
  366. package/package.json +83 -83
  367. package/dist/src/modified-file-push-tracker.d.ts +0 -24
  368. package/dist/src/modified-file-push-tracker.d.ts.map +0 -1
  369. package/dist/src/modified-file-push-tracker.js +0 -125
  370. package/dist/src/modified-file-push-tracker.js.map +0 -1
  371. package/dist/src/plan/action-dispatch-event-compat.test.d.ts +0 -2
  372. package/dist/src/plan/action-dispatch-event-compat.test.d.ts.map +0 -1
  373. package/dist/src/plan/action-dispatch-event-compat.test.js +0 -81
  374. package/dist/src/plan/action-dispatch-event-compat.test.js.map +0 -1
  375. package/dist/src/plan-store-access.d.ts +0 -23
  376. package/dist/src/plan-store-access.d.ts.map +0 -1
  377. package/dist/src/plan-store-access.js +0 -96
  378. package/dist/src/plan-store-access.js.map +0 -1
  379. package/dist/src/plan-store-access.test.d.ts +0 -2
  380. package/dist/src/plan-store-access.test.d.ts.map +0 -1
  381. package/dist/src/plan-store-access.test.js +0 -207
  382. package/dist/src/plan-store-access.test.js.map +0 -1
  383. package/dist/src/progress-display.d.ts +0 -77
  384. package/dist/src/progress-display.d.ts.map +0 -1
  385. package/dist/src/progress-display.js +0 -420
  386. package/dist/src/progress-display.js.map +0 -1
  387. package/dist/src/subagent-delivery-phase.d.ts +0 -10
  388. package/dist/src/subagent-delivery-phase.d.ts.map +0 -1
  389. package/dist/src/subagent-delivery-phase.js +0 -4
  390. package/dist/src/subagent-delivery-phase.js.map +0 -1
  391. package/dist/src/subagent-delivery-phase.test.d.ts +0 -2
  392. package/dist/src/subagent-delivery-phase.test.d.ts.map +0 -1
  393. package/dist/src/subagent-delivery-phase.test.js +0 -12
  394. package/dist/src/subagent-delivery-phase.test.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import assert from "node:assert/strict";
2
2
  import { describe, it } from "node:test";
3
- import { collectDesiredAccounts, fingerprintOf } from "./account-reconciler.js";
3
+ import { AccountReconciler, collectDesiredAccounts, fingerprintOf } from "./account-reconciler.js";
4
+ import { disposePluginModule } from "./plugin-dispose.js";
4
5
  function cfgWith(channels) {
5
6
  return { channels };
6
7
  }
@@ -145,4 +146,21 @@ describe("account-reconciler: collectDesiredAccounts", () => {
145
146
  assert.notEqual(fingerprintOf(a), fingerprintOf(b));
146
147
  });
147
148
  });
149
+ describe("account-reconciler: 插件重载销毁", () => {
150
+ it("start 启动 poll 定时器,stopAll 停止并清空", async () => {
151
+ const r = new AccountReconciler();
152
+ r.setRuntime({ config: { current: () => cfgWith({}) } });
153
+ r.start();
154
+ assert.equal(r.started, true);
155
+ assert.notEqual(r.pollTimer, null);
156
+ await r.stopAll();
157
+ assert.equal(r.started, false);
158
+ assert.equal(r.pollTimer, null);
159
+ });
160
+ it("disposePluginModule 幂等可重复调用且不抛错", async () => {
161
+ await disposePluginModule();
162
+ await disposePluginModule();
163
+ assert.ok(true);
164
+ });
165
+ });
148
166
  //# sourceMappingURL=account-reconciler.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-reconciler.test.js","sourceRoot":"","sources":["../../src/account-reconciler.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-reconciler.test.js","sourceRoot":"","sources":["../../src/account-reconciler.test.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,8 @@ export interface ActionDispatchEvent {
22
22
  origin?: PlanOrigin;
23
23
  }
24
24
  export declare function setActionStateDir(dir: string): void;
25
+ /** 插件卸载/重载时关闭 action SQLite 句柄并清空状态,避免旧模块句柄泄漏。 */
26
+ export declare function disposeActionStore(): void;
25
27
  /** 按 eventId 反查权威 action。缺库、旧库、畸形数据和读取异常均降级为 undefined。 */
26
28
  export declare function getActionById(eventId: string): ActionDispatchEvent | undefined;
27
29
  //# sourceMappingURL=action-store-access.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"action-store-access.d.ts","sourceRoot":"","sources":["../../src/action-store-access.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvD,YAAY,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;CACvB;AAQD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKnD;AAwCD,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAkB9E"}
1
+ {"version":3,"file":"action-store-access.d.ts","sourceRoot":"","sources":["../../src/action-store-access.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvD,YAAY,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;CACvB;AAQD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAwCD,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAkB9E"}
@@ -10,6 +10,13 @@ export function setActionStateDir(dir) {
10
10
  db = undefined;
11
11
  warnedNoStateDir = false;
12
12
  }
13
+ /** 插件卸载/重载时关闭 action SQLite 句柄并清空状态,避免旧模块句柄泄漏。 */
14
+ export function disposeActionStore() {
15
+ db?.close();
16
+ db = undefined;
17
+ stateDir = undefined;
18
+ warnedNoStateDir = false;
19
+ }
13
20
  function getDb() {
14
21
  if (db)
15
22
  return db;
@@ -1 +1 @@
1
- {"version":3,"file":"action-store-access.js","sourceRoot":"","sources":["../../src/action-store-access.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action-store-access.js","sourceRoot":"","sources":["../../src/action-store-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAsBjE,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAElD,IAAI,QAA4B,CAAC;AACjC,IAAI,EAA4B,CAAC;AACjC,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,MAAM,UAAU,iBAAiB,CAAC,GAAW;IACzC,QAAQ,GAAG,GAAG,CAAC;IACf,EAAE,EAAE,KAAK,EAAE,CAAC;IACZ,EAAE,GAAG,SAAS,CAAC;IACf,gBAAgB,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,kBAAkB;IAC9B,EAAE,EAAE,KAAK,EAAE,CAAC;IACZ,EAAE,GAAG,SAAS,CAAC;IACf,QAAQ,GAAG,SAAS,CAAC;IACrB,gBAAgB,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED,SAAS,KAAK;IACV,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,6BAA6B,CAAC,CAAC;YACzD,gBAAgB,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,GAAG,cAAc,CAAC;IAC5B,IAAI,CAAC;QACD,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrC,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,yBAAyB,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,OAAO,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;WAChE,KAAK,CAAC,KAAK,KAAK,iBAAiB;WACjC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;WAC9D,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;WAC9D,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC;WACxF,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAgB,CAAC;WAC9E,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;WACpE,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;WAC/C,OAAQ,OAAmC,CAAC,IAAI,KAAK,QAAQ;WAC5D,OAAmC,CAAC,IAAI,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,aAAa,CAAC,OAAe;IACzC,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAkC,CAAC;QACvH,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC1D,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,2BAA2B,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,yBAAyB,OAAO,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,EAAE,EAAE,KAAK,EAAE,CAAC;QACZ,EAAE,GAAG,SAAS,CAAC;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=action-store-lifecycle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-store-lifecycle.test.d.ts","sourceRoot":"","sources":["../../src/action-store-lifecycle.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,195 @@
1
+ import assert from "node:assert/strict";
2
+ import { mkdtempSync, rmSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { DatabaseSync } from "node:sqlite";
6
+ import { after, afterEach, describe, it } from "node:test";
7
+ import { resolvePlanDbPath } from "@xgjktech/xg-openclaw-shared";
8
+ import { disposeActionStore, getActionById, setActionStateDir } from "./action-store-access.js";
9
+ import { disposePluginModule } from "./plugin-dispose.js";
10
+ import { createPlanToolResultMiddleware } from "./plan-tool-middleware.js";
11
+ /**
12
+ * 动作读库生命周期集成测试(RT-186 根因回归):
13
+ * 覆盖「真实 SQLite + 原始读函数(getActionById) + 中间件 + disposePluginModule cleanup」的组合,
14
+ * 钉住热重载 cleanup 必须保留动作读库配置/句柄,只有 gateway_stop 完整清理才清空。
15
+ */
16
+ const tempDirs = [];
17
+ function makeTempStateDir() {
18
+ const dir = mkdtempSync(join(tmpdir(), "xg-action-store-lifecycle-"));
19
+ tempDirs.push(dir);
20
+ return dir;
21
+ }
22
+ function makeAction(eventId, overrides = {}) {
23
+ return {
24
+ eventId,
25
+ event: "action_dispatch",
26
+ action: "form_fill",
27
+ target: "page://order-detail",
28
+ version: 1,
29
+ status: "completed",
30
+ scopeControl: { activeSessionOnly: true },
31
+ payload: { data: { id: eventId } },
32
+ timestamp: "2026-09-07T17:00:00.000+08:00",
33
+ origin: { channel: "xg_cwork_im", to: "g-2096919016395612162" },
34
+ ...overrides,
35
+ };
36
+ }
37
+ /** 模拟 harness-tools 的 SqliteActionStore.set:独立连接写同一份 plans.sqlite 的 actions 表。 */
38
+ function writeAction(stateDir, action) {
39
+ const db = new DatabaseSync(resolvePlanDbPath(stateDir));
40
+ try {
41
+ db.exec(`
42
+ CREATE TABLE IF NOT EXISTS actions (
43
+ event_id TEXT PRIMARY KEY,
44
+ doc TEXT NOT NULL
45
+ ) STRICT;
46
+ `);
47
+ db.prepare("INSERT INTO actions (event_id, doc) VALUES (?, ?)").run(action.eventId, JSON.stringify(action));
48
+ }
49
+ finally {
50
+ db.close();
51
+ }
52
+ }
53
+ /** 与 plan-tool-middleware.test.ts 相同的 event 形状,仅取 xg_action_dispatch 分支所需字段。 */
54
+ function makeActionToolEvent(toolCallId, eventId) {
55
+ return {
56
+ toolCallId,
57
+ toolName: "xg_action_dispatch",
58
+ args: {},
59
+ result: { details: { ok: true, eventId }, content: [] },
60
+ };
61
+ }
62
+ /** 注入真实 getActionById 的中间件探针,记录实际发送的动作。 */
63
+ class DispatchProbe {
64
+ sent = [];
65
+ handler;
66
+ deps;
67
+ constructor() {
68
+ this.deps = {
69
+ getActionById: (eventId) => getActionById(eventId),
70
+ sendActionRunEvent: (action) => {
71
+ this.sent.push(action);
72
+ },
73
+ };
74
+ this.handler = createPlanToolResultMiddleware(this.deps);
75
+ }
76
+ }
77
+ /** 静音 disposePluginModule 的过程日志,并收集 warn 便于断言 stateDir 缺失告警。 */
78
+ async function runDisposeQuietly(options = {}) {
79
+ const originalLog = console.log;
80
+ const originalWarn = console.warn;
81
+ const warns = [];
82
+ console.log = () => { };
83
+ console.warn = (...args) => {
84
+ warns.push(args.map(String).join(" "));
85
+ };
86
+ try {
87
+ await disposePluginModule(options);
88
+ }
89
+ finally {
90
+ console.log = originalLog;
91
+ console.warn = originalWarn;
92
+ }
93
+ return warns;
94
+ }
95
+ function captureWarnLines(fn) {
96
+ const originalWarn = console.warn;
97
+ const warns = [];
98
+ console.warn = (...args) => {
99
+ warns.push(args.map(String).join(" "));
100
+ };
101
+ try {
102
+ fn();
103
+ }
104
+ finally {
105
+ console.warn = originalWarn;
106
+ }
107
+ return warns;
108
+ }
109
+ afterEach(() => {
110
+ disposeActionStore();
111
+ });
112
+ after(() => {
113
+ for (const dir of tempDirs) {
114
+ rmSync(dir, { recursive: true, force: true });
115
+ }
116
+ });
117
+ describe("动作读库生命周期: 基线(回归 1/5)", () => {
118
+ it("真实 SQLite 写入 action 后,中间件能按 eventId 反查并恰好发送一次", () => {
119
+ const stateDir = makeTempStateDir();
120
+ setActionStateDir(stateDir);
121
+ const action = makeAction("evt-baseline-1");
122
+ writeAction(stateDir, action);
123
+ const probe = new DispatchProbe();
124
+ probe.handler(makeActionToolEvent("call-baseline-1", action.eventId), { runtime: "openclaw" });
125
+ assert.equal(probe.sent.length, 1);
126
+ assert.deepEqual(probe.sent[0], action);
127
+ });
128
+ it("写库前 stateDir 未设置 → getActionById 返回 undefined 并告警,不抛", () => {
129
+ const warns = captureWarnLines(() => {
130
+ assert.equal(getActionById("evt-missing-config"), undefined);
131
+ });
132
+ assert.equal(warns.length, 1);
133
+ assert.ok(warns[0].includes("stateDir 未设置"));
134
+ });
135
+ });
136
+ describe("动作读库生命周期: registry cleanup 保留动作读库(回归 2/3/4/5)", () => {
137
+ it("skipConnections=true + skipPlanResources=true 的 cleanup 后,新写入 action 仍可反查并发送", async () => {
138
+ const stateDir = makeTempStateDir();
139
+ setActionStateDir(stateDir);
140
+ writeAction(stateDir, makeAction("evt-before-cleanup"));
141
+ assert.ok(getActionById("evt-before-cleanup"), "cleanup 前基线读取应成功");
142
+ const warns = await runDisposeQuietly({ skipConnections: true, skipPlanResources: true });
143
+ writeAction(stateDir, makeAction("evt-after-cleanup"));
144
+ const postAction = getActionById("evt-after-cleanup");
145
+ assert.ok(postAction, "cleanup 后动作读库必须保留,反查应成功");
146
+ assert.equal(postAction.eventId, "evt-after-cleanup");
147
+ assert.equal(warns.filter((line) => line.includes("stateDir 未设置")).length, 0, "热重载 cleanup 后不应出现 stateDir 未设置告警");
148
+ const probe = new DispatchProbe();
149
+ probe.handler(makeActionToolEvent("call-after-cleanup", "evt-after-cleanup"), { runtime: "openclaw" });
150
+ assert.equal(probe.sent.length, 1, "cleanup 后中间件应仍能反查并恰好发送一次");
151
+ assert.equal(probe.sent[0].eventId, "evt-after-cleanup");
152
+ probe.handler(makeActionToolEvent("call-before-cleanup", "evt-before-cleanup"), { runtime: "openclaw" });
153
+ assert.equal(probe.sent.length, 2, "cleanup 前写入的旧 action 也应仍可反查并发送");
154
+ });
155
+ it("连续多次 registry cleanup 后仍正常,不出现 stateDir 未设置", async () => {
156
+ const stateDir = makeTempStateDir();
157
+ setActionStateDir(stateDir);
158
+ for (let i = 0; i < 3; i += 1) {
159
+ writeAction(stateDir, makeAction(`evt-round-${i}`));
160
+ const warns = await runDisposeQuietly({ skipConnections: true, skipPlanResources: true });
161
+ const action = getActionById(`evt-round-${i}`);
162
+ assert.ok(action, `第 ${i + 1} 次 cleanup 后反查应成功`);
163
+ assert.equal(warns.filter((line) => line.includes("stateDir 未设置")).length, 0, `第 ${i + 1} 次 cleanup 后不应出现 stateDir 未设置告警`);
164
+ }
165
+ });
166
+ });
167
+ describe("动作读库生命周期: gateway_stop 完整清理仍清空(回归 6)", () => {
168
+ it("disposePluginModule() 默认完整清理后,动作读库被关闭且 stateDir 清空", async () => {
169
+ const stateDir = makeTempStateDir();
170
+ setActionStateDir(stateDir);
171
+ const action = makeAction("evt-full-teardown");
172
+ writeAction(stateDir, action);
173
+ assert.ok(getActionById(action.eventId), "完整清理前反查应成功");
174
+ await runDisposeQuietly();
175
+ const warns = captureWarnLines(() => {
176
+ assert.equal(getActionById(action.eventId), undefined, "完整清理后读库配置已清空,反查应失败");
177
+ });
178
+ assert.equal(warns.length, 1);
179
+ assert.ok(warns[0].includes("stateDir 未设置"), "完整清理后应重新告警 stateDir 未设置");
180
+ });
181
+ });
182
+ describe("动作读库生命周期: 更换 stateDir 读取新库并释放旧句柄(回归 7)", () => {
183
+ it("setActionStateDir 切到新目录后读新库,旧库记录不可再读", () => {
184
+ const dirA = makeTempStateDir();
185
+ setActionStateDir(dirA);
186
+ writeAction(dirA, makeAction("evt-dir-a"));
187
+ assert.ok(getActionById("evt-dir-a"), "旧目录记录应可读");
188
+ const dirB = makeTempStateDir();
189
+ setActionStateDir(dirB);
190
+ writeAction(dirB, makeAction("evt-dir-b"));
191
+ assert.ok(getActionById("evt-dir-b"), "切到新目录后应读取新库");
192
+ assert.equal(getActionById("evt-dir-a"), undefined, "旧目录记录不在新库中,反查应为 undefined");
193
+ });
194
+ });
195
+ //# sourceMappingURL=action-store-lifecycle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-store-lifecycle.test.js","sourceRoot":"","sources":["../../src/action-store-lifecycle.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare const DEFAULT_ACTIVE_CRON_TTL_MS: number;
2
+ export type ActiveCronContext = {
3
+ agentId: string;
4
+ sessionKey: string;
5
+ jobId: string;
6
+ expiresAt: number;
7
+ };
8
+ export declare function setActiveCronContext(input: {
9
+ agentId: string;
10
+ sessionKey: string;
11
+ jobId: string;
12
+ ttlMs?: number;
13
+ now?: number;
14
+ }): ActiveCronContext | undefined;
15
+ export declare function getActiveCronContexts(agentId: string, sessionKey: string, now?: number): ActiveCronContext[];
16
+ /** Remove a finished Job from every exact Session mapping. */
17
+ export declare function removeActiveCronContext(jobId: string, agentId?: string): void;
18
+ export declare function disposeActiveCronContextStore(): void;
19
+ export declare function __resetActiveCronContextStoreForTests(): void;
20
+ //# sourceMappingURL=active-cron-context-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-cron-context-store.d.ts","sourceRoot":"","sources":["../../src/active-cron-context-store.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,0BAA0B,QAAiB,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AA8BF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,iBAAiB,GAAG,SAAS,CAkBhC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,iBAAiB,EAAE,CAKhH;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAS7E;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,wBAAgB,qCAAqC,IAAI,IAAI,CAE5D"}
@@ -0,0 +1,73 @@
1
+ /** Process-shared active Cron context for sessionTarget=session:agent:... jobs. */
2
+ import { getOrCreateShared } from "./process-shared-store.js";
3
+ export const DEFAULT_ACTIVE_CRON_TTL_MS = 30 * 60 * 1000;
4
+ function getStore() {
5
+ return getOrCreateShared("active-cron-context", () => ({
6
+ bySession: new Map(),
7
+ }));
8
+ }
9
+ function sessionMapKey(agentId, sessionKey) {
10
+ return `${agentId.trim().toLowerCase()}\u0000${sessionKey}`;
11
+ }
12
+ function isUsableIdentity(value) {
13
+ return typeof value === "string" && value.trim().length > 0 && !/[\0\r\n]/.test(value);
14
+ }
15
+ function pruneExpired(now = Date.now()) {
16
+ const store = getStore();
17
+ for (const [mapKey, jobs] of store.bySession) {
18
+ for (const [jobId, context] of jobs) {
19
+ if (context.expiresAt <= now)
20
+ jobs.delete(jobId);
21
+ }
22
+ if (jobs.size === 0)
23
+ store.bySession.delete(mapKey);
24
+ }
25
+ }
26
+ export function setActiveCronContext(input) {
27
+ if (!isUsableIdentity(input.agentId) || !isUsableIdentity(input.sessionKey) || !isUsableIdentity(input.jobId))
28
+ return undefined;
29
+ const now = input.now ?? Date.now();
30
+ pruneExpired(now);
31
+ const requestedTtl = typeof input.ttlMs === "number" && Number.isFinite(input.ttlMs) && input.ttlMs > 0
32
+ ? input.ttlMs
33
+ : DEFAULT_ACTIVE_CRON_TTL_MS;
34
+ const context = {
35
+ agentId: input.agentId.trim(),
36
+ sessionKey: input.sessionKey,
37
+ jobId: input.jobId.trim(),
38
+ expiresAt: now + requestedTtl,
39
+ };
40
+ const mapKey = sessionMapKey(context.agentId, context.sessionKey);
41
+ const jobs = getStore().bySession.get(mapKey) ?? new Map();
42
+ jobs.set(context.jobId, context);
43
+ getStore().bySession.set(mapKey, jobs);
44
+ return { ...context };
45
+ }
46
+ export function getActiveCronContexts(agentId, sessionKey, now = Date.now()) {
47
+ if (!isUsableIdentity(agentId) || !isUsableIdentity(sessionKey))
48
+ return [];
49
+ pruneExpired(now);
50
+ const jobs = getStore().bySession.get(sessionMapKey(agentId, sessionKey));
51
+ return jobs ? [...jobs.values()].map((context) => ({ ...context })) : [];
52
+ }
53
+ /** Remove a finished Job from every exact Session mapping. */
54
+ export function removeActiveCronContext(jobId, agentId) {
55
+ if (!isUsableIdentity(jobId))
56
+ return;
57
+ const normalizedAgentId = agentId?.trim().toLowerCase();
58
+ const store = getStore();
59
+ for (const [mapKey, jobs] of store.bySession) {
60
+ if (normalizedAgentId && !mapKey.startsWith(`${normalizedAgentId}\u0000`))
61
+ continue;
62
+ jobs.delete(jobId.trim());
63
+ if (jobs.size === 0)
64
+ store.bySession.delete(mapKey);
65
+ }
66
+ }
67
+ export function disposeActiveCronContextStore() {
68
+ getStore().bySession.clear();
69
+ }
70
+ export function __resetActiveCronContextStoreForTests() {
71
+ disposeActiveCronContextStore();
72
+ }
73
+ //# sourceMappingURL=active-cron-context-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-cron-context-store.js","sourceRoot":"","sources":["../../src/active-cron-context-store.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,13 @@ export declare function registerActiveRound(params: {
23
23
  now?: number;
24
24
  }): ActiveRound;
25
25
  export declare function findActiveRoundForSubagent(groupId: string, now?: number): ActiveRound | undefined;
26
+ /** 按整轮父会话 sessionKey 定位活跃轮次(lifecycle/thinking 等事件路由用)。 */
27
+ export declare function findActiveRoundForSession(sessionKey: string, now?: number): ActiveRound | undefined;
28
+ export declare function getActiveRound(roundKey: string, generation: number): ActiveRound | undefined;
29
+ export declare function roundExists(roundKey: string, generation: number): boolean;
26
30
  export declare function prepareActiveRoundInterrupt(accountId: string, groupId: string, now?: number): ActiveRound | undefined;
27
31
  export declare function completeActiveRound(roundKey: string, generation: number): boolean;
28
32
  export declare function __resetActiveRoundRegistryForTests(): void;
33
+ /** 插件卸载/重载时清空活跃轮次登记。 */
34
+ export declare function disposeActiveRoundRegistry(): void;
29
35
  //# sourceMappingURL=active-round-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"active-round-registry.d.ts","sourceRoot":"","sources":["../../src/active-round-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,cAAc,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACxB;AAKD,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,EAAE,SAAS,MAAM,KAAG,MACI,CAAC;AAQxE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,cAAc,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,WAAW,CAqBd;AAED,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACjB,WAAW,GAAG,SAAS,CAWzB;AAED,wBAAgB,2BAA2B,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACjB,WAAW,GAAG,SAAS,CAMzB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAKjF;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD"}
1
+ {"version":3,"file":"active-round-registry.d.ts","sourceRoot":"","sources":["../../src/active-round-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,cAAc,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACxB;AAKD,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,EAAE,SAAS,MAAM,KAAG,MACI,CAAC;AAQxE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,cAAc,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,WAAW,CAqBd;AAED,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACjB,WAAW,GAAG,SAAS,CAWzB;AAED,2DAA2D;AAC3D,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,WAAW,GAAG,SAAS,CAYvG;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAI5F;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,2BAA2B,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACjB,WAAW,GAAG,SAAS,CAMzB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAKjF;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED,wBAAwB;AACxB,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD"}
@@ -1,6 +1,7 @@
1
+ import { getSharedMap } from "./process-shared-store.js";
1
2
  const ACTIVE_ROUND_TTL_MS = 30 * 60 * 1000;
2
- const rounds = new Map();
3
- const generations = new Map();
3
+ const rounds = getSharedMap("active-rounds");
4
+ const generations = getSharedMap("active-round-generations");
4
5
  export const buildRoundKey = (accountId, groupId) => `${String(accountId || "").trim()}:${String(groupId || "").trim()}`;
5
6
  function pruneExpired(now = Date.now()) {
6
7
  for (const [roundKey, round] of rounds) {
@@ -38,6 +39,26 @@ export function findActiveRoundForSubagent(groupId, now = Date.now()) {
38
39
  }
39
40
  return matches.length === 1 ? matches[0] : undefined;
40
41
  }
42
+ /** 按整轮父会话 sessionKey 定位活跃轮次(lifecycle/thinking 等事件路由用)。 */
43
+ export function findActiveRoundForSession(sessionKey, now = Date.now()) {
44
+ if (!sessionKey)
45
+ return undefined;
46
+ pruneExpired(now);
47
+ const matches = Array.from(rounds.values()).filter((round) => !round.interrupted && round.sessionKey === sessionKey);
48
+ if (matches.length > 1) {
49
+ console.warn(`[xg_cwork_im] [turn] ambiguous active round sessionKey=${sessionKey}; lifecycle routing rejected`);
50
+ }
51
+ return matches.length === 1 ? matches[0] : undefined;
52
+ }
53
+ export function getActiveRound(roundKey, generation) {
54
+ const round = rounds.get(roundKey);
55
+ if (!round || round.generation !== generation)
56
+ return undefined;
57
+ return round;
58
+ }
59
+ export function roundExists(roundKey, generation) {
60
+ return getActiveRound(roundKey, generation) !== undefined;
61
+ }
41
62
  export function prepareActiveRoundInterrupt(accountId, groupId, now = Date.now()) {
42
63
  pruneExpired(now);
43
64
  const round = rounds.get(buildRoundKey(accountId, groupId));
@@ -54,6 +75,10 @@ export function completeActiveRound(roundKey, generation) {
54
75
  return true;
55
76
  }
56
77
  export function __resetActiveRoundRegistryForTests() {
78
+ disposeActiveRoundRegistry();
79
+ }
80
+ /** 插件卸载/重载时清空活跃轮次登记。 */
81
+ export function disposeActiveRoundRegistry() {
57
82
  rounds.clear();
58
83
  generations.clear();
59
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"active-round-registry.js","sourceRoot":"","sources":["../../src/active-round-registry.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAgB3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CACxE,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAExE,SAAS,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG;YAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAQnC;IACG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtC,MAAM,KAAK,GAAgB;QACvB,QAAQ;QACR,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU;QACV,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG,GAAG,mBAAmB;QACpC,WAAW,EAAE,KAAK;KACrB,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACtC,OAAe,EACf,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,YAAY,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAC7D,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CACR,2DAA2D,OAAO,uBAAuB,CAC5F,CAAC;IACN,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B,CACvC,SAAiB,EACjB,OAAe,EACf,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,YAAY,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAClD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,UAAkB;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kCAAkC;IAC9C,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,WAAW,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"active-round-registry.js","sourceRoot":"","sources":["../../src/active-round-registry.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,6 @@ export declare function registerStreamClient(agentId: string, client: ImStreamCl
3
3
  export declare function getStreamClient(agentId: string): ImStreamClient | undefined;
4
4
  /** 仅当该 agentId 当前仍指向同一 client 时移除,避免误删其它账号注册的流客户端。 */
5
5
  export declare function deregisterStreamClient(agentId: string, client: ImStreamClient): void;
6
+ /** 插件卸载/重载时清空流客户端登记表。 */
7
+ export declare function clearStreamClients(): void;
6
8
  //# sourceMappingURL=agent-stream-client-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stream-client-registry.d.ts","sourceRoot":"","sources":["../../src/agent-stream-client-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAElF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE3E;AAED,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAIpF"}
1
+ {"version":3,"file":"agent-stream-client-registry.d.ts","sourceRoot":"","sources":["../../src/agent-stream-client-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAElF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE3E;AAED,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAIpF;AAED,yBAAyB;AACzB,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -1,4 +1,5 @@
1
- const agentStreamClients = new Map();
1
+ import { getSharedMap } from "./process-shared-store.js";
2
+ const agentStreamClients = getSharedMap("agent-stream-clients");
2
3
  export function registerStreamClient(agentId, client) {
3
4
  agentStreamClients.set(agentId, client);
4
5
  }
@@ -11,4 +12,8 @@ export function deregisterStreamClient(agentId, client) {
11
12
  agentStreamClients.delete(agentId);
12
13
  }
13
14
  }
15
+ /** 插件卸载/重载时清空流客户端登记表。 */
16
+ export function clearStreamClients() {
17
+ agentStreamClients.clear();
18
+ }
14
19
  //# sourceMappingURL=agent-stream-client-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stream-client-registry.js","sourceRoot":"","sources":["../../src/agent-stream-client-registry.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA0B,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAAsB;IAC1E,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,MAAsB;IAC5E,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/C,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"agent-stream-client-registry.js","sourceRoot":"","sources":["../../src/agent-stream-client-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,MAAM,kBAAkB,GAAG,YAAY,CAAyB,sBAAsB,CAAC,CAAC;AAExF,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAAsB;IAC1E,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,MAAsB;IAC5E,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/C,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,kBAAkB;IAChC,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 处理 IM WebSocket 下发的 openclawApplySyncMapping 信令。
3
3
  */
4
- import type { OpenClawConfig } from "openclaw/plugin-sdk";
4
+ import type { OpenClawConfig } from "openclaw/plugin-sdk/core";
5
5
  import type { Log } from "./auth.js";
6
6
  import type { XgImConfig } from "./types.js";
7
7
  export interface ApplySyncMappingContext {
@@ -1 +1 @@
1
- {"version":3,"file":"apply-sync-mapping.d.ts","sourceRoot":"","sources":["../../src/apply-sync-mapping.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,cAAc,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,4BAA4B,CAC9C,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
1
+ {"version":3,"file":"apply-sync-mapping.d.ts","sourceRoot":"","sources":["../../src/apply-sync-mapping.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,cAAc,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,4BAA4B,CAC9C,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 订阅 OpenClaw `assistant` 流,按「每条 assistant 消息(item)」逐条投递 IM。
3
+ *
4
+ * 与 block reply 分块路径不同:
5
+ * - 直接用 item 的完整 text(累计快照),不做分块拼接,天然保留段内换行;
6
+ * - 每条 assistant 消息一条 IM 消息(中间不同 item 也发);
7
+ * - 不含 commentary(带 phase 的模型里 commentary 走 item/preamble,不会进 assistant);
8
+ * - item 边界 = itemId 变化;最后一条在整轮 lifecycle 终态时 flush。
9
+ *
10
+ * 实际 HTTP 发送由 dispatch 注册的 sink 完成(持有 config/token/reply/终态/去重状态)。
11
+ */
12
+ type AssistantItemEventData = {
13
+ text?: unknown;
14
+ delta?: unknown;
15
+ replace?: unknown;
16
+ phase?: unknown;
17
+ itemId?: unknown;
18
+ };
19
+ /** 处理一条 assistant agent event:累积当前 item,itemId 变化时把上一条交给 sink。 */
20
+ export declare function handleAssistantItemEvent(sessionKey: string, data: AssistantItemEventData): void;
21
+ /** flush 当前 item(整轮终态 / dispatch 收尾调用;返回 Promise 供收尾 await)。 */
22
+ export declare function flushAssistantItem(sessionKey: string): Promise<void>;
23
+ /** 清理会话状态(dispatch 结束时调用;清掉去重基线,避免跨轮误抑制)。 */
24
+ export declare function resetAssistantItem(sessionKey: string): void;
25
+ export declare function disposeAssistantItemDelivery(): void;
26
+ export {};
27
+ //# sourceMappingURL=assistant-item-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-item-delivery.d.ts","sourceRoot":"","sources":["../../src/assistant-item-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,KAAK,sBAAsB,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAoFF,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAoB/F;AAED,gEAAgE;AAChE,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1E;AAED,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAK3D;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAInD"}