agent-world 0.13.0 → 0.15.0

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 (263) hide show
  1. package/README.md +90 -17
  2. package/dist/cli/commands.d.ts +7 -1
  3. package/dist/cli/commands.js +27 -10
  4. package/dist/cli/hitl.d.ts +4 -1
  5. package/dist/cli/hitl.js +55 -20
  6. package/dist/cli/index.js +249 -97
  7. package/dist/cli/system-events.d.ts +27 -0
  8. package/dist/cli/system-events.js +63 -0
  9. package/dist/core/activity-tracker.d.ts +26 -0
  10. package/dist/core/activity-tracker.d.ts.map +1 -1
  11. package/dist/core/activity-tracker.js +21 -4
  12. package/dist/core/activity-tracker.js.map +1 -1
  13. package/dist/core/anthropic-direct.d.ts +2 -0
  14. package/dist/core/anthropic-direct.d.ts.map +1 -1
  15. package/dist/core/anthropic-direct.js +43 -1
  16. package/dist/core/anthropic-direct.js.map +1 -1
  17. package/dist/core/chat-constants.d.ts +12 -0
  18. package/dist/core/chat-constants.d.ts.map +1 -1
  19. package/dist/core/chat-constants.js +5 -0
  20. package/dist/core/chat-constants.js.map +1 -1
  21. package/dist/core/create-agent-tool.d.ts +5 -0
  22. package/dist/core/create-agent-tool.d.ts.map +1 -1
  23. package/dist/core/create-agent-tool.js +57 -34
  24. package/dist/core/create-agent-tool.js.map +1 -1
  25. package/dist/core/events/index.d.ts +5 -2
  26. package/dist/core/events/index.d.ts.map +1 -1
  27. package/dist/core/events/index.js +5 -2
  28. package/dist/core/events/index.js.map +1 -1
  29. package/dist/core/events/memory-manager.d.ts +26 -1
  30. package/dist/core/events/memory-manager.d.ts.map +1 -1
  31. package/dist/core/events/memory-manager.js +877 -72
  32. package/dist/core/events/memory-manager.js.map +1 -1
  33. package/dist/core/events/orchestrator.d.ts +8 -0
  34. package/dist/core/events/orchestrator.d.ts.map +1 -1
  35. package/dist/core/events/orchestrator.js +203 -36
  36. package/dist/core/events/orchestrator.js.map +1 -1
  37. package/dist/core/events/persistence.d.ts +21 -14
  38. package/dist/core/events/persistence.d.ts.map +1 -1
  39. package/dist/core/events/persistence.js +100 -35
  40. package/dist/core/events/persistence.js.map +1 -1
  41. package/dist/core/events/publishers.d.ts +13 -7
  42. package/dist/core/events/publishers.d.ts.map +1 -1
  43. package/dist/core/events/publishers.js +53 -37
  44. package/dist/core/events/publishers.js.map +1 -1
  45. package/dist/core/events/subscribers.d.ts +17 -14
  46. package/dist/core/events/subscribers.d.ts.map +1 -1
  47. package/dist/core/events/subscribers.js +61 -148
  48. package/dist/core/events/subscribers.js.map +1 -1
  49. package/dist/core/events/title-scheduler.d.ts +27 -0
  50. package/dist/core/events/title-scheduler.d.ts.map +1 -0
  51. package/dist/core/events/title-scheduler.js +135 -0
  52. package/dist/core/events/title-scheduler.js.map +1 -0
  53. package/dist/core/events/tool-bridge-logging.d.ts +4 -1
  54. package/dist/core/events/tool-bridge-logging.d.ts.map +1 -1
  55. package/dist/core/events/tool-bridge-logging.js +112 -13
  56. package/dist/core/events/tool-bridge-logging.js.map +1 -1
  57. package/dist/core/events-metadata.d.ts.map +1 -1
  58. package/dist/core/events-metadata.js +8 -4
  59. package/dist/core/events-metadata.js.map +1 -1
  60. package/dist/core/export.d.ts +1 -1
  61. package/dist/core/export.d.ts.map +1 -1
  62. package/dist/core/export.js +2 -15
  63. package/dist/core/export.js.map +1 -1
  64. package/dist/core/feature-path-logging.d.ts +50 -0
  65. package/dist/core/feature-path-logging.d.ts.map +1 -0
  66. package/dist/core/feature-path-logging.js +130 -0
  67. package/dist/core/feature-path-logging.js.map +1 -0
  68. package/dist/core/file-tools.d.ts +57 -1
  69. package/dist/core/file-tools.d.ts.map +1 -1
  70. package/dist/core/file-tools.js +329 -29
  71. package/dist/core/file-tools.js.map +1 -1
  72. package/dist/core/google-direct.d.ts +6 -1
  73. package/dist/core/google-direct.d.ts.map +1 -1
  74. package/dist/core/google-direct.js +76 -7
  75. package/dist/core/google-direct.js.map +1 -1
  76. package/dist/core/heartbeat.d.ts +34 -0
  77. package/dist/core/heartbeat.d.ts.map +1 -0
  78. package/dist/core/heartbeat.js +153 -0
  79. package/dist/core/heartbeat.js.map +1 -0
  80. package/dist/core/hitl-tool.d.ts +6 -12
  81. package/dist/core/hitl-tool.d.ts.map +1 -1
  82. package/dist/core/hitl-tool.js +66 -88
  83. package/dist/core/hitl-tool.js.map +1 -1
  84. package/dist/core/hitl.d.ts +61 -4
  85. package/dist/core/hitl.d.ts.map +1 -1
  86. package/dist/core/hitl.js +324 -60
  87. package/dist/core/hitl.js.map +1 -1
  88. package/dist/core/index.d.ts +11 -7
  89. package/dist/core/index.d.ts.map +1 -1
  90. package/dist/core/index.js +10 -6
  91. package/dist/core/index.js.map +1 -1
  92. package/dist/core/llm-manager.d.ts +15 -0
  93. package/dist/core/llm-manager.d.ts.map +1 -1
  94. package/dist/core/llm-manager.js +325 -40
  95. package/dist/core/llm-manager.js.map +1 -1
  96. package/dist/core/load-skill-tool.d.ts +36 -3
  97. package/dist/core/load-skill-tool.d.ts.map +1 -1
  98. package/dist/core/load-skill-tool.js +807 -93
  99. package/dist/core/load-skill-tool.js.map +1 -1
  100. package/dist/core/logger.d.ts +14 -0
  101. package/dist/core/logger.d.ts.map +1 -1
  102. package/dist/core/logger.js +15 -0
  103. package/dist/core/logger.js.map +1 -1
  104. package/dist/core/managers.d.ts +18 -50
  105. package/dist/core/managers.d.ts.map +1 -1
  106. package/dist/core/managers.js +340 -502
  107. package/dist/core/managers.js.map +1 -1
  108. package/dist/core/mcp-server-registry.d.ts +16 -1
  109. package/dist/core/mcp-server-registry.d.ts.map +1 -1
  110. package/dist/core/mcp-server-registry.js +162 -12
  111. package/dist/core/mcp-server-registry.js.map +1 -1
  112. package/dist/core/message-cutoff.d.ts +29 -0
  113. package/dist/core/message-cutoff.d.ts.map +1 -0
  114. package/dist/core/message-cutoff.js +63 -0
  115. package/dist/core/message-cutoff.js.map +1 -0
  116. package/dist/core/message-edit-manager.d.ts +54 -0
  117. package/dist/core/message-edit-manager.d.ts.map +1 -0
  118. package/dist/core/message-edit-manager.js +602 -0
  119. package/dist/core/message-edit-manager.js.map +1 -0
  120. package/dist/core/message-prep.d.ts +2 -0
  121. package/dist/core/message-prep.d.ts.map +1 -1
  122. package/dist/core/message-prep.js +39 -12
  123. package/dist/core/message-prep.js.map +1 -1
  124. package/dist/core/message-processing-control.d.ts +1 -0
  125. package/dist/core/message-processing-control.d.ts.map +1 -1
  126. package/dist/core/message-processing-control.js +23 -6
  127. package/dist/core/message-processing-control.js.map +1 -1
  128. package/dist/core/openai-direct.d.ts +9 -3
  129. package/dist/core/openai-direct.d.ts.map +1 -1
  130. package/dist/core/openai-direct.js +267 -33
  131. package/dist/core/openai-direct.js.map +1 -1
  132. package/dist/core/optional-tracers/opik-runtime.d.ts +32 -0
  133. package/dist/core/optional-tracers/opik-runtime.d.ts.map +1 -0
  134. package/dist/core/optional-tracers/opik-runtime.js +141 -0
  135. package/dist/core/optional-tracers/opik-runtime.js.map +1 -0
  136. package/dist/core/queue-manager.d.ts +84 -0
  137. package/dist/core/queue-manager.d.ts.map +1 -0
  138. package/dist/core/queue-manager.js +814 -0
  139. package/dist/core/queue-manager.js.map +1 -0
  140. package/dist/core/reasoning-controls.d.ts +30 -0
  141. package/dist/core/reasoning-controls.d.ts.map +1 -0
  142. package/dist/core/reasoning-controls.js +118 -0
  143. package/dist/core/reasoning-controls.js.map +1 -0
  144. package/dist/core/reliability-config.d.ts +82 -0
  145. package/dist/core/reliability-config.d.ts.map +1 -0
  146. package/dist/core/reliability-config.js +106 -0
  147. package/dist/core/reliability-config.js.map +1 -0
  148. package/dist/core/reliability-runtime.d.ts +53 -0
  149. package/dist/core/reliability-runtime.d.ts.map +1 -0
  150. package/dist/core/reliability-runtime.js +92 -0
  151. package/dist/core/reliability-runtime.js.map +1 -0
  152. package/dist/core/security/guardrails.d.ts +21 -0
  153. package/dist/core/security/guardrails.d.ts.map +1 -0
  154. package/dist/core/security/guardrails.js +111 -0
  155. package/dist/core/security/guardrails.js.map +1 -0
  156. package/dist/core/send-message-tool.d.ts +79 -0
  157. package/dist/core/send-message-tool.d.ts.map +1 -0
  158. package/dist/core/send-message-tool.js +222 -0
  159. package/dist/core/send-message-tool.js.map +1 -0
  160. package/dist/core/shell-cmd-tool.d.ts +82 -1
  161. package/dist/core/shell-cmd-tool.d.ts.map +1 -1
  162. package/dist/core/shell-cmd-tool.js +854 -42
  163. package/dist/core/shell-cmd-tool.js.map +1 -1
  164. package/dist/core/skill-registry.d.ts +2 -0
  165. package/dist/core/skill-registry.d.ts.map +1 -1
  166. package/dist/core/skill-registry.js +52 -2
  167. package/dist/core/skill-registry.js.map +1 -1
  168. package/dist/core/storage/eventStorage/fileEventStorage.d.ts +5 -0
  169. package/dist/core/storage/eventStorage/fileEventStorage.d.ts.map +1 -1
  170. package/dist/core/storage/eventStorage/fileEventStorage.js +61 -0
  171. package/dist/core/storage/eventStorage/fileEventStorage.js.map +1 -1
  172. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts +5 -0
  173. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts.map +1 -1
  174. package/dist/core/storage/eventStorage/memoryEventStorage.js +34 -0
  175. package/dist/core/storage/eventStorage/memoryEventStorage.js.map +1 -1
  176. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts +1 -0
  177. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts.map +1 -1
  178. package/dist/core/storage/eventStorage/sqliteEventStorage.js +19 -2
  179. package/dist/core/storage/eventStorage/sqliteEventStorage.js.map +1 -1
  180. package/dist/core/storage/eventStorage/types.d.ts +6 -0
  181. package/dist/core/storage/eventStorage/types.d.ts.map +1 -1
  182. package/dist/core/storage/eventStorage/types.js +1 -0
  183. package/dist/core/storage/eventStorage/types.js.map +1 -1
  184. package/dist/core/storage/eventStorage/validation.d.ts.map +1 -1
  185. package/dist/core/storage/eventStorage/validation.js +2 -1
  186. package/dist/core/storage/eventStorage/validation.js.map +1 -1
  187. package/dist/core/storage/github-world-import.d.ts +84 -0
  188. package/dist/core/storage/github-world-import.d.ts.map +1 -0
  189. package/dist/core/storage/github-world-import.js +365 -0
  190. package/dist/core/storage/github-world-import.js.map +1 -0
  191. package/dist/core/storage/memory-storage.d.ts +19 -8
  192. package/dist/core/storage/memory-storage.d.ts.map +1 -1
  193. package/dist/core/storage/memory-storage.js +147 -49
  194. package/dist/core/storage/memory-storage.js.map +1 -1
  195. package/dist/core/storage/queue-storage.d.ts +1 -0
  196. package/dist/core/storage/queue-storage.d.ts.map +1 -1
  197. package/dist/core/storage/queue-storage.js +3 -2
  198. package/dist/core/storage/queue-storage.js.map +1 -1
  199. package/dist/core/storage/sqlite-storage.d.ts +14 -9
  200. package/dist/core/storage/sqlite-storage.d.ts.map +1 -1
  201. package/dist/core/storage/sqlite-storage.js +131 -154
  202. package/dist/core/storage/sqlite-storage.js.map +1 -1
  203. package/dist/core/storage/storage-factory.d.ts +3 -0
  204. package/dist/core/storage/storage-factory.d.ts.map +1 -1
  205. package/dist/core/storage/storage-factory.js +175 -89
  206. package/dist/core/storage/storage-factory.js.map +1 -1
  207. package/dist/core/storage/world-storage.d.ts +1 -1
  208. package/dist/core/storage/world-storage.d.ts.map +1 -1
  209. package/dist/core/storage/world-storage.js +5 -1
  210. package/dist/core/storage/world-storage.js.map +1 -1
  211. package/dist/core/storage-init.d.ts +11 -0
  212. package/dist/core/storage-init.d.ts.map +1 -0
  213. package/dist/core/storage-init.js +122 -0
  214. package/dist/core/storage-init.js.map +1 -0
  215. package/dist/core/subscription.d.ts +8 -1
  216. package/dist/core/subscription.d.ts.map +1 -1
  217. package/dist/core/subscription.js +130 -23
  218. package/dist/core/subscription.js.map +1 -1
  219. package/dist/core/tool-approval.d.ts +45 -0
  220. package/dist/core/tool-approval.d.ts.map +1 -0
  221. package/dist/core/tool-approval.js +223 -0
  222. package/dist/core/tool-approval.js.map +1 -0
  223. package/dist/core/tool-execution-envelope.d.ts +87 -0
  224. package/dist/core/tool-execution-envelope.d.ts.map +1 -0
  225. package/dist/core/tool-execution-envelope.js +168 -0
  226. package/dist/core/tool-execution-envelope.js.map +1 -0
  227. package/dist/core/tool-utils.d.ts +7 -2
  228. package/dist/core/tool-utils.d.ts.map +1 -1
  229. package/dist/core/tool-utils.js +81 -17
  230. package/dist/core/tool-utils.js.map +1 -1
  231. package/dist/core/types.d.ts +67 -19
  232. package/dist/core/types.d.ts.map +1 -1
  233. package/dist/core/types.js +3 -0
  234. package/dist/core/types.js.map +1 -1
  235. package/dist/core/utils.d.ts +7 -0
  236. package/dist/core/utils.d.ts.map +1 -1
  237. package/dist/core/utils.js +71 -21
  238. package/dist/core/utils.js.map +1 -1
  239. package/dist/core/web-fetch-tool.d.ts +72 -0
  240. package/dist/core/web-fetch-tool.d.ts.map +1 -0
  241. package/dist/core/web-fetch-tool.js +491 -0
  242. package/dist/core/web-fetch-tool.js.map +1 -0
  243. package/dist/core/world-registry.d.ts +84 -0
  244. package/dist/core/world-registry.d.ts.map +1 -0
  245. package/dist/core/world-registry.js +247 -0
  246. package/dist/core/world-registry.js.map +1 -0
  247. package/dist/public/assets/index-Be-1xtV-.js +104 -0
  248. package/dist/public/assets/index-tsDdiXDU.css +1 -0
  249. package/dist/public/index.html +2 -2
  250. package/dist/public/mcp-sandbox-proxy.html +148 -0
  251. package/dist/server/api.js +260 -18
  252. package/dist/server/error-response.d.ts +27 -0
  253. package/dist/server/error-response.js +77 -0
  254. package/dist/server/index.d.ts +2 -1
  255. package/dist/server/index.js +6 -2
  256. package/dist/server/sse-handler.d.ts +11 -1
  257. package/dist/server/sse-handler.js +194 -34
  258. package/migrations/0015_add_message_queue.sql +36 -0
  259. package/migrations/0016_add_world_heartbeat.sql +13 -0
  260. package/migrations/0017_add_title_provenance.sql +7 -0
  261. package/package.json +31 -10
  262. package/dist/public/assets/index-BW41BxMy.css +0 -1
  263. package/dist/public/assets/index-kO6UJFwK.js +0 -96
