@xgjktech/xg_cwork_im 1.19.21 → 1.19.22

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 (944) hide show
  1. package/README.md +489 -489
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +25 -25
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/connection/account-connection.d.ts +37 -0
  7. package/dist/src/connection/account-connection.d.ts.map +1 -0
  8. package/dist/src/connection/account-connection.js +548 -0
  9. package/dist/src/connection/account-connection.js.map +1 -0
  10. package/dist/src/connection/account-reconciler.d.ts +64 -0
  11. package/dist/src/connection/account-reconciler.d.ts.map +1 -0
  12. package/dist/src/connection/account-reconciler.js +314 -0
  13. package/dist/src/connection/account-reconciler.js.map +1 -0
  14. package/dist/src/connection/account-reconciler.test.d.ts.map +1 -0
  15. package/dist/src/connection/account-reconciler.test.js +166 -0
  16. package/dist/src/connection/account-reconciler.test.js.map +1 -0
  17. package/dist/src/connection/agent-stream-client-registry.d.ts.map +1 -0
  18. package/dist/src/connection/agent-stream-client-registry.js +19 -0
  19. package/dist/src/connection/agent-stream-client-registry.js.map +1 -0
  20. package/dist/src/connection/connection.d.ts +110 -0
  21. package/dist/src/connection/connection.d.ts.map +1 -0
  22. package/dist/src/connection/connection.js +463 -0
  23. package/dist/src/connection/connection.js.map +1 -0
  24. package/dist/src/connection/connection.test.d.ts.map +1 -0
  25. package/dist/src/connection/connection.test.js.map +1 -0
  26. package/dist/src/connection/ws-inbound-schema.d.ts +14 -0
  27. package/dist/src/connection/ws-inbound-schema.d.ts.map +1 -0
  28. package/dist/src/connection/ws-inbound-schema.js.map +1 -0
  29. package/dist/src/connection/ws-inbound-schema.test.d.ts.map +1 -0
  30. package/dist/src/connection/ws-inbound-schema.test.js.map +1 -0
  31. package/dist/src/delivery/assistant-item-delivery.d.ts.map +1 -0
  32. package/dist/src/delivery/assistant-item-delivery.js +134 -0
  33. package/dist/src/delivery/assistant-item-delivery.js.map +1 -0
  34. package/dist/src/delivery/assistant-item-delivery.test.d.ts.map +1 -0
  35. package/dist/src/delivery/assistant-item-delivery.test.js.map +1 -0
  36. package/dist/src/delivery/assistant-item-sink.d.ts.map +1 -0
  37. package/dist/src/delivery/assistant-item-sink.js +34 -0
  38. package/dist/src/delivery/assistant-item-sink.js.map +1 -0
  39. package/dist/src/delivery/block-streaming-config.test.d.ts.map +1 -0
  40. package/dist/src/delivery/block-streaming-config.test.js +91 -0
  41. package/dist/src/delivery/block-streaming-config.test.js.map +1 -0
  42. package/dist/src/delivery/deliver-text.d.ts.map +1 -0
  43. package/dist/src/delivery/deliver-text.js.map +1 -0
  44. package/dist/src/delivery/deliver-text.test.d.ts.map +1 -0
  45. package/dist/src/delivery/deliver-text.test.js.map +1 -0
  46. package/dist/src/delivery/im-tool-progress.d.ts.map +1 -0
  47. package/dist/src/delivery/im-tool-progress.js.map +1 -0
  48. package/dist/src/delivery/inbound-terminal-delivery.d.ts +77 -0
  49. package/dist/src/delivery/inbound-terminal-delivery.d.ts.map +1 -0
  50. package/dist/src/delivery/inbound-terminal-delivery.js.map +1 -0
  51. package/dist/src/delivery/inbound-terminal-state.d.ts.map +1 -0
  52. package/dist/src/delivery/inbound-terminal-state.js +185 -0
  53. package/dist/src/delivery/inbound-terminal-state.js.map +1 -0
  54. package/dist/src/delivery/inbound-terminal-state.test.d.ts.map +1 -0
  55. package/dist/src/delivery/inbound-terminal-state.test.js.map +1 -0
  56. package/dist/src/delivery/send-file-event.d.ts.map +1 -0
  57. package/dist/src/delivery/send-file-event.js +33 -0
  58. package/dist/src/delivery/send-file-event.js.map +1 -0
  59. package/dist/src/delivery/send-file-event.test.d.ts.map +1 -0
  60. package/dist/src/delivery/send-file-event.test.js +86 -0
  61. package/dist/src/delivery/send-file-event.test.js.map +1 -0
  62. package/dist/src/delivery/send-service.d.ts +83 -0
  63. package/dist/src/delivery/send-service.d.ts.map +1 -0
  64. package/dist/src/delivery/send-service.js +324 -0
  65. package/dist/src/delivery/send-service.js.map +1 -0
  66. package/dist/src/delivery/send-service.test.d.ts.map +1 -0
  67. package/dist/src/delivery/send-service.test.js.map +1 -0
  68. package/dist/src/delivery/thinking-ws-progress.d.ts.map +1 -0
  69. package/dist/src/delivery/thinking-ws-progress.js.map +1 -0
  70. package/dist/src/delivery/thinking-ws-progress.test.d.ts.map +1 -0
  71. package/dist/src/delivery/thinking-ws-progress.test.js.map +1 -0
  72. package/dist/src/delivery/turn-deliver-buffer.d.ts.map +1 -0
  73. package/dist/src/delivery/turn-deliver-buffer.js.map +1 -0
  74. package/dist/src/delivery/turn-deliver-buffer.test.d.ts.map +1 -0
  75. package/dist/src/delivery/turn-deliver-buffer.test.js.map +1 -0
  76. package/dist/src/delivery/user-facing-errors.d.ts.map +1 -0
  77. package/dist/src/delivery/user-facing-errors.js +120 -0
  78. package/dist/src/delivery/user-facing-errors.js.map +1 -0
  79. package/dist/src/delivery/user-facing-errors.test.d.ts.map +1 -0
  80. package/dist/src/delivery/user-facing-errors.test.js.map +1 -0
  81. package/dist/src/inbound/dispatch-mentioned-reply.d.ts +47 -0
  82. package/dist/src/inbound/dispatch-mentioned-reply.d.ts.map +1 -0
  83. package/dist/src/inbound/dispatch-mentioned-reply.js +1014 -0
  84. package/dist/src/inbound/dispatch-mentioned-reply.js.map +1 -0
  85. package/dist/src/inbound/inbound-archive.d.ts.map +1 -0
  86. package/dist/src/inbound/inbound-archive.js.map +1 -0
  87. package/dist/src/inbound/inbound-attachment-meta.d.ts +13 -0
  88. package/dist/src/inbound/inbound-attachment-meta.d.ts.map +1 -0
  89. package/dist/src/inbound/inbound-attachment-meta.js.map +1 -0
  90. package/dist/src/inbound/inbound-chat-type.d.ts +33 -0
  91. package/dist/src/inbound/inbound-chat-type.d.ts.map +1 -0
  92. package/dist/src/inbound/inbound-chat-type.js.map +1 -0
  93. package/dist/src/inbound/inbound-display.d.ts +41 -0
  94. package/dist/src/inbound/inbound-display.d.ts.map +1 -0
  95. package/dist/src/inbound/inbound-display.js +170 -0
  96. package/dist/src/inbound/inbound-display.js.map +1 -0
  97. package/dist/src/inbound/reply-dispatch-driver.d.ts.map +1 -0
  98. package/dist/src/inbound/reply-dispatch-driver.js.map +1 -0
  99. package/dist/src/inbound/reply-dispatch-driver.test.d.ts.map +1 -0
  100. package/dist/src/inbound/reply-dispatch-driver.test.js.map +1 -0
  101. package/dist/src/inbound/resolve-inbound-group-prompt.d.ts +37 -0
  102. package/dist/src/inbound/resolve-inbound-group-prompt.d.ts.map +1 -0
  103. package/dist/src/inbound/resolve-inbound-group-prompt.js +57 -0
  104. package/dist/src/inbound/resolve-inbound-group-prompt.js.map +1 -0
  105. package/dist/src/plan/action-run-event.d.ts.map +1 -0
  106. package/dist/src/plan/action-run-event.js.map +1 -0
  107. package/dist/src/plan/action-run-event.test.d.ts.map +1 -0
  108. package/dist/src/plan/action-run-event.test.js.map +1 -0
  109. package/dist/src/plan/action-store-access.d.ts.map +1 -0
  110. package/dist/src/plan/action-store-access.js.map +1 -0
  111. package/dist/src/plan/action-store-lifecycle.test.d.ts.map +1 -0
  112. package/dist/src/plan/action-store-lifecycle.test.js +195 -0
  113. package/dist/src/plan/action-store-lifecycle.test.js.map +1 -0
  114. package/dist/src/plan/plan-core-adapter.d.ts.map +1 -0
  115. package/dist/src/plan/plan-core-adapter.js.map +1 -0
  116. package/dist/src/plan/plan-core-adapter.test.d.ts.map +1 -0
  117. package/dist/src/plan/plan-core-adapter.test.js.map +1 -0
  118. package/dist/src/plan/plan-core-db.d.ts.map +1 -0
  119. package/dist/src/plan/plan-core-db.js.map +1 -0
  120. package/dist/src/plan/plan-core-db.test.d.ts.map +1 -0
  121. package/dist/src/plan/plan-core-db.test.js +115 -0
  122. package/dist/src/plan/plan-core-db.test.js.map +1 -0
  123. package/dist/src/plan/plan-core-snapshot.d.ts +23 -0
  124. package/dist/src/plan/plan-core-snapshot.d.ts.map +1 -0
  125. package/dist/src/plan/plan-core-snapshot.js.map +1 -0
  126. package/dist/src/plan/plan-core-snapshot.test.d.ts.map +1 -0
  127. package/dist/src/plan/plan-core-snapshot.test.js +157 -0
  128. package/dist/src/plan/plan-core-snapshot.test.js.map +1 -0
  129. package/dist/src/plan/plan-stat-event.d.ts.map +1 -0
  130. package/dist/src/plan/plan-stat-event.js.map +1 -0
  131. package/dist/src/plan/plan-stat-event.test.d.ts.map +1 -0
  132. package/dist/src/plan/plan-stat-event.test.js.map +1 -0
  133. package/dist/src/plan/plan-tool-middleware.d.ts.map +1 -0
  134. package/dist/src/plan/plan-tool-middleware.js.map +1 -0
  135. package/dist/src/plan/plan-tool-middleware.test.d.ts.map +1 -0
  136. package/dist/src/plan/plan-tool-middleware.test.js.map +1 -0
  137. package/dist/src/plan/plan-ws-registry.d.ts +15 -0
  138. package/dist/src/plan/plan-ws-registry.d.ts.map +1 -0
  139. package/dist/src/plan/plan-ws-registry.js.map +1 -0
  140. package/dist/src/plan/plan-ws-registry.test.d.ts.map +1 -0
  141. package/dist/src/plan/plan-ws-registry.test.js +61 -0
  142. package/dist/src/plan/plan-ws-registry.test.js.map +1 -0
  143. package/dist/src/plan/tool-event-adapter.d.ts.map +1 -0
  144. package/dist/src/plan/tool-event-adapter.js +83 -0
  145. package/dist/src/plan/tool-event-adapter.js.map +1 -0
  146. package/dist/src/plan/tool-event-adapter.test.d.ts.map +1 -0
  147. package/dist/src/plan/tool-event-adapter.test.js.map +1 -0
  148. package/dist/src/plugin/auth.d.ts.map +1 -0
  149. package/dist/src/plugin/auth.js.map +1 -0
  150. package/dist/src/plugin/channel-config.d.ts +716 -0
  151. package/dist/src/plugin/channel-config.d.ts.map +1 -0
  152. package/dist/src/plugin/channel-config.js +405 -0
  153. package/dist/src/plugin/channel-config.js.map +1 -0
  154. package/dist/src/plugin/channel-config.test.d.ts.map +1 -0
  155. package/dist/src/plugin/channel-config.test.js +113 -0
  156. package/dist/src/plugin/channel-config.test.js.map +1 -0
  157. package/dist/src/plugin/channel-disabled-account.test.d.ts.map +1 -0
  158. package/dist/src/plugin/channel-disabled-account.test.js.map +1 -0
  159. package/dist/src/plugin/channel-log.d.ts.map +1 -0
  160. package/dist/src/plugin/channel-log.js.map +1 -0
  161. package/dist/src/plugin/channel.d.ts.map +1 -0
  162. package/dist/src/plugin/channel.js +272 -0
  163. package/dist/src/plugin/channel.js.map +1 -0
  164. package/dist/src/plugin/plugin-dispose.d.ts.map +1 -0
  165. package/dist/src/plugin/plugin-dispose.js +66 -0
  166. package/dist/src/plugin/plugin-dispose.js.map +1 -0
  167. package/dist/src/plugin/process-shared-store.d.ts.map +1 -0
  168. package/dist/src/plugin/process-shared-store.js.map +1 -0
  169. package/dist/src/plugin/process-shared-store.test.d.ts.map +1 -0
  170. package/dist/src/plugin/process-shared-store.test.js.map +1 -0
  171. package/dist/src/plugin/recommended-system-prompt.d.ts.map +1 -0
  172. package/dist/src/plugin/recommended-system-prompt.js.map +1 -0
  173. package/dist/src/plugin/types.d.ts +433 -0
  174. package/dist/src/plugin/types.d.ts.map +1 -0
  175. package/dist/src/plugin/types.js.map +1 -0
  176. package/dist/src/session/agent-context-types.d.ts +241 -0
  177. package/dist/src/session/agent-context-types.d.ts.map +1 -0
  178. package/dist/src/session/agent-context-types.js +142 -0
  179. package/dist/src/session/agent-context-types.js.map +1 -0
  180. package/dist/src/session/agent-context-types.test.d.ts.map +1 -0
  181. package/dist/src/session/agent-context-types.test.js +140 -0
  182. package/dist/src/session/agent-context-types.test.js.map +1 -0
  183. package/dist/src/session/auto-model-router.d.ts.map +1 -0
  184. package/dist/src/session/auto-model-router.js.map +1 -0
  185. package/dist/src/session/auto-model-router.test.d.ts.map +1 -0
  186. package/dist/src/session/auto-model-router.test.js.map +1 -0
  187. package/dist/src/session/build-project-prompt.d.ts +40 -0
  188. package/dist/src/session/build-project-prompt.d.ts.map +1 -0
  189. package/dist/src/session/build-project-prompt.js +190 -0
  190. package/dist/src/session/build-project-prompt.js.map +1 -0
  191. package/dist/src/session/build-project-prompt.test.d.ts.map +1 -0
  192. package/dist/src/session/build-project-prompt.test.js +100 -0
  193. package/dist/src/session/build-project-prompt.test.js.map +1 -0
  194. package/dist/src/session/inbound-model.d.ts +39 -0
  195. package/dist/src/session/inbound-model.d.ts.map +1 -0
  196. package/dist/src/session/inbound-model.js.map +1 -0
  197. package/dist/src/session/inbound-model.test.d.ts.map +1 -0
  198. package/dist/src/session/inbound-model.test.js.map +1 -0
  199. package/dist/src/session/per-message-fallback-notice.d.ts.map +1 -0
  200. package/dist/src/session/per-message-fallback-notice.js.map +1 -0
  201. package/dist/src/session/per-message-fallback-notice.test.d.ts.map +1 -0
  202. package/dist/src/session/per-message-fallback-notice.test.js +47 -0
  203. package/dist/src/session/per-message-fallback-notice.test.js.map +1 -0
  204. package/dist/src/session/per-message-model-pending.d.ts.map +1 -0
  205. package/dist/src/session/per-message-model-pending.js +134 -0
  206. package/dist/src/session/per-message-model-pending.js.map +1 -0
  207. package/dist/src/session/register-group-prompt-hook.d.ts.map +1 -0
  208. package/dist/src/session/register-group-prompt-hook.js.map +1 -0
  209. package/dist/src/session/register-group-prompt-hook.test.d.ts.map +1 -0
  210. package/dist/src/session/register-group-prompt-hook.test.js.map +1 -0
  211. package/dist/src/session/register-per-message-model-hook.d.ts.map +1 -0
  212. package/dist/src/session/register-per-message-model-hook.js.map +1 -0
  213. package/dist/src/session/register-per-message-model-hook.test.d.ts.map +1 -0
  214. package/dist/src/session/register-per-message-model-hook.test.js.map +1 -0
  215. package/dist/src/session/register-run-model-context-hook.d.ts.map +1 -0
  216. package/dist/src/session/register-run-model-context-hook.js.map +1 -0
  217. package/dist/src/session/run-model-context.d.ts.map +1 -0
  218. package/dist/src/session/run-model-context.js +108 -0
  219. package/dist/src/session/run-model-context.js.map +1 -0
  220. package/dist/src/session/run-model-context.test.d.ts.map +1 -0
  221. package/dist/src/session/run-model-context.test.js.map +1 -0
  222. package/dist/src/session/session-env-store.d.ts.map +1 -0
  223. package/dist/src/session/session-env-store.js +328 -0
  224. package/dist/src/session/session-env-store.js.map +1 -0
  225. package/dist/src/session/session-env-store.test.d.ts.map +1 -0
  226. package/dist/src/session/session-env-store.test.js.map +1 -0
  227. package/dist/src/session/session-group-prompt.d.ts.map +1 -0
  228. package/dist/src/session/session-group-prompt.js +101 -0
  229. package/dist/src/session/session-group-prompt.js.map +1 -0
  230. package/dist/src/session/session-group-prompt.test.d.ts.map +1 -0
  231. package/dist/src/session/session-group-prompt.test.js.map +1 -0
  232. package/dist/src/session/session-im-context.d.ts.map +1 -0
  233. package/dist/src/session/session-im-context.js +54 -0
  234. package/dist/src/session/session-im-context.js.map +1 -0
  235. package/dist/src/session/session-model-fallback.d.ts.map +1 -0
  236. package/dist/src/session/session-model-fallback.js.map +1 -0
  237. package/dist/src/tools/active-cron-context-store.d.ts.map +1 -0
  238. package/dist/src/tools/active-cron-context-store.js +73 -0
  239. package/dist/src/tools/active-cron-context-store.js.map +1 -0
  240. package/dist/src/tools/cron-appkey-binding-store.d.ts.map +1 -0
  241. package/dist/src/tools/cron-appkey-binding-store.js +239 -0
  242. package/dist/src/tools/cron-appkey-binding-store.js.map +1 -0
  243. package/dist/src/tools/cron-appkey-binding-store.test.d.ts.map +1 -0
  244. package/dist/src/tools/cron-appkey-binding-store.test.js +387 -0
  245. package/dist/src/tools/cron-appkey-binding-store.test.js.map +1 -0
  246. package/dist/src/tools/group-history-tool.d.ts +31 -0
  247. package/dist/src/tools/group-history-tool.d.ts.map +1 -0
  248. package/dist/src/tools/group-history-tool.js +177 -0
  249. package/dist/src/tools/group-history-tool.js.map +1 -0
  250. package/dist/src/tools/register-exec-env-hook.d.ts.map +1 -0
  251. package/dist/src/tools/register-exec-env-hook.js +473 -0
  252. package/dist/src/tools/register-exec-env-hook.js.map +1 -0
  253. package/dist/src/tools/register-exec-env-hook.test.d.ts.map +1 -0
  254. package/dist/src/tools/register-exec-env-hook.test.js +189 -0
  255. package/dist/src/tools/register-exec-env-hook.test.js.map +1 -0
  256. package/dist/src/tools/send-file-tool.d.ts +81 -0
  257. package/dist/src/tools/send-file-tool.d.ts.map +1 -0
  258. package/dist/src/tools/send-file-tool.js +363 -0
  259. package/dist/src/tools/send-file-tool.js.map +1 -0
  260. package/dist/src/tools/send-file-tool.test.d.ts.map +1 -0
  261. package/dist/src/tools/send-file-tool.test.js.map +1 -0
  262. package/dist/src/tools/send-group-message-tool.d.ts +17 -0
  263. package/dist/src/tools/send-group-message-tool.d.ts.map +1 -0
  264. package/dist/src/tools/send-group-message-tool.js +82 -0
  265. package/dist/src/tools/send-group-message-tool.js.map +1 -0
  266. package/dist/src/tools/tool-json-result.d.ts.map +1 -0
  267. package/dist/src/tools/tool-json-result.js.map +1 -0
  268. package/dist/src/turn/active-round-registry.d.ts +35 -0
  269. package/dist/src/turn/active-round-registry.d.ts.map +1 -0
  270. package/dist/src/turn/active-round-registry.js +85 -0
  271. package/dist/src/turn/active-round-registry.js.map +1 -0
  272. package/dist/src/turn/active-round-registry.test.d.ts.map +1 -0
  273. package/dist/src/turn/active-round-registry.test.js.map +1 -0
  274. package/dist/src/turn/interrupt-round.d.ts.map +1 -0
  275. package/dist/src/turn/interrupt-round.js +44 -0
  276. package/dist/src/turn/interrupt-round.js.map +1 -0
  277. package/dist/src/turn/interrupt-round.test.d.ts.map +1 -0
  278. package/dist/src/turn/interrupt-round.test.js +133 -0
  279. package/dist/src/turn/interrupt-round.test.js.map +1 -0
  280. package/dist/src/turn/item-event-guard.d.ts.map +1 -0
  281. package/dist/src/turn/item-event-guard.js.map +1 -0
  282. package/dist/src/turn/item-event-guard.test.d.ts.map +1 -0
  283. package/dist/src/turn/item-event-guard.test.js.map +1 -0
  284. package/dist/src/turn/run-usage-session.d.ts.map +1 -0
  285. package/dist/src/turn/run-usage-session.js +41 -0
  286. package/dist/src/turn/run-usage-session.js.map +1 -0
  287. package/dist/src/turn/run-usage.d.ts +67 -0
  288. package/dist/src/turn/run-usage.d.ts.map +1 -0
  289. package/dist/src/turn/run-usage.js.map +1 -0
  290. package/dist/src/turn/run-usage.test.d.ts.map +1 -0
  291. package/dist/src/turn/run-usage.test.js.map +1 -0
  292. package/dist/src/turn/subagent-monitor.d.ts +45 -0
  293. package/dist/src/turn/subagent-monitor.d.ts.map +1 -0
  294. package/dist/src/turn/subagent-monitor.js +498 -0
  295. package/dist/src/turn/subagent-monitor.js.map +1 -0
  296. package/dist/src/turn/subagent-monitor.test.d.ts.map +1 -0
  297. package/dist/src/turn/subagent-monitor.test.js.map +1 -0
  298. package/dist/src/turn/turn-agent-event-subscription.d.ts.map +1 -0
  299. package/dist/src/turn/turn-agent-event-subscription.js +289 -0
  300. package/dist/src/turn/turn-agent-event-subscription.js.map +1 -0
  301. package/dist/src/turn/turn-agent-event-subscription.test.d.ts.map +1 -0
  302. package/dist/src/turn/turn-agent-event-subscription.test.js +165 -0
  303. package/dist/src/turn/turn-agent-event-subscription.test.js.map +1 -0
  304. package/dist/src/turn/turn-end-controller.d.ts.map +1 -0
  305. package/dist/src/turn/turn-end-controller.js +239 -0
  306. package/dist/src/turn/turn-end-controller.js.map +1 -0
  307. package/dist/src/turn/turn-end-controller.test.d.ts.map +1 -0
  308. package/dist/src/turn/turn-end-controller.test.js.map +1 -0
  309. package/dist/src/turn/ws-run-event-unmapped.d.ts.map +1 -0
  310. package/dist/src/turn/ws-run-event-unmapped.js.map +1 -0
  311. package/dist/src/turn/ws-run-event-unmapped.test.d.ts.map +1 -0
  312. package/dist/src/turn/ws-run-event-unmapped.test.js.map +1 -0
  313. package/dist/src/workspace/apply-sync-mapping.d.ts +15 -0
  314. package/dist/src/workspace/apply-sync-mapping.d.ts.map +1 -0
  315. package/dist/src/workspace/apply-sync-mapping.js.map +1 -0
  316. package/dist/src/workspace/connection-workspace-event.test.d.ts.map +1 -0
  317. package/dist/src/workspace/connection-workspace-event.test.js +74 -0
  318. package/dist/src/workspace/connection-workspace-event.test.js.map +1 -0
  319. package/dist/src/workspace/inbound-file-download.d.ts +15 -0
  320. package/dist/src/workspace/inbound-file-download.d.ts.map +1 -0
  321. package/dist/src/workspace/inbound-file-download.js.map +1 -0
  322. package/dist/src/workspace/inbound-input-media.d.ts +43 -0
  323. package/dist/src/workspace/inbound-input-media.d.ts.map +1 -0
  324. package/dist/src/workspace/inbound-input-media.js +230 -0
  325. package/dist/src/workspace/inbound-input-media.js.map +1 -0
  326. package/dist/src/workspace/inbound-media-local.d.ts +49 -0
  327. package/dist/src/workspace/inbound-media-local.d.ts.map +1 -0
  328. package/dist/src/workspace/inbound-media-local.js.map +1 -0
  329. package/dist/src/workspace/nas-site.d.ts +16 -0
  330. package/dist/src/workspace/nas-site.d.ts.map +1 -0
  331. package/dist/src/workspace/nas-site.js.map +1 -0
  332. package/dist/src/workspace/nas-volume-fs-sync.d.ts +37 -0
  333. package/dist/src/workspace/nas-volume-fs-sync.d.ts.map +1 -0
  334. package/dist/src/workspace/nas-volume-fs-sync.js +156 -0
  335. package/dist/src/workspace/nas-volume-fs-sync.js.map +1 -0
  336. package/dist/src/workspace/nas-volume-fs-sync.test.d.ts +2 -0
  337. package/dist/src/workspace/nas-volume-fs-sync.test.d.ts.map +1 -0
  338. package/dist/src/workspace/nas-volume-fs-sync.test.js +49 -0
  339. package/dist/src/workspace/nas-volume-fs-sync.test.js.map +1 -0
  340. package/dist/src/workspace/nas-volumes.d.ts +73 -0
  341. package/dist/src/workspace/nas-volumes.d.ts.map +1 -0
  342. package/dist/src/workspace/nas-volumes.js +546 -0
  343. package/dist/src/workspace/nas-volumes.js.map +1 -0
  344. package/dist/src/workspace/nas-volumes.test.d.ts.map +1 -0
  345. package/dist/src/workspace/nas-volumes.test.js +386 -0
  346. package/dist/src/workspace/nas-volumes.test.js.map +1 -0
  347. package/dist/src/workspace/project-path-normalize.d.ts.map +1 -0
  348. package/dist/src/workspace/project-path-normalize.js.map +1 -0
  349. package/dist/src/workspace/resource-file.d.ts +119 -0
  350. package/dist/src/workspace/resource-file.d.ts.map +1 -0
  351. package/dist/src/workspace/resource-file.js.map +1 -0
  352. package/dist/src/workspace/resource-file.test.d.ts.map +1 -0
  353. package/dist/src/workspace/resource-file.test.js.map +1 -0
  354. package/dist/src/workspace/sync-mapping-types.d.ts +220 -0
  355. package/dist/src/workspace/sync-mapping-types.d.ts.map +1 -0
  356. package/dist/src/workspace/sync-mapping-types.js.map +1 -0
  357. package/dist/src/workspace/sync-service-client.d.ts +29 -0
  358. package/dist/src/workspace/sync-service-client.d.ts.map +1 -0
  359. package/dist/src/workspace/sync-service-client.js.map +1 -0
  360. package/dist/src/workspace/workspace-event-protocol.d.ts.map +1 -0
  361. package/dist/src/workspace/workspace-event-protocol.js.map +1 -0
  362. package/dist/src/workspace/workspace-event-scheduler.d.ts +54 -0
  363. package/dist/src/workspace/workspace-event-scheduler.d.ts.map +1 -0
  364. package/dist/src/workspace/workspace-event-scheduler.js.map +1 -0
  365. package/dist/src/workspace/workspace-event-scheduler.test.d.ts.map +1 -0
  366. package/dist/src/workspace/workspace-event-scheduler.test.js.map +1 -0
  367. package/dist/src/workspace/workspace-event.d.ts +28 -0
  368. package/dist/src/workspace/workspace-event.d.ts.map +1 -0
  369. package/dist/src/workspace/workspace-event.js.map +1 -0
  370. package/dist/src/workspace/workspace-event.test.d.ts.map +1 -0
  371. package/dist/src/workspace/workspace-event.test.js.map +1 -0
  372. package/package.json +82 -82
  373. package/dist/src/account-connection.d.ts +0 -37
  374. package/dist/src/account-connection.d.ts.map +0 -1
  375. package/dist/src/account-connection.js +0 -548
  376. package/dist/src/account-connection.js.map +0 -1
  377. package/dist/src/account-reconciler.d.ts +0 -64
  378. package/dist/src/account-reconciler.d.ts.map +0 -1
  379. package/dist/src/account-reconciler.js +0 -314
  380. package/dist/src/account-reconciler.js.map +0 -1
  381. package/dist/src/account-reconciler.test.d.ts.map +0 -1
  382. package/dist/src/account-reconciler.test.js +0 -166
  383. package/dist/src/account-reconciler.test.js.map +0 -1
  384. package/dist/src/action-run-event.d.ts.map +0 -1
  385. package/dist/src/action-run-event.js.map +0 -1
  386. package/dist/src/action-run-event.test.d.ts.map +0 -1
  387. package/dist/src/action-run-event.test.js.map +0 -1
  388. package/dist/src/action-store-access.d.ts.map +0 -1
  389. package/dist/src/action-store-access.js.map +0 -1
  390. package/dist/src/action-store-lifecycle.test.d.ts.map +0 -1
  391. package/dist/src/action-store-lifecycle.test.js +0 -195
  392. package/dist/src/action-store-lifecycle.test.js.map +0 -1
  393. package/dist/src/active-cron-context-store.d.ts.map +0 -1
  394. package/dist/src/active-cron-context-store.js +0 -73
  395. package/dist/src/active-cron-context-store.js.map +0 -1
  396. package/dist/src/active-round-registry.d.ts +0 -35
  397. package/dist/src/active-round-registry.d.ts.map +0 -1
  398. package/dist/src/active-round-registry.js +0 -85
  399. package/dist/src/active-round-registry.js.map +0 -1
  400. package/dist/src/active-round-registry.test.d.ts.map +0 -1
  401. package/dist/src/active-round-registry.test.js.map +0 -1
  402. package/dist/src/agent-context-types.d.ts +0 -205
  403. package/dist/src/agent-context-types.d.ts.map +0 -1
  404. package/dist/src/agent-context-types.js +0 -132
  405. package/dist/src/agent-context-types.js.map +0 -1
  406. package/dist/src/agent-context-types.test.d.ts.map +0 -1
  407. package/dist/src/agent-context-types.test.js +0 -123
  408. package/dist/src/agent-context-types.test.js.map +0 -1
  409. package/dist/src/agent-stream-client-registry.d.ts.map +0 -1
  410. package/dist/src/agent-stream-client-registry.js +0 -19
  411. package/dist/src/agent-stream-client-registry.js.map +0 -1
  412. package/dist/src/apply-sync-mapping.d.ts +0 -15
  413. package/dist/src/apply-sync-mapping.d.ts.map +0 -1
  414. package/dist/src/apply-sync-mapping.js.map +0 -1
  415. package/dist/src/assistant-item-delivery.d.ts.map +0 -1
  416. package/dist/src/assistant-item-delivery.js +0 -134
  417. package/dist/src/assistant-item-delivery.js.map +0 -1
  418. package/dist/src/assistant-item-delivery.test.d.ts.map +0 -1
  419. package/dist/src/assistant-item-delivery.test.js.map +0 -1
  420. package/dist/src/assistant-item-sink.d.ts.map +0 -1
  421. package/dist/src/assistant-item-sink.js +0 -34
  422. package/dist/src/assistant-item-sink.js.map +0 -1
  423. package/dist/src/auth.d.ts.map +0 -1
  424. package/dist/src/auth.js.map +0 -1
  425. package/dist/src/auto-model-router.d.ts.map +0 -1
  426. package/dist/src/auto-model-router.js.map +0 -1
  427. package/dist/src/auto-model-router.test.d.ts.map +0 -1
  428. package/dist/src/auto-model-router.test.js.map +0 -1
  429. package/dist/src/block-streaming-config.test.d.ts.map +0 -1
  430. package/dist/src/block-streaming-config.test.js +0 -91
  431. package/dist/src/block-streaming-config.test.js.map +0 -1
  432. package/dist/src/build-project-prompt.d.ts +0 -40
  433. package/dist/src/build-project-prompt.d.ts.map +0 -1
  434. package/dist/src/build-project-prompt.js +0 -183
  435. package/dist/src/build-project-prompt.js.map +0 -1
  436. package/dist/src/build-project-prompt.test.d.ts.map +0 -1
  437. package/dist/src/build-project-prompt.test.js +0 -100
  438. package/dist/src/build-project-prompt.test.js.map +0 -1
  439. package/dist/src/channel-config.d.ts +0 -716
  440. package/dist/src/channel-config.d.ts.map +0 -1
  441. package/dist/src/channel-config.js +0 -405
  442. package/dist/src/channel-config.js.map +0 -1
  443. package/dist/src/channel-config.test.d.ts.map +0 -1
  444. package/dist/src/channel-config.test.js +0 -113
  445. package/dist/src/channel-config.test.js.map +0 -1
  446. package/dist/src/channel-disabled-account.test.d.ts.map +0 -1
  447. package/dist/src/channel-disabled-account.test.js.map +0 -1
  448. package/dist/src/channel-log.d.ts.map +0 -1
  449. package/dist/src/channel-log.js.map +0 -1
  450. package/dist/src/channel.d.ts.map +0 -1
  451. package/dist/src/channel.js +0 -272
  452. package/dist/src/channel.js.map +0 -1
  453. package/dist/src/connection-workspace-event.test.d.ts.map +0 -1
  454. package/dist/src/connection-workspace-event.test.js +0 -74
  455. package/dist/src/connection-workspace-event.test.js.map +0 -1
  456. package/dist/src/connection.d.ts +0 -110
  457. package/dist/src/connection.d.ts.map +0 -1
  458. package/dist/src/connection.js +0 -463
  459. package/dist/src/connection.js.map +0 -1
  460. package/dist/src/connection.test.d.ts.map +0 -1
  461. package/dist/src/connection.test.js.map +0 -1
  462. package/dist/src/cron-appkey-binding-store.d.ts.map +0 -1
  463. package/dist/src/cron-appkey-binding-store.js +0 -239
  464. package/dist/src/cron-appkey-binding-store.js.map +0 -1
  465. package/dist/src/cron-appkey-binding-store.test.d.ts.map +0 -1
  466. package/dist/src/cron-appkey-binding-store.test.js +0 -387
  467. package/dist/src/cron-appkey-binding-store.test.js.map +0 -1
  468. package/dist/src/deliver-text.d.ts.map +0 -1
  469. package/dist/src/deliver-text.js.map +0 -1
  470. package/dist/src/deliver-text.test.d.ts.map +0 -1
  471. package/dist/src/deliver-text.test.js.map +0 -1
  472. package/dist/src/dispatch-mentioned-reply.d.ts +0 -47
  473. package/dist/src/dispatch-mentioned-reply.d.ts.map +0 -1
  474. package/dist/src/dispatch-mentioned-reply.js +0 -997
  475. package/dist/src/dispatch-mentioned-reply.js.map +0 -1
  476. package/dist/src/gateway-session-queue.d.ts +0 -37
  477. package/dist/src/gateway-session-queue.d.ts.map +0 -1
  478. package/dist/src/gateway-session-queue.js +0 -86
  479. package/dist/src/gateway-session-queue.js.map +0 -1
  480. package/dist/src/group-history-tool.d.ts +0 -31
  481. package/dist/src/group-history-tool.d.ts.map +0 -1
  482. package/dist/src/group-history-tool.js +0 -177
  483. package/dist/src/group-history-tool.js.map +0 -1
  484. package/dist/src/im-tool-progress.d.ts.map +0 -1
  485. package/dist/src/im-tool-progress.js.map +0 -1
  486. package/dist/src/inbound-archive.d.ts.map +0 -1
  487. package/dist/src/inbound-archive.js.map +0 -1
  488. package/dist/src/inbound-attachment-meta.d.ts +0 -13
  489. package/dist/src/inbound-attachment-meta.d.ts.map +0 -1
  490. package/dist/src/inbound-attachment-meta.js.map +0 -1
  491. package/dist/src/inbound-chat-type.d.ts +0 -33
  492. package/dist/src/inbound-chat-type.d.ts.map +0 -1
  493. package/dist/src/inbound-chat-type.js.map +0 -1
  494. package/dist/src/inbound-display.d.ts +0 -41
  495. package/dist/src/inbound-display.d.ts.map +0 -1
  496. package/dist/src/inbound-display.js +0 -170
  497. package/dist/src/inbound-display.js.map +0 -1
  498. package/dist/src/inbound-file-download.d.ts +0 -15
  499. package/dist/src/inbound-file-download.d.ts.map +0 -1
  500. package/dist/src/inbound-file-download.js.map +0 -1
  501. package/dist/src/inbound-input-media.d.ts +0 -43
  502. package/dist/src/inbound-input-media.d.ts.map +0 -1
  503. package/dist/src/inbound-input-media.js +0 -230
  504. package/dist/src/inbound-input-media.js.map +0 -1
  505. package/dist/src/inbound-media-local.d.ts +0 -49
  506. package/dist/src/inbound-media-local.d.ts.map +0 -1
  507. package/dist/src/inbound-media-local.js.map +0 -1
  508. package/dist/src/inbound-model.d.ts +0 -39
  509. package/dist/src/inbound-model.d.ts.map +0 -1
  510. package/dist/src/inbound-model.js.map +0 -1
  511. package/dist/src/inbound-model.test.d.ts.map +0 -1
  512. package/dist/src/inbound-model.test.js.map +0 -1
  513. package/dist/src/inbound-terminal-delivery.d.ts +0 -77
  514. package/dist/src/inbound-terminal-delivery.d.ts.map +0 -1
  515. package/dist/src/inbound-terminal-delivery.js.map +0 -1
  516. package/dist/src/inbound-terminal-state.d.ts.map +0 -1
  517. package/dist/src/inbound-terminal-state.js +0 -185
  518. package/dist/src/inbound-terminal-state.js.map +0 -1
  519. package/dist/src/inbound-terminal-state.test.d.ts.map +0 -1
  520. package/dist/src/inbound-terminal-state.test.js.map +0 -1
  521. package/dist/src/interrupt-round.d.ts.map +0 -1
  522. package/dist/src/interrupt-round.js +0 -44
  523. package/dist/src/interrupt-round.js.map +0 -1
  524. package/dist/src/interrupt-round.test.d.ts.map +0 -1
  525. package/dist/src/interrupt-round.test.js +0 -133
  526. package/dist/src/interrupt-round.test.js.map +0 -1
  527. package/dist/src/item-event-guard.d.ts.map +0 -1
  528. package/dist/src/item-event-guard.js.map +0 -1
  529. package/dist/src/item-event-guard.test.d.ts.map +0 -1
  530. package/dist/src/item-event-guard.test.js.map +0 -1
  531. package/dist/src/nas-site.d.ts +0 -16
  532. package/dist/src/nas-site.d.ts.map +0 -1
  533. package/dist/src/nas-site.js.map +0 -1
  534. package/dist/src/nas-volumes.d.ts +0 -53
  535. package/dist/src/nas-volumes.d.ts.map +0 -1
  536. package/dist/src/nas-volumes.js +0 -417
  537. package/dist/src/nas-volumes.js.map +0 -1
  538. package/dist/src/nas-volumes.test.d.ts.map +0 -1
  539. package/dist/src/nas-volumes.test.js +0 -261
  540. package/dist/src/nas-volumes.test.js.map +0 -1
  541. package/dist/src/per-message-fallback-notice.d.ts.map +0 -1
  542. package/dist/src/per-message-fallback-notice.js.map +0 -1
  543. package/dist/src/per-message-fallback-notice.test.d.ts.map +0 -1
  544. package/dist/src/per-message-fallback-notice.test.js +0 -47
  545. package/dist/src/per-message-fallback-notice.test.js.map +0 -1
  546. package/dist/src/per-message-model-pending.d.ts.map +0 -1
  547. package/dist/src/per-message-model-pending.js +0 -134
  548. package/dist/src/per-message-model-pending.js.map +0 -1
  549. package/dist/src/plan-blocked-notice.d.ts +0 -14
  550. package/dist/src/plan-blocked-notice.d.ts.map +0 -1
  551. package/dist/src/plan-blocked-notice.js +0 -41
  552. package/dist/src/plan-blocked-notice.js.map +0 -1
  553. package/dist/src/plan-blocked-notice.test.d.ts +0 -2
  554. package/dist/src/plan-blocked-notice.test.d.ts.map +0 -1
  555. package/dist/src/plan-blocked-notice.test.js +0 -96
  556. package/dist/src/plan-blocked-notice.test.js.map +0 -1
  557. package/dist/src/plan-core-adapter.d.ts.map +0 -1
  558. package/dist/src/plan-core-adapter.js.map +0 -1
  559. package/dist/src/plan-core-adapter.test.d.ts.map +0 -1
  560. package/dist/src/plan-core-adapter.test.js.map +0 -1
  561. package/dist/src/plan-core-db.d.ts.map +0 -1
  562. package/dist/src/plan-core-db.js.map +0 -1
  563. package/dist/src/plan-core-db.test.d.ts.map +0 -1
  564. package/dist/src/plan-core-db.test.js +0 -115
  565. package/dist/src/plan-core-db.test.js.map +0 -1
  566. package/dist/src/plan-core-snapshot.d.ts +0 -23
  567. package/dist/src/plan-core-snapshot.d.ts.map +0 -1
  568. package/dist/src/plan-core-snapshot.js.map +0 -1
  569. package/dist/src/plan-core-snapshot.test.d.ts.map +0 -1
  570. package/dist/src/plan-core-snapshot.test.js +0 -157
  571. package/dist/src/plan-core-snapshot.test.js.map +0 -1
  572. package/dist/src/plan-event-subscription.d.ts +0 -36
  573. package/dist/src/plan-event-subscription.d.ts.map +0 -1
  574. package/dist/src/plan-event-subscription.js +0 -57
  575. package/dist/src/plan-event-subscription.js.map +0 -1
  576. package/dist/src/plan-event-subscription.test.d.ts +0 -2
  577. package/dist/src/plan-event-subscription.test.d.ts.map +0 -1
  578. package/dist/src/plan-event-subscription.test.js +0 -167
  579. package/dist/src/plan-event-subscription.test.js.map +0 -1
  580. package/dist/src/plan-stat-event.d.ts.map +0 -1
  581. package/dist/src/plan-stat-event.js.map +0 -1
  582. package/dist/src/plan-stat-event.test.d.ts.map +0 -1
  583. package/dist/src/plan-stat-event.test.js.map +0 -1
  584. package/dist/src/plan-store-access.d.ts +0 -25
  585. package/dist/src/plan-store-access.d.ts.map +0 -1
  586. package/dist/src/plan-store-access.js +0 -100
  587. package/dist/src/plan-store-access.js.map +0 -1
  588. package/dist/src/plan-store-access.test.d.ts +0 -2
  589. package/dist/src/plan-store-access.test.d.ts.map +0 -1
  590. package/dist/src/plan-store-access.test.js +0 -207
  591. package/dist/src/plan-store-access.test.js.map +0 -1
  592. package/dist/src/plan-tool-middleware.d.ts.map +0 -1
  593. package/dist/src/plan-tool-middleware.js.map +0 -1
  594. package/dist/src/plan-tool-middleware.test.d.ts.map +0 -1
  595. package/dist/src/plan-tool-middleware.test.js.map +0 -1
  596. package/dist/src/plan-tool-result.d.ts +0 -18
  597. package/dist/src/plan-tool-result.d.ts.map +0 -1
  598. package/dist/src/plan-tool-result.js +0 -77
  599. package/dist/src/plan-tool-result.js.map +0 -1
  600. package/dist/src/plan-tool-result.test.d.ts +0 -2
  601. package/dist/src/plan-tool-result.test.d.ts.map +0 -1
  602. package/dist/src/plan-tool-result.test.js +0 -129
  603. package/dist/src/plan-tool-result.test.js.map +0 -1
  604. package/dist/src/plan-ws-registry.d.ts +0 -15
  605. package/dist/src/plan-ws-registry.d.ts.map +0 -1
  606. package/dist/src/plan-ws-registry.js.map +0 -1
  607. package/dist/src/plan-ws-registry.test.d.ts.map +0 -1
  608. package/dist/src/plan-ws-registry.test.js +0 -61
  609. package/dist/src/plan-ws-registry.test.js.map +0 -1
  610. package/dist/src/plugin-dispose.d.ts.map +0 -1
  611. package/dist/src/plugin-dispose.js +0 -66
  612. package/dist/src/plugin-dispose.js.map +0 -1
  613. package/dist/src/process-shared-store.d.ts.map +0 -1
  614. package/dist/src/process-shared-store.js.map +0 -1
  615. package/dist/src/process-shared-store.test.d.ts.map +0 -1
  616. package/dist/src/process-shared-store.test.js.map +0 -1
  617. package/dist/src/project-path-normalize.d.ts.map +0 -1
  618. package/dist/src/project-path-normalize.js.map +0 -1
  619. package/dist/src/recommended-system-prompt.d.ts.map +0 -1
  620. package/dist/src/recommended-system-prompt.js.map +0 -1
  621. package/dist/src/register-exec-env-hook.d.ts.map +0 -1
  622. package/dist/src/register-exec-env-hook.js +0 -473
  623. package/dist/src/register-exec-env-hook.js.map +0 -1
  624. package/dist/src/register-exec-env-hook.test.d.ts.map +0 -1
  625. package/dist/src/register-exec-env-hook.test.js +0 -189
  626. package/dist/src/register-exec-env-hook.test.js.map +0 -1
  627. package/dist/src/register-group-prompt-hook.d.ts.map +0 -1
  628. package/dist/src/register-group-prompt-hook.js.map +0 -1
  629. package/dist/src/register-group-prompt-hook.test.d.ts.map +0 -1
  630. package/dist/src/register-group-prompt-hook.test.js.map +0 -1
  631. package/dist/src/register-per-message-model-hook.d.ts.map +0 -1
  632. package/dist/src/register-per-message-model-hook.js.map +0 -1
  633. package/dist/src/register-per-message-model-hook.test.d.ts.map +0 -1
  634. package/dist/src/register-per-message-model-hook.test.js.map +0 -1
  635. package/dist/src/register-run-model-context-hook.d.ts.map +0 -1
  636. package/dist/src/register-run-model-context-hook.js.map +0 -1
  637. package/dist/src/reply-dispatch-driver.d.ts.map +0 -1
  638. package/dist/src/reply-dispatch-driver.js.map +0 -1
  639. package/dist/src/reply-dispatch-driver.test.d.ts.map +0 -1
  640. package/dist/src/reply-dispatch-driver.test.js.map +0 -1
  641. package/dist/src/resolve-inbound-group-prompt.d.ts +0 -37
  642. package/dist/src/resolve-inbound-group-prompt.d.ts.map +0 -1
  643. package/dist/src/resolve-inbound-group-prompt.js +0 -57
  644. package/dist/src/resolve-inbound-group-prompt.js.map +0 -1
  645. package/dist/src/resource-file.d.ts +0 -119
  646. package/dist/src/resource-file.d.ts.map +0 -1
  647. package/dist/src/resource-file.js.map +0 -1
  648. package/dist/src/resource-file.test.d.ts.map +0 -1
  649. package/dist/src/resource-file.test.js.map +0 -1
  650. package/dist/src/run-model-context.d.ts.map +0 -1
  651. package/dist/src/run-model-context.js +0 -108
  652. package/dist/src/run-model-context.js.map +0 -1
  653. package/dist/src/run-model-context.test.d.ts.map +0 -1
  654. package/dist/src/run-model-context.test.js.map +0 -1
  655. package/dist/src/run-usage-session.d.ts.map +0 -1
  656. package/dist/src/run-usage-session.js +0 -41
  657. package/dist/src/run-usage-session.js.map +0 -1
  658. package/dist/src/run-usage.d.ts +0 -67
  659. package/dist/src/run-usage.d.ts.map +0 -1
  660. package/dist/src/run-usage.js.map +0 -1
  661. package/dist/src/run-usage.test.d.ts.map +0 -1
  662. package/dist/src/run-usage.test.js.map +0 -1
  663. package/dist/src/send-file-event.d.ts.map +0 -1
  664. package/dist/src/send-file-event.js +0 -33
  665. package/dist/src/send-file-event.js.map +0 -1
  666. package/dist/src/send-file-event.test.d.ts.map +0 -1
  667. package/dist/src/send-file-event.test.js +0 -86
  668. package/dist/src/send-file-event.test.js.map +0 -1
  669. package/dist/src/send-file-tool.d.ts +0 -81
  670. package/dist/src/send-file-tool.d.ts.map +0 -1
  671. package/dist/src/send-file-tool.js +0 -363
  672. package/dist/src/send-file-tool.js.map +0 -1
  673. package/dist/src/send-file-tool.test.d.ts.map +0 -1
  674. package/dist/src/send-file-tool.test.js.map +0 -1
  675. package/dist/src/send-group-message-tool.d.ts +0 -17
  676. package/dist/src/send-group-message-tool.d.ts.map +0 -1
  677. package/dist/src/send-group-message-tool.js +0 -82
  678. package/dist/src/send-group-message-tool.js.map +0 -1
  679. package/dist/src/send-service.d.ts +0 -83
  680. package/dist/src/send-service.d.ts.map +0 -1
  681. package/dist/src/send-service.js +0 -324
  682. package/dist/src/send-service.js.map +0 -1
  683. package/dist/src/send-service.test.d.ts.map +0 -1
  684. package/dist/src/send-service.test.js.map +0 -1
  685. package/dist/src/session-env-store.d.ts.map +0 -1
  686. package/dist/src/session-env-store.js +0 -328
  687. package/dist/src/session-env-store.js.map +0 -1
  688. package/dist/src/session-env-store.test.d.ts.map +0 -1
  689. package/dist/src/session-env-store.test.js.map +0 -1
  690. package/dist/src/session-group-prompt.d.ts.map +0 -1
  691. package/dist/src/session-group-prompt.js +0 -101
  692. package/dist/src/session-group-prompt.js.map +0 -1
  693. package/dist/src/session-group-prompt.test.d.ts.map +0 -1
  694. package/dist/src/session-group-prompt.test.js.map +0 -1
  695. package/dist/src/session-im-context.d.ts.map +0 -1
  696. package/dist/src/session-im-context.js +0 -54
  697. package/dist/src/session-im-context.js.map +0 -1
  698. package/dist/src/session-model-fallback.d.ts.map +0 -1
  699. package/dist/src/session-model-fallback.js.map +0 -1
  700. package/dist/src/subagent-monitor.d.ts +0 -45
  701. package/dist/src/subagent-monitor.d.ts.map +0 -1
  702. package/dist/src/subagent-monitor.js +0 -498
  703. package/dist/src/subagent-monitor.js.map +0 -1
  704. package/dist/src/subagent-monitor.test.d.ts.map +0 -1
  705. package/dist/src/subagent-monitor.test.js.map +0 -1
  706. package/dist/src/sync-mapping-types.d.ts +0 -220
  707. package/dist/src/sync-mapping-types.d.ts.map +0 -1
  708. package/dist/src/sync-mapping-types.js.map +0 -1
  709. package/dist/src/sync-service-client.d.ts +0 -29
  710. package/dist/src/sync-service-client.d.ts.map +0 -1
  711. package/dist/src/sync-service-client.js.map +0 -1
  712. package/dist/src/thinking-ws-progress.d.ts.map +0 -1
  713. package/dist/src/thinking-ws-progress.js.map +0 -1
  714. package/dist/src/thinking-ws-progress.test.d.ts.map +0 -1
  715. package/dist/src/thinking-ws-progress.test.js.map +0 -1
  716. package/dist/src/tool-event-adapter.d.ts.map +0 -1
  717. package/dist/src/tool-event-adapter.js +0 -83
  718. package/dist/src/tool-event-adapter.js.map +0 -1
  719. package/dist/src/tool-event-adapter.test.d.ts.map +0 -1
  720. package/dist/src/tool-event-adapter.test.js.map +0 -1
  721. package/dist/src/tool-json-result.d.ts.map +0 -1
  722. package/dist/src/tool-json-result.js.map +0 -1
  723. package/dist/src/turn-agent-event-subscription.d.ts.map +0 -1
  724. package/dist/src/turn-agent-event-subscription.js +0 -289
  725. package/dist/src/turn-agent-event-subscription.js.map +0 -1
  726. package/dist/src/turn-agent-event-subscription.test.d.ts.map +0 -1
  727. package/dist/src/turn-agent-event-subscription.test.js +0 -165
  728. package/dist/src/turn-agent-event-subscription.test.js.map +0 -1
  729. package/dist/src/turn-deliver-buffer.d.ts.map +0 -1
  730. package/dist/src/turn-deliver-buffer.js.map +0 -1
  731. package/dist/src/turn-deliver-buffer.test.d.ts.map +0 -1
  732. package/dist/src/turn-deliver-buffer.test.js.map +0 -1
  733. package/dist/src/turn-end-controller.d.ts.map +0 -1
  734. package/dist/src/turn-end-controller.js +0 -239
  735. package/dist/src/turn-end-controller.js.map +0 -1
  736. package/dist/src/turn-end-controller.test.d.ts.map +0 -1
  737. package/dist/src/turn-end-controller.test.js.map +0 -1
  738. package/dist/src/types.d.ts +0 -433
  739. package/dist/src/types.d.ts.map +0 -1
  740. package/dist/src/types.js.map +0 -1
  741. package/dist/src/user-facing-errors.d.ts.map +0 -1
  742. package/dist/src/user-facing-errors.js +0 -120
  743. package/dist/src/user-facing-errors.js.map +0 -1
  744. package/dist/src/user-facing-errors.test.d.ts.map +0 -1
  745. package/dist/src/user-facing-errors.test.js.map +0 -1
  746. package/dist/src/workspace-event-protocol.d.ts.map +0 -1
  747. package/dist/src/workspace-event-protocol.js.map +0 -1
  748. package/dist/src/workspace-event-scheduler.d.ts +0 -54
  749. package/dist/src/workspace-event-scheduler.d.ts.map +0 -1
  750. package/dist/src/workspace-event-scheduler.js.map +0 -1
  751. package/dist/src/workspace-event-scheduler.test.d.ts.map +0 -1
  752. package/dist/src/workspace-event-scheduler.test.js.map +0 -1
  753. package/dist/src/workspace-event.d.ts +0 -28
  754. package/dist/src/workspace-event.d.ts.map +0 -1
  755. package/dist/src/workspace-event.js.map +0 -1
  756. package/dist/src/workspace-event.test.d.ts.map +0 -1
  757. package/dist/src/workspace-event.test.js.map +0 -1
  758. package/dist/src/ws-inbound-schema.d.ts +0 -14
  759. package/dist/src/ws-inbound-schema.d.ts.map +0 -1
  760. package/dist/src/ws-inbound-schema.js.map +0 -1
  761. package/dist/src/ws-inbound-schema.test.d.ts.map +0 -1
  762. package/dist/src/ws-inbound-schema.test.js.map +0 -1
  763. package/dist/src/ws-run-event-unmapped.d.ts.map +0 -1
  764. package/dist/src/ws-run-event-unmapped.js.map +0 -1
  765. package/dist/src/ws-run-event-unmapped.test.d.ts.map +0 -1
  766. package/dist/src/ws-run-event-unmapped.test.js.map +0 -1
  767. /package/dist/src/{account-reconciler.test.d.ts → connection/account-reconciler.test.d.ts} +0 -0
  768. /package/dist/src/{agent-stream-client-registry.d.ts → connection/agent-stream-client-registry.d.ts} +0 -0
  769. /package/dist/src/{connection.test.d.ts → connection/connection.test.d.ts} +0 -0
  770. /package/dist/src/{connection.test.js → connection/connection.test.js} +0 -0
  771. /package/dist/src/{ws-inbound-schema.js → connection/ws-inbound-schema.js} +0 -0
  772. /package/dist/src/{ws-inbound-schema.test.d.ts → connection/ws-inbound-schema.test.d.ts} +0 -0
  773. /package/dist/src/{ws-inbound-schema.test.js → connection/ws-inbound-schema.test.js} +0 -0
  774. /package/dist/src/{assistant-item-delivery.d.ts → delivery/assistant-item-delivery.d.ts} +0 -0
  775. /package/dist/src/{assistant-item-delivery.test.d.ts → delivery/assistant-item-delivery.test.d.ts} +0 -0
  776. /package/dist/src/{assistant-item-delivery.test.js → delivery/assistant-item-delivery.test.js} +0 -0
  777. /package/dist/src/{assistant-item-sink.d.ts → delivery/assistant-item-sink.d.ts} +0 -0
  778. /package/dist/src/{block-streaming-config.test.d.ts → delivery/block-streaming-config.test.d.ts} +0 -0
  779. /package/dist/src/{deliver-text.d.ts → delivery/deliver-text.d.ts} +0 -0
  780. /package/dist/src/{deliver-text.js → delivery/deliver-text.js} +0 -0
  781. /package/dist/src/{deliver-text.test.d.ts → delivery/deliver-text.test.d.ts} +0 -0
  782. /package/dist/src/{deliver-text.test.js → delivery/deliver-text.test.js} +0 -0
  783. /package/dist/src/{im-tool-progress.d.ts → delivery/im-tool-progress.d.ts} +0 -0
  784. /package/dist/src/{im-tool-progress.js → delivery/im-tool-progress.js} +0 -0
  785. /package/dist/src/{inbound-terminal-delivery.js → delivery/inbound-terminal-delivery.js} +0 -0
  786. /package/dist/src/{inbound-terminal-state.d.ts → delivery/inbound-terminal-state.d.ts} +0 -0
  787. /package/dist/src/{inbound-terminal-state.test.d.ts → delivery/inbound-terminal-state.test.d.ts} +0 -0
  788. /package/dist/src/{inbound-terminal-state.test.js → delivery/inbound-terminal-state.test.js} +0 -0
  789. /package/dist/src/{send-file-event.d.ts → delivery/send-file-event.d.ts} +0 -0
  790. /package/dist/src/{send-file-event.test.d.ts → delivery/send-file-event.test.d.ts} +0 -0
  791. /package/dist/src/{send-service.test.d.ts → delivery/send-service.test.d.ts} +0 -0
  792. /package/dist/src/{send-service.test.js → delivery/send-service.test.js} +0 -0
  793. /package/dist/src/{thinking-ws-progress.d.ts → delivery/thinking-ws-progress.d.ts} +0 -0
  794. /package/dist/src/{thinking-ws-progress.js → delivery/thinking-ws-progress.js} +0 -0
  795. /package/dist/src/{thinking-ws-progress.test.d.ts → delivery/thinking-ws-progress.test.d.ts} +0 -0
  796. /package/dist/src/{thinking-ws-progress.test.js → delivery/thinking-ws-progress.test.js} +0 -0
  797. /package/dist/src/{turn-deliver-buffer.d.ts → delivery/turn-deliver-buffer.d.ts} +0 -0
  798. /package/dist/src/{turn-deliver-buffer.js → delivery/turn-deliver-buffer.js} +0 -0
  799. /package/dist/src/{turn-deliver-buffer.test.d.ts → delivery/turn-deliver-buffer.test.d.ts} +0 -0
  800. /package/dist/src/{turn-deliver-buffer.test.js → delivery/turn-deliver-buffer.test.js} +0 -0
  801. /package/dist/src/{user-facing-errors.d.ts → delivery/user-facing-errors.d.ts} +0 -0
  802. /package/dist/src/{user-facing-errors.test.d.ts → delivery/user-facing-errors.test.d.ts} +0 -0
  803. /package/dist/src/{user-facing-errors.test.js → delivery/user-facing-errors.test.js} +0 -0
  804. /package/dist/src/{inbound-archive.d.ts → inbound/inbound-archive.d.ts} +0 -0
  805. /package/dist/src/{inbound-archive.js → inbound/inbound-archive.js} +0 -0
  806. /package/dist/src/{inbound-attachment-meta.js → inbound/inbound-attachment-meta.js} +0 -0
  807. /package/dist/src/{inbound-chat-type.js → inbound/inbound-chat-type.js} +0 -0
  808. /package/dist/src/{reply-dispatch-driver.d.ts → inbound/reply-dispatch-driver.d.ts} +0 -0
  809. /package/dist/src/{reply-dispatch-driver.js → inbound/reply-dispatch-driver.js} +0 -0
  810. /package/dist/src/{reply-dispatch-driver.test.d.ts → inbound/reply-dispatch-driver.test.d.ts} +0 -0
  811. /package/dist/src/{reply-dispatch-driver.test.js → inbound/reply-dispatch-driver.test.js} +0 -0
  812. /package/dist/src/{action-run-event.d.ts → plan/action-run-event.d.ts} +0 -0
  813. /package/dist/src/{action-run-event.js → plan/action-run-event.js} +0 -0
  814. /package/dist/src/{action-run-event.test.d.ts → plan/action-run-event.test.d.ts} +0 -0
  815. /package/dist/src/{action-run-event.test.js → plan/action-run-event.test.js} +0 -0
  816. /package/dist/src/{action-store-access.d.ts → plan/action-store-access.d.ts} +0 -0
  817. /package/dist/src/{action-store-access.js → plan/action-store-access.js} +0 -0
  818. /package/dist/src/{action-store-lifecycle.test.d.ts → plan/action-store-lifecycle.test.d.ts} +0 -0
  819. /package/dist/src/{plan-core-adapter.d.ts → plan/plan-core-adapter.d.ts} +0 -0
  820. /package/dist/src/{plan-core-adapter.js → plan/plan-core-adapter.js} +0 -0
  821. /package/dist/src/{plan-core-adapter.test.d.ts → plan/plan-core-adapter.test.d.ts} +0 -0
  822. /package/dist/src/{plan-core-adapter.test.js → plan/plan-core-adapter.test.js} +0 -0
  823. /package/dist/src/{plan-core-db.d.ts → plan/plan-core-db.d.ts} +0 -0
  824. /package/dist/src/{plan-core-db.js → plan/plan-core-db.js} +0 -0
  825. /package/dist/src/{plan-core-db.test.d.ts → plan/plan-core-db.test.d.ts} +0 -0
  826. /package/dist/src/{plan-core-snapshot.js → plan/plan-core-snapshot.js} +0 -0
  827. /package/dist/src/{plan-core-snapshot.test.d.ts → plan/plan-core-snapshot.test.d.ts} +0 -0
  828. /package/dist/src/{plan-stat-event.d.ts → plan/plan-stat-event.d.ts} +0 -0
  829. /package/dist/src/{plan-stat-event.js → plan/plan-stat-event.js} +0 -0
  830. /package/dist/src/{plan-stat-event.test.d.ts → plan/plan-stat-event.test.d.ts} +0 -0
  831. /package/dist/src/{plan-stat-event.test.js → plan/plan-stat-event.test.js} +0 -0
  832. /package/dist/src/{plan-tool-middleware.d.ts → plan/plan-tool-middleware.d.ts} +0 -0
  833. /package/dist/src/{plan-tool-middleware.js → plan/plan-tool-middleware.js} +0 -0
  834. /package/dist/src/{plan-tool-middleware.test.d.ts → plan/plan-tool-middleware.test.d.ts} +0 -0
  835. /package/dist/src/{plan-tool-middleware.test.js → plan/plan-tool-middleware.test.js} +0 -0
  836. /package/dist/src/{plan-ws-registry.js → plan/plan-ws-registry.js} +0 -0
  837. /package/dist/src/{plan-ws-registry.test.d.ts → plan/plan-ws-registry.test.d.ts} +0 -0
  838. /package/dist/src/{tool-event-adapter.d.ts → plan/tool-event-adapter.d.ts} +0 -0
  839. /package/dist/src/{tool-event-adapter.test.d.ts → plan/tool-event-adapter.test.d.ts} +0 -0
  840. /package/dist/src/{tool-event-adapter.test.js → plan/tool-event-adapter.test.js} +0 -0
  841. /package/dist/src/{auth.d.ts → plugin/auth.d.ts} +0 -0
  842. /package/dist/src/{auth.js → plugin/auth.js} +0 -0
  843. /package/dist/src/{channel-config.test.d.ts → plugin/channel-config.test.d.ts} +0 -0
  844. /package/dist/src/{channel-disabled-account.test.d.ts → plugin/channel-disabled-account.test.d.ts} +0 -0
  845. /package/dist/src/{channel-disabled-account.test.js → plugin/channel-disabled-account.test.js} +0 -0
  846. /package/dist/src/{channel-log.d.ts → plugin/channel-log.d.ts} +0 -0
  847. /package/dist/src/{channel-log.js → plugin/channel-log.js} +0 -0
  848. /package/dist/src/{channel.d.ts → plugin/channel.d.ts} +0 -0
  849. /package/dist/src/{plugin-dispose.d.ts → plugin/plugin-dispose.d.ts} +0 -0
  850. /package/dist/src/{process-shared-store.d.ts → plugin/process-shared-store.d.ts} +0 -0
  851. /package/dist/src/{process-shared-store.js → plugin/process-shared-store.js} +0 -0
  852. /package/dist/src/{process-shared-store.test.d.ts → plugin/process-shared-store.test.d.ts} +0 -0
  853. /package/dist/src/{process-shared-store.test.js → plugin/process-shared-store.test.js} +0 -0
  854. /package/dist/src/{recommended-system-prompt.d.ts → plugin/recommended-system-prompt.d.ts} +0 -0
  855. /package/dist/src/{recommended-system-prompt.js → plugin/recommended-system-prompt.js} +0 -0
  856. /package/dist/src/{types.js → plugin/types.js} +0 -0
  857. /package/dist/src/{agent-context-types.test.d.ts → session/agent-context-types.test.d.ts} +0 -0
  858. /package/dist/src/{auto-model-router.d.ts → session/auto-model-router.d.ts} +0 -0
  859. /package/dist/src/{auto-model-router.js → session/auto-model-router.js} +0 -0
  860. /package/dist/src/{auto-model-router.test.d.ts → session/auto-model-router.test.d.ts} +0 -0
  861. /package/dist/src/{auto-model-router.test.js → session/auto-model-router.test.js} +0 -0
  862. /package/dist/src/{build-project-prompt.test.d.ts → session/build-project-prompt.test.d.ts} +0 -0
  863. /package/dist/src/{inbound-model.js → session/inbound-model.js} +0 -0
  864. /package/dist/src/{inbound-model.test.d.ts → session/inbound-model.test.d.ts} +0 -0
  865. /package/dist/src/{inbound-model.test.js → session/inbound-model.test.js} +0 -0
  866. /package/dist/src/{per-message-fallback-notice.d.ts → session/per-message-fallback-notice.d.ts} +0 -0
  867. /package/dist/src/{per-message-fallback-notice.js → session/per-message-fallback-notice.js} +0 -0
  868. /package/dist/src/{per-message-fallback-notice.test.d.ts → session/per-message-fallback-notice.test.d.ts} +0 -0
  869. /package/dist/src/{per-message-model-pending.d.ts → session/per-message-model-pending.d.ts} +0 -0
  870. /package/dist/src/{register-group-prompt-hook.d.ts → session/register-group-prompt-hook.d.ts} +0 -0
  871. /package/dist/src/{register-group-prompt-hook.js → session/register-group-prompt-hook.js} +0 -0
  872. /package/dist/src/{register-group-prompt-hook.test.d.ts → session/register-group-prompt-hook.test.d.ts} +0 -0
  873. /package/dist/src/{register-group-prompt-hook.test.js → session/register-group-prompt-hook.test.js} +0 -0
  874. /package/dist/src/{register-per-message-model-hook.d.ts → session/register-per-message-model-hook.d.ts} +0 -0
  875. /package/dist/src/{register-per-message-model-hook.js → session/register-per-message-model-hook.js} +0 -0
  876. /package/dist/src/{register-per-message-model-hook.test.d.ts → session/register-per-message-model-hook.test.d.ts} +0 -0
  877. /package/dist/src/{register-per-message-model-hook.test.js → session/register-per-message-model-hook.test.js} +0 -0
  878. /package/dist/src/{register-run-model-context-hook.d.ts → session/register-run-model-context-hook.d.ts} +0 -0
  879. /package/dist/src/{register-run-model-context-hook.js → session/register-run-model-context-hook.js} +0 -0
  880. /package/dist/src/{run-model-context.d.ts → session/run-model-context.d.ts} +0 -0
  881. /package/dist/src/{run-model-context.test.d.ts → session/run-model-context.test.d.ts} +0 -0
  882. /package/dist/src/{run-model-context.test.js → session/run-model-context.test.js} +0 -0
  883. /package/dist/src/{session-env-store.d.ts → session/session-env-store.d.ts} +0 -0
  884. /package/dist/src/{session-env-store.test.d.ts → session/session-env-store.test.d.ts} +0 -0
  885. /package/dist/src/{session-env-store.test.js → session/session-env-store.test.js} +0 -0
  886. /package/dist/src/{session-group-prompt.d.ts → session/session-group-prompt.d.ts} +0 -0
  887. /package/dist/src/{session-group-prompt.test.d.ts → session/session-group-prompt.test.d.ts} +0 -0
  888. /package/dist/src/{session-group-prompt.test.js → session/session-group-prompt.test.js} +0 -0
  889. /package/dist/src/{session-im-context.d.ts → session/session-im-context.d.ts} +0 -0
  890. /package/dist/src/{session-model-fallback.d.ts → session/session-model-fallback.d.ts} +0 -0
  891. /package/dist/src/{session-model-fallback.js → session/session-model-fallback.js} +0 -0
  892. /package/dist/src/{active-cron-context-store.d.ts → tools/active-cron-context-store.d.ts} +0 -0
  893. /package/dist/src/{cron-appkey-binding-store.d.ts → tools/cron-appkey-binding-store.d.ts} +0 -0
  894. /package/dist/src/{cron-appkey-binding-store.test.d.ts → tools/cron-appkey-binding-store.test.d.ts} +0 -0
  895. /package/dist/src/{register-exec-env-hook.d.ts → tools/register-exec-env-hook.d.ts} +0 -0
  896. /package/dist/src/{register-exec-env-hook.test.d.ts → tools/register-exec-env-hook.test.d.ts} +0 -0
  897. /package/dist/src/{send-file-tool.test.d.ts → tools/send-file-tool.test.d.ts} +0 -0
  898. /package/dist/src/{send-file-tool.test.js → tools/send-file-tool.test.js} +0 -0
  899. /package/dist/src/{tool-json-result.d.ts → tools/tool-json-result.d.ts} +0 -0
  900. /package/dist/src/{tool-json-result.js → tools/tool-json-result.js} +0 -0
  901. /package/dist/src/{active-round-registry.test.d.ts → turn/active-round-registry.test.d.ts} +0 -0
  902. /package/dist/src/{active-round-registry.test.js → turn/active-round-registry.test.js} +0 -0
  903. /package/dist/src/{interrupt-round.d.ts → turn/interrupt-round.d.ts} +0 -0
  904. /package/dist/src/{interrupt-round.test.d.ts → turn/interrupt-round.test.d.ts} +0 -0
  905. /package/dist/src/{item-event-guard.d.ts → turn/item-event-guard.d.ts} +0 -0
  906. /package/dist/src/{item-event-guard.js → turn/item-event-guard.js} +0 -0
  907. /package/dist/src/{item-event-guard.test.d.ts → turn/item-event-guard.test.d.ts} +0 -0
  908. /package/dist/src/{item-event-guard.test.js → turn/item-event-guard.test.js} +0 -0
  909. /package/dist/src/{run-usage-session.d.ts → turn/run-usage-session.d.ts} +0 -0
  910. /package/dist/src/{run-usage.js → turn/run-usage.js} +0 -0
  911. /package/dist/src/{run-usage.test.d.ts → turn/run-usage.test.d.ts} +0 -0
  912. /package/dist/src/{run-usage.test.js → turn/run-usage.test.js} +0 -0
  913. /package/dist/src/{subagent-monitor.test.d.ts → turn/subagent-monitor.test.d.ts} +0 -0
  914. /package/dist/src/{subagent-monitor.test.js → turn/subagent-monitor.test.js} +0 -0
  915. /package/dist/src/{turn-agent-event-subscription.d.ts → turn/turn-agent-event-subscription.d.ts} +0 -0
  916. /package/dist/src/{turn-agent-event-subscription.test.d.ts → turn/turn-agent-event-subscription.test.d.ts} +0 -0
  917. /package/dist/src/{turn-end-controller.d.ts → turn/turn-end-controller.d.ts} +0 -0
  918. /package/dist/src/{turn-end-controller.test.d.ts → turn/turn-end-controller.test.d.ts} +0 -0
  919. /package/dist/src/{turn-end-controller.test.js → turn/turn-end-controller.test.js} +0 -0
  920. /package/dist/src/{ws-run-event-unmapped.d.ts → turn/ws-run-event-unmapped.d.ts} +0 -0
  921. /package/dist/src/{ws-run-event-unmapped.js → turn/ws-run-event-unmapped.js} +0 -0
  922. /package/dist/src/{ws-run-event-unmapped.test.d.ts → turn/ws-run-event-unmapped.test.d.ts} +0 -0
  923. /package/dist/src/{ws-run-event-unmapped.test.js → turn/ws-run-event-unmapped.test.js} +0 -0
  924. /package/dist/src/{apply-sync-mapping.js → workspace/apply-sync-mapping.js} +0 -0
  925. /package/dist/src/{connection-workspace-event.test.d.ts → workspace/connection-workspace-event.test.d.ts} +0 -0
  926. /package/dist/src/{inbound-file-download.js → workspace/inbound-file-download.js} +0 -0
  927. /package/dist/src/{inbound-media-local.js → workspace/inbound-media-local.js} +0 -0
  928. /package/dist/src/{nas-site.js → workspace/nas-site.js} +0 -0
  929. /package/dist/src/{nas-volumes.test.d.ts → workspace/nas-volumes.test.d.ts} +0 -0
  930. /package/dist/src/{project-path-normalize.d.ts → workspace/project-path-normalize.d.ts} +0 -0
  931. /package/dist/src/{project-path-normalize.js → workspace/project-path-normalize.js} +0 -0
  932. /package/dist/src/{resource-file.js → workspace/resource-file.js} +0 -0
  933. /package/dist/src/{resource-file.test.d.ts → workspace/resource-file.test.d.ts} +0 -0
  934. /package/dist/src/{resource-file.test.js → workspace/resource-file.test.js} +0 -0
  935. /package/dist/src/{sync-mapping-types.js → workspace/sync-mapping-types.js} +0 -0
  936. /package/dist/src/{sync-service-client.js → workspace/sync-service-client.js} +0 -0
  937. /package/dist/src/{workspace-event-protocol.d.ts → workspace/workspace-event-protocol.d.ts} +0 -0
  938. /package/dist/src/{workspace-event-protocol.js → workspace/workspace-event-protocol.js} +0 -0
  939. /package/dist/src/{workspace-event-scheduler.js → workspace/workspace-event-scheduler.js} +0 -0
  940. /package/dist/src/{workspace-event-scheduler.test.d.ts → workspace/workspace-event-scheduler.test.d.ts} +0 -0
  941. /package/dist/src/{workspace-event-scheduler.test.js → workspace/workspace-event-scheduler.test.js} +0 -0
  942. /package/dist/src/{workspace-event.js → workspace/workspace-event.js} +0 -0
  943. /package/dist/src/{workspace-event.test.d.ts → workspace/workspace-event.test.d.ts} +0 -0
  944. /package/dist/src/{workspace-event.test.js → workspace/workspace-event.test.js} +0 -0
