@indexnetwork/protocol 0.1.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 (365) hide show
  1. package/dist/agents/chat.agent.d.ts +218 -0
  2. package/dist/agents/chat.agent.d.ts.map +1 -0
  3. package/dist/agents/chat.agent.js +884 -0
  4. package/dist/agents/chat.agent.js.map +1 -0
  5. package/dist/agents/chat.prompt.d.ts +18 -0
  6. package/dist/agents/chat.prompt.d.ts.map +1 -0
  7. package/dist/agents/chat.prompt.js +372 -0
  8. package/dist/agents/chat.prompt.js.map +1 -0
  9. package/dist/agents/chat.prompt.modules.d.ts +61 -0
  10. package/dist/agents/chat.prompt.modules.d.ts.map +1 -0
  11. package/dist/agents/chat.prompt.modules.js +366 -0
  12. package/dist/agents/chat.prompt.modules.js.map +1 -0
  13. package/dist/agents/chat.title.generator.d.ts +20 -0
  14. package/dist/agents/chat.title.generator.d.ts.map +1 -0
  15. package/dist/agents/chat.title.generator.js +66 -0
  16. package/dist/agents/chat.title.generator.js.map +1 -0
  17. package/dist/agents/home.categorizer.d.ts +28 -0
  18. package/dist/agents/home.categorizer.d.ts.map +1 -0
  19. package/dist/agents/home.categorizer.js +170 -0
  20. package/dist/agents/home.categorizer.js.map +1 -0
  21. package/dist/agents/hyde.generator.d.ts +27 -0
  22. package/dist/agents/hyde.generator.d.ts.map +1 -0
  23. package/dist/agents/hyde.generator.js +75 -0
  24. package/dist/agents/hyde.generator.js.map +1 -0
  25. package/dist/agents/hyde.strategies.d.ts +17 -0
  26. package/dist/agents/hyde.strategies.d.ts.map +1 -0
  27. package/dist/agents/hyde.strategies.js +29 -0
  28. package/dist/agents/hyde.strategies.js.map +1 -0
  29. package/dist/agents/intent.clarifier.d.ts +29 -0
  30. package/dist/agents/intent.clarifier.d.ts.map +1 -0
  31. package/dist/agents/intent.clarifier.js +186 -0
  32. package/dist/agents/intent.clarifier.js.map +1 -0
  33. package/dist/agents/intent.indexer.d.ts +77 -0
  34. package/dist/agents/intent.indexer.d.ts.map +1 -0
  35. package/dist/agents/intent.indexer.js +164 -0
  36. package/dist/agents/intent.indexer.js.map +1 -0
  37. package/dist/agents/intent.inferrer.d.ts +95 -0
  38. package/dist/agents/intent.inferrer.d.ts.map +1 -0
  39. package/dist/agents/intent.inferrer.js +238 -0
  40. package/dist/agents/intent.inferrer.js.map +1 -0
  41. package/dist/agents/intent.reconciler.d.ts +106 -0
  42. package/dist/agents/intent.reconciler.d.ts.map +1 -0
  43. package/dist/agents/intent.reconciler.js +184 -0
  44. package/dist/agents/intent.reconciler.js.map +1 -0
  45. package/dist/agents/intent.verifier.d.ts +97 -0
  46. package/dist/agents/intent.verifier.d.ts.map +1 -0
  47. package/dist/agents/intent.verifier.js +234 -0
  48. package/dist/agents/intent.verifier.js.map +1 -0
  49. package/dist/agents/invite.generator.d.ts +47 -0
  50. package/dist/agents/invite.generator.d.ts.map +1 -0
  51. package/dist/agents/invite.generator.js +56 -0
  52. package/dist/agents/invite.generator.js.map +1 -0
  53. package/dist/agents/lens.inferrer.d.ts +37 -0
  54. package/dist/agents/lens.inferrer.d.ts.map +1 -0
  55. package/dist/agents/lens.inferrer.js +98 -0
  56. package/dist/agents/lens.inferrer.js.map +1 -0
  57. package/dist/agents/model.config.d.ts +120 -0
  58. package/dist/agents/model.config.d.ts.map +1 -0
  59. package/dist/agents/model.config.js +76 -0
  60. package/dist/agents/model.config.js.map +1 -0
  61. package/dist/agents/negotiation.insights.generator.d.ts +32 -0
  62. package/dist/agents/negotiation.insights.generator.d.ts.map +1 -0
  63. package/dist/agents/negotiation.insights.generator.js +105 -0
  64. package/dist/agents/negotiation.insights.generator.js.map +1 -0
  65. package/dist/agents/negotiation.proposer.d.ts +26 -0
  66. package/dist/agents/negotiation.proposer.d.ts.map +1 -0
  67. package/dist/agents/negotiation.proposer.js +67 -0
  68. package/dist/agents/negotiation.proposer.js.map +1 -0
  69. package/dist/agents/negotiation.responder.d.ts +26 -0
  70. package/dist/agents/negotiation.responder.d.ts.map +1 -0
  71. package/dist/agents/negotiation.responder.js +71 -0
  72. package/dist/agents/negotiation.responder.js.map +1 -0
  73. package/dist/agents/opportunity.evaluator.d.ts +253 -0
  74. package/dist/agents/opportunity.evaluator.d.ts.map +1 -0
  75. package/dist/agents/opportunity.evaluator.js +413 -0
  76. package/dist/agents/opportunity.evaluator.js.map +1 -0
  77. package/dist/agents/opportunity.presenter.d.ts +115 -0
  78. package/dist/agents/opportunity.presenter.d.ts.map +1 -0
  79. package/dist/agents/opportunity.presenter.js +524 -0
  80. package/dist/agents/opportunity.presenter.js.map +1 -0
  81. package/dist/agents/profile.generator.d.ts +67 -0
  82. package/dist/agents/profile.generator.d.ts.map +1 -0
  83. package/dist/agents/profile.generator.js +97 -0
  84. package/dist/agents/profile.generator.js.map +1 -0
  85. package/dist/agents/profile.hyde.generator.d.ts +43 -0
  86. package/dist/agents/profile.hyde.generator.d.ts.map +1 -0
  87. package/dist/agents/profile.hyde.generator.js +113 -0
  88. package/dist/agents/profile.hyde.generator.js.map +1 -0
  89. package/dist/agents/suggestion.generator.d.ts +24 -0
  90. package/dist/agents/suggestion.generator.d.ts.map +1 -0
  91. package/dist/agents/suggestion.generator.js +96 -0
  92. package/dist/agents/suggestion.generator.js.map +1 -0
  93. package/dist/graphs/chat.graph.d.ts +312 -0
  94. package/dist/graphs/chat.graph.d.ts.map +1 -0
  95. package/dist/graphs/chat.graph.js +267 -0
  96. package/dist/graphs/chat.graph.js.map +1 -0
  97. package/dist/graphs/home.graph.d.ts +180 -0
  98. package/dist/graphs/home.graph.d.ts.map +1 -0
  99. package/dist/graphs/home.graph.js +598 -0
  100. package/dist/graphs/home.graph.js.map +1 -0
  101. package/dist/graphs/hyde.graph.d.ts +110 -0
  102. package/dist/graphs/hyde.graph.d.ts.map +1 -0
  103. package/dist/graphs/hyde.graph.js +235 -0
  104. package/dist/graphs/hyde.graph.js.map +1 -0
  105. package/dist/graphs/index.graph.d.ts +620 -0
  106. package/dist/graphs/index.graph.d.ts.map +1 -0
  107. package/dist/graphs/index.graph.js +226 -0
  108. package/dist/graphs/index.graph.js.map +1 -0
  109. package/dist/graphs/index_membership.graph.d.ts +250 -0
  110. package/dist/graphs/index_membership.graph.d.ts.map +1 -0
  111. package/dist/graphs/index_membership.graph.js +204 -0
  112. package/dist/graphs/index_membership.graph.js.map +1 -0
  113. package/dist/graphs/intent.graph.d.ts +490 -0
  114. package/dist/graphs/intent.graph.d.ts.map +1 -0
  115. package/dist/graphs/intent.graph.js +787 -0
  116. package/dist/graphs/intent.graph.js.map +1 -0
  117. package/dist/graphs/intent_index.graph.d.ts +396 -0
  118. package/dist/graphs/intent_index.graph.d.ts.map +1 -0
  119. package/dist/graphs/intent_index.graph.js +331 -0
  120. package/dist/graphs/intent_index.graph.js.map +1 -0
  121. package/dist/graphs/maintenance.graph.d.ts +177 -0
  122. package/dist/graphs/maintenance.graph.d.ts.map +1 -0
  123. package/dist/graphs/maintenance.graph.js +173 -0
  124. package/dist/graphs/maintenance.graph.js.map +1 -0
  125. package/dist/graphs/negotiation.graph.d.ts +819 -0
  126. package/dist/graphs/negotiation.graph.d.ts.map +1 -0
  127. package/dist/graphs/negotiation.graph.js +255 -0
  128. package/dist/graphs/negotiation.graph.js.map +1 -0
  129. package/dist/graphs/opportunity.graph.d.ts +1082 -0
  130. package/dist/graphs/opportunity.graph.d.ts.map +1 -0
  131. package/dist/graphs/opportunity.graph.js +2534 -0
  132. package/dist/graphs/opportunity.graph.js.map +1 -0
  133. package/dist/graphs/profile.graph.d.ts +617 -0
  134. package/dist/graphs/profile.graph.d.ts.map +1 -0
  135. package/dist/graphs/profile.graph.js +839 -0
  136. package/dist/graphs/profile.graph.js.map +1 -0
  137. package/dist/graphs/tests/chat.graph.mocks.d.ts +104 -0
  138. package/dist/graphs/tests/chat.graph.mocks.d.ts.map +1 -0
  139. package/dist/graphs/tests/chat.graph.mocks.js +225 -0
  140. package/dist/graphs/tests/chat.graph.mocks.js.map +1 -0
  141. package/dist/index.d.ts +62 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +44 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/interfaces/auth.interface.d.ts +15 -0
  146. package/dist/interfaces/auth.interface.d.ts.map +1 -0
  147. package/dist/interfaces/auth.interface.js +2 -0
  148. package/dist/interfaces/auth.interface.js.map +1 -0
  149. package/dist/interfaces/cache.interface.d.ts +43 -0
  150. package/dist/interfaces/cache.interface.d.ts.map +1 -0
  151. package/dist/interfaces/cache.interface.js +6 -0
  152. package/dist/interfaces/cache.interface.js.map +1 -0
  153. package/dist/interfaces/chat-session.interface.d.ts +11 -0
  154. package/dist/interfaces/chat-session.interface.d.ts.map +1 -0
  155. package/dist/interfaces/chat-session.interface.js +2 -0
  156. package/dist/interfaces/chat-session.interface.js.map +1 -0
  157. package/dist/interfaces/contact.interface.d.ts +48 -0
  158. package/dist/interfaces/contact.interface.d.ts.map +1 -0
  159. package/dist/interfaces/contact.interface.js +2 -0
  160. package/dist/interfaces/contact.interface.js.map +1 -0
  161. package/dist/interfaces/database.interface.d.ts +1495 -0
  162. package/dist/interfaces/database.interface.d.ts.map +1 -0
  163. package/dist/interfaces/database.interface.js +2 -0
  164. package/dist/interfaces/database.interface.js.map +1 -0
  165. package/dist/interfaces/embedder.interface.d.ts +85 -0
  166. package/dist/interfaces/embedder.interface.d.ts.map +1 -0
  167. package/dist/interfaces/embedder.interface.js +5 -0
  168. package/dist/interfaces/embedder.interface.js.map +1 -0
  169. package/dist/interfaces/enrichment.interface.d.ts +40 -0
  170. package/dist/interfaces/enrichment.interface.d.ts.map +1 -0
  171. package/dist/interfaces/enrichment.interface.js +2 -0
  172. package/dist/interfaces/enrichment.interface.js.map +1 -0
  173. package/dist/interfaces/integration.interface.d.ts +91 -0
  174. package/dist/interfaces/integration.interface.d.ts.map +1 -0
  175. package/dist/interfaces/integration.interface.js +2 -0
  176. package/dist/interfaces/integration.interface.js.map +1 -0
  177. package/dist/interfaces/queue.interface.d.ts +17 -0
  178. package/dist/interfaces/queue.interface.d.ts.map +1 -0
  179. package/dist/interfaces/queue.interface.js +5 -0
  180. package/dist/interfaces/queue.interface.js.map +1 -0
  181. package/dist/interfaces/scraper.interface.d.ts +31 -0
  182. package/dist/interfaces/scraper.interface.d.ts.map +1 -0
  183. package/dist/interfaces/scraper.interface.js +2 -0
  184. package/dist/interfaces/scraper.interface.js.map +1 -0
  185. package/dist/interfaces/storage.interface.d.ts +46 -0
  186. package/dist/interfaces/storage.interface.d.ts.map +1 -0
  187. package/dist/interfaces/storage.interface.js +6 -0
  188. package/dist/interfaces/storage.interface.js.map +1 -0
  189. package/dist/mcp/mcp.server.d.ts +29 -0
  190. package/dist/mcp/mcp.server.d.ts.map +1 -0
  191. package/dist/mcp/mcp.server.js +171 -0
  192. package/dist/mcp/mcp.server.js.map +1 -0
  193. package/dist/states/chat.state.d.ts +126 -0
  194. package/dist/states/chat.state.d.ts.map +1 -0
  195. package/dist/states/chat.state.js +112 -0
  196. package/dist/states/chat.state.js.map +1 -0
  197. package/dist/states/home.state.d.ts +100 -0
  198. package/dist/states/home.state.d.ts.map +1 -0
  199. package/dist/states/home.state.js +74 -0
  200. package/dist/states/home.state.js.map +1 -0
  201. package/dist/states/hyde.state.d.ts +54 -0
  202. package/dist/states/hyde.state.d.ts.map +1 -0
  203. package/dist/states/hyde.state.js +66 -0
  204. package/dist/states/hyde.state.js.map +1 -0
  205. package/dist/states/index.state.d.ts +179 -0
  206. package/dist/states/index.state.d.ts.map +1 -0
  207. package/dist/states/index.state.js +56 -0
  208. package/dist/states/index.state.js.map +1 -0
  209. package/dist/states/index_membership.state.d.ts +77 -0
  210. package/dist/states/index_membership.state.d.ts.map +1 -0
  211. package/dist/states/index_membership.state.js +43 -0
  212. package/dist/states/index_membership.state.js.map +1 -0
  213. package/dist/states/intent.state.d.ts +203 -0
  214. package/dist/states/intent.state.d.ts.map +1 -0
  215. package/dist/states/intent.state.js +153 -0
  216. package/dist/states/intent.state.js.map +1 -0
  217. package/dist/states/intent_index.state.d.ts +148 -0
  218. package/dist/states/intent_index.state.d.ts.map +1 -0
  219. package/dist/states/intent_index.state.js +100 -0
  220. package/dist/states/intent_index.state.js.map +1 -0
  221. package/dist/states/maintenance.state.d.ts +36 -0
  222. package/dist/states/maintenance.state.d.ts.map +1 -0
  223. package/dist/states/maintenance.state.js +56 -0
  224. package/dist/states/maintenance.state.js.map +1 -0
  225. package/dist/states/negotiation.state.d.ts +230 -0
  226. package/dist/states/negotiation.state.d.ts.map +1 -0
  227. package/dist/states/negotiation.state.js +82 -0
  228. package/dist/states/negotiation.state.js.map +1 -0
  229. package/dist/states/opportunity.state.d.ts +300 -0
  230. package/dist/states/opportunity.state.d.ts.map +1 -0
  231. package/dist/states/opportunity.state.js +207 -0
  232. package/dist/states/opportunity.state.js.map +1 -0
  233. package/dist/states/profile.state.d.ts +172 -0
  234. package/dist/states/profile.state.d.ts.map +1 -0
  235. package/dist/states/profile.state.js +133 -0
  236. package/dist/states/profile.state.js.map +1 -0
  237. package/dist/streamers/chat.streamer.d.ts +55 -0
  238. package/dist/streamers/chat.streamer.d.ts.map +1 -0
  239. package/dist/streamers/chat.streamer.js +186 -0
  240. package/dist/streamers/chat.streamer.js.map +1 -0
  241. package/dist/streamers/index.d.ts +3 -0
  242. package/dist/streamers/index.d.ts.map +1 -0
  243. package/dist/streamers/index.js +3 -0
  244. package/dist/streamers/index.js.map +1 -0
  245. package/dist/streamers/response.streamer.d.ts +36 -0
  246. package/dist/streamers/response.streamer.d.ts.map +1 -0
  247. package/dist/streamers/response.streamer.js +46 -0
  248. package/dist/streamers/response.streamer.js.map +1 -0
  249. package/dist/support/chat.utils.d.ts +42 -0
  250. package/dist/support/chat.utils.d.ts.map +1 -0
  251. package/dist/support/chat.utils.js +89 -0
  252. package/dist/support/chat.utils.js.map +1 -0
  253. package/dist/support/debug-meta.sanitizer.d.ts +18 -0
  254. package/dist/support/debug-meta.sanitizer.d.ts.map +1 -0
  255. package/dist/support/debug-meta.sanitizer.js +82 -0
  256. package/dist/support/debug-meta.sanitizer.js.map +1 -0
  257. package/dist/support/feed.health.d.ts +32 -0
  258. package/dist/support/feed.health.d.ts.map +1 -0
  259. package/dist/support/feed.health.js +76 -0
  260. package/dist/support/feed.health.js.map +1 -0
  261. package/dist/support/introducer.discovery.d.ts +78 -0
  262. package/dist/support/introducer.discovery.d.ts.map +1 -0
  263. package/dist/support/introducer.discovery.js +101 -0
  264. package/dist/support/introducer.discovery.js.map +1 -0
  265. package/dist/support/log.d.ts +65 -0
  266. package/dist/support/log.d.ts.map +1 -0
  267. package/dist/support/log.js +76 -0
  268. package/dist/support/log.js.map +1 -0
  269. package/dist/support/lucide.icon-catalog.d.ts +22 -0
  270. package/dist/support/lucide.icon-catalog.d.ts.map +1 -0
  271. package/dist/support/lucide.icon-catalog.js +101 -0
  272. package/dist/support/lucide.icon-catalog.js.map +1 -0
  273. package/dist/support/opportunity.card-text.d.ts +39 -0
  274. package/dist/support/opportunity.card-text.d.ts.map +1 -0
  275. package/dist/support/opportunity.card-text.js +333 -0
  276. package/dist/support/opportunity.card-text.js.map +1 -0
  277. package/dist/support/opportunity.constants.d.ts +9 -0
  278. package/dist/support/opportunity.constants.d.ts.map +1 -0
  279. package/dist/support/opportunity.constants.js +11 -0
  280. package/dist/support/opportunity.constants.js.map +1 -0
  281. package/dist/support/opportunity.discover.d.ts +144 -0
  282. package/dist/support/opportunity.discover.d.ts.map +1 -0
  283. package/dist/support/opportunity.discover.js +610 -0
  284. package/dist/support/opportunity.discover.js.map +1 -0
  285. package/dist/support/opportunity.enricher.d.ts +44 -0
  286. package/dist/support/opportunity.enricher.d.ts.map +1 -0
  287. package/dist/support/opportunity.enricher.js +245 -0
  288. package/dist/support/opportunity.enricher.js.map +1 -0
  289. package/dist/support/opportunity.persist.d.ts +39 -0
  290. package/dist/support/opportunity.persist.d.ts.map +1 -0
  291. package/dist/support/opportunity.persist.js +63 -0
  292. package/dist/support/opportunity.persist.js.map +1 -0
  293. package/dist/support/opportunity.presentation.d.ts +21 -0
  294. package/dist/support/opportunity.presentation.d.ts.map +1 -0
  295. package/dist/support/opportunity.presentation.js +75 -0
  296. package/dist/support/opportunity.presentation.js.map +1 -0
  297. package/dist/support/opportunity.sanitize.d.ts +18 -0
  298. package/dist/support/opportunity.sanitize.d.ts.map +1 -0
  299. package/dist/support/opportunity.sanitize.js +89 -0
  300. package/dist/support/opportunity.sanitize.js.map +1 -0
  301. package/dist/support/opportunity.utils.d.ts +99 -0
  302. package/dist/support/opportunity.utils.d.ts.map +1 -0
  303. package/dist/support/opportunity.utils.js +184 -0
  304. package/dist/support/opportunity.utils.js.map +1 -0
  305. package/dist/support/performance.d.ts +19 -0
  306. package/dist/support/performance.d.ts.map +1 -0
  307. package/dist/support/performance.js +43 -0
  308. package/dist/support/performance.js.map +1 -0
  309. package/dist/support/profile.enrichment-display-name.d.ts +16 -0
  310. package/dist/support/profile.enrichment-display-name.d.ts.map +1 -0
  311. package/dist/support/profile.enrichment-display-name.js +22 -0
  312. package/dist/support/profile.enrichment-display-name.js.map +1 -0
  313. package/dist/support/protocol.logger.d.ts +22 -0
  314. package/dist/support/protocol.logger.d.ts.map +1 -0
  315. package/dist/support/protocol.logger.js +44 -0
  316. package/dist/support/protocol.logger.js.map +1 -0
  317. package/dist/support/request-context.d.ts +19 -0
  318. package/dist/support/request-context.d.ts.map +1 -0
  319. package/dist/support/request-context.js +7 -0
  320. package/dist/support/request-context.js.map +1 -0
  321. package/dist/tools/contact.tools.d.ts +7 -0
  322. package/dist/tools/contact.tools.d.ts.map +1 -0
  323. package/dist/tools/contact.tools.js +115 -0
  324. package/dist/tools/contact.tools.js.map +1 -0
  325. package/dist/tools/index.d.ts +17 -0
  326. package/dist/tools/index.d.ts.map +1 -0
  327. package/dist/tools/index.js +140 -0
  328. package/dist/tools/index.js.map +1 -0
  329. package/dist/tools/index.tools.d.ts +3 -0
  330. package/dist/tools/index.tools.d.ts.map +1 -0
  331. package/dist/tools/index.tools.js +423 -0
  332. package/dist/tools/index.tools.js.map +1 -0
  333. package/dist/tools/integration.tools.d.ts +13 -0
  334. package/dist/tools/integration.tools.d.ts.map +1 -0
  335. package/dist/tools/integration.tools.js +77 -0
  336. package/dist/tools/integration.tools.js.map +1 -0
  337. package/dist/tools/intent.tools.d.ts +3 -0
  338. package/dist/tools/intent.tools.d.ts.map +1 -0
  339. package/dist/tools/intent.tools.js +458 -0
  340. package/dist/tools/intent.tools.js.map +1 -0
  341. package/dist/tools/opportunity.tools.d.ts +44 -0
  342. package/dist/tools/opportunity.tools.d.ts.map +1 -0
  343. package/dist/tools/opportunity.tools.js +814 -0
  344. package/dist/tools/opportunity.tools.js.map +1 -0
  345. package/dist/tools/profile.tools.d.ts +3 -0
  346. package/dist/tools/profile.tools.d.ts.map +1 -0
  347. package/dist/tools/profile.tools.js +513 -0
  348. package/dist/tools/profile.tools.js.map +1 -0
  349. package/dist/tools/tool.helpers.d.ts +225 -0
  350. package/dist/tools/tool.helpers.d.ts.map +1 -0
  351. package/dist/tools/tool.helpers.js +172 -0
  352. package/dist/tools/tool.helpers.js.map +1 -0
  353. package/dist/tools/tool.registry.d.ts +12 -0
  354. package/dist/tools/tool.registry.d.ts.map +1 -0
  355. package/dist/tools/tool.registry.js +62 -0
  356. package/dist/tools/tool.registry.js.map +1 -0
  357. package/dist/tools/utility.tools.d.ts +3 -0
  358. package/dist/tools/utility.tools.d.ts.map +1 -0
  359. package/dist/tools/utility.tools.js +107 -0
  360. package/dist/tools/utility.tools.js.map +1 -0
  361. package/dist/types/chat-streaming.types.d.ts +472 -0
  362. package/dist/types/chat-streaming.types.d.ts.map +1 -0
  363. package/dist/types/chat-streaming.types.js +260 -0
  364. package/dist/types/chat-streaming.types.js.map +1 -0
  365. package/package.json +32 -0