@@ -2,28 +2,35 @@
2
2
  * Events Persistence Module
3
3
  *
4
4
  * Handles automatic event persistence to storage with metadata enrichment.
5
- * Provides setupEventPersistence function for World initialization.
5
+ * Also owns the single world-level listener per event channel (message, sse, world, system),
6
+ * combining persistence with title-scheduling and activity-title logic in one handler each.
6
7
  *
7
8
  * Features:
8
- * - Message event persistence with enhanced metadata
9
- * - SSE event persistence (start/end only, skips chunks)
10
- * - Tool event persistence with validation
11
- * - System event persistence
12
- * - Activity tracking event persistence
13
- * - Automatic metadata calculation (agent context, threading, tool calls)
14
- * - Error handling with graceful degradation
15
- * - Environment-based disable flag
16
- * - Uses world.eventStorage directly (no separate storage instance)
9
+ * - One combined `message` handler: persistence only.
10
+ * - One combined `world` handler: persistence + idle title generation.
11
+ * - SSE event persistence (start/end only, skips chunks).
12
+ * - System event persistence.
13
+ * - Sets world._worldMessagesUnsubscriber and world._activityListenerCleanup so downstream
14
+ * idempotent wrappers (subscribeWorldToMessages, setupWorldActivityListener) don't add
15
+ * duplicate listeners.
17
16
  *
