@indexnetwork/protocol 22.0.0-rc.498.1 → 64.0.0-rc.604.2

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 (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -132
  12. package/dist/index.js +41 -100
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -1,257 +0,0 @@
1
- import { StateGraph, START, END } from "@langchain/langgraph";
2
- import { HumanMessage } from "@langchain/core/messages";
3
- import { ChatGraphState } from "./chat.state.js";
4
- import { ChatAgent } from "./chat.agent.js";
5
- import { protocolLogger } from "../shared/observability/protocol.logger.js";
6
- import { truncateToTokenLimit, MAX_CONTEXT_TOKENS } from "./chat.utils.js";
7
- import { ChatStreamer } from "./chat.streamer.js";
8
- import { timed } from "../shared/observability/performance.js";
9
- const logger = protocolLogger("ChatGraphFactory");
10
- function isRetriableError(err) {
11
- const status = err.status ?? err.statusCode;
12
- if (typeof status === "number" && status >= 500 && status <= 599)
13
- return true;
14
- const msg = err instanceof Error ? err.message : String(err);
15
- const lower = msg.toLowerCase();
16
- return (lower.includes("internal server error") ||
17
- /\b500\b|status[: ]*500/i.test(msg) ||
18
- lower.includes("econnreset") ||
19
- lower.includes("etimedout"));
20
- }
21
- const RETRY_DELAY_MS = 800;
22
- export class ChatGraphFactory {
23
- constructor(database, embedder, scraper, chatSession, protocolDeps,
24
- /** Persona driving this graph's agent loop. Required — there is no default. */
25
- persona) {
26
- this.database = database;
27
- this.embedder = embedder;
28
- this.scraper = scraper;
29
- this.chatSession = chatSession;
30
- this.protocolDeps = protocolDeps;
31
- this.persona = persona;
32
- this.streamingService = new ChatStreamer((sessionId, maxMessages) => this.loadSessionContext(sessionId, maxMessages), (checkpointer) => this.createStreamingGraph(checkpointer));
33
- }
34
- /**
35
- * Returns a sibling factory sharing all dependencies but driven by a
36
- * different persona. Used to derive per-session persona factories (e.g. the
37
- * negotiator, whose identity comes from the user's personal agent row) from
38
- * the composition-root orchestrator factory without re-wiring deps.
39
- *
40
- * @param persona - The persona config for the derived factory
41
- * @returns A new ChatGraphFactory with identical deps and the given persona
42
- */
43
- withPersona(persona) {
44
- return new ChatGraphFactory(this.database, this.embedder, this.scraper, this.chatSession, this.protocolDeps, persona);
45
- }
46
- /**
47
- * Creates and compiles the Chat Graph without persistence.
48
- * @returns Compiled StateGraph ready for invocation
49
- */
50
- createGraph() {
51
- return this.buildGraph().compile();
52
- }
53
- /**
54
- * Creates a streaming-enabled graph with optional checkpointer for persistence.
55
- * @param checkpointer - Optional checkpointer (e.g., MemorySaver or PostgresSaver)
56
- * @returns Compiled StateGraph ready for streaming
57
- */
58
- createStreamingGraph(checkpointer) {
59
- const graph = this.buildGraph();
60
- if (checkpointer) {
61
- return graph.compile({ checkpointer });
62
- }
63
- return graph.compile();
64
- }
65
- /**
66
- * Load previous messages from a session and convert to LangChain messages.
67
- * Handles token truncation to fit within context window limits.
68
- *
69
- * @param sessionId - The session ID to load context from
70
- * @param maxMessages - Maximum number of messages to load (default: 20)
71
- * @returns Array of LangChain BaseMessage objects
72
- */
73
- async loadSessionContext(sessionId, maxMessages = 20) {
74
- logger.verbose("Loading session context", {
75
- sessionId,
76
- maxMessages,
77
- });
78
- try {
79
- const messages = await this.chatSession.getSessionMessages(sessionId, maxMessages);
80
- if (messages.length === 0) {
81
- logger.verbose("No previous messages found", { sessionId });
82
- return [];
83
- }
84
- // Convert database messages to LangChain format.
85
- // All roles map to HumanMessage to avoid circular dependency.
86
- const langchainMessages = messages.map((msg) => new HumanMessage(msg.content));
87
- // Truncate to fit within token limits
88
- const truncatedMessages = truncateToTokenLimit(langchainMessages, MAX_CONTEXT_TOKENS);
89
- logger.verbose("Context loaded", {
90
- sessionId,
91
- originalCount: messages.length,
92
- truncatedCount: truncatedMessages.length,
93
- });
94
- return truncatedMessages;
95
- }
96
- catch (error) {
97
- logger.error("Failed to load context", {
98
- sessionId,
99
- error: error instanceof Error ? error.message : String(error),
100
- });
101
- // Return empty array on error - don't fail the entire request
102
- return [];
103
- }
104
- }
105
- /**
106
- * Streams chat events with full session context.
107
- * Delegates to ChatGraphStreamingService.
108
- */
109
- async *streamChatEventsWithContext(input, checkpointer, signal) {
110
- yield* this.streamingService.streamChatEventsWithContext(input, checkpointer, signal);
111
- }
112
- /**
113
- * Streams chat events from the graph execution.
114
- * Delegates to ChatGraphStreamingService.
115
- */
116
- async *streamChatEvents(input, sessionId, checkpointer, signal) {
117
- yield* this.streamingService.streamChatEvents(input, sessionId, checkpointer, signal);
118
- }
119
- /**
120
- * Internal method to build the graph structure.
121
- * @returns Uncompiled StateGraph
122
- */
123
- buildGraph() {
124
- const deps = {
125
- database: this.database,
126
- embedder: this.embedder,
127
- scraper: this.scraper,
128
- protocolDeps: this.protocolDeps,
129
- persona: this.persona,
130
- };
131
- // ─────────────────────────────────────────────────────────────────────────
132
- // GRAPH ASSEMBLY
133
- // ─────────────────────────────────────────────────────────────────────────
134
- const workflow = new StateGraph(ChatGraphState)
135
- .addNode("agent_loop", (state, config) => agentLoopNode(state, config, deps))
136
- .addEdge(START, "agent_loop")
137
- .addEdge("agent_loop", END);
138
- logger.verbose("Graph built successfully (agent loop architecture)");
139
- return workflow;
140
- }
141
- }
142
- /**
143
- * The main agent loop node.
144
- * Runs a ReAct-style agent that calls tools until it decides to respond.
145
- *
146
- * Uses `agent.streamRun()` + `config.writer` so that text tokens and
147
- * tool-activity events are pushed into the graph's custom stream in
148
- * real-time rather than batched at the end.
149
- */
150
- export async function agentLoopNode(state, config, deps) {
151
- return timed("ChatGraph.agentLoop", async () => {
152
- logger.verbose("Agent loop starting", {
153
- userId: state.userId,
154
- messageCount: state.messages.length,
155
- currentIteration: state.iterationCount
156
- });
157
- const runLoop = async () => {
158
- const legacyNetworkId = state.networkId;
159
- const scopeType = state.scopeType ?? (legacyNetworkId ? 'network' : undefined);
160
- const scopeId = state.scopeId ?? legacyNetworkId;
161
- const agent = await ChatAgent.create({
162
- ...deps.protocolDeps,
163
- userId: state.userId,
164
- database: deps.database,
165
- embedder: deps.embedder,
166
- scraper: deps.scraper,
167
- ...(legacyNetworkId ? { networkId: legacyNetworkId } : {}),
168
- ...(scopeType && scopeId ? { scopeType, scopeId } : {}),
169
- sessionId: state.sessionId,
170
- }, deps.persona);
171
- // Direct streaming writer - emit events immediately instead of buffering
172
- const directWriter = (data) => {
173
- try {
174
- config.writer?.(data);
175
- }
176
- catch {
177
- /* swallow if writer is gone */
178
- }
179
- };
180
- // Get signal from configurable (passed by streamer via graph.stream() config)
181
- const signal = config.configurable?.signal;
182
- const result = await agent.streamRun(state.messages, directWriter, signal);
183
- return result;
184
- };
185
- try {
186
- const result = await runLoop();
187
- logger.debug("Agent streamRun result", {
188
- responseText: result.responseText,
189
- iterationCount: result.iterationCount,
190
- messageCount: result.messages.length,
191
- });
192
- logger.verbose("Agent loop complete", {
193
- userId: state.userId,
194
- iterations: result.iterationCount,
195
- responseLength: result.responseText.length
196
- });
197
- return {
198
- messages: result.messages,
199
- responseText: result.responseText,
200
- iterationCount: result.iterationCount,
201
- shouldContinue: false,
202
- debugMeta: result.debugMeta,
203
- };
204
- }
205
- catch (error) {
206
- if (isRetriableError(error)) {
207
- const signal = config.configurable?.signal;
208
- if (signal?.aborted) {
209
- return {
210
- error: "Request aborted",
211
- responseText: "",
212
- shouldContinue: false,
213
- };
214
- }
215
- logger.warn("Agent loop failed with retriable error, retrying once", {
216
- userId: state.userId,
217
- error: error instanceof Error ? error.message : String(error)
218
- });
219
- await new Promise((r) => setTimeout(r, RETRY_DELAY_MS));
220
- try {
221
- const result = await runLoop();
222
- logger.verbose("Agent loop complete after retry", {
223
- userId: state.userId,
224
- iterations: result.iterationCount,
225
- });
226
- return {
227
- messages: result.messages,
228
- responseText: result.responseText,
229
- iterationCount: result.iterationCount,
230
- shouldContinue: false,
231
- debugMeta: result.debugMeta,
232
- };
233
- }
234
- catch (retryError) {
235
- logger.error("Agent loop failed on retry", {
236
- userId: state.userId,
237
- error: retryError instanceof Error ? retryError.message : String(retryError)
238
- });
239
- return {
240
- error: retryError instanceof Error ? retryError.message : "Agent loop failed",
241
- responseText: "I apologize, but I encountered an issue processing your request. Please try again.",
242
- shouldContinue: false
243
- };
244
- }
245
- }
246
- logger.error("Agent loop failed", {
247
- userId: state.userId,
248
- error: error instanceof Error ? error.message : String(error)
249
- });
250
- return {
251
- error: error instanceof Error ? error.message : "Agent loop failed",
252
- responseText: "I apologize, but I encountered an issue processing your request. Please try again.",
253
- shouldContinue: false
254
- };
255
- }
256
- });
257
- }
@@ -1,25 +0,0 @@
1
- export interface ClassifyInterruptInput {
2
- /** The new user message sent while the agent is running. */
3
- message: string;
4
- /**
5
- * Current agent activity summary derived from the last few SSE trace event names
6
- * (e.g. "tool_start: discover_opportunities, graph_start: opportunity").
7
- */
8
- agentState: string;
9
- }
10
- /**
11
- * Binary classifier that decides whether a mid-stream user message should steer
12
- * (interrupt the current run) or queue (buffer until the run completes).
13
- * Uses a low-temperature, minimal-token model for sub-1 s latency.
14
- */
15
- export declare class ChatInterruptClassifier {
16
- private model;
17
- constructor();
18
- /**
19
- * Classify a mid-stream interrupt as steer or queue.
20
- *
21
- * @param input - The new message and current agent state context
22
- * @returns "steer" to interrupt the current run; "queue" to buffer
23
- */
24
- classify(input: ClassifyInterruptInput): Promise<"steer" | "queue">;
25
- }
@@ -1,64 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { HumanMessage, SystemMessage } from "@langchain/core/messages";
11
- import { log } from "../shared/observability/log.js";
12
- import { Timed } from "../shared/observability/performance.js";
13
- import { createResilientModel } from "../shared/agent/model.config.js";
14
- import { invokeWithAbortSignal } from "../shared/agent/model-signal.js";
15
- const logger = log.lib.from("ChatInterruptClassifier");
16
- const SYSTEM_PROMPT = `You decide whether a new user message sent during an active AI process should STEER or QUEUE.
17
-
18
- Rules:
19
- - Reply with ONLY one word: steer or queue (lowercase).
20
- - STEER: the message redirects, corrects, stops, contradicts, or changes what the AI is doing. Keywords: "wait", "stop", "actually", "ignore that", "instead", "no", "cancel".
21
- - QUEUE: the message adds context, asks a follow-up, or complements what the AI is doing. Keywords: "also", "and", "when done", "additionally", "plus".
22
- - When ambiguous, default to steer.`;
23
- /**
24
- * Binary classifier that decides whether a mid-stream user message should steer
25
- * (interrupt the current run) or queue (buffer until the run completes).
26
- * Uses a low-temperature, minimal-token model for sub-1 s latency.
27
- */
28
- export class ChatInterruptClassifier {
29
- constructor() {
30
- this.model = createResilientModel("interruptClassifier");
31
- }
32
- /**
33
- * Classify a mid-stream interrupt as steer or queue.
34
- *
35
- * @param input - The new message and current agent state context
36
- * @returns "steer" to interrupt the current run; "queue" to buffer
37
- */
38
- async classify(input) {
39
- const { message, agentState } = input;
40
- try {
41
- const response = await invokeWithAbortSignal(this.model, [
42
- new SystemMessage(SYSTEM_PROMPT),
43
- new HumanMessage(`Current agent activity: ${agentState || "idle"}\n\nNew user message: "${message.slice(0, 500)}"\n\nDecision:`),
44
- ]);
45
- const text = String(response.content ?? "").trim().toLowerCase();
46
- if (text.startsWith("queue"))
47
- return "queue";
48
- // Default to steer on any ambiguity or unexpected output
49
- return "steer";
50
- }
51
- catch (error) {
52
- logger.warn("Classification failed, defaulting to steer", {
53
- error: error instanceof Error ? error.message : String(error),
54
- });
55
- return "steer";
56
- }
57
- }
58
- }
59
- __decorate([
60
- Timed(),
61
- __metadata("design:type", Function),
62
- __metadata("design:paramtypes", [Object]),
63
- __metadata("design:returntype", Promise)
64
- ], ChatInterruptClassifier.prototype, "classify", null);
@@ -1,39 +0,0 @@
1
- import type { ChatTools, ToolContext, ResolvedToolContext } from "../shared/agent/tool.factory.js";
2
- import type { IterationContext } from "./chat.prompt.modules.js";
3
- /**
4
- * Behaviors that live in the agent loop itself (not in the prompt or toolset).
5
- * Each persona opts in explicitly.
6
- */
7
- export interface ChatPersonaLoopBehaviors {
8
- /**
9
- * Detect hallucinated ```opportunity / ```intent_proposal code blocks in model
10
- * text, auto-invoke the corresponding tool, and strip unbacked blocks from the
11
- * final response. Only meaningful for personas whose toolset can legitimately
12
- * produce those blocks — enabled for onboarding, signal and negotiator.
13
- */
14
- hallucinationRecovery: boolean;
15
- }
16
- /**
17
- * Persona configuration injected into `ChatAgent.create()`.
18
- *
19
- * A persona bundles the three persona-coupled seams of the chat runtime:
20
- * system-prompt construction, toolset creation, and loop behaviors.
21
- */
22
- export interface ChatPersonaConfig {
23
- /**
24
- * Stable persona identifier. Matches the `conversations.persona` column value
25
- * for sessions driven by this persona.
26
- */
27
- id: string;
28
- /** Builds the system prompt for each agent-loop iteration. */
29
- buildSystemContent: (ctx: ResolvedToolContext, iterCtx: IterationContext) => string;
30
- /** Creates the persona's toolset bound to the resolved user context. */
31
- createTools: (deps: ToolContext, preResolvedContext?: ResolvedToolContext) => Promise<ChatTools>;
32
- /**
33
- * Optionally resolves a turn without an LLM or tools. Use only for narrow,
34
- * deterministic safety redirects derived entirely from iteration context.
35
- */
36
- resolveDeterministicResponse?: (ctx: ResolvedToolContext, iterCtx: IterationContext) => string | null;
37
- /** Loop behaviors this persona opts into. */
38
- loopBehaviors: ChatPersonaLoopBehaviors;
39
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * Nudge message injected after SOFT_ITERATION_LIMIT iterations.
3
- */
4
- export declare const ITERATION_NUDGE = "[System Note: You've made several tool calls. Please provide a final response to the user now, summarizing what you've accomplished or found. If you need more information from the user, ask for it in your response.]";
@@ -1,12 +0,0 @@
1
- // ═══════════════════════════════════════════════════════════════════════════════
2
- // SHARED CHAT-LOOP PROMPT FRAGMENTS
3
- // ═══════════════════════════════════════════════════════════════════════════════
4
- //
5
- // Persona-neutral prompt text owned by the agent loop rather than by any one
6
- // persona. Each persona builds its own system prompt (see signal.prompt.ts,
7
- // negotiator.prompt.ts, onboarding.prompt.ts); what remains
8
- // here is only what the loop itself injects regardless of persona.
9
- /**
10
- * Nudge message injected after SOFT_ITERATION_LIMIT iterations.
11
- */
12
- export const ITERATION_NUDGE = `[System Note: You've made several tool calls. Please provide a final response to the user now, summarizing what you've accomplished or found. If you need more information from the user, ask for it in your response.]`;
@@ -1,30 +0,0 @@
1
- import type { BaseMessage } from "@langchain/core/messages";
2
- import type { ResolvedToolContext } from "../shared/agent/tool.factory.js";
3
- /**
4
- * State available to each persona's prompt builder at each iteration.
5
- */
6
- export interface IterationContext {
7
- /** Tool calls from all iterations since the last user message. */
8
- recentTools: Array<{
9
- name: string;
10
- args: Record<string, unknown>;
11
- }>;
12
- /** Text of the latest user message (for regex matching). */
13
- currentMessage?: string;
14
- /** Resolved tool context (user, profile, indexes, etc.). */
15
- ctx: ResolvedToolContext;
16
- }
17
- /**
18
- * Extracts tool calls from all AI messages since the last HumanMessage.
19
- *
20
- * Scans backwards to find the last HumanMessage, then collects all tool calls
21
- * from AIMessages after that point. This ensures multi-iteration tool history
22
- * is available for prompt construction within a single user turn.
23
- *
24
- * @param messages - The current conversation message array
25
- * @returns Flattened array of tool name + args from the current agent turn
26
- */
27
- export declare function extractRecentToolCalls(messages: BaseMessage[]): Array<{
28
- name: string;
29
- args: Record<string, unknown>;
30
- }>;
@@ -1,40 +0,0 @@
1
- // ═══════════════════════════════════════════════════════════════════════════════
2
- // EXTRACTION
3
- // ═══════════════════════════════════════════════════════════════════════════════
4
- /**
5
- * Extracts tool calls from all AI messages since the last HumanMessage.
6
- *
7
- * Scans backwards to find the last HumanMessage, then collects all tool calls
8
- * from AIMessages after that point. This ensures multi-iteration tool history
9
- * is available for prompt construction within a single user turn.
10
- *
11
- * @param messages - The current conversation message array
12
- * @returns Flattened array of tool name + args from the current agent turn
13
- */
14
- export function extractRecentToolCalls(messages) {
15
- // Find the index of the last HumanMessage
16
- let lastHumanIdx = -1;
17
- for (let i = messages.length - 1; i >= 0; i--) {
18
- if (messages[i]._getType() === "human") {
19
- lastHumanIdx = i;
20
- break;
21
- }
22
- }
23
- // Collect tool calls from all AIMessages after the last HumanMessage
24
- const toolCalls = [];
25
- const startIdx = lastHumanIdx + 1;
26
- for (let i = startIdx; i < messages.length; i++) {
27
- const msg = messages[i];
28
- if (msg._getType() === "ai") {
29
- const aiMsg = msg;
30
- const calls = aiMsg.tool_calls ?? [];
31
- for (const tc of calls) {
32
- toolCalls.push({
33
- name: tc.name,
34
- args: (tc.args ?? {}),
35
- });
36
- }
37
- }
38
- }
39
- return toolCalls;
40
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Pure deduplication logic for decision questions.
3
- * Filters out questions whose `id` is already in the surfaced set.
4
- * Questions without an `id` (inline-generated) are always passed through.
5
- */
6
- interface QuestionLike {
7
- id?: string;
8
- [key: string]: unknown;
9
- }
10
- export declare function deduplicateQuestions<T extends QuestionLike>(questions: T[], surfacedIds: Set<string>): {
11
- fresh: T[];
12
- newIds: string[];
13
- };
14
- export {};
@@ -1,17 +0,0 @@
1
- /**
2
- * Pure deduplication logic for decision questions.
3
- * Filters out questions whose `id` is already in the surfaced set.
4
- * Questions without an `id` (inline-generated) are always passed through.
5
- */
6
- export function deduplicateQuestions(questions, surfacedIds) {
7
- const fresh = [];
8
- const newIds = [];
9
- for (const q of questions) {
10
- if (q.id && surfacedIds.has(q.id))
11
- continue;
12
- fresh.push(q);
13
- if (q.id)
14
- newIds.push(q.id);
15
- }
16
- return { fresh, newIds };
17
- }
@@ -1,135 +0,0 @@
1
- import type { BaseMessage } from "@langchain/core/messages";
2
- import type { ToolScopeType } from "../shared/agent/tool.scope.js";
3
- import type { DebugMetaToolCall, DebugMetaLlm, DebugMetaOrchestratorNegotiations } from "./chat-streaming.types.js";
4
- /** Routing decision from router node (target, operationType, extractedContext). */
5
- export interface RoutingDecision {
6
- target: string;
7
- operationType: string | null;
8
- extractedContext?: string | null;
9
- }
10
- /** Intent subgraph result (actions, inferredIntents, etc.). */
11
- export interface IntentSubgraphResult {
12
- actions?: Array<{
13
- type: string;
14
- payload?: string;
15
- }>;
16
- inferredIntents?: unknown[];
17
- indexingResults?: unknown[];
18
- mode?: string;
19
- intents?: unknown[];
20
- count?: number;
21
- error?: string;
22
- /** When the intent graph exits early (e.g. network-scoped without intents); surface to user. */
23
- requiredMessage?: string;
24
- }
25
- /** Index subgraph result (memberships, ownedIndexes, specificIndexData). */
26
- export interface IndexSubgraphResult {
27
- mode?: string;
28
- memberships?: unknown[];
29
- ownedIndexes?: unknown[];
30
- specificIndexData?: unknown;
31
- count?: number;
32
- error?: string;
33
- }
34
- /** Aggregated results from subgraphs (intent, index, profile, opportunity, scrape). */
35
- export interface SubgraphResults {
36
- intent?: IntentSubgraphResult;
37
- index?: IndexSubgraphResult;
38
- profile?: unknown;
39
- opportunity?: unknown;
40
- scrape?: unknown;
41
- }
42
- /**
43
- * The Chat Graph State using LangGraph Annotations.
44
- *
45
- * This is a simplified state for the agent loop architecture.
46
- * The agent handles all routing decisions internally via tool calling.
47
- *
48
- * Design Principles:
49
- * - Messages accumulate through the conversation (includes tool calls/results)
50
- * - Iteration count tracks loop progress for soft/hard limits
51
- * - Final response is extracted at the end
52
- */
53
- export declare const ChatGraphState: import("@langchain/langgraph").AnnotationRoot<{
54
- /**
55
- * The User ID - required for all operations.
56
- */
57
- userId: {
58
- (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
59
- (): import("@langchain/langgraph").LastValue<string>;
60
- Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
61
- };
62
- /**
63
- * Legacy optional index (community) ID when chat is scoped to a specific index.
64
- * New callers should set scopeType/scopeId; networkId is retained as an edge alias.
65
- */
66
- networkId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
67
- /** Focused request scope type. Network scope uses a network id; intent scope uses an intent id. */
68
- scopeType: import("@langchain/langgraph").BaseChannel<ToolScopeType | undefined, ToolScopeType | import("@langchain/langgraph").OverwriteValue<ToolScopeType | undefined> | undefined, unknown>;
69
- /** Focused request scope id. Network scope uses a network id; intent scope uses an intent id. */
70
- scopeId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
71
- /**
72
- * Chat session ID when streaming with context. Used by tools to create draft
73
- * opportunities tied to this conversation (context.conversationId).
74
- */
75
- sessionId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
76
- /**
77
- * Conversation history using LangGraph's built-in message reducer.
78
- * Includes: HumanMessage, AIMessage, ToolMessage, SystemMessage
79
- * Automatically handles message appending, ID management, and ordering.
80
- */
81
- messages: import("@langchain/langgraph").BaseChannel<BaseMessage<import("@langchain/core/messages").MessageStructure<import("@langchain/core/messages").MessageToolSet>, import("@langchain/core/messages").MessageType>[], BaseMessage<import("@langchain/core/messages").MessageStructure<import("@langchain/core/messages").MessageToolSet>, import("@langchain/core/messages").MessageType>[] | import("@langchain/langgraph").OverwriteValue<BaseMessage<import("@langchain/core/messages").MessageStructure<import("@langchain/core/messages").MessageToolSet>, import("@langchain/core/messages").MessageType>[]>, unknown>;
82
- /**
83
- * Current iteration count in the agent loop.
84
- * Used for soft limit (nudge) and hard limit (force exit).
85
- */
86
- iterationCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
87
- /**
88
- * Flag indicating whether the agent loop should continue.
89
- * Set to false when agent produces final response or hits hard limit.
90
- */
91
- shouldContinue: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
92
- /**
93
- * The final generated response text.
94
- * Set when the agent decides to stop and respond.
95
- */
96
- responseText: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
97
- /**
98
- * Error message if the agent loop fails.
99
- */
100
- error: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
101
- /**
102
- * Per-turn debug meta (graph, iterations, tool calls) for copy-debug.
103
- * Not persisted; only used so the streamer receives it in the updates chunk.
104
- */
105
- debugMeta: import("@langchain/langgraph").BaseChannel<{
106
- graph: string;
107
- iterations: number;
108
- tools: DebugMetaToolCall[];
109
- llm: DebugMetaLlm;
110
- orchestratorNegotiations?: DebugMetaOrchestratorNegotiations;
111
- } | undefined, {
112
- graph: string;
113
- iterations: number;
114
- tools: DebugMetaToolCall[];
115
- llm: DebugMetaLlm;
116
- orchestratorNegotiations?: DebugMetaOrchestratorNegotiations;
117
- } | import("@langchain/langgraph").OverwriteValue<{
118
- graph: string;
119
- iterations: number;
120
- tools: DebugMetaToolCall[];
121
- llm: DebugMetaLlm;
122
- orchestratorNegotiations?: DebugMetaOrchestratorNegotiations;
123
- } | undefined> | undefined, unknown>;
124
- /** Router output: target, operationType, extractedContext. */
125
- routingDecision: import("@langchain/langgraph").BaseChannel<RoutingDecision | undefined, RoutingDecision | import("@langchain/langgraph").OverwriteValue<RoutingDecision | undefined> | undefined, unknown>;
126
- /** Results from intent/profile/opportunities/scrape subgraphs. */
127
- subgraphResults: import("@langchain/langgraph").BaseChannel<SubgraphResults | undefined, SubgraphResults | import("@langchain/langgraph").OverwriteValue<SubgraphResults | undefined> | undefined, unknown>;
128
- /** User profile context (e.g. for intent nodes). */
129
- userProfile: import("@langchain/langgraph").BaseChannel<unknown, unknown, unknown>;
130
- }>;
131
- /**
132
- * The full state type for the Chat Graph.
133
- * Use this for typing node functions and graph invocations.
134
- */
135
- export type ChatGraphStateType = typeof ChatGraphState.State;