@@ -0,0 +1,172 @@
1
+ import { ProfileDocument } from "../agents/profile.generator.js";
2
+ import type { DebugMetaAgent } from '../types/chat-streaming.types.js';
3
+ /**
4
+ * The Graph State for Profile Generation.
5
+ */
6
+ export declare const ProfileGraphState: import("@langchain/langgraph").AnnotationRoot<{
7
+ /**
8
+ * The User ID to link the profile to.
9
+ */
10
+ userId: {
11
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
12
+ (): import("@langchain/langgraph").LastValue<string>;
13
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
14
+ };
15
+ /**
16
+ * Operation mode controls graph flow:
17
+ * - 'query': Fast path - only retrieve existing profile (no generation)
18
+ * - 'write': Full pipeline - generate/update profile and hyde as needed
19
+ * - 'generate': Auto-generate profile from user table data via enrichUserProfile Chat API
20
+ */
21
+ operationMode: import("@langchain/langgraph").BaseChannel<"query" | "write" | "generate", "query" | "write" | "generate" | import("@langchain/langgraph").OverwriteValue<"query" | "write" | "generate">, unknown>;
22
+ /**
23
+ * Flag to force profile regeneration even if profile exists.
24
+ * When true with new input, the graph will re-generate and update the profile.
25
+ */
26
+ forceUpdate: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
27
+ /**
28
+ * Pre-populated profile from external enrichment (e.g. Parallel Chat API).
29
+ * When provided, the graph skips profile generation and only runs embedding + HyDE.
30
+ */
31
+ prePopulatedProfile: import("@langchain/langgraph").BaseChannel<{
32
+ identity: {
33
+ name: string;
34
+ bio: string;
35
+ location: string;
36
+ };
37
+ narrative: {
38
+ context: string;
39
+ };
40
+ attributes: {
41
+ skills: string[];
42
+ interests: string[];
43
+ };
44
+ } | undefined, {
45
+ identity: {
46
+ name: string;
47
+ bio: string;
48
+ location: string;
49
+ };
50
+ narrative: {
51
+ context: string;
52
+ };
53
+ attributes: {
54
+ skills: string[];
55
+ interests: string[];
56
+ };
57
+ } | import("@langchain/langgraph").OverwriteValue<{
58
+ identity: {
59
+ name: string;
60
+ bio: string;
61
+ location: string;
62
+ };
63
+ narrative: {
64
+ context: string;
65
+ };
66
+ attributes: {
67
+ skills: string[];
68
+ interests: string[];
69
+ };
70
+ } | undefined> | undefined, unknown>;
71
+ /**
72
+ * Internal objective constructed from user data.
73
+ */
74
+ objective: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
75
+ /**
76
+ * Raw input data (either provided or scraped).
77
+ */
78
+ input: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
79
+ /**
80
+ * The generated or loaded profile document.
81
+ * Includes embedding from DB. Profile HyDE is stored in hyde_documents.
82
+ */
83
+ profile: import("@langchain/langgraph").BaseChannel<ProfileDocument | undefined, ProfileDocument | import("@langchain/langgraph").OverwriteValue<ProfileDocument | undefined> | undefined, unknown>;
84
+ /**
85
+ * Flags to track what needs to be generated.
86
+ */
87
+ needsProfileGeneration: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
88
+ needsProfileEmbedding: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
89
+ needsHydeGeneration: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
90
+ needsHydeEmbedding: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
91
+ /**
92
+ * Flag indicating that user information is insufficient for accurate profile generation.
93
+ * When true, the graph should request additional information from the user.
94
+ */
95
+ needsUserInfo: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
96
+ /**
97
+ * List of missing user information fields.
98
+ * Used to construct a helpful clarification message.
99
+ */
100
+ missingUserInfo: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
101
+ /**
102
+ * The generated HyDE description string from the HydeGenerator.
103
+ */
104
+ hydeDescription: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
105
+ /**
106
+ * Error message if any step fails (non-fatal).
107
+ */
108
+ error: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
109
+ /**
110
+ * Tracks which operations were actually performed during this graph execution.
111
+ * Used to provide explicit feedback to the user about what happened.
112
+ */
113
+ operationsPerformed: import("@langchain/langgraph").BaseChannel<{
114
+ scraped?: boolean;
115
+ generatedProfile?: boolean;
116
+ embeddedProfile?: boolean;
117
+ generatedHyde?: boolean;
118
+ embeddedHyde?: boolean;
119
+ }, {
120
+ scraped?: boolean;
121
+ generatedProfile?: boolean;
122
+ embeddedProfile?: boolean;
123
+ generatedHyde?: boolean;
124
+ embeddedHyde?: boolean;
125
+ } | import("@langchain/langgraph").OverwriteValue<{
126
+ scraped?: boolean;
127
+ generatedProfile?: boolean;
128
+ embeddedProfile?: boolean;
129
+ generatedHyde?: boolean;
130
+ embeddedHyde?: boolean;
131
+ }>, unknown>;
132
+ /** Timing records for each agent invocation within this graph run. */
133
+ agentTimings: import("@langchain/langgraph").BaseChannel<DebugMetaAgent[], DebugMetaAgent[] | import("@langchain/langgraph").OverwriteValue<DebugMetaAgent[]>, unknown>;
134
+ /**
135
+ * Output for query mode: structured result for the tool to read.
136
+ */
137
+ readResult: import("@langchain/langgraph").BaseChannel<{
138
+ hasProfile: boolean;
139
+ profile?: {
140
+ id?: string;
141
+ name: string;
142
+ bio: string;
143
+ location: string;
144
+ skills: string[];
145
+ interests: string[];
146
+ };
147
+ message?: string;
148
+ } | undefined, {
149
+ hasProfile: boolean;
150
+ profile?: {
151
+ id?: string;
152
+ name: string;
153
+ bio: string;
154
+ location: string;
155
+ skills: string[];
156
+ interests: string[];
157
+ };
158
+ message?: string;
159
+ } | import("@langchain/langgraph").OverwriteValue<{
160
+ hasProfile: boolean;
161
+ profile?: {
162
+ id?: string;
163
+ name: string;
164
+ bio: string;
165
+ location: string;
166
+ skills: string[];
167
+ interests: string[];
168
+ };
169
+ message?: string;
170
+ } | undefined> | undefined, unknown>;
171
+ }>;
172
+ //# sourceMappingURL=profile.state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.state.d.ts","sourceRoot":"","sources":["../../src/states/profile.state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAE5B;;OAEG;;;;;;IAKH;;;;;OAKG;;IAMH;;;OAGG;;IAQH;;;OAGG;;kBAES;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE;mBAC9C;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE;oBAClB;YAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAAC,SAAS,EAAE,MAAM,EAAE,CAAA;SAAE;;kBAF3C;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE;mBAC9C;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE;oBAClB;YAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAAC,SAAS,EAAE,MAAM,EAAE,CAAA;SAAE;;kBAF3C;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE;mBAC9C;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE;oBAClB;YAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAAC,SAAS,EAAE,MAAM,EAAE,CAAA;SAAE;;IAMvD;;OAEG;;IAMH;;OAEG;;IAMH;;;OAGG;;IAMH;;OAEG;;;;;IAqBH;;;OAGG;;IAMH;;;OAGG;;IAQH;;OAEG;;IAMH;;OAEG;;IAQH;;;OAGG;;kBAES,OAAO;2BACE,OAAO;0BACR,OAAO;wBACT,OAAO;uBACR,OAAO;;kBAJZ,OAAO;2BACE,OAAO;0BACR,OAAO;wBACT,OAAO;uBACR,OAAO;;kBAJZ,OAAO;2BACE,OAAO;0BACR,OAAO;wBACT,OAAO;uBACR,OAAO;;IAMxB,sEAAsE;;IAMtE;;OAEG;;oBAEW,OAAO;kBACT;YACR,EAAE,CAAC,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,SAAS,EAAE,MAAM,EAAE,CAAC;SACrB;kBACS,MAAM;;oBATJ,OAAO;kBACT;YACR,EAAE,CAAC,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,SAAS,EAAE,MAAM,EAAE,CAAC;SACrB;kBACS,MAAM;;oBATJ,OAAO;kBACT;YACR,EAAE,CAAC,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,SAAS,EAAE,MAAM,EAAE,CAAC;SACrB;kBACS,MAAM;;EAKlB,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { Annotation } from "@langchain/langgraph";
2
+ /**
3
+ * The Graph State for Profile Generation.
4
+ */
5
+ export const ProfileGraphState = Annotation.Root({
6
+ // --- Inputs (Required at start) ---
7
+ /**
8
+ * The User ID to link the profile to.
9
+ */
10
+ userId: (Annotation),
11
+ // --- Control Fields (Operation Mode) ---
12
+ /**
13
+ * Operation mode controls graph flow:
14
+ * - 'query': Fast path - only retrieve existing profile (no generation)
15
+ * - 'write': Full pipeline - generate/update profile and hyde as needed
16
+ * - 'generate': Auto-generate profile from user table data via enrichUserProfile Chat API
17
+ */
18
+ operationMode: Annotation({
19
+ reducer: (curr, next) => next ?? curr,
20
+ default: () => 'write',
21
+ }),
22
+ /**
23
+ * Flag to force profile regeneration even if profile exists.
24
+ * When true with new input, the graph will re-generate and update the profile.
25
+ */
26
+ forceUpdate: Annotation({
27
+ reducer: (curr, next) => next ?? curr,
28
+ default: () => false,
29
+ }),
30
+ // --- Intermediate State ---
31
+ /**
32
+ * Pre-populated profile from external enrichment (e.g. Parallel Chat API).
33
+ * When provided, the graph skips profile generation and only runs embedding + HyDE.
34
+ */
35
+ prePopulatedProfile: Annotation({
36
+ reducer: (curr, next) => next,
37
+ default: () => undefined,
38
+ }),
39
+ /**
40
+ * Internal objective constructed from user data.
41
+ */
42
+ objective: Annotation({
43
+ reducer: (curr, next) => next,
44
+ default: () => undefined,
45
+ }),
46
+ /**
47
+ * Raw input data (either provided or scraped).
48
+ */
49
+ input: Annotation({
50
+ reducer: (curr, next) => next,
51
+ default: () => undefined,
52
+ }),
53
+ /**
54
+ * The generated or loaded profile document.
55
+ * Includes embedding from DB. Profile HyDE is stored in hyde_documents.
56
+ */
57
+ profile: Annotation({
58
+ reducer: (curr, next) => next,
59
+ default: () => undefined,
60
+ }),
61
+ /**
62
+ * Flags to track what needs to be generated.
63
+ */
64
+ needsProfileGeneration: Annotation({
65
+ reducer: (curr, next) => next ?? curr,
66
+ default: () => false,
67
+ }),
68
+ needsProfileEmbedding: Annotation({
69
+ reducer: (curr, next) => next ?? curr,
70
+ default: () => false,
71
+ }),
72
+ needsHydeGeneration: Annotation({
73
+ reducer: (curr, next) => next ?? curr,
74
+ default: () => false,
75
+ }),
76
+ needsHydeEmbedding: Annotation({
77
+ reducer: (curr, next) => next ?? curr,
78
+ default: () => false,
79
+ }),
80
+ /**
81
+ * Flag indicating that user information is insufficient for accurate profile generation.
82
+ * When true, the graph should request additional information from the user.
83
+ */
84
+ needsUserInfo: Annotation({
85
+ reducer: (curr, next) => next ?? curr,
86
+ default: () => false,
87
+ }),
88
+ /**
89
+ * List of missing user information fields.
90
+ * Used to construct a helpful clarification message.
91
+ */
92
+ missingUserInfo: Annotation({
93
+ reducer: (curr, next) => next ?? curr,
94
+ default: () => [],
95
+ }),
96
+ // --- Output ---
97
+ /**
98
+ * The generated HyDE description string from the HydeGenerator.
99
+ */
100
+ hydeDescription: Annotation({
101
+ reducer: (curr, next) => next,
102
+ default: () => undefined,
103
+ }),
104
+ /**
105
+ * Error message if any step fails (non-fatal).
106
+ */
107
+ error: Annotation({
108
+ reducer: (curr, next) => next,
109
+ default: () => undefined,
110
+ }),
111
+ // --- Operation Tracking (for transparency) ---
112
+ /**
113
+ * Tracks which operations were actually performed during this graph execution.
114
+ * Used to provide explicit feedback to the user about what happened.
115
+ */
116
+ operationsPerformed: Annotation({
117
+ reducer: (curr, next) => ({ ...curr, ...next }),
118
+ default: () => ({}),
119
+ }),
120
+ /** Timing records for each agent invocation within this graph run. */
121
+ agentTimings: Annotation({
122
+ reducer: (acc, val) => [...acc, ...val],
123
+ default: () => [],
124
+ }),
125
+ /**
126
+ * Output for query mode: structured result for the tool to read.
127
+ */
128
+ readResult: Annotation({
129
+ reducer: (curr, next) => next,
130
+ default: () => undefined,
131
+ }),
132
+ });
133
+ //# sourceMappingURL=profile.state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.state.js","sourceRoot":"","sources":["../../src/states/profile.state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { BaseMessage } from "@langchain/core/messages";
2
+ import { BaseCheckpointSaver } from "@langchain/langgraph";
3
+ import type { ChatStreamEvent } from "../types/chat-streaming.types.js";
4
+ /**
5
+ * Top-level streaming service for Chat Graph events.
6
+ *
7
+ * Uses `graph.stream()` with `streamMode: ["custom", "updates"]` so that
8
+ * the agent's `config.writer()` calls arrive as `"custom"` chunks (text
9
+ * tokens and tool-activity events) and the final state update arrives as
10
+ * an `"updates"` chunk.
11
+ */
12
+ export declare class ChatStreamer {
13
+ private loadSessionContext;
14
+ private createStreamingGraph;
15
+ constructor(loadSessionContext: (sessionId: string, maxMessages: number) => Promise<BaseMessage[]>, createStreamingGraph: (checkpointer?: BaseCheckpointSaver) => any);
16
+ /**
17
+ * Streams chat events with full session context.
18
+ * Loads previous conversation history and optionally uses a checkpointer
19
+ * for state persistence.
20
+ *
21
+ * @param input - Configuration for context-aware streaming
22
+ * @param checkpointer - Optional checkpointer for state persistence
23
+ * @yields ChatStreamEvent objects
24
+ */
25
+ streamChatEventsWithContext(input: {
26
+ userId: string;
27
+ message: string;
28
+ sessionId: string;
29
+ maxContextMessages?: number;
30
+ indexId?: string;
31
+ prefillMessages?: Array<{
32
+ role: "assistant" | "user";
33
+ content: string;
34
+ }>;
35
+ }, checkpointer?: BaseCheckpointSaver, signal?: AbortSignal): AsyncGenerator<ChatStreamEvent>;
36
+ /**
37
+ * Streams chat events from the graph execution.
38
+ *
39
+ * Uses `graph.stream()` with `streamMode: ["custom", "updates"]`:
40
+ * - `"custom"` chunks carry {@link AgentStreamEvent} objects emitted by
41
+ * `ChatAgent.streamRun()` via `config.writer()`
42
+ * - `"updates"` chunks carry the final state update from `agentLoopNode`
43
+ *
44
+ * @param input - The input state for the graph (userId and messages)
45
+ * @param sessionId - The session ID for event attribution
46
+ * @param checkpointer - Optional checkpointer for persistence
47
+ * @yields ChatStreamEvent objects
48
+ */
49
+ streamChatEvents(input: {
50
+ userId: string;
51
+ messages: BaseMessage[];
52
+ indexId?: string;
53
+ }, sessionId: string, checkpointer?: BaseCheckpointSaver, signal?: AbortSignal): AsyncGenerator<ChatStreamEvent>;
54
+ }
55
+ //# sourceMappingURL=chat.streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.streamer.d.ts","sourceRoot":"","sources":["../../src/streamers/chat.streamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,kCAAkC,CAAC;AA0B1C;;;;;;;GAOG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;gBAJpB,kBAAkB,EAAE,CAC1B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,WAAW,EAAE,CAAC,EACnB,oBAAoB,EAAE,CAC5B,YAAY,CAAC,EAAE,mBAAmB,KAC/B,GAAG;IAGV;;;;;;;;OAQG;IACW,2BAA2B,CACvC,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC1E,EACD,YAAY,CAAC,EAAE,mBAAmB,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,eAAe,CAAC;IA4DlC;;;;;;;;;;;;OAYG;IACW,gBAAgB,CAC5B,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EACpE,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,mBAAmB,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,eAAe,CAAC;CAqKnC"}
@@ -0,0 +1,186 @@
1
+ import { AIMessage, HumanMessage } from "@langchain/core/messages";
2
+ import { protocolLogger } from "../support/protocol.logger.js";
3
+ import { createAgentEndEvent, createAgentStartEvent, createDebugMetaEvent, createErrorEvent, createGraphEndEvent, createGraphStartEvent, createIterationStartEvent, createLlmStartEvent, createLlmEndEvent, createResponseCompleteEvent, createResponseResetEvent, createHallucinationDetectedEvent, createStatusEvent, createTokenEvent, createToolActivityEvent, } from "../types/chat-streaming.types.js";
4
+ const logger = protocolLogger("ChatStreamer");
5
+ // ══════════════════════════════════════════════════════════════════════════════
6
+ // CHAT STREAMER (Streaming Narration Architecture)
7
+ // ══════════════════════════════════════════════════════════════════════════════
8
+ /**
9
+ * Top-level streaming service for Chat Graph events.
10
+ *
11
+ * Uses `graph.stream()` with `streamMode: ["custom", "updates"]` so that
12
+ * the agent's `config.writer()` calls arrive as `"custom"` chunks (text
13
+ * tokens and tool-activity events) and the final state update arrives as
14
+ * an `"updates"` chunk.
15
+ */
16
+ export class ChatStreamer {
17
+ constructor(loadSessionContext, createStreamingGraph) {
18
+ this.loadSessionContext = loadSessionContext;
19
+ this.createStreamingGraph = createStreamingGraph;
20
+ }
21
+ /**
22
+ * Streams chat events with full session context.
23
+ * Loads previous conversation history and optionally uses a checkpointer
24
+ * for state persistence.
25
+ *
26
+ * @param input - Configuration for context-aware streaming
27
+ * @param checkpointer - Optional checkpointer for state persistence
28
+ * @yields ChatStreamEvent objects
29
+ */
30
+ async *streamChatEventsWithContext(input, checkpointer, signal) {
31
+ const { userId, message, sessionId, maxContextMessages = 20, indexId, prefillMessages, } = input;
32
+ logger.verbose("Starting context-aware streaming", {
33
+ userId,
34
+ sessionId,
35
+ maxContextMessages,
36
+ hasCheckpointer: !!checkpointer,
37
+ hasIndexId: !!indexId,
38
+ indexId: indexId ?? undefined,
39
+ });
40
+ try {
41
+ // Load previous conversation context
42
+ const previousMessages = await this.loadSessionContext(sessionId, maxContextMessages);
43
+ // Inject prefill messages (e.g. hardcoded onboarding greeting) only for fresh sessions
44
+ const prefill = previousMessages.length === 0
45
+ ? (prefillMessages ?? []).map((pm) => pm.role === "assistant" ? new AIMessage(pm.content) : new HumanMessage(pm.content))
46
+ : [];
47
+ const allMessages = [...previousMessages, ...prefill, new HumanMessage(message)];
48
+ logger.verbose("Context prepared", {
49
+ previousCount: previousMessages.length,
50
+ totalCount: allMessages.length,
51
+ });
52
+ // Stream with context using the optional checkpointer
53
+ yield* this.streamChatEvents({ userId, messages: allMessages, indexId }, sessionId, checkpointer, signal);
54
+ }
55
+ catch (error) {
56
+ logger.error("Stream error", {
57
+ error: error instanceof Error ? error.message : String(error),
58
+ });
59
+ yield createErrorEvent(sessionId, error instanceof Error
60
+ ? error.message
61
+ : "Unknown error during context-aware streaming", "CONTEXT_STREAM_ERROR");
62
+ }
63
+ }
64
+ /**
65
+ * Streams chat events from the graph execution.
66
+ *
67
+ * Uses `graph.stream()` with `streamMode: ["custom", "updates"]`:
68
+ * - `"custom"` chunks carry {@link AgentStreamEvent} objects emitted by
69
+ * `ChatAgent.streamRun()` via `config.writer()`
70
+ * - `"updates"` chunks carry the final state update from `agentLoopNode`
71
+ *
72
+ * @param input - The input state for the graph (userId and messages)
73
+ * @param sessionId - The session ID for event attribution
74
+ * @param checkpointer - Optional checkpointer for persistence
75
+ * @yields ChatStreamEvent objects
76
+ */
77
+ async *streamChatEvents(input, sessionId, checkpointer, signal) {
78
+ const graph = this.createStreamingGraph(checkpointer);
79
+ try {
80
+ const initialState = {
81
+ userId: input.userId,
82
+ messages: input.messages,
83
+ };
84
+ if (input.indexId)
85
+ initialState.indexId = input.indexId;
86
+ initialState.sessionId = sessionId;
87
+ // Use graph.stream() with custom + updates modes.
88
+ // Custom events come from config.writer() inside agentLoopNode.
89
+ const eventStream = await graph.stream(initialState, {
90
+ streamMode: ["custom", "updates"],
91
+ configurable: { thread_id: sessionId, signal },
92
+ signal,
93
+ });
94
+ // Emit initial status
95
+ yield createStatusEvent(sessionId, "Processing your message...");
96
+ for await (const tuple of eventStream) {
97
+ if (signal?.aborted)
98
+ break;
99
+ // graph.stream with multiple modes yields [mode, chunk] tuples
100
+ const [mode, chunk] = tuple;
101
+ // ─────────────────────────────────────────────────────────────────
102
+ // CUSTOM: writer events from ChatAgent.streamRun()
103
+ // ─────────────────────────────────────────────────────────────────
104
+ if (mode === "custom") {
105
+ const event = chunk;
106
+ if (event.type === "iteration_start") {
107
+ yield createIterationStartEvent(sessionId, event.iteration);
108
+ }
109
+ if (event.type === "llm_start") {
110
+ yield createLlmStartEvent(sessionId, event.iteration);
111
+ }
112
+ if (event.type === "text_chunk" && event.content) {
113
+ yield createTokenEvent(sessionId, event.content);
114
+ }
115
+ if (event.type === "response_reset") {
116
+ yield createResponseResetEvent(sessionId, event.reason);
117
+ }
118
+ if (event.type === "hallucination_detected") {
119
+ yield createHallucinationDetectedEvent(sessionId, event.blockType, event.tool);
120
+ }
121
+ if (event.type === "llm_end") {
122
+ yield createLlmEndEvent(sessionId, event.iteration, event.hasToolCalls, event.toolNames);
123
+ }
124
+ if (event.type === "tool_activity") {
125
+ logger.debug("Tool activity", { name: event.name, phase: event.phase });
126
+ if (event.phase === "start") {
127
+ yield createToolActivityEvent(sessionId, event.name, event.name, "start");
128
+ }
129
+ else {
130
+ yield createToolActivityEvent(sessionId, event.name, event.name, "end", event.success, event.summary, event.steps);
131
+ }
132
+ }
133
+ if (event.type === "graph_start") {
134
+ yield createGraphStartEvent(sessionId, event.name);
135
+ }
136
+ if (event.type === "graph_end") {
137
+ yield createGraphEndEvent(sessionId, event.name, event.durationMs);
138
+ }
139
+ if (event.type === "agent_start") {
140
+ yield createAgentStartEvent(sessionId, event.name);
141
+ }
142
+ if (event.type === "agent_end") {
143
+ yield createAgentEndEvent(sessionId, event.name, event.durationMs, event.summary);
144
+ }
145
+ }
146
+ // ─────────────────────────────────────────────────────────────────
147
+ // UPDATES: final state from agentLoopNode
148
+ // ─────────────────────────────────────────────────────────────────
149
+ if (mode === "updates") {
150
+ // The updates chunk is { agent_loop: { responseText, error, ... } }
151
+ const updates = chunk;
152
+ const agentOutput = updates?.agent_loop;
153
+ if (agentOutput?.error) {
154
+ logger.warn("Agent loop returned error via updates", {
155
+ error: agentOutput.error,
156
+ });
157
+ yield createErrorEvent(sessionId, String(agentOutput.error), "AGENT_ERROR");
158
+ }
159
+ // Yield the agent's authoritative response text so the
160
+ // controller can persist it without relying on token accumulation.
161
+ const responseText = typeof agentOutput?.responseText === "string"
162
+ ? agentOutput.responseText
163
+ : "";
164
+ yield createResponseCompleteEvent(sessionId, responseText);
165
+ const debugMeta = agentOutput?.debugMeta;
166
+ if (debugMeta?.graph != null &&
167
+ typeof debugMeta.iterations === "number") {
168
+ yield createDebugMetaEvent(sessionId, debugMeta.graph, debugMeta.iterations, Array.isArray(debugMeta.tools) ? debugMeta.tools : []);
169
+ }
170
+ logger.verbose("Agent loop complete (updates)", {
171
+ responseLength: responseText.length,
172
+ });
173
+ }
174
+ }
175
+ }
176
+ catch (error) {
177
+ logger.error("Stream error", {
178
+ error: error instanceof Error ? error.message : String(error),
179
+ });
180
+ yield createErrorEvent(sessionId, error instanceof Error
181
+ ? error.message
182
+ : "Unknown error during streaming", "STREAM_ERROR");
183
+ }
184
+ }
185
+ }
186
+ //# sourceMappingURL=chat.streamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.streamer.js","sourceRoot":"","sources":["../../src/streamers/chat.streamer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './chat.streamer.js';
2
+ export * from './response.streamer.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streamers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './chat.streamer.js';
2
+ export * from './response.streamer.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streamers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { ChatStreamEvent } from "../types/chat-streaming.types.js";
2
+ /**
3
+ * Streams the final response from the chat agent.
4
+ *
5
+ * Processes the `on_chain_end` event emitted by the `agent_loop` node and
6
+ * yields either a token event (with the full response text) or an error event.
7
+ *
8
+ * Note on token streaming:
9
+ * We do NOT emit from `on_chat_model_stream` because `streamEvents` yields
10
+ * events from ALL model invocations, including nested ones
11
+ * (ExplicitIntentInferrer, SemanticVerifier, IntentReconciler, IntentIndexer)
12
+ * inside tools. Those emit structured JSON that must not reach the user. The
13
+ * chat agent uses `model.invoke()` so we don't get token-by-token streaming
14
+ * anyway. We only emit the clean final response from `on_chain_end`.
15
+ */
16
+ export declare class ResponseStreamer {
17
+ /**
18
+ * Processes an `on_chain_end` event whose name is `agent_loop`.
19
+ *
20
+ * @returns An array of stream events to yield (token and/or error), plus
21
+ * metadata for the caller to log.
22
+ */
23
+ handleAgentLoopEnd(sessionId: string, event: {
24
+ data?: {
25
+ output?: {
26
+ responseText?: string;
27
+ error?: string;
28
+ };
29
+ };
30
+ }): {
31
+ events: ChatStreamEvent[];
32
+ responseText: string;
33
+ hadError: boolean;
34
+ };
35
+ }
36
+ //# sourceMappingURL=response.streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.streamer.d.ts","sourceRoot":"","sources":["../../src/streamers/response.streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAaxE;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,kBAAkB,CAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE;gBAAE,YAAY,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,GACvE;QAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;CA4B1E"}