18
17
  * Dependencies (Layer 4):
19
18
  * - types.ts (Layer 1)
20
- * - utils.ts
19
+ * - chat-constants.ts
20
+ * - events-metadata.ts
21
+ * - title-scheduler.ts (Layer 4)
21
22
  * - logger.ts
22
- * - storage (runtime)
23
23
  *
24
24
  * Changes:
25
- * - 2025-11-09: Fixed event persistence - use world.eventStorage directly instead of creating separate instance
26
- * - 2025-01-09: Extracted from events.ts for modular architecture
25
+ * - 2026-03-10: Removed human-message debounce title scheduling; idle activity is now the
26
+ * sole automatic trigger path.
27
+ * - 2026-03-06: Required explicit `chatId` on persisted message/SSE/tool/activity/system events; unscoped events are now rejected instead of inheriting `world.currentChatId`.
28
+ * - 2026-03-03: Combined world-level listeners to eliminate MaxListenersExceededWarning;
29
+ * title-scheduling and idle-activity logic moved here from subscribers.ts (Layer 6) via
30
+ * title-scheduler.ts (Layer 4) to respect module layering.
31
+ * - 2026-02-26: Removed legacy replay-only HITL system-event filter.
32
+ * - 2025-11-09: Fixed event persistence - use world.eventStorage directly.
33
+ * - 2025-01-09: Extracted from events.ts for modular architecture.
27
34
  */
