@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,392 +0,0 @@
1
- /**
2
- * Discovery pipeline, stage 7: post-persist negotiation.
3
- *
4
- * Runs bilateral negotiation per persisted opportunity, passing opportunityId so the
5
- * negotiation graph's finalize node updates each opportunity's status:
6
- * accept → 'pending' (sender notification follows the pending → notification path)
7
- * reject → 'rejected'
8
- * timeout/turn_cap → 'stalled'
9
- * Status updates land in the DB; in-memory state.opportunities is not mutated.
10
- */
11
- import { requestContext } from '../shared/observability/request-context.js';
12
- import { AMBIENT_PARK_WINDOW_MS, negotiateCandidates } from '../negotiations/negotiation.module.js';
13
- import { buildDiscoverySummary, toDiscoveryNegotiation } from './negotiation-summary.builder.js';
14
- import { resolveOpportunityActorIntent } from './opportunity.actor.js';
15
- import { buildPrioritizedNegotiationIntents, negotiationIncludesOtherIntents } from "./opportunity.existing-negotiation.js";
16
- import { logger, negotiateLog } from "./opportunity.graph.shared.js";
17
- /** Distinguishes "the budget timer won the race" from a real negotiation result. */
18
- const NEGOTIATE_TIMER_SENTINEL = Symbol('negotiate-timer-sentinel');
19
- /**
20
- * Node 3b: Negotiate (post-persist)
21
- */
22
- export async function negotiateNode(state, deps) {
23
- if (!deps.negotiationGraph)
24
- return {};
25
- if (!state.opportunities || state.opportunities.length === 0)
26
- return {};
27
- const traceEmitter = requestContext.getStore()?.traceEmitter;
28
- const graphStart = Date.now();
29
- const persistedById = new Map(state.opportunities.map((opportunity) => [opportunity.id, opportunity]));
30
- const attemptBoundaryById = new Map(state.opportunities.map((opportunity) => [opportunity.id, opportunity.updatedAt]));
31
- const compensateTasklessNegotiatingOpportunity = async (opportunityId) => {
32
- const opportunity = persistedById.get(opportunityId);
33
- const expectedUpdatedAt = attemptBoundaryById.get(opportunityId);
34
- if (opportunity?.status !== 'negotiating' || !expectedUpdatedAt)
35
- return;
36
- const fallbackStatus = opportunity.actors.some((actor) => actor.role === 'introducer')
37
- ? 'latent'
38
- : 'draft';
39
- await deps.database
40
- .compensateTasklessNegotiatingOpportunity(opportunityId, expectedUpdatedAt, fallbackStatus)
41
- .catch((error) => {
42
- negotiateLog.warn('Failed to compensate taskless negotiating opportunity', {
43
- opportunityId,
44
- expectedUpdatedAt,
45
- fallbackStatus,
46
- error,
47
- });
48
- });
49
- };
50
- traceEmitter?.({ type: "graph_start", name: "Negotiation graph" });
51
- try {
52
- // Use the same discoveryUserId pattern as evaluationNode
53
- const discoveryUserId = (state.onBehalfOfUserId ?? state.userId);
54
- const includeOtherIntents = negotiationIncludesOtherIntents();
55
- const sourceAccount = await deps.database.getUser(discoveryUserId).catch(() => null);
56
- const sourceIntentInputs = (state.indexedIntents ?? []).map((intent) => ({
57
- id: intent.intentId,
58
- summary: intent.summary ?? null,
59
- payload: intent.payload ?? null,
60
- }));
61
- const sourceHasExactIntent = sourceIntentInputs.some((intent) => intent.id === state.triggerIntentId);
62
- const sourceFallbackIntent = state.triggerIntentId && !sourceHasExactIntent
63
- ? await deps.database.getIntent(state.triggerIntentId).catch(() => null)
64
- : null;
65
- const ownedSourceFallback = sourceFallbackIntent?.userId === discoveryUserId
66
- ? sourceFallbackIntent
67
- : null;
68
- const sourceUser = {
69
- id: discoveryUserId,
70
- intents: buildPrioritizedNegotiationIntents(sourceIntentInputs, state.triggerIntentId, ownedSourceFallback, includeOtherIntents),
71
- profile: {
72
- name: state.sourceProfile?.identity?.name ?? sourceAccount?.name,
73
- bio: state.sourceProfile?.identity?.bio ?? sourceAccount?.intro ?? undefined,
74
- location: state.sourceProfile?.identity?.location ?? sourceAccount?.location ?? undefined,
75
- },
76
- };
77
- // Build candidates from persisted opportunities. Each opportunity carries its DB id
78
- // so the negotiation graph's finalize node can update its status from the outcome.
79
- negotiateLog.verbose('Building candidates from opportunities', {
80
- opportunityCount: state.opportunities.length,
81
- discoveryUserId,
82
- });
83
- const filteredBeforeInvocation = [];
84
- const candidateEntries = state.opportunities
85
- .map(opp => {
86
- // Skip opportunities where any introducer exists but has not yet approved.
87
- const introducerActors = opp.actors
88
- .filter(a => a.role === 'introducer');
89
- if (introducerActors.length > 0 && !introducerActors.every(a => a.approved === true)) {
90
- negotiateLog.verbose('Skipping opportunity: introducer not approved', {
91
- opportunityId: opp.id,
92
- introducerCount: introducerActors.length,
93
- approvedCount: introducerActors.filter(a => a.approved === true).length,
94
- });
95
- filteredBeforeInvocation.push(opp.id);
96
- return null;
97
- }
98
- const opportunityActors = opp.actors;
99
- const sourceActor = opportunityActors.find(a => a.userId === discoveryUserId && a.role !== 'introducer');
100
- const candidateActor = opportunityActors.find(a => a.userId !== discoveryUserId && a.role !== 'introducer');
101
- if (!sourceActor || !candidateActor) {
102
- negotiateLog.verbose('Skipping opportunity: no candidateActor found', {
103
- opportunityId: opp.id,
104
- discoveryUserId,
105
- actors: opp.actors?.map(a => ({ userId: a.userId, role: a.role })) ?? [],
106
- });
107
- filteredBeforeInvocation.push(opp.id);
108
- return null;
109
- }
110
- return { opp, sourceActor, candidateActor };
111
- })
112
- .filter((e) => e !== null);
113
- await Promise.all(filteredBeforeInvocation.map(compensateTasklessNegotiatingOpportunity));
114
- negotiateLog.verbose('Candidate filtering complete', {
115
- inputOpportunities: state.opportunities.length,
116
- outputCandidates: candidateEntries.length,
117
- });
118
- const candidates = await Promise.all(candidateEntries.map(async ({ opp, sourceActor, candidateActor }) => {
119
- const userId = candidateActor.userId;
120
- const sourceIntentId = resolveOpportunityActorIntent(sourceActor);
121
- const candidateIntentId = resolveOpportunityActorIntent(candidateActor);
122
- const sourceExactActive = sourceIntentId
123
- ? sourceIntentInputs.find((sourceIntent) => sourceIntent.id === sourceIntentId)
124
- : undefined;
125
- const [profile, user, activeIntents, intent, sourceIntent] = await Promise.all([
126
- deps.database.getProfile(userId).catch(() => null),
127
- deps.database.getUser(userId).catch(() => null),
128
- includeOtherIntents
129
- ? deps.database.getActiveIntents(userId).catch(() => [])
130
- : Promise.resolve([]),
131
- candidateIntentId
132
- ? deps.database.getIntent(candidateIntentId).catch(() => null)
133
- : null,
134
- sourceIntentId && !sourceExactActive
135
- ? deps.database.getIntent(sourceIntentId).catch(() => null)
136
- : null,
137
- ]);
138
- const ownedFallbackIntent = intent?.userId === userId ? intent : null;
139
- const ownedSourceIntent = sourceIntent?.userId === discoveryUserId ? sourceIntent : null;
140
- const candidateIntents = buildPrioritizedNegotiationIntents(activeIntents, candidateIntentId, ownedFallbackIntent, includeOtherIntents);
141
- return {
142
- userId,
143
- ...(sourceIntentId ? { sourceIntentId } : {}),
144
- ...(candidateIntentId ? { candidateIntentId } : {}),
145
- sourceUser: {
146
- ...sourceUser,
147
- intents: buildPrioritizedNegotiationIntents(sourceIntentInputs, sourceIntentId, ownedSourceIntent, includeOtherIntents),
148
- },
149
- opportunityId: opp.id,
150
- opportunityStatus: opp.status,
151
- opportunityUpdatedAt: opp.updatedAt,
152
- reasoning: opp.interpretation?.reasoning ?? '',
153
- valencyRole: candidateActor.role ?? 'peer',
154
- networkId: candidateActor.networkId,
155
- ...(state.searchQuery?.trim() && { discoveryQuery: state.searchQuery.trim() }),
156
- candidateUser: {
157
- id: userId,
158
- intents: candidateIntents,
159
- profile: {
160
- name: profile?.identity?.name ?? user?.name,
161
- bio: profile?.identity?.bio ?? user?.intro ?? undefined,
162
- location: profile?.identity?.location ?? user?.location ?? undefined,
163
- },
164
- },
165
- };
166
- }));
167
- const isChatPath = !!state.options?.conversationId;
168
- const maxTurns = isChatPath
169
- ? Number(process.env.NEGOTIATION_MAX_TURNS_CHAT) || 4
170
- : Number(process.env.NEGOTIATION_MAX_TURNS_AMBIENT) || 6;
171
- // Fetch per-candidate index context (group by networkId to avoid duplicate lookups)
172
- const uniqueIndexIds = [...new Set(candidates.map(c => c.networkId).filter((id) => !!id))];
173
- const indexContextMap = new Map();
174
- await Promise.all(uniqueIndexIds.map(async (networkId) => {
175
- const ctx = await deps.database.getNetworkMemberContext(networkId, discoveryUserId).catch(() => null);
176
- const prompt = [ctx?.indexPrompt, ctx?.memberPrompt]
177
- .filter((v) => !!v?.trim())
178
- .join('\n\n');
179
- if (prompt)
180
- indexContextMap.set(networkId, prompt);
181
- }));
182
- const timeoutMs = await resolveTurnTimeout(isChatPath, uniqueIndexIds, discoveryUserId, deps, candidates.length);
183
- // Per-candidate hook accumulates negotiation resolutions for discovery
184
- // question generation, preserving candidate-list order below.
185
- // Build a stable order index so that resolutions accumulated via the
186
- // per-candidate async hook can be re-sorted to candidate-list order
187
- // before being handed to buildQuestionPrompt. Without this the LLM
188
- // sees negotiations in completion-time order (non-deterministic).
189
- const candidateOrderById = new Map();
190
- candidates.forEach((c, i) => candidateOrderById.set(c.userId, i));
191
- const resolutions = [];
192
- const resolvedOpportunityIds = new Set();
193
- const onCandidateResolved = async ({ candidate, turns, outcome }) => {
194
- if (candidate.opportunityId)
195
- resolvedOpportunityIds.add(candidate.opportunityId);
196
- resolutions.push({
197
- __order: candidateOrderById.get(candidate.userId) ?? Number.MAX_SAFE_INTEGER,
198
- candidateUserId: candidate.userId,
199
- counterpartyHint: (() => {
200
- const bio = candidate.candidateUser.profile?.bio?.trim();
201
- if (bio)
202
- return bio;
203
- return (candidate.candidateUser.profile?.interests ?? []).join(", ");
204
- })(),
205
- indexContext: candidate.networkId
206
- ? indexContextMap.get(candidate.networkId) ?? ""
207
- : "",
208
- turns,
209
- outcome,
210
- });
211
- if (candidate.opportunityId) {
212
- await compensateTasklessNegotiatingOpportunity(candidate.opportunityId);
213
- }
214
- };
215
- const negotiationWork = negotiateCandidates(deps.negotiationGraph, sourceUser, candidates, { networkId: '', prompt: '' }, // base context, overridden per-candidate below
216
- { maxTurns, traceEmitter: traceEmitter ?? undefined,
217
- indexContextOverrides: indexContextMap,
218
- timeoutMs,
219
- // v2 initiator stamp: every fresh-discovery origin resolves to the
220
- // discovery user — querying user (chat/tool), intent owner
221
- // (from-intent), enriched user (from-enrichment/discovery-run), or
222
- // represented user (from-introducer, via onBehalfOfUserId).
223
- initiatorUserId: discoveryUserId,
224
- onCandidateResolved });
225
- /** Order accumulated resolutions back to candidate-list order. */
226
- const orderResolutions = () => [...resolutions]
227
- .sort((a, b) => a.__order - b.__order)
228
- .map(({ __order: _o, ...r }) => r);
229
- // Optionally bound this opportunity-matching continuation phase. When
230
- // the timer wins, return a `timed_out` trace while the unresolved
231
- // continuation keeps running in the Bun event loop; each candidate's
232
- // finalize node persists its opportunity status in the DB. Deliberately
233
- // do NOT await it, abort it, or add unfinished results to
234
- // state.opportunities: later opportunity reads observe the persisted
235
- // continuation state. The budget limits this invocation's wait, not
236
- // background matching work; orphans heal via maintenance scripts or
237
- // IND-279 when it lands.
238
- const budgetMs = state.options.negotiateTimeoutMs;
239
- let acceptedResults;
240
- if (budgetMs !== undefined) {
241
- let timerId;
242
- const timerWork = new Promise((resolve) => {
243
- timerId = setTimeout(() => resolve(NEGOTIATE_TIMER_SENTINEL), budgetMs);
244
- });
245
- // try/finally ensures the timer is cleared on every exit path —
246
- // sentinel-win, work-win, AND `negotiationWork` rejection. Without
247
- // this, a rejected negotiation would leave the timer pending and
248
- // keep the event loop alive until `budgetMs` elapses.
249
- let raced;
250
- try {
251
- raced = await Promise.race([negotiationWork, timerWork]);
252
- }
253
- finally {
254
- if (timerId !== undefined)
255
- clearTimeout(timerId);
256
- }
257
- if (raced === NEGOTIATE_TIMER_SENTINEL) {
258
- // Restore any attempt that is still before its task boundary. A running or
259
- // parked negotiation already has a task and makes the CAS a no-op; a hung
260
- // pre-task init becomes owner-actionable while its floating work may retry.
261
- await Promise.all(candidates
262
- .filter((candidate) => candidate.opportunityId && !resolvedOpportunityIds.has(candidate.opportunityId))
263
- .map((candidate) => compensateTasklessNegotiatingOpportunity(candidate.opportunityId)));
264
- // Floating promise is intentional — see comment above.
265
- void negotiationWork.catch((err) => {
266
- negotiateLog.warn('background negotiation failed after timer fired', { error: err });
267
- });
268
- negotiateLog.warn('timed out — returning partial results to caller', {
269
- discoveryUserId,
270
- candidateCount: candidates.length,
271
- negotiateTimeoutMs: budgetMs,
272
- });
273
- traceEmitter?.({ type: "graph_end", name: "Negotiation graph", durationMs: Date.now() - graphStart });
274
- const orderedResolutionsPartial = orderResolutions();
275
- return {
276
- trace: [{
277
- node: 'negotiate',
278
- detail: 'timed_out',
279
- data: {
280
- negotiateTimeoutMs: budgetMs,
281
- candidateCount: candidates.length,
282
- durationMs: Date.now() - graphStart,
283
- },
284
- }],
285
- discoveryNegotiations: orderedResolutionsPartial.map(toDiscoveryNegotiation),
286
- discoverySummary: buildDiscoverySummary(orderedResolutionsPartial),
287
- };
288
- }
289
- acceptedResults = raced;
290
- }
291
- else {
292
- acceptedResults = await negotiationWork;
293
- }
294
- // No filtering: every candidate's outcome (accept/reject/stalled) was applied to its
295
- // opportunity row by the negotiation graph's finalize node via the opportunityId we
296
- // passed. state.opportunities stays as it was at persist time; DB has the new statuses.
297
- const acceptedUserIds = new Set(acceptedResults.map(r => r.userId));
298
- const negotiationDurationMs = Date.now() - graphStart;
299
- const candidateTraceEntries = candidates.map(c => {
300
- const accepted = acceptedUserIds.has(c.userId);
301
- const result = accepted ? acceptedResults.find(r => r.userId === c.userId) : null;
302
- const name = c.candidateUser.profile?.name ?? c.userId;
303
- const outcome = accepted ? 'accepted' : 'rejected_or_stalled';
304
- return {
305
- node: 'negotiate_candidate',
306
- detail: `${name}: ${outcome}`,
307
- data: {
308
- userId: c.userId,
309
- opportunityId: c.opportunityId,
310
- name,
311
- outcome,
312
- turns: result?.turnCount ?? 0,
313
- },
314
- };
315
- });
316
- const acceptedCount = acceptedResults.length;
317
- const otherCount = candidates.length - acceptedCount;
318
- const negotiateTrace = [
319
- {
320
- node: 'negotiate',
321
- detail: `${candidates.length} candidate(s) -> ${acceptedCount} accepted, ${otherCount} rejected/stalled`,
322
- data: {
323
- durationMs: negotiationDurationMs,
324
- candidateCount: candidates.length,
325
- acceptedCount,
326
- otherCount,
327
- },
328
- },
329
- ...candidateTraceEntries,
330
- ];
331
- traceEmitter?.({ type: "graph_end", name: "Negotiation graph", durationMs: Date.now() - graphStart });
332
- const orderedResolutions = orderResolutions();
333
- return {
334
- trace: negotiateTrace,
335
- discoveryNegotiations: orderedResolutions.map(toDiscoveryNegotiation),
336
- discoverySummary: buildDiscoverySummary(orderedResolutions),
337
- };
338
- }
339
- catch (err) {
340
- await Promise.all(state.opportunities.map((opportunity) => compensateTasklessNegotiatingOpportunity(opportunity.id)));
341
- negotiateLog.error("Negotiation stage failed", { error: err });
342
- traceEmitter?.({ type: "graph_end", name: "Negotiation graph", durationMs: Date.now() - graphStart });
343
- return {
344
- trace: [{
345
- node: 'negotiate',
346
- detail: 'Negotiation failed',
347
- data: { durationMs: Date.now() - graphStart, error: true },
348
- }],
349
- discoveryNegotiations: [],
350
- discoverySummary: buildDiscoverySummary([]),
351
- };
352
- }
353
- }
354
- /**
355
- * Decide the per-turn timeout.
356
- * - Background/queue path (no conversationId): always the park-window
357
- * budget (AMBIENT_PARK_WINDOW_MS, 5 min). Turns park in
358
- * `waiting_for_agent` and are picked up via polling; the dispatcher
359
- * additionally short-circuits to the system agent when no personal
360
- * agent has a fresh heartbeat (see AgentDispatcherImpl).
361
- * - Chat path with a personal agent authorized: use the same park-window
362
- * so the dispatcher parks the turn and the user's personal agent can
363
- * pick it up via polling.
364
- * - Chat path with no personal agent: use a short timeout (30s) so the
365
- * system `Index Negotiator` kicks in without stalling the chat.
366
- *
367
- * Check the personal agent per unique candidate network so cross-network
368
- * chat runs don't get a single authorized agent deciding the timeout for
369
- * every candidate. Only use the long (polling) timeout when an external
370
- * (poller) agent is authorized on ALL candidate networks; otherwise fall
371
- * back to the short timeout so chats don't stall on a network where only
372
- * the system negotiator is allowed.
373
- */
374
- async function resolveTurnTimeout(isChatPath, uniqueIndexIds, discoveryUserId, deps, candidateCount) {
375
- const hasExternalAgent = isChatPath && deps.agentDispatcher
376
- ? (uniqueIndexIds.length > 0
377
- ? (await Promise.all(uniqueIndexIds.map((networkId) => deps.agentDispatcher.hasExternalAgent(discoveryUserId, { action: 'manage:negotiations', scopeType: 'network', scopeId: networkId }).catch(() => false)))).every(Boolean)
378
- : false)
379
- : false;
380
- const useLongTimeout = !isChatPath || hasExternalAgent;
381
- const timeoutMs = useLongTimeout ? AMBIENT_PARK_WINDOW_MS : 30000;
382
- logger.info('negotiateNode timeout decision', {
383
- discoveryUserId,
384
- isChatPath,
385
- hasDispatcher: !!deps.agentDispatcher,
386
- hasExternalAgent,
387
- useLongTimeout,
388
- timeoutMs,
389
- candidateCount,
390
- });
391
- return timeoutMs;
392
- }
@@ -1,93 +0,0 @@
1
- /**
2
- * Discovery pipeline, stage 6: persistence.
3
- *
4
- * Three persistence paths share the node — chat introductions, introducer
5
- * discovery (`onBehalfOfUserId`), and plain discovery. Each one decides whether
6
- * an existing opportunity between the same people should be reactivated,
7
- * upgraded, or suppressed before any row is written; only what survives that
8
- * gate reaches `persistOpportunities`.
9
- */
10
- import type { Id, Opportunity, OpportunityStatus } from '../shared/interfaces/database.interface.js';
11
- import { type OpportunityGraphDeps, type OpportunityState } from "./opportunity.graph.shared.js";
12
- /** A pairing that was not persisted because an opportunity already covers it. */
13
- type ExistingBetweenActor = {
14
- candidateUserId: Id<'users'>;
15
- networkId: Id<'networks'>;
16
- existingOpportunityId?: Id<'opportunities'>;
17
- existingStatus?: OpportunityStatus;
18
- reason?: 'same_trigger_recent_duplicate' | 'pair_active_negotiation' | 'final_atomic_conflict';
19
- existingTriggerIntentId?: string;
20
- };
21
- /**
22
- * Node 5: Persist
23
- * Creates opportunities from evaluator-proposed actors (networkId, userId, role, optional intent).
24
- */
25
- export declare function persistNode(state: OpportunityState, deps: OpportunityGraphDeps): Promise<{
26
- opportunities: never[];
27
- persistenceOutcome: {
28
- evaluatedCount: number;
29
- createdCount: number;
30
- reactivatedCount: number;
31
- sameTriggerDuplicateSuppressions: number;
32
- pairActiveNegotiationSuppressions: number;
33
- crossTriggerAllowedCount: number;
34
- finalAtomicConflictCount: number;
35
- };
36
- existingBetweenActors?: undefined;
37
- trace?: undefined;
38
- error?: undefined;
39
- } | {
40
- opportunities: never[];
41
- persistenceOutcome?: undefined;
42
- existingBetweenActors?: undefined;
43
- trace?: undefined;
44
- error?: undefined;
45
- } | {
46
- opportunities: Opportunity[];
47
- existingBetweenActors: ExistingBetweenActor[];
48
- persistenceOutcome: {
49
- evaluatedCount: number;
50
- createdCount: number;
51
- reactivatedCount: number;
52
- sameTriggerDuplicateSuppressions: number;
53
- pairActiveNegotiationSuppressions: number;
54
- crossTriggerAllowedCount: number;
55
- finalAtomicConflictCount: number;
56
- };
57
- trace: {
58
- node: string;
59
- detail: string;
60
- data: {
61
- created: number;
62
- reactivated: number;
63
- existingSkipped: number;
64
- totalOutput: number;
65
- persistenceOutcome: {
66
- evaluatedCount: number;
67
- createdCount: number;
68
- reactivatedCount: number;
69
- sameTriggerDuplicateSuppressions: number;
70
- pairActiveNegotiationSuppressions: number;
71
- crossTriggerAllowedCount: number;
72
- finalAtomicConflictCount: number;
73
- };
74
- durationMs: number;
75
- };
76
- }[];
77
- error?: undefined;
78
- } | {
79
- opportunities: never[];
80
- existingBetweenActors: never[];
81
- error: string;
82
- trace: {
83
- node: string;
84
- detail: string;
85
- data: {
86
- error: string;
87
- };
88
- }[];
89
- persistenceOutcome?: undefined;
90
- }>;
91
- /** Trace summary for {@link persistNode}. */
92
- export declare function persistTraceSummary(result: unknown): string | undefined;
93
- export {};