@indexnetwork/protocol 22.0.0-rc.499.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 -134
  12. package/dist/index.js +41 -105
  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,256 +0,0 @@
1
- /**
2
- * Negotiation graph, stage 1: claim the conversation, task and seat.
3
- */
4
- import { configuredProtocolVersion, readProtocolVersion } from "./negotiation.protocol.js";
5
- import { buildIntentSnapshots } from "./negotiation.intent-snapshot-provenance.js";
6
- import { holdsNegotiationConversationLock } from "./negotiation.task-lock-policy.js";
7
- import { expectedNegotiationSpeaker } from "./negotiation.expected-speaker.js";
8
- import { readNegotiationMessages } from "./negotiation.scope.js";
9
- import { buildSeededAttribution } from './negotiation.attribution.js';
10
- import { initLog, resolveTaskAttribution, turnsFromMessages } from "./negotiation.graph.shared.js";
11
- export async function initNode(state, deps) {
12
- try {
13
- // Exact continuations reuse the prior conversation and preclaimed
14
- // successor; they must not create any mutable state before the fence.
15
- const agentIdA = `agent:${state.sourceUser.id}`;
16
- const agentIdB = `agent:${state.candidateUser.id}`;
17
- const execution = state.continuationExecution;
18
- const conversation = execution
19
- ? { id: execution.conversationId }
20
- : await deps.database.getOrCreateDM(agentIdA, agentIdB, 'agent');
21
- // --- Lock gate: check for an active task on this conversation ---
22
- // Two reads with two jobs. `conversationMessages` is the pair's whole shared
23
- // DM — CONTEXT, including negotiations for other matches, which reaches the
24
- // agent only as labelled prior dialogue. `negotiationMessages` is THIS
25
- // match's own turns, and is the sole input to this negotiation's state:
26
- // whether it has opened, whose turn it is, how far it has run.
27
- const conversationMessages = await deps.database.getMessagesForConversation(conversation.id);
28
- if (Boolean(state.resumeFromTaskId) !== Boolean(state.continuationSettlementId)
29
- || Boolean(state.resumeFromTaskId) !== Boolean(execution))
30
- return { error: 'invalid continuation correlation' };
31
- const exactContinuation = state.resumeFromTaskId && state.continuationSettlementId && execution
32
- ? { taskId: state.resumeFromTaskId, settlementId: state.continuationSettlementId, execution }
33
- : null;
34
- const priorTask = exactContinuation
35
- ? await deps.database.getTask(exactContinuation.taskId)
36
- : state.opportunityId
37
- ? await deps.database.getNegotiationTaskForOpportunity(state.opportunityId)
38
- : null;
39
- const claimedSuccessor = exactContinuation
40
- ? await deps.database.getTask(exactContinuation.execution.successorTaskId)
41
- : null;
42
- if (exactContinuation) {
43
- const settlement = priorTask?.metadata?.questionSettlement;
44
- const storedExecution = claimedSuccessor?.metadata?.continuationExecution;
45
- if (!priorTask
46
- || priorTask.conversationId !== conversation.id
47
- || priorTask.state !== 'canceled'
48
- || priorTask.metadata?.opportunityId !== state.opportunityId
49
- || settlement?.settlementId !== exactContinuation.settlementId
50
- || settlement?.taskId !== exactContinuation.taskId
51
- || !claimedSuccessor
52
- || claimedSuccessor.conversationId !== conversation.id
53
- || storedExecution?.token !== exactContinuation.execution.token
54
- || storedExecution?.fence !== exactContinuation.execution.fence
55
- || storedExecution?.status !== 'claimed')
56
- return { error: 'invalid exact continuation task' };
57
- }
58
- const isLocked = !exactContinuation && !!priorTask && holdsNegotiationConversationLock(priorTask);
59
- if (isLocked) {
60
- initLog.info('Conversation locked by active task, returning busy', {
61
- conversationId: conversation.id,
62
- opportunityId: state.opportunityId,
63
- });
64
- return { error: 'busy' };
65
- }
66
- // --- Load this negotiation's own prior turns ---
67
- // Resolved through the shared scope rule, not a local copy of it: the graph
68
- // and the respond/polling surfaces must agree on what "this negotiation's
69
- // messages" means, or an external agent can be told it is not its turn
70
- // forever. That rule also owns the unkeyed case — a run with no opportunity
71
- // has no identity apart from its conversation.
72
- const negotiationMessages = await readNegotiationMessages({
73
- byNegotiation: (id) => deps.database.getNegotiationMessages(id),
74
- byConversation: async () => conversationMessages,
75
- }, {
76
- conversationId: conversation.id,
77
- metadata: { opportunityId: state.opportunityId },
78
- });
79
- const priorTurns = turnsFromMessages(negotiationMessages);
80
- // `isContinuation` means THIS negotiation has already spoken — not that the
81
- // pair has history. A fresh match in a long-running DM is not a
82
- // continuation, and must still open.
83
- const isContinuation = priorTurns.length > 0;
84
- // Determine scenario-based maxTurns
85
- const scope = { action: 'manage:negotiations', scopeType: 'network', scopeId: state.indexContext.networkId };
86
- const [sourceHasAgent, candidateHasAgent] = await Promise.all([
87
- deps.dispatcher.hasExternalAgent(state.sourceUser.id, scope),
88
- deps.dispatcher.hasExternalAgent(state.candidateUser.id, scope),
89
- ]);
90
- const ambientMax = Number(process.env.NEGOTIATION_MAX_TURNS_AMBIENT) || 6;
91
- let maxTurns = state.maxTurns;
92
- if (maxTurns == null) {
93
- maxTurns = (sourceHasAgent && candidateHasAgent) ? 0 : ambientMax;
94
- }
95
- // --- Initiator seat resolution (v2: rigid per match, stamped at discovery) ---
96
- // 1. Continuations inherit from the prior task for the same opportunity —
97
- // never re-derive, so the seat cannot flip between sessions.
98
- // 2. Conversation-scoped tie-break: if another negotiation on this DM is
99
- // active and fresh (symmetric concurrent start under a different
100
- // opportunityId — the opportunity-scoped lock above cannot see it),
101
- // the first created task keeps the seat; this run inherits its stamp.
102
- // 3. Otherwise: explicit stamp from the caller, falling back to the
103
- // session's sourceUser (pre-stamp heuristic behavior, unchanged).
104
- const readInitiator = (metadata) => {
105
- const v = metadata?.initiatorUserId;
106
- return typeof v === 'string' && v.length > 0 ? v : null;
107
- };
108
- let initiatorUserId = readInitiator(priorTask?.metadata) ?? state.initiatorUserId ?? state.sourceUser.id;
109
- // Conversation-scoped prior task: used only for the initiator tie-break
110
- // (and only when active+fresh).
111
- const convTask = !exactContinuation && !readInitiator(priorTask?.metadata)
112
- ? await deps.database.getLatestNegotiationTaskForConversation?.(conversation.id).catch(() => null)
113
- : null;
114
- if (!readInitiator(priorTask?.metadata)) {
115
- if (convTask && convTask.id !== priorTask?.id && holdsNegotiationConversationLock(convTask)) {
116
- const convInitiator = readInitiator(convTask.metadata);
117
- if (convInitiator) {
118
- initLog.info('Conversation-scoped tie-break: inheriting initiator seat from concurrent task', {
119
- conversationId: conversation.id,
120
- winningTaskId: convTask.id,
121
- initiatorUserId: convInitiator,
122
- });
123
- initiatorUserId = convInitiator;
124
- }
125
- }
126
- }
127
- // --- Floor: derived from this negotiation's turns, after the seat is known ---
128
- // Resolved here rather than above because an unopened negotiation starts
129
- // with its initiator, which the tie-break may only just have settled.
130
- const expectedSpeaker = expectedNegotiationSpeaker({
131
- sourceUserId: state.sourceUser.id,
132
- candidateUserId: state.candidateUser.id,
133
- initiatorUserId,
134
- }, negotiationMessages);
135
- if (!expectedSpeaker)
136
- return { error: 'invalid negotiation participants' };
137
- const currentSpeaker = expectedSpeaker === state.sourceUser.id
138
- ? 'source'
139
- : 'candidate';
140
- // --- Protocol version: pinned per negotiation, re-stamped per match ---
141
- // A prior task for this same negotiation (exact continuation resume or
142
- // a re-run of the same opportunity) pins the version, so one
143
- // negotiation never flips semantics mid-flight (absent field on a
144
- // genuine prior = pre-v2 task = v1). Everything else — including
145
- // continuations of older conversations between the same pair — stamps
146
- // fresh from NEGOTIATION_PROTOCOL_VERSION, so a version cutover
147
- // reaches existing pairs on their next new match instead of being
148
- // pinned to v1 forever by conversation history.
149
- const protocolVersion = priorTask
150
- ? (readProtocolVersion(priorTask.metadata) ?? 'v1')
151
- : configuredProtocolVersion();
152
- const taskMetadata = {
153
- type: 'negotiation',
154
- sourceUserId: state.sourceUser.id,
155
- initiatorUserId,
156
- protocolVersion,
157
- candidateUserId: state.candidateUser.id,
158
- networkId: state.indexContext.networkId,
159
- sourceIntentId: state.sourceIntentId,
160
- candidateIntentId: state.candidateIntentId,
161
- participantBindings: [
162
- ...(state.sourceIntentId ? [{ userId: state.sourceUser.id, intentId: state.sourceIntentId, networkId: state.indexContext.networkId }] : []),
163
- ...(state.candidateIntentId ? [{ userId: state.candidateUser.id, intentId: state.candidateIntentId, networkId: state.indexContext.networkId }] : []),
164
- ],
165
- intentSnapshots: buildIntentSnapshots(state.sourceUser, state.candidateUser),
166
- ...(state.opportunityId && { opportunityId: state.opportunityId }),
167
- maxTurns,
168
- isContinuation,
169
- priorTurnCount: priorTurns.length,
170
- ...(exactContinuation ? {
171
- resumeFromTaskId: exactContinuation.taskId,
172
- continuationSettlementId: exactContinuation.settlementId,
173
- } : {}),
174
- };
175
- if (state.opportunityId && Boolean(state.opportunityStatus) !== Boolean(state.opportunityUpdatedAt)) {
176
- throw new Error('Negotiation attempt requires both opportunity status and updatedAt');
177
- }
178
- const task = exactContinuation
179
- ? claimedSuccessor
180
- : state.opportunityId && state.opportunityStatus && state.opportunityUpdatedAt
181
- ? await deps.database.createNegotiationTaskForAttempt({
182
- conversationId: conversation.id,
183
- opportunityId: state.opportunityId,
184
- expectedStatus: state.opportunityStatus,
185
- expectedUpdatedAt: state.opportunityUpdatedAt,
186
- metadata: taskMetadata,
187
- })
188
- : await deps.database.createTask(conversation.id, taskMetadata);
189
- if (!task) {
190
- throw new Error('Negotiation attempt is stale or already claimed');
191
- }
192
- // Attempt-bound discovery atomically promoted the exact persisted state
193
- // to `negotiating` while inserting the task. Legacy/direct invocations
194
- // with only an opportunity ID retain the prior best-effort status update.
195
- if (state.opportunityId && !state.opportunityUpdatedAt) {
196
- await deps.database.updateOpportunityStatus(state.opportunityId, 'negotiating').catch((err) => {
197
- initLog.error('Failed to set opportunity status to negotiating', { opportunityId: state.opportunityId, error: err });
198
- });
199
- }
200
- // Load user answers collected by the questioner between sessions
201
- const userAnswers = (isContinuation && state.opportunityId)
202
- ? await deps.database.getOpportunityUserAnswers(state.opportunityId).catch((err) => {
203
- initLog.error('Failed to load user answers', { opportunityId: state.opportunityId, error: err });
204
- return [];
205
- })
206
- : [];
207
- // Seed messages with THIS negotiation's prior turns (additive reducer
208
- // appends new turns on top). taskId is preserved so the turn/screen nodes
209
- // can separate this session's turns from earlier sessions of the same
210
- // negotiation (IND-569).
211
- const seedMessages = negotiationMessages.map((m) => ({
212
- id: m.id,
213
- senderId: m.senderId,
214
- role: 'agent',
215
- parts: m.parts,
216
- createdAt: m.createdAt,
217
- taskId: m.taskId ?? null,
218
- }));
219
- // IND-569: attribute the pair's whole shared DM to its originating
220
- // negotiations, once, up front. Earlier-match and legacy unattributed
221
- // blocks are immutable for the session; the current block is composed per
222
- // turn. Keyed on the conversation, not on `isContinuation`: a fresh match
223
- // has no turns of its own but the pair's history is exactly the context
224
- // worth carrying into it.
225
- const priorAttribution = conversationMessages.length > 0
226
- ? await buildSeededAttribution(conversationMessages
227
- .map((m) => ({ taskId: m.taskId ?? null, turn: turnsFromMessages([m])[0] }))
228
- .filter((e) => Boolean(e.turn)), state.opportunityId, (taskId) => resolveTaskAttribution(deps, taskId))
229
- : null;
230
- return {
231
- conversationId: conversation.id,
232
- taskId: task.id,
233
- currentSpeaker,
234
- turnCount: 0,
235
- maxTurns,
236
- isContinuation,
237
- initiatorUserId,
238
- protocolVersion,
239
- priorTurnCount: priorTurns.length,
240
- ...(priorAttribution && { priorAttribution }),
241
- ...(userAnswers.length > 0 && { userAnswers }),
242
- ...(exactContinuation?.execution.consultation
243
- ? { privateConsultation: exactContinuation.execution.consultation }
244
- : {}),
245
- ...(exactContinuation && (() => {
246
- const turnContext = priorTask?.metadata?.turnContext;
247
- const reason = turnContext?.consultationPolicyReason;
248
- return typeof reason === 'string' ? { consultationPolicyReason: reason } : {};
249
- })()),
250
- ...(seedMessages.length > 0 && { messages: seedMessages }),
251
- };
252
- }
253
- catch (err) {
254
- return { error: `Init failed: ${err instanceof Error ? err.message : String(err)}` };
255
- }
256
- }
@@ -1,94 +0,0 @@
1
- /**
2
- * Bilateral negotiation graph: init → screen → turn* → finalize.
3
- *
4
- * Every node is a top-level function in a sibling module, taking the graph
5
- * state and an explicit {@link NegotiationGraphDeps}. This file composes the
6
- * dependency bag and wires the edges — nothing else.
7
- */
8
- import { StateGraph } from "@langchain/langgraph";
9
- import { NegotiationGraphState } from "./negotiation.state.js";
10
- import { IndexNegotiator } from "./negotiation.agent.js";
11
- import { NegotiationStallGapAuthor } from "./negotiation.stall-gap.js";
12
- import { blocksNegotiationBeforeFirstTurn, NegotiationScreener } from "./negotiation.screen.js";
13
- import { configuredScreenMode } from "./negotiation.screen.contracts.js";
14
- import { isTerminalAction } from "./negotiation.protocol.js";
15
- import { isNegotiationTurnCapReached } from "./negotiation.turn-cap.js";
16
- import { initNode } from "./negotiation.graph.init.js";
17
- import { screenNode } from "./negotiation.graph.screen.js";
18
- import { turnNode } from "./negotiation.graph.turn.js";
19
- import { finalizeNode } from "./negotiation.graph.finalize.js";
20
- export { negotiateCandidates } from "./negotiation.candidates.js";
21
- /**
22
- * Factory for the bilateral negotiation LangGraph state machine.
23
- * @remarks Accepts an AgentDispatcher for per-turn agent resolution.
24
- */
25
- export class NegotiationGraphFactory {
26
- constructor(database, dispatcher, timeoutQueue, questionerEnqueue, reflectEnqueue, memoryRetrieve, clientDmRetrieve) {
27
- this.deps = {
28
- database,
29
- dispatcher,
30
- timeoutQueue,
31
- questionerEnqueue,
32
- reflectEnqueue,
33
- memoryRetrieve,
34
- clientDmRetrieve,
35
- systemAgent: new IndexNegotiator(),
36
- stallGapAuthor: new NegotiationStallGapAuthor(),
37
- screener: new NegotiationScreener(),
38
- };
39
- }
40
- createGraph() {
41
- const deps = this.deps;
42
- return new StateGraph(NegotiationGraphState)
43
- .addNode("init", (state) => initNode(state, deps))
44
- .addNode("screen", (state) => screenNode(state, deps))
45
- .addNode("turn", (state) => turnNode(state, deps))
46
- .addNode("finalize", (state) => finalizeNode(state, deps))
47
- .addConditionalEdges("turn", routeAfterTurn, {
48
- turn: "turn",
49
- finalize: "finalize",
50
- })
51
- .addConditionalEdges("init", routeAfterInit, { screen: "screen", turn: "turn", finalize: "finalize" })
52
- // P2.2: enforce-mode pass → finalize (screened_out); everything else → turn.
53
- .addConditionalEdges("screen", routeAfterScreen, { turn: "turn", finalize: "finalize" })
54
- .addEdge("__start__", "init")
55
- .addEdge("finalize", "__end__")
56
- .compile();
57
- }
58
- }
59
- /** After init: fail closed, run the outreach gate, or go straight to the first turn. */
60
- export function routeAfterInit(state) {
61
- if (state.error)
62
- return "finalize";
63
- // Screen gate: fresh negotiations only (continuations already passed
64
- // the gate when the dialogue opened); off disables the node entirely.
65
- // IND-563: regular continuations (new opportunity, existing dm_pair)
66
- // also run through the screen gate so stale matches are caught before
67
- // re-engaging the counterparty. Exact ask_user resumes
68
- // (continuationExecution) are mid-flight and must never be re-screened.
69
- if (configuredScreenMode() !== "off" && !state.continuationExecution)
70
- return "screen";
71
- return "turn";
72
- }
73
- /** After the outreach gate: an enforced pass ends the negotiation before any turn. */
74
- export function routeAfterScreen(state) {
75
- return blocksNegotiationBeforeFirstTurn(state.screenDecision, state.turnCount) ? "finalize" : "turn";
76
- }
77
- /** After a turn: keep going, or settle. */
78
- export function routeAfterTurn(state) {
79
- if (state.status === 'waiting_for_agent')
80
- return "finalize";
81
- if (state.status === 'input_required')
82
- return "finalize";
83
- if (state.error)
84
- return "finalize";
85
- if (!state.lastTurn)
86
- return "finalize";
87
- // Terminal actions: accept (v1+v2), reject (v1), withdraw/decline (v2)
88
- if (isTerminalAction(state.lastTurn.action))
89
- return "finalize";
90
- // question routes same as counter — next turn
91
- if (isNegotiationTurnCapReached(state.turnCount, state.maxTurns))
92
- return "finalize";
93
- return "turn";
94
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Negotiation graph, stage 2: the outreach gate.
3
- */
4
- import { type ScreenDecisionRecord } from "./negotiation.screen.js";
5
- import type { NegotiationGraphDeps, NegotiationState } from "./negotiation.graph.shared.js";
6
- /**
7
- * Screen node (P2.1) — the outreach gate. Runs between init and the first
8
- * turn on FRESH negotiations only (routing skips it on continuations and
9
- * when NEGOTIATION_SCREEN_MODE=off). The reaching client's negotiator
10
- * decides whether the match is worth its client's name; in shadow mode the
11
- * decision is recorded (task metadata + trace event + log line) but never
12
- * blocks — the negotiation always proceeds to the first turn. In enforce
13
- * mode (P2.2) a `pass` routes straight to finalize: zero turns, zero
14
- * counterparty involvement, outcome `reason: "screened_out"`, opportunity
15
- * quietly `rejected` (init had already flipped it to `negotiating`).
16
- * A failed screen still fails OPEN in every mode.
17
- */
18
- export declare function screenNode(state: NegotiationState, deps: NegotiationGraphDeps): Promise<{
19
- screenDecision: ScreenDecisionRecord;
20
- memoryBySide: {
21
- [x: string]: import("./negotiation.memory.js").NegotiatorMemoryEntry[];
22
- };
23
- }>;
@@ -1,108 +0,0 @@
1
- /**
2
- * Negotiation graph, stage 2: the outreach gate.
3
- */
4
- import { requestContext } from "../shared/observability/request-context.js";
5
- import { configuredScreenMode } from "./negotiation.screen.contracts.js";
6
- import { buildAttributedDialogue, memoryQueryText, retrieveMemory, screenNodeLog, turnsFromMessages } from "./negotiation.graph.shared.js";
7
- /**
8
- * Screen node (P2.1) — the outreach gate. Runs between init and the first
9
- * turn on FRESH negotiations only (routing skips it on continuations and
10
- * when NEGOTIATION_SCREEN_MODE=off). The reaching client's negotiator
11
- * decides whether the match is worth its client's name; in shadow mode the
12
- * decision is recorded (task metadata + trace event + log line) but never
13
- * blocks — the negotiation always proceeds to the first turn. In enforce
14
- * mode (P2.2) a `pass` routes straight to finalize: zero turns, zero
15
- * counterparty involvement, outcome `reason: "screened_out"`, opportunity
16
- * quietly `rejected` (init had already flipped it to `negotiating`).
17
- * A failed screen still fails OPEN in every mode.
18
- */
19
- export async function screenNode(state, deps) {
20
- const traceEmitter = requestContext.getStore()?.traceEmitter;
21
- const emitWide = (event) => traceEmitter?.(event);
22
- const mode = configuredScreenMode();
23
- const start = Date.now();
24
- // The client is the initiator seat's user — the side whose negotiator is
25
- // reaching out. Fresh runs stamp initiatorUserId in init; fall back to
26
- // sourceUser (what the stamp defaults to anyway).
27
- const initiatorId = state.initiatorUserId ?? state.sourceUser.id;
28
- const clientIsSource = initiatorId !== state.candidateUser.id;
29
- const clientUser = clientIsSource ? state.sourceUser : state.candidateUser;
30
- const counterpartyUser = clientIsSource ? state.candidateUser : state.sourceUser;
31
- // P5.3: the client's own negotiator memory informs the outreach gate.
32
- // Cached into state so the client's first turn reuses it.
33
- const clientSide = clientIsSource ? "source" : "candidate";
34
- const clientMemory = state.memoryBySide?.[clientSide]
35
- ?? (deps.memoryRetrieve
36
- ? await retrieveMemory(deps, clientUser.id, counterpartyUser.id, memoryQueryText(state, counterpartyUser), "screen")
37
- : []);
38
- let decision;
39
- let failedOpen = false;
40
- let screenError;
41
- try {
42
- const counterpartyContext = (await deps.database.getUserContext(counterpartyUser.id, null).catch(() => null))?.text ?? "";
43
- const priorDialogueAttributed = buildAttributedDialogue(state);
44
- decision = await deps.screener.invoke({
45
- clientUser,
46
- counterpartyUser,
47
- ...(counterpartyContext && { counterpartyContext }),
48
- ...(clientMemory.length > 0 && { memory: clientMemory }),
49
- // discoveryQuery belongs to the discovery session's source user; only
50
- // meaningful for the client when the client holds the source side.
51
- ...(clientIsSource && state.discoveryQuery && { discoveryQuery: state.discoveryQuery }),
52
- seedAssessment: state.seedAssessment,
53
- indexContext: state.indexContext,
54
- isContinuation: state.isContinuation,
55
- ...(state.messages.length > 0 && { priorDialogue: turnsFromMessages(state.messages) }),
56
- ...(priorDialogueAttributed && { priorDialogueAttributed }),
57
- });
58
- }
59
- catch (err) {
60
- // Fail open: a screen failure must never block a negotiation.
61
- failedOpen = true;
62
- screenError = err instanceof Error ? err.message : String(err);
63
- screenNodeLog.warn("Screen failed; proceeding open (reach_out)", {
64
- taskId: state.taskId,
65
- opportunityId: state.opportunityId || undefined,
66
- error: screenError,
67
- });
68
- decision = {
69
- decision: "reach_out",
70
- reasoning: `screen_error: ${screenError}`,
71
- evidence: { counterpartyPremiseFit: "", intentAlignment: "" },
72
- };
73
- }
74
- const durationMs = Date.now() - start;
75
- const record = {
76
- ...decision,
77
- mode,
78
- ...(failedOpen && { failedOpen, error: screenError }),
79
- screenedAt: new Date().toISOString(),
80
- durationMs,
81
- };
82
- await deps.database.setTaskScreenDecision?.(state.taskId, record, state.continuationExecution).catch((err) => {
83
- screenNodeLog.error("Failed to persist screen decision", { taskId: state.taskId, error: err });
84
- });
85
- screenNodeLog.info("negotiation_screen", {
86
- taskId: state.taskId,
87
- opportunityId: state.opportunityId || undefined,
88
- decision: decision.decision,
89
- mode,
90
- failedOpen,
91
- durationMs,
92
- });
93
- if (state.opportunityId) {
94
- emitWide({
95
- type: "negotiation_screen",
96
- opportunityId: state.opportunityId,
97
- negotiationConversationId: state.conversationId,
98
- decision: decision.decision,
99
- reasoning: decision.reasoning,
100
- mode,
101
- failedOpen,
102
- durationMs,
103
- });
104
- }
105
- // Routing happens on the conditional edge: shadow always proceeds to
106
- // the first turn; enforce routes a (non-failed-open) pass to finalize.
107
- return { screenDecision: record, memoryBySide: { [clientSide]: clientMemory } };
108
- }
@@ -1,111 +0,0 @@
1
- /**
2
- * Shared vocabulary for the negotiation graph's nodes.
3
- *
4
- * The nodes were closures inside `NegotiationGraphFactory.createGraph()`,
5
- * capturing the injected database, dispatcher and queues. They are top-level
6
- * functions now, each taking an explicit {@link NegotiationGraphDeps}; this
7
- * module owns the bag itself and the helpers more than one node needs.
8
- */
9
- import type { NegotiationGraphDatabase } from "../shared/interfaces/database.interface.js";
10
- import type { NegotiationTimeoutQueue } from "../shared/interfaces/negotiation-events.interface.js";
11
- import type { AgentDispatcher } from "../shared/interfaces/agent-dispatcher.interface.js";
12
- import { NegotiationGraphState, type NegotiationTurn, type UserNegotiationContext } from "./negotiation.state.js";
13
- import { IndexNegotiator } from "./negotiation.agent.js";
14
- import { NegotiationScreener } from "./negotiation.screen.js";
15
- import type { QuestionerEnqueueFn } from "../questions/question.module.js";
16
- import type { ReflectEnqueueFn } from "./negotiation.reflect.js";
17
- import type { NegotiatorMemoryEntry, NegotiatorMemoryRetrieveFn, NegotiatorMemoryScope } from "./negotiation.memory.js";
18
- import type { NegotiatorClientDmMessage, NegotiatorClientDmRetrieveFn } from "./negotiation.client-dm.js";
19
- import type { NegotiationStallGapAuthor } from "./negotiation.stall-gap.js";
20
- import { type AttributedPriorDialogue, type TaskAttribution } from './negotiation.attribution.js';
21
- /** The graph's channel state, as every node sees it. */
22
- export type NegotiationState = typeof NegotiationGraphState.State;
23
- /** Everything the negotiation nodes reach for. Composed once by the factory. */
24
- export interface NegotiationGraphDeps {
25
- database: NegotiationGraphDatabase;
26
- dispatcher: AgentDispatcher;
27
- timeoutQueue?: NegotiationTimeoutQueue;
28
- questionerEnqueue?: QuestionerEnqueueFn;
29
- reflectEnqueue?: ReflectEnqueueFn;
30
- memoryRetrieve?: NegotiatorMemoryRetrieveFn;
31
- /**
32
- * A2H read path: the acting user's own negotiator DM for this signal.
33
- * System-agent grounding only — see `negotiation.client-dm.ts`; this must
34
- * never be forwarded to an external seat via `NegotiationTurnPayload`.
35
- */
36
- clientDmRetrieve?: NegotiatorClientDmRetrieveFn;
37
- /** In-process negotiator used when no personal agent answers. */
38
- systemAgent: IndexNegotiator;
39
- /** Authors the post-stall gap question at finalize (park-on-stall). */
40
- stallGapAuthor?: NegotiationStallGapAuthor;
41
- /** Outreach gate for fresh negotiations. */
42
- screener: NegotiationScreener;
43
- }
44
- export declare const logger: import("../shared/observability/log.js").LoggerWithSource;
45
- export declare const initLog: import("../shared/observability/log.js").LoggerWithSource;
46
- export declare const screenNodeLog: import("../shared/observability/log.js").LoggerWithSource;
47
- export declare const turnLog: import("../shared/observability/log.js").LoggerWithSource;
48
- export declare const finalizeLog: import("../shared/observability/log.js").LoggerWithSource;
49
- export declare const negotiateCandidatesLog: import("../shared/observability/log.js").LoggerWithSource;
50
- /** Extracts the ordered NegotiationTurn list from A2A message data parts. */
51
- export declare function turnsFromMessages(messages: Array<{
52
- parts: unknown[];
53
- }>): NegotiationTurn[];
54
- /**
55
- * Whether `userId`'s side has already spent its one `ask_user` client
56
- * consultation in THIS negotiation (P3.2 rationing: max one per negotiation per
57
- * side). Callers pass `state.messages`, which carries this negotiation's turns
58
- * across all of its sessions — so an earlier session of the same negotiation
59
- * counts, while a consultation spent on a different match with the same
60
- * counterparty does not.
61
- */
62
- export declare function hasPriorAskUser(messages: Array<{
63
- senderId: string;
64
- parts: unknown[];
65
- }>, userId: string): boolean;
66
- /**
67
- * How many ask rounds this negotiation has already spent, BOTH sides combined.
68
- * A round is one persisted `ask_user` park — a mid-flight client consultation
69
- * or a post-stall park — each of which suspends the negotiation on a human
70
- * answer. Same substrate as {@link hasPriorAskUser} (the negotiation's own
71
- * message record, spanning all of its sessions), read negotiation-wide rather
72
- * than per side: the cap this feeds bounds the park → answer → resume loop for
73
- * the negotiation as a whole, so two agents cannot ping-pong their humans
74
- * indefinitely.
75
- */
76
- export declare function countNegotiationAskRounds(messages: Array<{
77
- senderId: string;
78
- parts: unknown[];
79
- }>): number;
80
- /**
81
- * P5.3 memory retrieval — never throws, never blocks a negotiation. The
82
- * injected fn already resolves [] when NEGOTIATOR_MEMORY_INJECT is off;
83
- * this wrapper adds the graph-side failure guard.
84
- */
85
- export declare function retrieveMemory(deps: NegotiationGraphDeps, userId: string, counterpartyUserId: string, queryText: string, scope: NegotiatorMemoryScope): Promise<NegotiatorMemoryEntry[]>;
86
- /**
87
- * A2H client-DM retrieval — never throws, never blocks a negotiation. The
88
- * injected fn already resolves [] when the flag is off or the user has no
89
- * negotiator DM for this signal; this wrapper adds the graph-side failure
90
- * guard, exactly as `retrieveMemory` does for the memory seam.
91
- *
92
- * `userId` is always the ACTING user's — the seam has no counterparty field,
93
- * so the counterparty's DM cannot be requested from here.
94
- */
95
- export declare function retrieveClientDm(deps: NegotiationGraphDeps, userId: string, intentId: string): Promise<NegotiatorClientDmMessage[]>;
96
- /** Similarity query text: seed reasoning + counterparty context. */
97
- export declare function memoryQueryText(state: NegotiationState, counterparty: UserNegotiationContext): string;
98
- /**
99
- * IND-569: resolve a prior negotiation task's attribution metadata for the
100
- * per-opportunity prior-dialogue labels. Never throws — any failure returns
101
- * null so the turns degrade to the unattributed block instead of leaking
102
- * into the current opportunity's context.
103
- */
104
- export declare function resolveTaskAttribution(deps: NegotiationGraphDeps, taskId: string): Promise<TaskAttribution | null>;
105
- /**
106
- * IND-569: build the attributed prior dialogue passed to the screener and
107
- * turn prompts. Combines the immutable seeded attribution (earlier + legacy
108
- * unattributed blocks, resolved once in init) with this session's own turns
109
- * (task-id-matched). Null when there is no seeded attribution.
110
- */
111
- export declare function buildAttributedDialogue(state: NegotiationState): AttributedPriorDialogue | null;