28
35
  import type { World } from '../types.js';
29
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../core/events/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,aAAa,CAAC;AAYrB;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CA8P9D"}
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../core/events/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,aAAa,CAAC;AAgBrB;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CA+T9D"}
@@ -2,31 +2,39 @@
2
2
  * Events Persistence Module
3
3
  *
4
4
  * Handles automatic event persistence to storage with metadata enrichment.
5
- * Provides setupEventPersistence function for World initialization.
5
+ * Also owns the single world-level listener per event channel (message, sse, world, system),
6
+ * combining persistence with title-scheduling and activity-title logic in one handler each.
6
7
  *
7
8
  * Features:
8
- * - Message event persistence with enhanced metadata
9
- * - SSE event persistence (start/end only, skips chunks)
10
- * - Tool event persistence with validation
11
- * - System event persistence
12
- * - Activity tracking event persistence
13
- * - Automatic metadata calculation (agent context, threading, tool calls)
14
- * - Error handling with graceful degradation
15
- * - Environment-based disable flag
16
- * - Uses world.eventStorage directly (no separate storage instance)
9
+ * - One combined `message` handler: persistence only.
10
+ * - One combined `world` handler: persistence + idle title generation.
11
+ * - SSE event persistence (start/end only, skips chunks).
12
+ * - System event persistence.
13
+ * - Sets world._worldMessagesUnsubscriber and world._activityListenerCleanup so downstream
14
+ * idempotent wrappers (subscribeWorldToMessages, setupWorldActivityListener) don't add
15
+ * duplicate listeners.
17
16
  *
18
17
  * Dependencies (Layer 4):
19
18
  * - types.ts (Layer 1)
20
- * - utils.ts
19
+ * - chat-constants.ts
20
+ * - events-metadata.ts
21
+ * - title-scheduler.ts (Layer 4)
21
22
  * - logger.ts
22
- * - storage (runtime)
23
23
  *
24
24
  * Changes:
25
- * - 2025-11-09: Fixed event persistence - use world.eventStorage directly instead of creating separate instance
26
- * - 2025-01-09: Extracted from events.ts for modular architecture
25
+ * - 2026-03-10: Removed human-message debounce title scheduling; idle activity is now the
26
+ * sole automatic trigger path.
27
+ * - 2026-03-06: Required explicit `chatId` on persisted message/SSE/tool/activity/system events; unscoped events are now rejected instead of inheriting `world.currentChatId`.
28
+ * - 2026-03-03: Combined world-level listeners to eliminate MaxListenersExceededWarning;
29
+ * title-scheduling and idle-activity logic moved here from subscribers.ts (Layer 6) via
30
+ * title-scheduler.ts (Layer 4) to respect module layering.
31
+ * - 2026-02-26: Removed legacy replay-only HITL system-event filter.
32
+ * - 2025-11-09: Fixed event persistence - use world.eventStorage directly.
33
+ * - 2025-01-09: Extracted from events.ts for modular architecture.
27
34
  */
28
35
  import { createCategoryLogger } from '../logger.js';
29
36
  import { calculateOwnerAgentIds, calculateRecipientAgentId, calculateMessageDirection, calculateIsMemoryOnly, calculateIsCrossAgentMessage } from '../events-metadata.js';
37
+ import { runIdleTitleUpdate, clearWorldTitleTimers } from './title-scheduler.js';
30
38
  const loggerPublish = createCategoryLogger('publish');