@@ -1,997 +0,0 @@
1
- /**
2
- * @ 触发的单轮回复:WebSocket BEGIN、OpenClaw dispatchReplyWithBufferedBlockDispatcher、HTTP deliver、RUN_USAGE、FINISHED。
3
- */
4
- import { isImSingleChat, resolveSendMessageReply } from "./inbound-chat-type.js";
5
- import { buildTerminalSendFn, InboundTerminalController, } from "./inbound-terminal-delivery.js";
6
- import { formatConfirmedUpstreamErrorForIm } from "./user-facing-errors.js";
7
- import { shouldOmitDuplicateFileCaption, shouldSuppressDuplicateTextDeliver, stripMediaDirectiveLines, stripModelUsageFooter, } from "./deliver-text.js";
8
- import { shouldSuppressFallbackNoticeForIm } from "./per-message-fallback-notice.js";
9
- import { resolveThinkingWsDisplayUpdate, THINKING_WS_SUMMARY_HINT, ThinkingWsBuffer, WS_THINKING_DISPLAY_MAX, } from "./thinking-ws-progress.js";
10
- import { resolveItemEventGuard } from "./item-event-guard.js";
11
- import { clearPendingPerMessageModel, setPendingPerMessageModel, splitModelRef, } from "./per-message-model-pending.js";
12
- import { resolveSessionModelFallbackContext } from "./session-model-fallback.js";
13
- import { IM_BLOCK_STREAMING_COALESCE_DEFAULT, isDeliverAssistantItemsEnabled, isDeliverPartialSnapshotEnabled, isDeliverSegmentBufferEnabled, isInboundBlockStreamingEnabled, resolveBlockStreamingReplyOptions, resolveDispatchOpenClawCfg, } from "./channel-config.js";
14
- import { clearAssistantItemSink, setAssistantItemSink } from "./assistant-item-sink.js";
15
- import { flushAssistantItem, resetAssistantItem } from "./assistant-item-delivery.js";
16
- import { sendReplyDeliverBlock, sendTextMessage } from "./send-service.js";
17
- import { isDeliverPayloadSendable, snapshotSupersedesBufferText, TurnDeliverBuffer } from "./turn-deliver-buffer.js";
18
- import { buildRunUsageFromSessionEntry, hasReportableUsage, toImStreamRunUsageData } from "./run-usage.js";
19
- import { readSessionUsageFields } from "./run-usage-session.js";
20
- import { finalizeRoundMonitoring } from "./subagent-monitor.js";
21
- import { registerCorePlanSnapshotClient } from "./plan-core-snapshot.js";
22
- import { setSessionImContext } from "./session-im-context.js";
23
- import { completeActiveRound, registerActiveRound, roundExists, } from "./active-round-registry.js";
24
- import { turnEnsureRound, turnForget, turnIsEligible, turnIsSawSubagent, turnOnDispatchReturned, } from "./turn-end-controller.js";
25
- import { noteWrappedRunId } from "./turn-agent-event-subscription.js";
26
- import { resolveNasVolumeDispatchConfig } from "./nas-volumes.js";
27
- import { resolveDispatchDriver, dispatchXgImInboundReply } from "./reply-dispatch-driver.js";
28
- /** WS `displayText` 过长封顶(避免网关/客户端溢出) */
29
- const WS_DISPLAY_TEXT_MAX = 200;
30
- /** 子任务轮次等整轮结束(等父会话非 yield 终态 / 静默兜底)的最长等待时间;超时强制收尾,避免悬挂。 */
31
- const TURN_END_WAIT_MAX_MS = 30 * 60_000;
32
- /** 进度 `summary` 封顶(与网关约定一致) */
33
- const WS_PROGRESS_SUMMARY_MAX = 200;
34
- /** 流式正文预览(onPartialReply 快照)经 WS 展示的封顶长度 */
35
- const WS_REPLY_PREVIEW_MAX = 2000;
36
- /** 流式正文预览 WS 推送最小间隔(节流,避免 ~13 次/秒刷屏) */
37
- const WS_REPLY_PREVIEW_MIN_INTERVAL_MS = 500;
38
- /** 流式正文预览的 WS summary 标记(客户端据此更新同一输出位;定稿 HTTP 后清草稿) */
39
- const WS_REPLY_PREVIEW_SUMMARY = "reply_preview";
40
- function clipWsDisplayText(text, max = WS_DISPLAY_TEXT_MAX) {
41
- const t = text.trim();
42
- if (!t)
43
- return "";
44
- if (t.length <= max)
45
- return t;
46
- return `${t.slice(0, Math.max(0, max - 1))}…`;
47
- }
48
- function clipWsProgressSummary(text, max = WS_PROGRESS_SUMMARY_MAX) {
49
- const t = text.trim().replace(/\r\n/g, "\n").replace(/\n+/g, " ");
50
- if (!t)
51
- return "";
52
- if (t.length <= max)
53
- return t;
54
- return `${t.slice(0, Math.max(0, max - 1))}…`;
55
- }
56
- /** 流式 BEGIN → dispatch → 可选 RUN_USAGE → 必发 FINISHED;首包超时仅日志(不对 IM 发超时话术) */
57
- export async function dispatchMentionedReply(args) {
58
- const { accountId, rt, cfg, config, log, logPrefix, route, inboundCtx, params, currentIdentity, streamClient, agentWorkspaceDir, nasVolumes, modelOverride, thinkingLevelOverride, autoRouteMeta, inboundTrigger, isStopControl = false, driver: explicitDriver, inboundRecord } = args;
59
- const terminal = new InboundTerminalController({
60
- messageId: params.msgId,
61
- groupId: params.groupId,
62
- sessionKey: route.sessionKey,
63
- trigger: inboundTrigger ?? "user",
64
- log,
65
- logPrefix,
66
- });
67
- const replyMetaForSend = resolveSendMessageReply(params);
68
- const terminalSend = buildTerminalSendFn({
69
- isSingleChat: isImSingleChat(params),
70
- replyMeta: replyMetaForSend,
71
- sendText: async (text, reply) => {
72
- await sendTextMessage(config, currentIdentity.token, params.groupId, text, reply ? [reply.targetUserId] : [], log, undefined, reply);
73
- },
74
- });
75
- log.info(`${logPrefix} [dispatch] Dispatching to OpenClaw AI, sessionKey=${route.sessionKey}`);
76
- if (modelOverride) {
77
- log.info(`${logPrefix} [model] per-message override requested: ${modelOverride}`);
78
- }
79
- if (autoRouteMeta) {
80
- log.info(`${logPrefix} [route] dispatch version=${autoRouteMeta.version} tier=${autoRouteMeta.tier} ` +
81
- `reason=${autoRouteMeta.reason} requestedModel=${modelOverride ?? "(none)"} ` +
82
- `requestedThinking=${thinkingLevelOverride ?? "(default)"}`);
83
- }
84
- let isFirstReply = true;
85
- let subagentNotificationSent = false;
86
- const dispatchStart = Date.now();
87
- const replyAnchorId = params.msgId.trim();
88
- const progressGroupId = params.groupId;
89
- const toolNameStack = [];
90
- const notifyStreamProgress = async (event, displayText, summary, displayMax = WS_DISPLAY_TEXT_MAX) => {
91
- if (isStopControl)
92
- return;
93
- const msg = clipWsDisplayText(displayText, displayMax);
94
- const sum = summary?.trim() ? clipWsProgressSummary(summary) : undefined;
95
- if (!progressGroupId.trim() || !replyAnchorId || !msg)
96
- return;
97
- try {
98
- await streamClient.streamProgress({
99
- groupId: progressGroupId,
100
- replyToMsgId: replyAnchorId,
101
- event,
102
- displayText: msg,
103
- ...(sum ? { summary: sum } : {}),
104
- });
105
- }
106
- catch (e) {
107
- log.warn(`${logPrefix} [stream] ${event} notify failed: ${String(e)}`);
108
- }
109
- };
110
- const thinkingWsBuffer = new ThinkingWsBuffer();
111
- let lastThinkingWsDisplay = "";
112
- const flushThinkingWsOnce = async (reason) => {
113
- const text = thinkingWsBuffer.take();
114
- if (!text)
115
- return;
116
- const { displayText, changed } = resolveThinkingWsDisplayUpdate(lastThinkingWsDisplay, text);
117
- if (!changed)
118
- return;
119
- lastThinkingWsDisplay = displayText;
120
- await notifyStreamProgress("RUN_EVENT", displayText, THINKING_WS_SUMMARY_HINT, WS_THINKING_DISPLAY_MAX);
121
- log.info(`${logPrefix} [stream] Thinking WS once (${reason}) len=${displayText.length}`);
122
- };
123
- let hasFirstReply = false;
124
- let agentRunStarted = false;
125
- let dispatchInFlight = false;
126
- const firstReplyTimeoutMs = config.firstReplyTimeoutMs ?? 30 * 60_000;
127
- const resolveFirstReplyTimeoutCause = () => {
128
- if (!agentRunStarted)
129
- return "never_started";
130
- if (dispatchInFlight)
131
- return "in_progress";
132
- return "ended_without_http_reply";
133
- };
134
- const timeoutLabel = `${logPrefix} [stream] First reply timeout after ${firstReplyTimeoutMs}ms`;
135
- const firstReplyTimeout = setTimeout(() => {
136
- if (hasFirstReply)
137
- return;
138
- const timeoutCause = resolveFirstReplyTimeoutCause();
139
- terminal.markTimeoutFired();
140
- log.warn(`${timeoutLabel} cause=${timeoutCause} agentRunStarted=${agentRunStarted} ` +
141
- `dispatchInFlight=${dispatchInFlight} (no IM timeout notice; channel timer ≠ OpenClaw terminal)`);
142
- }, firstReplyTimeoutMs);
143
- let deliverInvokeCount = 0;
144
- let deliverCallCount = 0;
145
- let deliverSkippedCount = 0;
146
- let compactionNoticeDelivered = 0;
147
- let lastDeliveredText = "";
148
- let lastDeliveredHadMedia = false;
149
- let agentRunId;
150
- let dispatchError = undefined;
151
- let lastDeliverError = undefined;
152
- let dispatchResult;
153
- let assistantItemSink;
154
- // assistant-item 模式下的兜底:核心命令(如 /status)不跑 agent、无 assistant 流,
155
- // assistant-item 订阅不会触发。这里记录被跳过的正文,收尾若确认本轮无任何投递则补发。
156
- let assistantItemDelivered = false;
157
- let assistantItemFallback;
158
- const blockStreamingEnabled = isInboundBlockStreamingEnabled(config);
159
- // assistant item 投递:订阅 assistant 流按每条 assistant 消息逐条发;开启时 block reply 正文不再发。
160
- const assistantItemDeliveryEnabled = isDeliverAssistantItemsEnabled(config);
161
- const segmentBufferEnabled = blockStreamingEnabled && isDeliverSegmentBufferEnabled(config) && !assistantItemDeliveryEnabled;
162
- const segmentBuffer = segmentBufferEnabled ? new TurnDeliverBuffer() : undefined;
163
- let hasBufferedSendable = false;
164
- let flushSegmentBuffer = async () => { };
165
- // —— onPartialReply 全量快照:当前 tool 区间内正文的权威来源 ——
166
- // text 是「当前 assistant 消息」的完整快照(非增量);tool 边界 / 轮末 flush 时用它覆盖
167
- // deliver 拼接文本,消除段缓冲对「覆盖 vs 追加」的启发式猜测(CO2)。
168
- const partialSnapshotEnabled = segmentBufferEnabled && isDeliverPartialSnapshotEnabled(config);
169
- let segmentSnapshotText = "";
170
- let segmentSnapshotHadPartial = false;
171
- // WS 正文预览节流状态
172
- let lastReplyPreviewAt = 0;
173
- let lastReplyPreviewText = "";
174
- // 观测统计(保留少量,便于线上核对)
175
- let partialReplyCount = 0;
176
- let partialReplyMaxTextLen = 0;
177
- let partialReplyFirstAt = 0;
178
- const resetSegmentSnapshot = () => {
179
- segmentSnapshotText = "";
180
- segmentSnapshotHadPartial = false;
181
- lastReplyPreviewText = "";
182
- };
183
- const emitReplyPreviewWs = async (snapshot, force) => {
184
- const text = snapshot.trim();
185
- if (!text)
186
- return;
187
- const now = Date.now();
188
- if (!force && now - lastReplyPreviewAt < WS_REPLY_PREVIEW_MIN_INTERVAL_MS)
189
- return;
190
- const clipped = clipWsDisplayText(text, WS_REPLY_PREVIEW_MAX);
191
- if (clipped === lastReplyPreviewText)
192
- return;
193
- lastReplyPreviewAt = now;
194
- lastReplyPreviewText = clipped;
195
- await notifyStreamProgress("RUN_EVENT", clipped, WS_REPLY_PREVIEW_SUMMARY, WS_REPLY_PREVIEW_MAX);
196
- };
197
- const postHttpDeliver = async (args) => {
198
- const { payloadForSend, textPart, sendLabel, invokeNum, hasMedia, omitDuplicateFileCaption } = args;
199
- deliverCallCount++;
200
- if (isFirstReply) {
201
- const ttfr = Date.now() - dispatchStart;
202
- log.info(`${logPrefix} [deliver] First response block received from AI (TTFB: ${ttfr}ms)`);
203
- isFirstReply = false;
204
- }
205
- const reply = resolveSendMessageReply(params);
206
- const atIds = reply ? [reply.targetUserId] : [];
207
- if (!hasFirstReply) {
208
- clearTimeout(firstReplyTimeout);
209
- }
210
- await sendReplyDeliverBlock(config, currentIdentity.token, params.groupId, payloadForSend, atIds, log, undefined, reply, agentWorkspaceDir);
211
- if (!hasFirstReply) {
212
- hasFirstReply = true;
213
- }
214
- terminal.markBusinessReplySent();
215
- if (hasMedia) {
216
- lastDeliveredHadMedia = true;
217
- if (!omitDuplicateFileCaption) {
218
- lastDeliveredText = textPart || "[media]";
219
- }
220
- }
221
- else {
222
- lastDeliveredText = textPart;
223
- lastDeliveredHadMedia = false;
224
- }
225
- const preview = textPart.length > 80 ? `${textPart.slice(0, 80)}...` : textPart || "[media]";
226
- log.info(`${logPrefix} [send] ${sendLabel} sent via HTTP: groupId=${params.groupId} ` +
227
- `invoke=#${invokeNum} preview="${preview}"`);
228
- };
229
- let activeRound;
230
- try {
231
- if (!isStopControl) {
232
- setSessionImContext(route.sessionKey, {
233
- groupId: params.groupId,
234
- replyToMsgId: params.msgId,
235
- agentId: config.agentId || "main",
236
- });
237
- if (assistantItemDeliveryEnabled) {
238
- // assistant 流订阅按 item 逐条把完整正文交到这里;复用本 dispatch 的发送链路
239
- // (config/token/reply/终态/去重),因此 block reply 正文不再重复发送。
240
- assistantItemSink = (itemId, text) => {
241
- const label = deliverCallCount === 0 ? "First reply (assistant item)" : "Assistant item";
242
- return postHttpDeliver({
243
- payloadForSend: { text },
244
- textPart: text,
245
- sendLabel: label,
246
- invokeNum: deliverInvokeCount,
247
- hasMedia: false,
248
- omitDuplicateFileCaption: false,
249
- }).then(() => {
250
- assistantItemDelivered = true;
251
- }).catch((err) => {
252
- lastDeliverError = err;
253
- log.error(`${logPrefix} [assistant-item] send failed itemId=${itemId}: ${String(err)}`);
254
- });
255
- };
256
- setAssistantItemSink(route.sessionKey, assistantItemSink);
257
- }
258
- await streamClient.start({
259
- groupId: params.groupId,
260
- replyToMsgId: params.msgId,
261
- });
262
- activeRound = registerActiveRound({
263
- accountId,
264
- groupId: params.groupId,
265
- agentId: config.agentId || "main",
266
- sessionKey: route.sessionKey,
267
- replyToMsgId: params.msgId,
268
- streamClient,
269
- });
270
- turnEnsureRound(activeRound.roundKey, activeRound.generation);
271
- registerCorePlanSnapshotClient({
272
- groupId: params.groupId,
273
- client: streamClient,
274
- replyToMsgId: params.msgId,
275
- agentId: config.agentId || "main",
276
- sessionKey: route.sessionKey,
277
- });
278
- }
279
- if (modelOverride) {
280
- const parsed = splitModelRef(modelOverride);
281
- if (parsed) {
282
- const fallbackContext = resolveSessionModelFallbackContext({
283
- storePath: inboundRecord?.storePath?.trim() ||
284
- rt.channel.session.resolveStorePath(cfg.session?.store, {
285
- agentId: route.agentId,
286
- }),
287
- sessionKey: route.sessionKey,
288
- });
289
- if (fallbackContext.sessionInAutoFallback) {
290
- log.info(`${logPrefix} [model] session in auto-fallback ` +
291
- `origin=${fallbackContext.fallbackOrigin?.provider ?? ""}/` +
292
- `${fallbackContext.fallbackOrigin?.model ?? ""}`);
293
- }
294
- setPendingPerMessageModel(route.sessionKey, modelOverride, fallbackContext);
295
- }
296
- else {
297
- log.warn(`${logPrefix} [model] invalid per-message model ref, ignoring: ${modelOverride}`);
298
- }
299
- }
300
- const baseDispatchCfg = resolveDispatchOpenClawCfg(cfg, config);
301
- let nasDispatch;
302
- try {
303
- nasDispatch = resolveNasVolumeDispatchConfig({
304
- cfg: baseDispatchCfg,
305
- config,
306
- agentId: route.agentId,
307
- sessionKey: route.sessionKey,
308
- volumes: nasVolumes,
309
- });
310
- }
311
- catch (error) {
312
- // NAS 是可选增强信息。任何非法声明或运行时挂载校验失败都不得阻断原消息。
313
- log.warn(`${logPrefix} [nas-volumes] invalid mount ignored: ${String(error)}`);
314
- try {
315
- // 若本会话此前已有有效声明,继续复用它;否则完全退回原 dispatch 配置。
316
- nasDispatch = resolveNasVolumeDispatchConfig({
317
- cfg: baseDispatchCfg,
318
- config,
319
- agentId: route.agentId,
320
- sessionKey: route.sessionKey,
321
- });
322
- }
323
- catch (cachedError) {
324
- log.warn(`${logPrefix} [nas-volumes] cached mount unavailable, continuing without NAS: ${String(cachedError)}`);
325
- nasDispatch = { cfg: baseDispatchCfg, reused: false };
326
- }
327
- }
328
- const dispatchCfg = nasDispatch.cfg;
329
- const nasConfigOverride = nasDispatch.configOverride;
330
- if (nasDispatch.specHash) {
331
- log.info(`${logPrefix} [nas-volumes] session=${route.sessionKey} volumes=${nasVolumes?.length ?? "cached"} ` +
332
- `spec=${nasDispatch.specHash.slice(0, 12)} reused=${nasDispatch.reused}` +
333
- ` configOverride=${Boolean(nasConfigOverride)}`);
334
- }
335
- if (blockStreamingEnabled && baseDispatchCfg !== cfg) {
336
- log.info(`${logPrefix} [dispatch] IM blockStreamingCoalesce override ` +
337
- `(minChars=${IM_BLOCK_STREAMING_COALESCE_DEFAULT.minChars} idleMs=${IM_BLOCK_STREAMING_COALESCE_DEFAULT.idleMs}) ` +
338
- `— agents.defaults coalesce will not delay tool-before HTTP`);
339
- }
340
- if (blockStreamingEnabled) {
341
- log.info(`${logPrefix} [dispatch] blockStreaming=on (assistant text before tools → HTTP; tool progress → WS)`);
342
- }
343
- if (segmentBufferEnabled) {
344
- log.info(`${logPrefix} [dispatch] deliverSegmentBuffer=on (segment buffer → flush on tool start / dispatch end)`);
345
- }
346
- flushSegmentBuffer = async (kind) => {
347
- if (!segmentBuffer)
348
- return;
349
- const result = segmentBuffer.takeForFlush(kind);
350
- // 本段快照(onPartialReply 全量);仅在启用且确有回调时作为正文权威来源。
351
- const snapshot = partialSnapshotEnabled && segmentSnapshotHadPartial ? segmentSnapshotText.trim() : "";
352
- const sendLabel = kind === "interim"
353
- ? "Interim block"
354
- : deliverCallCount === 0
355
- ? "First reply"
356
- : "Final block";
357
- if (result.status === "empty") {
358
- // buffer 无内容但有快照(纯文本、无 deliver 文本块)→ 直接发快照。
359
- if (snapshot) {
360
- if (shouldSuppressDuplicateTextDeliver({
361
- textPart: snapshot,
362
- hasMedia: false,
363
- lastDeliveredText,
364
- lastDeliveredHadMedia,
365
- })) {
366
- log.info(`${logPrefix} [deliver-buffer] flush_${kind} snapshot_only skipped ` +
367
- `(normalized same as last HTTP, len=${snapshot.length})`);
368
- resetSegmentSnapshot();
369
- }
370
- else {
371
- log.info(`${logPrefix} [deliver-buffer] flush_${kind} snapshot_only textLen=${snapshot.length}`);
372
- resetSegmentSnapshot();
373
- await postHttpDeliver({
374
- payloadForSend: { text: snapshot },
375
- textPart: snapshot,
376
- sendLabel,
377
- invokeNum: deliverInvokeCount,
378
- hasMedia: false,
379
- omitDuplicateFileCaption: false,
380
- });
381
- }
382
- }
383
- return;
384
- }
385
- if (result.status === "skipped_duplicate") {
386
- log.info(`${logPrefix} [deliver-buffer] flush_${kind} skipped (same as previous HTTP, comparable match)`);
387
- resetSegmentSnapshot();
388
- return;
389
- }
390
- let { payload: payloadForSend, textPart } = result.entry;
391
- const { hasMedia } = result.entry;
392
- // 快照覆盖正文:仅当快照包含缓冲文本(归一化后为超集)时才覆盖,避免竞态截断;
393
- // 媒体/附件等元数据仍沿用 deliver 的 payload。
394
- if (snapshot && snapshot !== textPart) {
395
- if (snapshotSupersedesBufferText(snapshot, textPart)) {
396
- log.info(`${logPrefix} [deliver-buffer] flush_${kind} snapshot_override ` +
397
- `bufferLen=${textPart.length} → snapshotLen=${snapshot.length}`);
398
- payloadForSend = {
399
- ...payloadForSend,
400
- text: snapshot,
401
- ...(payloadForSend.markdown != null ? { markdown: snapshot } : {}),
402
- };
403
- textPart = snapshot;
404
- }
405
- else {
406
- log.warn(`${logPrefix} [deliver-buffer] flush_${kind} snapshot_skip (not superset; keep buffer) ` +
407
- `bufferLen=${textPart.length} snapshotLen=${snapshot.length}`);
408
- }
409
- }
410
- log.info(`${logPrefix} [deliver-buffer] flush_${kind} textLen=${textPart.length} hasMedia=${hasMedia}`);
411
- resetSegmentSnapshot();
412
- await postHttpDeliver({
413
- payloadForSend,
414
- textPart,
415
- sendLabel,
416
- invokeNum: deliverInvokeCount,
417
- hasMedia,
418
- omitDuplicateFileCaption: false,
419
- });
420
- };
421
- dispatchInFlight = true;
422
- const dispatchRequest = {
423
- ctx: inboundCtx,
424
- cfg: dispatchCfg,
425
- replyOptions: {
426
- ...resolveBlockStreamingReplyOptions(config),
427
- sourceReplyDeliveryMode: "automatic",
428
- suppressDefaultToolProgressMessages: true,
429
- allowProgressCallbacksWhenSourceDeliverySuppressed: true,
430
- // 单轮模型覆盖不走 replyOptions(OpenClaw 不消费 modelOverride 字段),
431
- // 改由 dispatch 前登记的 pending + before_model_resolve hook 生效。
432
- ...(thinkingLevelOverride ? { thinkingLevelOverride } : {}),
433
- onAgentRunStart: (runId) => {
434
- agentRunStarted = true;
435
- agentRunId = runId.trim() || undefined;
436
- terminal.setRunId(runId);
437
- noteWrappedRunId(route.sessionKey, runId.trim());
438
- log.info(`${logPrefix} [dispatch] agent run started runId=${runId}`);
439
- },
440
- onModelSelected: (m) => {
441
- // failover 候选启动时会多次触发;终态模型以 session store 为准(RUN_USAGE)
442
- log.info(`${logPrefix} [model] run candidate provider=${m.provider} model=${m.model}`);
443
- },
444
- onPartialReply: async (payload) => {
445
- if (!partialSnapshotEnabled)
446
- return;
447
- const text = typeof payload.text === "string" ? payload.text : "";
448
- if (!text)
449
- return;
450
- partialReplyCount++;
451
- if (text.length > partialReplyMaxTextLen)
452
- partialReplyMaxTextLen = text.length;
453
- const now = Date.now();
454
- if (partialReplyFirstAt === 0) {
455
- partialReplyFirstAt = now;
456
- log.info(`${logPrefix} [partial] FIRST +${now - dispatchStart}ms textLen=${text.length}`);
457
- }
458
- // text 是当前 assistant 消息的全量快照(非增量):直接作为本段正文权威来源。
459
- segmentSnapshotText = text;
460
- segmentSnapshotHadPartial = true;
461
- // 节流推送 WS 正文预览,供前端尽早覆盖显示同一输出位(HTTP 定稿前)。
462
- await emitReplyPreviewWs(text, false);
463
- },
464
- onReasoningStream: async (payload) => {
465
- const text = typeof payload.text === "string" ? payload.text : "";
466
- if (!text.trim())
467
- return;
468
- thinkingWsBuffer.noteStream(text);
469
- },
470
- onReasoningEnd: async () => {
471
- await flushThinkingWsOnce("reasoning_end");
472
- },
473
- onToolStart: async (p) => {
474
- const name = typeof p.name === "string" && p.name.trim().length > 0 ? p.name.trim() : "tool";
475
- const rawPhase = typeof p.phase === "string" ? p.phase.toLowerCase() : "";
476
- console.log(`[xg_cwork_im] ${logPrefix} [onToolStart] name="${name}" phase="${rawPhase}" argsKeys=${p.args ? Object.keys(p.args).join(",") : "none"}`);
477
- if (rawPhase === "update" || rawPhase === "delta" || rawPhase === "progress") {
478
- return;
479
- }
480
- if (rawPhase === "end" || rawPhase === "fail" || rawPhase === "error") {
481
- return;
482
- }
483
- if (!rawPhase || rawPhase === "start") {
484
- try {
485
- await flushSegmentBuffer("interim");
486
- }
487
- catch (interimErr) {
488
- lastDeliverError = interimErr;
489
- log.error(`${logPrefix} [deliver-buffer] flush_interim failed: ${String(interimErr)}`);
490
- }
491
- await flushThinkingWsOnce("before_tool");
492
- toolNameStack.push(name);
493
- if (name.includes("sessions_spawn") && !subagentNotificationSent) {
494
- subagentNotificationSent = true;
495
- try {
496
- await sendTextMessage(config, currentIdentity.token, params.groupId, "已将任务分配给子助手处理,稍后会把结果发给您。");
497
- console.log(`[xg_cwork_im] ${logPrefix} [subagent] sent notification from onToolStart`);
498
- }
499
- catch (sendErr) {
500
- console.warn(`[xg_cwork_im] ${logPrefix} [subagent] onToolStart send failed: ${String(sendErr)}`);
501
- }
502
- }
503
- }
504
- // WS TOOL_PHASE 已移至全局 before_tool_call hook
505
- },
506
- onToolResult: async (payload) => {
507
- const toolName = toolNameStack.length > 0 ? toolNameStack.pop() : "tool";
508
- // WS TOOL_PHASE 已移至全局 after_tool_call hook
509
- },
510
- onItemEvent: async (p) => {
511
- // 工具生命周期已由 onToolStart/onToolResult 覆盖;Reasoning 已由
512
- // onReasoningStream/onReasoningEnd 覆盖(start/end 各触发一次)。二者
513
- // 均不再进入 RUN_EVENT 兜底,避免内部诊断标识 `unmapped:*` 展示给用户。
514
- const guard = resolveItemEventGuard(p);
515
- if (guard.suppress)
516
- return;
517
- const text = (typeof p.progressText === "string" && p.progressText.trim()) ||
518
- (typeof p.summary === "string" && p.summary.trim()) ||
519
- (typeof p.title === "string" && p.title.trim()) ||
520
- (typeof p.meta === "string" && p.meta.trim()) ||
521
- "";
522
- if (!text)
523
- return;
524
- // 未识别事件只记录日志,不发送给最终用户
525
- log.debug?.(`${logPrefix} [stream] ignored unmapped onItemEvent ` +
526
- `kind=${guard.kind || "unknown"} title=${guard.title || "unknown"}`);
527
- },
528
- onCompactionStart: async () => {
529
- terminal.noteCompactionWsEvent("start");
530
- await notifyStreamProgress("RUN_EVENT", "正在整理上下文…");
531
- },
532
- onCompactionEnd: async () => {
533
- terminal.noteCompactionWsEvent("end");
534
- await notifyStreamProgress("RUN_EVENT", "上下文整理完成");
535
- },
536
- onApprovalEvent: async (p) => {
537
- const raw = typeof p.title === "string" && p.title.trim().length > 0
538
- ? p.title.trim()
539
- : typeof p.message === "string" && p.message.trim().length > 0
540
- ? p.message.trim()
541
- : "审批状态更新";
542
- await notifyStreamProgress("RUN_EVENT", clipWsDisplayText(raw, 160));
543
- },
544
- onCommandOutput: async (p) => {
545
- const ph = typeof p.phase === "string" ? p.phase.toLowerCase() : "";
546
- if (ph === "delta" || ph === "stream" || ph === "progress")
547
- return;
548
- const st = typeof p.status === "string" ? p.status.toLowerCase() : "";
549
- const terminalPhase = ["completed", "complete", "done", "end", "failed", "fail", "error"].includes(ph);
550
- const terminalStatus = ["completed", "failed", "error", "done"].includes(st);
551
- const hasExit = p.exitCode != null;
552
- if (!terminalPhase && !terminalStatus && !hasExit)
553
- return;
554
- const outRaw = typeof p.output === "string" ? p.output.trim() : "";
555
- const outSum = outRaw ? clipWsProgressSummary(outRaw) : undefined;
556
- if (ph === "failed" || ph === "fail" || ph === "error" || st === "failed" || st === "error") {
557
- await notifyStreamProgress("RUN_EVENT", "计划有变,正在调整策略", outSum); //命令执行失败
558
- return;
559
- }
560
- if (hasExit && p.exitCode !== 0) {
561
- await notifyStreamProgress("RUN_EVENT", `命令已结束(退出码 ${p.exitCode})`, outSum);
562
- return;
563
- }
564
- await notifyStreamProgress("RUN_EVENT", "命令已执行完毕", outSum);
565
- },
566
- onPatchSummary: async (_p) => {
567
- await notifyStreamProgress("RUN_EVENT", "已记录文件变更摘要");
568
- },
569
- },
570
- dispatcherOptions: {
571
- responsePrefix: "",
572
- onSkip: (payload, meta) => {
573
- deliverSkippedCount++;
574
- terminal.noteNormalizerSkip(meta.reason);
575
- log.info(`${logPrefix} [deliver] Payload skipped by normalizer kind=${meta.kind} reason=${meta.reason}`);
576
- },
577
- onError: (err, meta) => {
578
- lastDeliverError = err;
579
- log.error(`${logPrefix} [deliver] Dispatcher caught unhandled error kind=${meta.kind}: ${String(err)}`);
580
- },
581
- deliver: async (payload, info) => {
582
- try {
583
- deliverInvokeCount++;
584
- const textPayload = payload.markdown || payload.text || "";
585
- const trimmedForSend = textPayload.trim();
586
- const textPart = stripMediaDirectiveLines(trimmedForSend);
587
- const hasMedia = Boolean(payload.mediaUrl?.trim()) ||
588
- Boolean(payload.mediaUrls?.some((u) => typeof u === "string" && u.trim()));
589
- const textPreview = textPart.length > 160
590
- ? `${textPart.slice(0, 80)}…${textPart.slice(-80)}`
591
- : textPart;
592
- log.info(`${logPrefix} [deliver] invoke #${deliverInvokeCount} isThinking=${payload.isThinking ?? false} ` +
593
- `textLen=${textPart.length} hasMedia=${hasMedia} mediaUrl=${Boolean(payload.mediaUrl?.trim())} ` +
594
- `kind=${info?.kind ?? "none"} ` +
595
- `preview=${JSON.stringify(textPreview || "(empty)")}`);
596
- if (!hasMedia && !stripModelUsageFooter(textPart).trim()) {
597
- deliverSkippedCount++;
598
- log.info(`${logPrefix} [deliver] skip: model usage footer only (rawLen=${trimmedForSend.length})`);
599
- return;
600
- }
601
- if (payload.isError === true) {
602
- const errRaw = textPart || "(empty)";
603
- terminal.noteRuntimeErrorFromPayload(errRaw);
604
- const userText = formatConfirmedUpstreamErrorForIm(errRaw);
605
- if (!userText) {
606
- deliverSkippedCount++;
607
- log.info(`${logPrefix} [deliver] isError payload empty after format; skipped HTTP`);
608
- return;
609
- }
610
- // 上游已 deliver 的错误:HTTP 发出(白名单人话或原文),不再等到终态换插件空话
611
- const errorPayload = {
612
- ...payload,
613
- text: userText,
614
- markdown: userText,
615
- isError: true,
616
- };
617
- log.info(`${logPrefix} [deliver] isError → HTTP (confirmed map or passthrough) ` +
618
- `len=${userText.length}`);
619
- await postHttpDeliver({
620
- payloadForSend: errorPayload,
621
- textPart: userText,
622
- sendLabel: deliverInvokeCount === 1 ? "First reply (error)" : "Error payload",
623
- invokeNum: deliverInvokeCount,
624
- hasMedia: false,
625
- omitDuplicateFileCaption: false,
626
- });
627
- return;
628
- }
629
- if (payload.isCompactionNotice === true) {
630
- terminal.noteCompactionNotice(textPart || "Compacting context...");
631
- if (textPart) {
632
- // 放开 HTTP 屏蔽:compaction notice 不再丢弃,作为群消息真实发出,
633
- // 让用户能看到“会话正在整理/已整理”而不是莫名等待。
634
- // 故意不走 postHttpDeliver:不标记业务回复、不进入 lastDelivered 去重链,
635
- // 避免把“整理上下文”误当首条正式答复而破坏 first-reply 计时与终态兜底判定。
636
- try {
637
- await terminalSend(textPart);
638
- compactionNoticeDelivered += 1;
639
- log.info(`${logPrefix} [deliver] Compaction notice sent via HTTP: ` +
640
- `${JSON.stringify(textPart.slice(0, 80))}`);
641
- }
642
- catch (err) {
643
- log.warn(`${logPrefix} [deliver] Compaction notice HTTP send failed: ${String(err)}`);
644
- }
645
- }
646
- else {
647
- deliverSkippedCount++;
648
- log.info(`${logPrefix} [deliver] Compaction notice empty; skipped`);
649
- }
650
- return;
651
- }
652
- if (payload.isReasoning === true) {
653
- deliverSkippedCount++;
654
- if (textPart)
655
- thinkingWsBuffer.noteStream(textPart);
656
- await flushThinkingWsOnce("deliver_reasoning");
657
- log.info(`${logPrefix} [deliver] Thinking block → single WS RUN_EVENT (len=${textPart.length})`);
658
- return;
659
- }
660
- if (shouldSuppressFallbackNoticeForIm({
661
- isFallbackNotice: payload.isFallbackNotice === true,
662
- deliverModelFallbackNotice: config.deliverModelFallbackNotice,
663
- requestedModelRaw: modelOverride,
664
- noticeText: textPart,
665
- })) {
666
- deliverSkippedCount++;
667
- const reason = config.deliverModelFallbackNotice === true
668
- ? "spurious per-message fallback notice"
669
- : "model fallback notice disabled for IM (deliverModelFallbackNotice)";
670
- log.info(`${logPrefix} [model] Suppressing fallback notice (${reason}): ` +
671
- `${JSON.stringify(textPart.slice(0, 120))}`);
672
- return;
673
- }
674
- if (!segmentBufferEnabled &&
675
- shouldSuppressDuplicateTextDeliver({
676
- textPart,
677
- hasMedia,
678
- lastDeliveredText,
679
- lastDeliveredHadMedia,
680
- })) {
681
- deliverSkippedCount++;
682
- log.info(`${logPrefix} [deliver] Suppressed duplicate text-only deliver ` +
683
- `(normalized same as previous, rawLen=${textPart.length})`);
684
- return;
685
- }
686
- let omitDuplicateFileCaption = false;
687
- if (!segmentBufferEnabled) {
688
- omitDuplicateFileCaption = shouldOmitDuplicateFileCaption({
689
- textPart,
690
- hasMedia,
691
- lastDeliveredText,
692
- lastDeliveredHadMedia,
693
- });
694
- if (omitDuplicateFileCaption) {
695
- log.info(`${logPrefix} [deliver] Omitting duplicate file caption ` +
696
- `(normalized same as previous text, rawLen=${textPart.length})`);
697
- }
698
- }
699
- if (!isDeliverPayloadSendable({
700
- textPart,
701
- hasMedia,
702
- isThinking: payload.isThinking,
703
- })) {
704
- deliverSkippedCount++;
705
- log.info(`${logPrefix} [deliver] Payload has no sendable content, skipping` +
706
- ` (isThinking=${payload.isThinking ?? false} hasMedia=${hasMedia})`);
707
- return;
708
- }
709
- // assistant item 投递开启时:正文由 assistant 流订阅按 item 发送,
710
- // block reply 不再发纯文本;媒体照发但清空 caption,避免正文重复。
711
- if (assistantItemDeliveryEnabled && !hasMedia) {
712
- deliverSkippedCount++;
713
- // 记录兜底正文:核心命令/无 agent run 的轮次不会有 assistant 流,
714
- // assistant-item 订阅不会投递,收尾时用它补发避免用户看不到回复。
715
- assistantItemFallback = {
716
- payloadForSend: { ...payload, text: textPart, markdown: textPart },
717
- textPart,
718
- };
719
- log.info(`${logPrefix} [deliver] assistant-item mode: text handled by assistant subscription; ` +
720
- `skipping deliver text (textLen=${textPart.length})`);
721
- return;
722
- }
723
- let payloadForSend = textPart !== trimmedForSend
724
- ? {
725
- ...payload,
726
- ...(payload.markdown != null
727
- ? { markdown: textPart }
728
- : { text: textPart }),
729
- }
730
- : payload;
731
- if (omitDuplicateFileCaption || (assistantItemDeliveryEnabled && hasMedia)) {
732
- payloadForSend = { ...payloadForSend, text: "", markdown: "" };
733
- }
734
- if (segmentBufferEnabled && segmentBuffer) {
735
- if (info?.kind === "final" && segmentBuffer.hasContent()) {
736
- segmentBuffer.clear();
737
- log.info(`${logPrefix} [deliver] final block replaces buffer (intermediates discarded, textLen=${textPart.length})`);
738
- }
739
- if (shouldSuppressDuplicateTextDeliver({ textPart, hasMedia, lastDeliveredText, lastDeliveredHadMedia })) {
740
- deliverSkippedCount++;
741
- log.info(`${logPrefix} [deliver-buffer] skip: same as last HTTP delivered ` +
742
- `(normalized match, textLen=${textPart.length})`);
743
- return;
744
- }
745
- segmentBuffer.write({ payload: payloadForSend, textPart, rawTextPart: textPayload, hasMedia });
746
- if (!hasBufferedSendable) {
747
- hasBufferedSendable = true;
748
- clearTimeout(firstReplyTimeout);
749
- }
750
- log.info(`${logPrefix} [deliver-buffer] write invoke=#${deliverInvokeCount} ` +
751
- `textLen=${textPart.length} hasMedia=${hasMedia}`);
752
- return;
753
- }
754
- const sendLabel = deliverInvokeCount === 1
755
- ? "First reply"
756
- : blockStreamingEnabled
757
- ? "Interim block"
758
- : "Additional reply";
759
- await postHttpDeliver({
760
- payloadForSend,
761
- textPart,
762
- sendLabel,
763
- invokeNum: deliverInvokeCount,
764
- hasMedia,
765
- omitDuplicateFileCaption,
766
- });
767
- }
768
- catch (err) {
769
- log.error(`${logPrefix} [deliver] Reply deliver failed: ${String(err)}`);
770
- throw err;
771
- }
772
- },
773
- },
774
- };
775
- const effectiveDriver = explicitDriver ?? resolveDispatchDriver(rt, config.dispatchDriver ?? "auto").driver;
776
- log.info(`${logPrefix} [dispatch] driver=${effectiveDriver} recordInCore=${Boolean(inboundRecord)}`);
777
- const storePath = inboundRecord?.storePath?.trim() ||
778
- rt.channel.session.resolveStorePath(cfg.session?.store, {
779
- agentId: config.agentId || "main",
780
- });
781
- dispatchResult = await dispatchXgImInboundReply({
782
- rt,
783
- ctx: dispatchRequest.ctx,
784
- cfg: dispatchRequest.cfg,
785
- channel: "xg_cwork_im",
786
- accountId,
787
- agentId: config.agentId || "main",
788
- routeSessionKey: route.sessionKey,
789
- storePath,
790
- replyOptions: dispatchRequest.replyOptions,
791
- dispatcherOptions: dispatchRequest.dispatcherOptions,
792
- driver: effectiveDriver,
793
- inboundRecord,
794
- logPrefix,
795
- warn: (message) => log.warn(message),
796
- ...(nasConfigOverride ? { configOverride: nasConfigOverride } : {}),
797
- });
798
- dispatchInFlight = false;
799
- const bufStats = segmentBuffer?.getStats();
800
- log.info(`${logPrefix} [dispatch] Dispatch completed for sessionKey=${route.sessionKey}` +
801
- ` (invoke=${deliverInvokeCount} delivered=${deliverCallCount} skipped=${deliverSkippedCount}` +
802
- ` compaction_http=${compactionNoticeDelivered}` +
803
- (bufStats
804
- ? ` buffer_writes=${bufStats.writeCount}` +
805
- ` revision_overwrite=${bufStats.revisionOverwriteCount}` +
806
- ` segment_append=${bufStats.segmentAppendCount}` +
807
- ` flush_interim=${bufStats.flushInterimCount}` +
808
- ` flush_final=${bufStats.flushFinalCount}` +
809
- ` flush_dup_skip=${bufStats.skippedDuplicateFlushCount}`
810
- : "") +
811
- `)`);
812
- if (partialSnapshotEnabled) {
813
- log.info(`${logPrefix} [partial] SUMMARY count=${partialReplyCount} ` +
814
- `maxTextLen=${partialReplyMaxTextLen} ` +
815
- `firstAt=${partialReplyFirstAt ? partialReplyFirstAt - dispatchStart : -1}ms ` +
816
- `(count=0 → 该配置下未回调 partial,flush 回退到 deliver 段缓冲)`);
817
- }
818
- if (deliverInvokeCount === 0) {
819
- log.warn(`${logPrefix} [dispatch] OpenClaw never invoked channel deliver() for this turn — ` +
820
- `this plugin will not POST /im/message/send; IM「收到消息」若存在,多半来自占位/END 或其它通道,而非本插件 HTTP 合并`);
821
- }
822
- else if (deliverCallCount === 0 && compactionNoticeDelivered === 0 && !segmentBuffer?.hasContent()) {
823
- log.warn(`${logPrefix} [dispatch] deliver() invoked ${deliverInvokeCount} time(s) but none had sendable text/media — ` +
824
- `check model output (thinking-only / empty blocks) or OpenClaw normalizer`);
825
- }
826
- }
827
- catch (dispatchErr) {
828
- dispatchError = dispatchErr;
829
- log.error(`${logPrefix} [dispatch] Dispatch failed (invoke=${deliverInvokeCount} delivered=${deliverCallCount} skipped=${deliverSkippedCount}): ${String(dispatchErr)}`);
830
- }
831
- finally {
832
- dispatchInFlight = false;
833
- clearPendingPerMessageModel(route.sessionKey);
834
- if (assistantItemDeliveryEnabled) {
835
- // 收尾前把当前 item 的完整正文交给 sink 发完,再摘除 sink(避免终态判定漏掉最后一条)。
836
- try {
837
- await flushAssistantItem(route.sessionKey);
838
- }
839
- catch (itemErr) {
840
- lastDeliverError = itemErr;
841
- log.error(`${logPrefix} [assistant-item] flush_final failed: ${String(itemErr)}`);
842
- }
843
- clearAssistantItemSink(route.sessionKey, assistantItemSink);
844
- resetAssistantItem(route.sessionKey);
845
- // 兜底:assistant-item 订阅整轮没投出任何东西(核心命令/无 agent run 的轮次,
846
- // 或 assistant 流缺失),但 deliver() 收到了正文——补发一次,避免 no_reply 静默。
847
- if (!assistantItemDelivered && assistantItemFallback && deliverCallCount === 0) {
848
- try {
849
- await postHttpDeliver({
850
- payloadForSend: assistantItemFallback.payloadForSend,
851
- textPart: assistantItemFallback.textPart,
852
- sendLabel: "Fallback reply (assistant item not delivered)",
853
- invokeNum: deliverInvokeCount,
854
- hasMedia: false,
855
- omitDuplicateFileCaption: false,
856
- });
857
- log.info(`${logPrefix} [assistant-item] fallback HTTP send: assistant subscription produced ` +
858
- `no item this turn; sent textLen=${assistantItemFallback.textPart.length}`);
859
- }
860
- catch (fbErr) {
861
- lastDeliverError = fbErr;
862
- log.error(`${logPrefix} [assistant-item] fallback send failed: ${String(fbErr)}`);
863
- }
864
- }
865
- }
866
- try {
867
- await flushSegmentBuffer("final");
868
- }
869
- catch (flushErr) {
870
- lastDeliverError = flushErr;
871
- log.error(`${logPrefix} [deliver-buffer] flush_final failed: ${String(flushErr)}`);
872
- }
873
- clearTimeout(firstReplyTimeout);
874
- const terminalState = await terminal.finalizeAndDeliver({
875
- sendFn: terminalSend,
876
- dispatchThrew: dispatchError !== undefined,
877
- dispatchError,
878
- lastDeliverError,
879
- beforeAgentRunBlocked: dispatchResult?.beforeAgentRunBlocked === true,
880
- deliverInvokeCount,
881
- deliverCallCount,
882
- });
883
- const endReason = terminalState === "success" ||
884
- hasFirstReply ||
885
- terminal.wasTerminalDelivered() ||
886
- terminal.didTimeoutFire() ||
887
- subagentNotificationSent
888
- ? "stop"
889
- : "no_reply";
890
- // `/stop` 仅借用 OpenClaw dispatch 触发 fast-abort;原轮次的 suspended/aborted
891
- // 由 account-connection 在 dispatch 返回后串行收口,控制消息自身不产生 WS 事件。
892
- if (isStopControl)
893
- return;
894
- // 当前业务轮次已被并发 `/stop` 接管时,收口事件由 interrupt-round 负责。
895
- if (activeRound?.interrupted) {
896
- log.info(`${logPrefix} [stream] round interrupted; skip late RUN_USAGE/FINISHED`);
897
- return;
898
- }
899
- // —— 整轮收尾(OpenClaw 7.1+/8.x):子任务流程中 dispatch 返回只是「一段 run 结束」,
900
- // FINISHED/RUN_USAGE 必须等主会话出现非 yield 段终态(或静默兜底)后才发出,
901
- // 否则会在主会话 resume 继续派发更多子任务时提前结束本轮。——
902
- const finishWsRound = async (reason) => {
903
- const roundKey = activeRound?.roundKey;
904
- const generation = activeRound?.generation;
905
- const hasRound = roundKey !== undefined && generation !== undefined;
906
- if (hasRound && !roundExists(roundKey, generation)) {
907
- log.info(`${logPrefix} [stream] round already completed/interrupted; skip late RUN_USAGE/FINISHED`);
908
- turnForget(roundKey, generation);
909
- return;
910
- }
911
- try {
912
- const storePath = rt.channel.session.resolveStorePath(cfg.session?.store, {
913
- agentId: config.agentId || "main",
914
- });
915
- const sessionFields = readSessionUsageFields({
916
- storePath,
917
- sessionKey: route.sessionKey,
918
- });
919
- const usage = buildRunUsageFromSessionEntry(sessionFields, {
920
- runId: agentRunId ?? terminal.getRunId(),
921
- });
922
- if (hasReportableUsage(usage) && usage) {
923
- await streamClient.streamUsage(toImStreamRunUsageData(usage, {
924
- groupId: params.groupId,
925
- replyToMsgId: params.msgId,
926
- }));
927
- }
928
- else {
929
- log.info(`${logPrefix} [stream] RUN_USAGE skipped (session store has no model/token; ` +
930
- `sessionKey=${route.sessionKey} deliver_call=${deliverCallCount})`);
931
- }
932
- }
933
- catch (usageErr) {
934
- log.warn(`${logPrefix} [stream] RUN_USAGE failed: ${String(usageErr)}`);
935
- }
936
- try {
937
- await streamClient.end(reason, {
938
- groupId: params.groupId,
939
- replyToMsgId: params.msgId,
940
- });
941
- log.info(`${logPrefix} [stream] FINISHED sent: reason=${reason} terminal_state=${terminalState} ` +
942
- `has_first_reply=${hasFirstReply} deliver_invoke=${deliverInvokeCount} ` +
943
- `deliver_call=${deliverCallCount} skipped=${deliverSkippedCount}`);
944
- }
945
- catch (endErr) {
946
- log.error(`${logPrefix} [stream] FINISHED failed: ${String(endErr)}`);
947
- }
948
- finally {
949
- if (hasRound) {
950
- finalizeRoundMonitoring(roundKey, generation);
951
- completeActiveRound(roundKey, generation);
952
- turnForget(roundKey, generation);
953
- }
954
- }
955
- };
956
- const roundKey = activeRound?.roundKey;
957
- const generation = activeRound?.generation;
958
- const sawSubagent = subagentNotificationSent ||
959
- (roundKey !== undefined && generation !== undefined &&
960
- turnIsSawSubagent(roundKey, generation));
961
- if (sawSubagent) {
962
- turnEnsureRound(roundKey, generation);
963
- turnOnDispatchReturned(roundKey, generation);
964
- const deadline = Date.now() + TURN_END_WAIT_MAX_MS;
965
- log.info(`${logPrefix} [stream] FINISHED deferred: subagent turn, waiting for lifecycle ` +
966
- `final segment (no premature finish on resume). reason=${endReason} ` +
967
- `terminal_state=${terminalState} deliver_invoke=${deliverInvokeCount}`);
968
- const waitStartedAt = Date.now();
969
- // 等待整轮结束信号(lifecycle 非 yield 终态 / 子任务完成后的静默兜底);/
970
- // 若轮次被 `/stop` 或其它收口移除,则由该路径发送过 aborted,这里直接退出。
971
- while (!turnIsEligible(roundKey, generation)) {
972
- if (!roundExists(roundKey, generation) || activeRound?.interrupted) {
973
- log.info(`${logPrefix} [stream] round interrupted while waiting; skip late RUN_USAGE/FINISHED`);
974
- turnForget(roundKey, generation);
975
- return;
976
- }
977
- if (Date.now() > deadline) {
978
- log.warn(`${logPrefix} [stream] turn-end wait exceeded ${TURN_END_WAIT_MAX_MS}ms; force finishing`);
979
- break;
980
- }
981
- await new Promise((resolve) => setTimeout(resolve, 250));
982
- }
983
- log.info(`${logPrefix} [stream] turn-end released round=${roundKey}#${generation} ` +
984
- `eligible=${turnIsEligible(roundKey, generation)} waitMs=${Date.now() - waitStartedAt}`);
985
- await finishWsRound(endReason);
986
- }
987
- else {
988
- // 无子任务的普通轮次:dispatch 返回即整轮结束,立即收尾(保持既有行为)。
989
- if (roundKey !== undefined && generation !== undefined) {
990
- turnEnsureRound(roundKey, generation);
991
- turnOnDispatchReturned(roundKey, generation);
992
- }
993
- await finishWsRound(endReason);
994
- }
995
- }
996
- }
997
- //# sourceMappingURL=dispatch-mentioned-reply.js.map