31
39
  /**
32
40
  * Setup automatic event persistence listeners on World event emitter.
@@ -63,13 +71,22 @@ export function setupEventPersistence(world) {
63
71
  });
64
72
  }
65
73
  };
66
- // Message event persistence
67
- const messageHandler = (event) => {
74
+ // Combined message handler: persistence only
75
+ const messageHandler = async (event) => {
76
+ const targetChatId = typeof event.chatId === 'string' ? event.chatId.trim() : '';
77
+ if (!targetChatId) {
78
+ loggerPublish.error('Message event missing required chatId', {
79
+ worldId: world.id,
80
+ messageId: event.messageId,
81
+ sender: event.sender,
82
+ });
83
+ return;
84
+ }
68
85
  loggerPublish.debug('Message event received for persistence', {
69
86
  worldId: world.id,
70
87
  messageId: event.messageId,
71
88
  sender: event.sender,
72
- chatId: event.chatId
89
+ chatId: targetChatId
73
90
  });
74
91
  // Calculate enhanced metadata using helper functions
75
92
  const ownerAgentIds = calculateOwnerAgentIds(world, event);
@@ -77,7 +94,8 @@ export function setupEventPersistence(world) {
77
94
  const messageDirection = calculateMessageDirection(world, event);
78
95
  const isMemoryOnly = calculateIsMemoryOnly(world, event);
79
96
  const isCrossAgentMessage = calculateIsCrossAgentMessage(world, event);
80
- const isHumanMessage = event.sender === 'human' || event.sender === 'user';
97
+ const normalizedSender = String(event.sender || '').trim().toLowerCase();
98
+ const isHumanMessage = normalizedSender === 'human' || normalizedSender === 'world' || normalizedSender === 'user';
81
99
  // Calculate thread metadata (requires loading messages for accurate depth calculation)
82
100
  // For now, use simplified version - can enhance later with full message history
83
101
  const threadMetadata = event.replyToMessageId
@@ -89,7 +107,7 @@ export function setupEventPersistence(world) {
89
107
  const eventData = {
90
108
  id: event.messageId,
91
109
  worldId: world.id,
92
- chatId: event.chatId || null,
110
+ chatId: targetChatId,
93
111
  type: 'message',
94
112
  payload: {
95
113
  content: event.content,
@@ -133,7 +151,7 @@ export function setupEventPersistence(world) {
133
151
  },
134
152
  createdAt: event.timestamp
135
153
  };
136
- return persistEvent(eventData);
154
+ await persistEvent(eventData);
137
155
  };
138
156
  // SSE event handler - persist only start and end events, skip chunk events
139
157
  // Chunk events are for UI streaming only (high frequency, transient)
@@ -143,12 +161,21 @@ export function setupEventPersistence(world) {
143
161
  if (event.type === 'chunk') {
144
162
  return;
145
163
  }
164
+ const targetChatId = typeof event.chatId === 'string' ? event.chatId.trim() : '';
165
+ if (!targetChatId) {
166
+ loggerPublish.error('SSE event missing required chatId', {
167
+ worldId: world.id,
168
+ eventType: event.type,
169
+ messageId: event.messageId,
170
+ agentName: event.agentName,
171
+ });
172
+ return;
173
+ }
146
174
  // Persist start/end events for metadata tracking
147
- // Use event.chatId for concurrency-safe routing (falls back to null for broadcast)
148
175
  const eventData = {
149
176
  id: `${event.messageId}-sse-${event.type}`,
150
177
  worldId: world.id,
151
- chatId: event.chatId || null,
178
+ chatId: targetChatId,
152
179
  type: 'sse',
153
180
  payload: {
154
181
  agentName: event.agentName,
@@ -166,12 +193,13 @@ export function setupEventPersistence(world) {
166
193
  };
167
194
  return persistEvent(eventData);
168
195
  };
169
- // Tool event persistence (world channel)
196
+ // Combined world-channel handler: persistence + idle title generation
170
197
  // Handles WorldToolEvent (tool execution) and WorldActivityEventPayload (activity tracking)
171
- const toolHandler = (event) => {
198
+ const toolHandler = async (event) => {
172
199
  // Check event type category
173
200
  const isActivityEvent = event.type && ['response-start', 'response-end', 'idle'].includes(event.type);
174
201
  const isToolEvent = event.type && ['tool-start', 'tool-result', 'tool-error', 'tool-progress'].includes(event.type);
202
+ const targetChatId = typeof event?.chatId === 'string' ? event.chatId.trim() : '';
175
203
  // OPTIMIZATION: Skip tool-progress events (high frequency status updates)
176
204
  // Keep tool-start (marks beginning), tool-result (final result), tool-error (failures)
177
205
  if (event.type === 'tool-progress') {
@@ -179,6 +207,15 @@ export function setupEventPersistence(world) {
179
207
  }
180
208
  // Validate required fields for tool events only
181
209
  if (isToolEvent) {
210
+ if (!targetChatId) {
211
+ loggerPublish.error('Tool event missing required chatId', {
212
+ worldId: world.id,
213
+ eventType: event.type,
214
+ messageId: event.messageId,
215
+ agentName: event.agentName,
216
+ });
217
+ return;
218
+ }
182
219
  if (!event.messageId) {
183
220
  loggerPublish.error('Tool event missing required messageId', {
184
221
  worldId: world.id,
@@ -196,6 +233,15 @@ export function setupEventPersistence(world) {
196
233
  return; // Skip persistence for invalid events
197
234
  }
198
235
  }
236
+ if (isActivityEvent && !targetChatId) {
237
+ loggerPublish.error('Activity event missing required chatId', {
238
+ worldId: world.id,
239
+ eventType: event.type,
240
+ messageId: event.messageId,
241
+ source: event.source,
242
+ });
243
+ return;
244
+ }
199
245
  // Generate unique ID for tool events by combining messageId with tool type
200
246
  // This prevents duplicate ID conflicts when multiple tool events (tool-start, tool-result, tool-error)
201
247
  // share the same messageId
@@ -205,9 +251,7 @@ export function setupEventPersistence(world) {
205
251
  const eventData = {
206
252
  id: eventId,
207
253
  worldId: world.id,
208
- // Activity events (response-start/end, idle) are world-level, use null chatId
209
- // Tool events use chatId from event for concurrency-safe routing
210
- chatId: isActivityEvent ? null : (event.chatId || null),
254
+ chatId: targetChatId,
211
255
  type: isActivityEvent ? 'world' : 'tool',
212
256
  payload: isActivityEvent ? {
213
257
  activityType: event.type,
@@ -235,14 +279,26 @@ export function setupEventPersistence(world) {
235
279
  },
236
280
  createdAt: isActivityEvent ? new Date(event.timestamp) : new Date()
237
281
  };
238
- return persistEvent(eventData);
282
+ await persistEvent(eventData);
283
+ // Idle title generation runs after persisting the activity event
284
+ if (isActivityEvent) {
285
+ await runIdleTitleUpdate(world, event);
286
+ }
239
287
  };
240
288
  // System event persistence
241
289
  const systemHandler = (event) => {
290
+ const targetChatId = typeof event.chatId === 'string' ? event.chatId.trim() : '';
291
+ if (!targetChatId) {
292
+ loggerPublish.error('System event missing required chatId', {
293
+ worldId: world.id,
294
+ messageId: event.messageId,
295
+ });
296
+ return;
297
+ }
242
298
  const eventData = {
243
299
  id: event.messageId,
244
300
  worldId: world.id,
245
- chatId: event.chatId !== undefined ? event.chatId : (world.currentChatId || null), // Default to current chat
301
+ chatId: targetChatId,
246
302
  type: 'system',
247
303
  payload: event.content,
248
304
  meta: {},
@@ -250,20 +306,29 @@ export function setupEventPersistence(world) {
250
306
  };
251
307
  return persistEvent(eventData);
252
308
  };
253
- // Attach listeners
309
+ // Attach listeners — one per channel; this is the sole world-level infrastructure subscriber
254
310
  world.eventEmitter.on('message', messageHandler);
255
311
  world.eventEmitter.on('sse', sseHandler);
256
312
  world.eventEmitter.on('world', toolHandler);
257
313
  world.eventEmitter.on('system', systemHandler);
258
- loggerPublish.debug('Event persistence setup complete', {
259
- worldId: world.id
260
- });
261
- // Return cleanup function
262
- return () => {
314
+ const cleanup = () => {
263
315
  world.eventEmitter.off('message', messageHandler);
264
316
  world.eventEmitter.off('sse', sseHandler);
265
317
  world.eventEmitter.off('world', toolHandler);
266
318
  world.eventEmitter.off('system', systemHandler);
319
+ clearWorldTitleTimers(world.id);
320
+ // Clear idempotent handles so downstream wrappers can re-register if needed after cleanup
321
+ world._worldMessagesUnsubscriber = undefined;
322
+ world._activityListenerCleanup = undefined;
267
323
  loggerPublish.debug('Event persistence listeners cleaned up', { worldId: world.id });
268
324
  };
325
+ // Store cleanup ref in all three slots so the idempotent wrappers
326
+ // (subscribeWorldToMessages, setupWorldActivityListener) short-circuit instead of
327
+ // adding duplicate listeners on the same world.
328
+ world._worldMessagesUnsubscriber = cleanup;
329
+ world._activityListenerCleanup = cleanup;
330
+ loggerPublish.debug('Event persistence setup complete', {
331
+ worldId: world.id
332
+ });
333
+ return cleanup;
269
334
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../core/events/persistence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../core/events/persistence.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@
12
12
  * - Emits events synchronously through world-scoped EventEmitter channels
13
13
  *
14
14
  * Recent Changes:
15
+ * - 2026-03-13: Preserved optional SSE `reasoningContent` so reasoning tokens survive world-scoped event publication.
16
+ * - 2026-03-06: Required explicit `chatId` for message/system/SSE/tool publication; removed `world.currentChatId` fallback from event emitters.
15
17
  * - 2026-02-13: Added optional explicit `chatId` override for `publishEvent` to preserve session context across async flows.
16
18
  * - 2026-02-13: Added chat-scoped tool-event propagation (`chatId`) so realtime tool updates remain session-isolated.
17
19
  * - 2026-02-11: Fixed publishSSE to include toolName and stream fields for tool-stream events
@@ -35,24 +37,24 @@ export declare function normalizeSender(sender: string): string;
35
37
  /**
36
38
  * Publish event to a specific channel using World.eventEmitter
37
39
  */
38
- export declare function publishEvent(world: World, type: string, content: any, chatId?: string | null): void;
40
+ export declare function publishEvent(world: World, type: string, content: any, chatId: string): void;
39
41
  /**
40
42
  * Message publishing using World.eventEmitter with chat session management
41
43
  * Parses enhanced string protocol and automatically prepends @mention if agentId detected
42
44
  * Returns the messageEvent so callers can access the generated messageId
43
45
  *
44
- * @param chatId - Optional chat ID. If not provided, uses world.currentChatId
46
+ * @param chatId - Explicit chat ID for concurrency-safe routing
45
47
  * @param replyToMessageId - Optional parent message ID for threading
46
48
  */
47
- export declare function publishMessage(world: World, content: string, sender: string, chatId?: string | null, replyToMessageId?: string): WorldMessageEvent;
49
+ export declare function publishMessage(world: World, content: string, sender: string, chatId: string, replyToMessageId?: string): WorldMessageEvent;
48
50
  /**
49
51
  * Message publishing with pre-generated messageId
50
52
  * Used when messageId needs to be known before publishing (e.g., for agent responses)
51
53
  *
52
- * @param chatId - Optional chat ID. If not provided, uses world.currentChatId
54
+ * @param chatId - Explicit chat ID for concurrency-safe routing
53
55
  * @param replyToMessageId - Optional parent message ID for threading
54
56
  */
55
- export declare function publishMessageWithId(world: World, content: string, sender: string, messageId: string, chatId?: string | null, replyToMessageId?: string): WorldMessageEvent;
57
+ export declare function publishMessageWithId(world: World, content: string, sender: string, messageId: string, chatId: string, replyToMessageId?: string): WorldMessageEvent;
56
58
  /**
57
59
  * Subscribe to message events
58
60
  */
@@ -60,11 +62,15 @@ export declare function subscribeToMessages(world: World, handler: (event: World
60
62
  /**
61
63
  * SSE events using World.eventEmitter (for LLM streaming)
62
64
  */
63
- export declare function publishSSE(world: World, data: Partial<WorldSSEEvent>): void;
65
+ export declare function publishSSE(world: World, data: Partial<WorldSSEEvent> & {
66
+ chatId: string;
67
+ }): void;
64
68
  /**
65
69
  * Tool events using World.eventEmitter (for agent behavioral events)
66
70
  */
67
- export declare function publishToolEvent(world: World, data: Partial<WorldToolEvent>): void;
71
+ export declare function publishToolEvent(world: World, data: Partial<WorldToolEvent> & {
72
+ chatId: string;
73
+ }): void;
68
74
  /**
69
75
  * SSE subscription using World.eventEmitter
70
76
  */
@@ -1 +1 @@
1
- {"version":3,"file":"publishers.d.ts","sourceRoot":"","sources":["../../../core/events/publishers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAExD,MAAM,aAAa,CAAC;AAUrB,wBAAgB,eAAe,IAAI,IAAI,CAAmC;AAC1E,wBAAgB,gBAAgB,IAAI,IAAI,CAAoC;AAC5E,wBAAgB,kBAAkB,IAAI,OAAO,CAAmC;AAEhF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAStD;AAgBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CASnG;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAqFlJ;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAa3K;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC1D,MAAM,IAAI,CA6BZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAe3E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CASlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GACtC,MAAM,IAAI,CAGZ"}
1
+ {"version":3,"file":"publishers.d.ts","sourceRoot":"","sources":["../../../core/events/publishers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAExD,MAAM,aAAa,CAAC;AAUrB,wBAAgB,eAAe,IAAI,IAAI,CAAmC;AAC1E,wBAAgB,gBAAgB,IAAI,IAAI,CAAoC;AAC5E,wBAAgB,kBAAkB,IAAI,OAAO,CAAmC;AAEhF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAStD;AAgDD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAS3F;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAwE1I;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAWnK;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC1D,MAAM,IAAI,CA6BZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiBhG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUvG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GACtC,MAAM,IAAI,CAGZ"}
@@ -12,6 +12,8 @@
12
12
  * - Emits events synchronously through world-scoped EventEmitter channels
13
13
  *
14
14
  * Recent Changes:
15
+ * - 2026-03-13: Preserved optional SSE `reasoningContent` so reasoning tokens survive world-scoped event publication.
16
+ * - 2026-03-06: Required explicit `chatId` for message/system/SSE/tool publication; removed `world.currentChatId` fallback from event emitters.
15
17
  * - 2026-02-13: Added optional explicit `chatId` override for `publishEvent` to preserve session context across async flows.
16
18
  * - 2026-02-13: Added chat-scoped tool-event propagation (`chatId`) so realtime tool updates remain session-isolated.
17
19
  * - 2026-02-11: Fixed publishSSE to include toolName and stream fields for tool-stream events
@@ -50,20 +52,47 @@ export function normalizeSender(sender) {
50
52
  return 'world';
51
53
  return trimmed;
52
54
  }
53
- function resolveRequiredChatId(world, chatId, callsite) {
55
+ function resolveRequiredChatId(chatId, callsite) {
54
56
  const explicitChatId = typeof chatId === 'string' ? chatId.trim() : '';
55
57
  if (explicitChatId)
56
58
  return explicitChatId;
57
- const currentChatId = typeof world?.currentChatId === 'string' ? world.currentChatId.trim() : '';
58
- if (currentChatId)
59
- return currentChatId;
60
- throw new Error(`${callsite}: chatId is required for message events.`);
59
+ throw new Error(`${callsite}: explicit chatId is required.`);
60
+ }
61
+ function buildWorldMessageEvent(params) {
62
+ const normalizedSender = normalizeSender(params.sender);
63
+ const { message: parsedMsg } = parseMessageContent(params.content, 'user');
64
+ let role;
65
+ if (parsedMsg.role === 'tool') {
66
+ role = 'tool';
67
+ }
68
+ else if (normalizedSender === 'human' || normalizedSender.startsWith('user')) {
69
+ role = 'user';
70
+ }
71
+ else if (normalizedSender === 'system' || normalizedSender === 'world') {
72
+ role = normalizedSender;
73
+ }
74
+ else {
75
+ role = parsedMsg.role === 'assistant' ? 'assistant' : 'assistant';
76
+ }
77
+ return {
78
+ content: params.content,
79
+ sender: normalizedSender,
80
+ timestamp: new Date(),
81
+ messageId: params.messageId,
82
+ chatId: params.chatId,
83
+ replyToMessageId: params.replyToMessageId,
84
+ ...(role ? { role } : {}),
85
+ ...(Array.isArray(parsedMsg.tool_calls) ? { tool_calls: parsedMsg.tool_calls } : {}),
86
+ ...(typeof parsedMsg.tool_call_id === 'string' && parsedMsg.tool_call_id.trim()
87
+ ? { tool_call_id: parsedMsg.tool_call_id.trim() }
88
+ : {}),
89
+ };
61
90
  }
62
91
  /**
63
92
  * Publish event to a specific channel using World.eventEmitter
64
93
  */
65
94
  export function publishEvent(world, type, content, chatId) {
66
- const targetChatId = chatId !== undefined ? chatId : (world.currentChatId || null);
95
+ const targetChatId = resolveRequiredChatId(chatId, 'publishEvent');
67
96
  const event = {
68
97
  content,
69
98
  timestamp: new Date(),
@@ -77,12 +106,12 @@ export function publishEvent(world, type, content, chatId) {
77
106
  * Parses enhanced string protocol and automatically prepends @mention if agentId detected
78
107
  * Returns the messageEvent so callers can access the generated messageId
79
108
  *
80
- * @param chatId - Optional chat ID. If not provided, uses world.currentChatId
109
+ * @param chatId - Explicit chat ID for concurrency-safe routing
81
110
  * @param replyToMessageId - Optional parent message ID for threading
82
111
  */
83
112
  export function publishMessage(world, content, sender, chatId, replyToMessageId) {
84
113
  const messageId = generateId();
85
- const targetChatId = resolveRequiredChatId(world, chatId, 'publishMessage');
114
+ const targetChatId = resolveRequiredChatId(chatId, 'publishMessage');
86
115
  const normalizedSender = normalizeSender(sender);
87
116
  loggerMemory.debug('[publishMessage] ENTRY', {
88
117
  sender,
@@ -117,31 +146,17 @@ export function publishMessage(world, content, sender, chatId, replyToMessageId)
117
146
  messageId
118
147
  });
119
148
  }
120
- // Determine role based on sender and message type
121
- let role;
122
- if (parsedMsg.role === 'tool') {
123
- role = 'tool';
124
- }
125
- else if (normalizedSender === 'human' || normalizedSender.startsWith('user')) {
126
- role = 'user';
127
- }
128
- else {
129
- // Agent senders get role 'assistant'
130
- role = 'assistant';
131
- }
132
- const messageEvent = {
149
+ const messageEvent = buildWorldMessageEvent({
133
150
  content: finalContent,
134
151
  sender: normalizedSender,
135
- role,
136
- timestamp: new Date(),
137
152
  messageId,
138
153
  chatId: targetChatId,
139
- replyToMessageId
140
- };
154
+ replyToMessageId,
155
+ });
141
156
  loggerMemory.debug('[publishMessage] Generated messageId', {
142
157
  messageId,
143
158
  sender: normalizedSender,
144
- role,
159
+ role: messageEvent.role,
145
160
  worldId: world.id,
146
161
  chatId: targetChatId,
147
162
  hasAgentId: !!targetAgentId,
@@ -150,7 +165,7 @@ export function publishMessage(world, content, sender, chatId, replyToMessageId)
150
165
  loggerMemory.debug('[publishMessage] Emitting message event', {
151
166
  messageId,
152
167
  sender: normalizedSender,
153
- role,
168
+ role: messageEvent.role,
154
169
  chatId: targetChatId,
155
170
  contentPreview: finalContent.substring(0, 100)
156
171
  });
@@ -162,20 +177,18 @@ export function publishMessage(world, content, sender, chatId, replyToMessageId)
162
177
  * Message publishing with pre-generated messageId
163
178
  * Used when messageId needs to be known before publishing (e.g., for agent responses)
164
179
  *
165
- * @param chatId - Optional chat ID. If not provided, uses world.currentChatId
180
+ * @param chatId - Explicit chat ID for concurrency-safe routing
166
181
  * @param replyToMessageId - Optional parent message ID for threading
167
182
  */
168
183
  export function publishMessageWithId(world, content, sender, messageId, chatId, replyToMessageId) {
169
- const targetChatId = resolveRequiredChatId(world, chatId, 'publishMessageWithId');
170
- const normalizedSender = normalizeSender(sender);
171
- const messageEvent = {
184
+ const targetChatId = resolveRequiredChatId(chatId, 'publishMessageWithId');
185
+ const messageEvent = buildWorldMessageEvent({
172
186
  content,
173
- sender: normalizedSender,
174
- timestamp: new Date(),
187
+ sender,
175
188
  messageId,
176
189
  chatId: targetChatId,
177
- replyToMessageId
178
- };
190
+ replyToMessageId,
191
+ });
179
192
  world.eventEmitter.emit('message', messageEvent);
180
193
  return messageEvent;
181
194
  }
@@ -217,13 +230,15 @@ export function subscribeToMessages(world, handler) {
217
230
  * SSE events using World.eventEmitter (for LLM streaming)
218
231
  */
219
232
  export function publishSSE(world, data) {
233
+ const targetChatId = resolveRequiredChatId(data.chatId, 'publishSSE');
220
234
  const sseEvent = {
221
235
  agentName: data.agentName,
222
236
  type: data.type,
223
237
  content: data.content,
238
+ reasoningContent: data.reasoningContent,
224
239
  error: data.error,
225
240
  messageId: data.messageId || generateId(),
226
- chatId: data.chatId !== undefined ? data.chatId : (world.currentChatId ?? null),
241
+ chatId: targetChatId,
227
242
  usage: data.usage,
228
243
  logEvent: data.logEvent,
229
244
  tool_calls: data.tool_calls,
@@ -236,11 +251,12 @@ export function publishSSE(world, data) {
236
251
  * Tool events using World.eventEmitter (for agent behavioral events)
237
252
  */
238
253
  export function publishToolEvent(world, data) {
254
+ const targetChatId = resolveRequiredChatId(data.chatId, 'publishToolEvent');
239
255
  const toolEvent = {
240
256
  agentName: data.agentName,
241
257
  type: data.type,
242
258
  messageId: data.messageId || generateId(),
243
- chatId: data.chatId !== undefined ? data.chatId : (world.currentChatId ?? null),
259
+ chatId: targetChatId,
244
260
  toolExecution: data.toolExecution
245
261
  };
246
262
  world.eventEmitter.emit('world', toolEvent);
@@ -1 +1 @@
1
- {"version":3,"file":"publishers.js","sourceRoot":"","sources":["../../../core/events/publishers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishers.js","sourceRoot":"","sources":["../../../core/events/publishers.ts"],"names":[],"mappings":"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"}