@indexnetwork/protocol 22.0.0-rc.499.1 → 64.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,538 +0,0 @@
1
- /**
2
- * The opportunity operations that are not discovery.
3
- *
4
- * These used to be graph nodes reached through an `operationMode` conditional
5
- * edge at START — nine one-node paths sharing a state machine they never used.
6
- * They are plain async functions now; callers invoke the one they mean. Only
7
- * the discovery pipeline still needs a graph.
8
- *
9
- * Each returns the same shape the corresponding node returned, so callers read
10
- * `readResult` / `mutationResult` exactly as before.
11
- */
12
- import { timed } from '../shared/observability/performance.js';
13
- import { requestContext } from '../shared/observability/request-context.js';
14
- import { getAbortSignalConfig } from '../shared/agent/model-signal.js';
15
- import { safeFallbackSummary } from "./opportunity.presentation.js";
16
- import { AMBIENT_PARK_WINDOW_MS, negotiateCandidates } from '../negotiations/negotiation.module.js';
17
- import { approveOpportunityIntroduction, deleteOpportunityLifecycle, sendOpportunityLifecycle, updateOpportunityLifecycle } from "./opportunity.lifecycle.js";
18
- import { negotiateExistingOpportunity } from "./opportunity.existing-negotiation.js";
19
- import { buildNetworkContexts, deleteLog, introEvaluationLog, introValidationLog, negotiateExistingLog, readLog, sendLog, updateLog } from "./opportunity.graph.shared.js";
20
- import { persistNode } from "./opportunity.graph.persist-node.js";
21
- /**
22
- * Read mode: list opportunities for the user, optionally filtered by networkId.
23
- * Fast path — no LLM calls.
24
- */
25
- export async function readOpportunities(deps, request) {
26
- return timed("OpportunityGraph.read", async () => {
27
- readLog.verbose('Listing opportunities', {
28
- userId: request.userId,
29
- networkId: request.networkId,
30
- });
31
- try {
32
- let indexIdFilter;
33
- if (request.networkId) {
34
- const [isMember, isOwner] = await Promise.all([
35
- deps.database.isNetworkMember(request.networkId, request.userId),
36
- deps.database.isIndexOwner(request.networkId, request.userId),
37
- ]);
38
- if (!isMember && !isOwner) {
39
- return {
40
- readResult: { count: 0, opportunities: [], message: 'Network not found or you are not a member.' },
41
- };
42
- }
43
- indexIdFilter = request.networkId;
44
- }
45
- const rawList = await deps.database.getOpportunitiesForUser(request.userId, {
46
- limit: 30,
47
- ...(indexIdFilter ? { networkId: indexIdFilter } : {}),
48
- });
49
- const list = rawList.filter((opp) => opp.status !== 'expired');
50
- if (list.length === 0) {
51
- return {
52
- readResult: {
53
- count: 0,
54
- message: 'You have no opportunities yet. Create or refine an approved signal; matching runs in the background. Use list_opportunities later to review persisted results.',
55
- opportunities: [],
56
- },
57
- };
58
- }
59
- // Dedupe by counterpart set (same people = one row) so chat does not show "You and X" per index
60
- const counterpartKey = (opp) => opp.actors
61
- .filter((a) => a.userId !== request.userId && a.role !== 'introducer')
62
- .map((a) => a.userId)
63
- .sort()
64
- .join(',');
65
- const byKey = new Map();
66
- for (const opp of list) {
67
- const key = counterpartKey(opp);
68
- const existing = byKey.get(key);
69
- const conf = Number(opp.interpretation?.confidence ?? opp.confidence ?? 0);
70
- const existingConf = existing ? Number(existing.interpretation?.confidence ?? existing.confidence ?? 0) : 0;
71
- const oppTime = opp.updatedAt instanceof Date ? opp.updatedAt.getTime() : new Date(opp.updatedAt).getTime();
72
- const existingTime = existing
73
- ? (existing.updatedAt instanceof Date ? existing.updatedAt.getTime() : new Date(existing.updatedAt).getTime())
74
- : 0;
75
- if (!existing || conf > existingConf || (conf === existingConf && oppTime > existingTime)) {
76
- byKey.set(key, opp);
77
- }
78
- }
79
- const dedupedList = [...byKey.values()];
80
- const enriched = await Promise.all(dedupedList.map(async (opp) => {
81
- // "Other parties" = all actors who are not the current user (exclude introducer for suggestedBy).
82
- // Opportunity graph persists roles as 'agent'|'patient'|'peer'; manual/createManual use 'party'.
83
- const otherParties = opp.actors.filter((a) => a.userId !== request.userId && a.role !== 'introducer');
84
- const introducer = opp.actors.find((a) => a.role === 'introducer');
85
- const partyIds = otherParties.map((a) => a.userId);
86
- const idsToResolve = introducer ? [...partyIds, introducer.userId] : partyIds;
87
- // Use the counterpart's (non-viewer) networkId — it reflects where the match was found.
88
- // actors[0] is typically the viewer with an arbitrary first-target-index value.
89
- const counterpartActor = opp.actors.find((a) => a.userId !== request.userId);
90
- const actorIndexId = counterpartActor?.networkId ?? opp.actors[0]?.networkId;
91
- const [indexRecord, ...profileAndUserPairs] = await Promise.all([
92
- actorIndexId ? deps.database.getNetwork(actorIndexId) : Promise.resolve(null),
93
- ...idsToResolve.map(async (uid) => {
94
- const [profile, user] = await Promise.all([
95
- deps.database.getProfile(uid),
96
- deps.database.getUser(uid),
97
- ]);
98
- return (profile?.identity?.name ?? user?.name ?? 'Unknown');
99
- }),
100
- ]);
101
- const connectedWith = profileAndUserPairs.slice(0, partyIds.length);
102
- const suggestedBy = introducer ? profileAndUserPairs[partyIds.length] ?? null : null;
103
- const category = opp.interpretation?.category ?? 'connection';
104
- const confidence = opp.interpretation?.confidence ?? (opp.confidence ? Number(opp.confidence) : null);
105
- const source = opp.detection?.source ? (OPPORTUNITY_SOURCE_LABEL[opp.detection.source] ?? opp.detection.source) : null;
106
- return {
107
- id: opp.id,
108
- indexName: indexRecord?.title ?? (actorIndexId ?? ''),
109
- connectedWith,
110
- suggestedBy,
111
- reasoning: safeFallbackSummary(opp.interpretation?.reasoning, {
112
- counterpartName: connectedWith.join(' and '),
113
- emptyText: 'Connection opportunity',
114
- }),
115
- status: opp.status,
116
- category,
117
- confidence: confidence != null ? confidence : null,
118
- source,
119
- };
120
- }));
121
- return {
122
- readResult: {
123
- count: enriched.length,
124
- message: `You have ${enriched.length} opportunity(ies).`,
125
- opportunities: enriched,
126
- },
127
- };
128
- }
129
- catch (err) {
130
- readLog.error('Failed', { error: err });
131
- return {
132
- readResult: { count: 0, opportunities: [], message: 'Failed to list opportunities.' },
133
- };
134
- }
135
- });
136
- }
137
- /** Human-readable label per detection source, for the read-mode listing. */
138
- const OPPORTUNITY_SOURCE_LABEL = {
139
- chat: 'Suggested in chat',
140
- opportunity_graph: 'System match',
141
- manual: 'Manual',
142
- cron: 'Scheduled',
143
- member_added: 'Member added',
144
- introducer_discovery: 'Suggested by contact',
145
- };
146
- /**
147
- * Update mode: change opportunity status (accept, reject, etc.).
148
- * For 'accepted', enforces the self-accept guard: the caller's actor entry
149
- * must not already have `actedAt` set — i.e. the caller has not yet been
150
- * the one to advance this opportunity's state. Stamps `actedAt` on accept
151
- * atomically with the status change via `stampOpportunityActorAction`.
152
- */
153
- export async function updateOpportunityStatus(deps, request) {
154
- return timed("OpportunityGraph.update", async () => {
155
- updateLog.verbose('Updating opportunity status', {
156
- userId: request.userId,
157
- opportunityId: request.opportunityId,
158
- newStatus: request.newStatus,
159
- });
160
- try {
161
- return {
162
- mutationResult: await updateOpportunityLifecycle(deps.database, {
163
- opportunityId: request.opportunityId,
164
- actorUserId: request.userId,
165
- newStatus: request.newStatus,
166
- }),
167
- };
168
- }
169
- catch (err) {
170
- updateLog.error('Failed', { error: err });
171
- return { mutationResult: { success: false, error: 'Failed to update opportunity.' } };
172
- }
173
- });
174
- }
175
- /** Delete mode: expire/archive an opportunity. */
176
- export async function deleteOpportunity(deps, request) {
177
- return timed("OpportunityGraph.delete", async () => {
178
- deleteLog.verbose('Expiring opportunity', {
179
- userId: request.userId,
180
- opportunityId: request.opportunityId,
181
- });
182
- try {
183
- return {
184
- mutationResult: await deleteOpportunityLifecycle(deps.database, {
185
- opportunityId: request.opportunityId,
186
- actorUserId: request.userId,
187
- }),
188
- };
189
- }
190
- catch (err) {
191
- deleteLog.error('Failed', { error: err });
192
- return { mutationResult: { success: false, error: 'Failed to delete opportunity.' } };
193
- }
194
- });
195
- }
196
- /** Send mode: promote a latent or draft opportunity to pending + queue notification. */
197
- export async function sendOpportunity(deps, request) {
198
- return timed("OpportunityGraph.send", async () => {
199
- sendLog.verbose('Sending opportunity', {
200
- userId: request.userId,
201
- opportunityId: request.opportunityId,
202
- });
203
- try {
204
- return {
205
- mutationResult: await sendOpportunityLifecycle(deps.database, { opportunityId: request.opportunityId, actorUserId: request.userId }, deps.queueNotification),
206
- };
207
- }
208
- catch (err) {
209
- sendLog.error('Failed', { error: err });
210
- return { mutationResult: { success: false, error: 'Failed to send opportunity.' } };
211
- }
212
- });
213
- }
214
- /**
215
- * Approve-introduction mode.
216
- * Called by the introducer to approve a latent introducer-pattern opportunity.
217
- * Sets approved=true on the introducer actor (status stays latent), then
218
- * enqueues a negotiate_existing job so the parties negotiate normally.
219
- */
220
- export async function approveIntroduction(deps, request) {
221
- return {
222
- mutationResult: await approveOpportunityIntroduction(deps.database, { opportunityId: request.opportunityId, actorUserId: request.userId }, deps.queueNegotiateExisting),
223
- };
224
- }
225
- /**
226
- * Negotiate-existing mode: load an existing opportunity by ID and run bilateral negotiation.
227
- * Used after introducer approval to trigger the normal negotiation flow for a latent opportunity.
228
- */
229
- export async function negotiateExisting(deps, request) {
230
- if (!request.opportunityId)
231
- return {};
232
- if (!deps.negotiationGraph) {
233
- negotiateExistingLog.warn('No negotiationGraph wired; skipping', {
234
- opportunityId: request.opportunityId,
235
- });
236
- return {};
237
- }
238
- try {
239
- const continuation = request.continuation;
240
- const result = await negotiateExistingOpportunity(deps.database, async ({ sourceUser, candidate, indexContextOverrides, continuation: execution }) => {
241
- let receipt;
242
- // Deliberately no `initiatorUserId`: re-entries inherit the prior task's
243
- // stamped seat in negotiation initialization, never re-deriving it here.
244
- const acceptedResults = await negotiateCandidates(deps.negotiationGraph, sourceUser, [candidate], { networkId: '', prompt: '' }, {
245
- maxTurns: Number(process.env.NEGOTIATION_MAX_TURNS_AMBIENT) || 6,
246
- indexContextOverrides,
247
- timeoutMs: AMBIENT_PARK_WINDOW_MS,
248
- ...(execution ? {
249
- resumeFromTaskId: execution.taskId,
250
- continuationSettlementId: execution.settlementId,
251
- continuationExecution: execution,
252
- onCandidateResolved: async ({ continuationReceipt }) => {
253
- if (continuationReceipt?.successorTaskId === execution.successorTaskId)
254
- receipt = continuationReceipt;
255
- },
256
- } : {}),
257
- });
258
- return { accepted: acceptedResults.length > 0, ...(receipt ? { receipt } : {}) };
259
- }, { opportunityId: request.opportunityId, actorUserId: request.userId, continuation }, deps.queueNotification, {
260
- onNotificationFailure: ({ actorId, error }) => {
261
- negotiateExistingLog.warn('Failed to queue notification', { actorId, error });
262
- },
263
- });
264
- if (result.kind === 'skipped') {
265
- const messages = {
266
- not_found: 'Opportunity not found',
267
- stale_continuation: 'Exact continuation actor binding is stale',
268
- no_source_actor: 'No source actor found',
269
- no_candidate_actor: 'No candidate actor found',
270
- };
271
- negotiateExistingLog.warn(messages[result.reason], {
272
- opportunityId: request.opportunityId,
273
- ...(result.reason === 'stale_continuation' && continuation ? { taskId: continuation.taskId } : {}),
274
- });
275
- return {};
276
- }
277
- negotiateExistingLog.info('Negotiation complete', {
278
- opportunityId: result.opportunityId,
279
- accepted: result.accepted,
280
- continuationFence: result.continuationFence,
281
- });
282
- return result.receipt ? { negotiationContinuationReceipt: result.receipt } : {};
283
- }
284
- catch (err) {
285
- negotiateExistingLog.error('Failed', { opportunityId: request.opportunityId, error: err });
286
- return { error: `Failed to load opportunity: ${err instanceof Error ? err.message : String(err)}` };
287
- }
288
- }
289
- /**
290
- * Introduction mode: validate → evaluate → persist.
291
- *
292
- * Validation gates on scope and membership; evaluation asks the evaluator to
293
- * justify the pairing (falling back to the introducer's own word); persistence
294
- * reuses the discovery pipeline's persist stage.
295
- */
296
- export async function createIntroduction(deps, request) {
297
- const state = introductionState(request);
298
- const validation = await validateIntroduction(deps, state);
299
- // Mirrors what the graph produced on this path: the error, and empty results.
300
- if (validation.error)
301
- return { opportunities: [], evaluatedOpportunities: [], agentTimings: [], ...validation };
302
- const evaluation = await evaluateIntroduction(deps, { ...state, ...validation });
303
- const persisted = await persistNode({ ...state, ...evaluation }, deps);
304
- return { ...evaluation, ...persisted };
305
- }
306
- /**
307
- * Introduction validation: network scope, membership for introducer and all
308
- * party users, and no existing opportunity between the parties.
309
- */
310
- export async function validateIntroduction(deps, state) {
311
- return timed("OpportunityGraph.introValidation", async () => {
312
- introValidationLog.verbose('Starting', {
313
- userId: state.userId,
314
- networkId: state.networkId,
315
- entitiesCount: state.introductionEntities?.length ?? 0,
316
- });
317
- try {
318
- const entities = state.introductionEntities ?? [];
319
- const primaryNetworkId = (state.networkId ?? entities[0]?.networkId);
320
- const partyUserIds = [...new Set(entities.map((e) => e.userId).filter((id) => id !== state.userId))];
321
- if (!primaryNetworkId || partyUserIds.length < 1) {
322
- return {
323
- error: 'Introduction requires networkId and at least two entities (introducer + one counterpart).',
324
- };
325
- }
326
- if (state.requiredNetworkId && primaryNetworkId !== state.requiredNetworkId) {
327
- return {
328
- error: 'This chat is scoped to a different community. You can only introduce members of the current community.',
329
- };
330
- }
331
- const [introducerIsMember, introducerIsOwner] = await Promise.all([
332
- deps.database.isNetworkMember(primaryNetworkId, state.userId),
333
- deps.database.isIndexOwner(primaryNetworkId, state.userId),
334
- ]);
335
- if (!introducerIsMember && !introducerIsOwner) {
336
- return {
337
- error: 'One or more users are not members of the specified community. You can only introduce members who share a network.',
338
- };
339
- }
340
- const partyInScope = await Promise.all(partyUserIds.map(async (userId) => {
341
- const [isMember, isOwner] = await Promise.all([
342
- deps.database.isNetworkMember(primaryNetworkId, userId),
343
- deps.database.isIndexOwner(primaryNetworkId, userId),
344
- ]);
345
- return isMember || isOwner;
346
- }));
347
- const allPartyMembers = partyInScope.every(Boolean);
348
- if (!allPartyMembers) {
349
- return {
350
- error: 'One or more users are not members of the specified community. You can only introduce members who share a network.',
351
- };
352
- }
353
- const exists = await deps.database.opportunityExistsBetweenActors(partyUserIds, primaryNetworkId);
354
- if (exists) {
355
- return { error: 'An opportunity already exists between these people.' };
356
- }
357
- introValidationLog.verbose('Validation passed');
358
- return {};
359
- }
360
- catch (err) {
361
- const errMsg = err instanceof Error ? err.message : String(err);
362
- introValidationLog.error('Failed', {
363
- userId: state.userId,
364
- networkId: state.networkId,
365
- error: err,
366
- });
367
- return {
368
- error: 'Introduction validation failed.',
369
- trace: [{
370
- node: "intro_validation_fatal",
371
- detail: `IntroValidation failed: ${errMsg}`,
372
- data: { error: errMsg },
373
- }],
374
- };
375
- }
376
- });
377
- }
378
- /**
379
- * Build fallback reasoning and actors when the evaluator returns empty or throws.
380
- */
381
- function buildIntroFallback(entities, state, primaryNetworkId, introducerName) {
382
- const reasoning = `${introducerName ?? 'A member'} believes these people should connect.` +
383
- (state.introductionHint ? ` Context: ${state.introductionHint}` : '');
384
- const score = 70;
385
- const partyUserIds = entities.map((e) => e.userId).filter((id) => id !== state.userId);
386
- const actors = partyUserIds.map((uid) => ({
387
- userId: uid,
388
- role: 'peer',
389
- networkId: primaryNetworkId,
390
- }));
391
- return { reasoning, score, actors };
392
- }
393
- /**
394
- * Introduction evaluation: runs the entity-bundle evaluator and sets
395
- * evaluatedOpportunities (one) + introductionContext.
396
- */
397
- export async function evaluateIntroduction(deps, state) {
398
- return timed("OpportunityGraph.introEvaluation", async () => {
399
- introEvaluationLog.verbose('Starting', { userId: state.userId });
400
- if (state.error) {
401
- return { evaluatedOpportunities: [], agentTimings: [] };
402
- }
403
- const entities = state.introductionEntities ?? [];
404
- const primaryNetworkId = (state.networkId ?? entities[0]?.networkId);
405
- if (!primaryNetworkId || entities.length < 2) {
406
- return { evaluatedOpportunities: [], error: 'Missing entities or network for introduction.', agentTimings: [] };
407
- }
408
- const agentTimingsAccum = [];
409
- let introducerName;
410
- let reasoning;
411
- let score;
412
- let actors = [];
413
- const _traceEmitterIntro = requestContext.getStore()?.traceEmitter;
414
- let _introEvalStarted = false;
415
- let _evalStart = Date.now();
416
- try {
417
- const introducerUser = await deps.database.getUser(state.userId);
418
- introducerName = introducerUser?.name ?? undefined;
419
- const networkContexts = await buildNetworkContexts(entities, deps.database);
420
- const input = {
421
- discovererId: state.userId,
422
- entities,
423
- introductionMode: true,
424
- introducerName,
425
- introductionHint: state.introductionHint ?? undefined,
426
- networkContexts,
427
- };
428
- _evalStart = Date.now();
429
- _traceEmitterIntro?.({ type: "agent_start", name: "intro-evaluator" });
430
- _introEvalStarted = true;
431
- const evaluated = await deps.evaluatorAgent.invokeEntityBundle(input, { minScore: 0, ...getAbortSignalConfig() });
432
- const _introDuration = Date.now() - _evalStart;
433
- agentTimingsAccum.push({ name: 'opportunity.evaluator', durationMs: _introDuration });
434
- _traceEmitterIntro?.({ type: "agent_end", name: "intro-evaluator", durationMs: _introDuration, summary: "Evaluated introduction" });
435
- if (evaluated.length > 0) {
436
- const best = evaluated[0];
437
- reasoning = best.reasoning;
438
- score = best.score;
439
- actors = best.actors.map((a) => ({
440
- userId: a.userId,
441
- role: a.role,
442
- intentId: a.intentId ?? undefined,
443
- networkId: primaryNetworkId,
444
- }));
445
- }
446
- else {
447
- const fallback = buildIntroFallback(entities, state, primaryNetworkId, introducerName);
448
- reasoning = fallback.reasoning;
449
- score = fallback.score;
450
- actors = fallback.actors;
451
- }
452
- }
453
- catch (evalErr) {
454
- const errMsg = evalErr instanceof Error ? evalErr.message : String(evalErr);
455
- // Close the intro-evaluator span if it was started before the error
456
- if (_introEvalStarted) {
457
- const _introErrDuration = Date.now() - _evalStart;
458
- _traceEmitterIntro?.({ type: "agent_end", name: "intro-evaluator", durationMs: _introErrDuration, summary: `error — ${errMsg}` });
459
- agentTimingsAccum.push({ name: 'opportunity.evaluator', durationMs: _introErrDuration });
460
- }
461
- introEvaluationLog.warn('Evaluator or getUser failed, using fallback', { error: evalErr });
462
- const fallback = buildIntroFallback(entities, state, primaryNetworkId, introducerName);
463
- reasoning = fallback.reasoning;
464
- score = fallback.score;
465
- actors = fallback.actors;
466
- return {
467
- evaluatedOpportunities: [{ actors, score, reasoning }],
468
- introductionContext: { createdByName: introducerName },
469
- options: { ...state.options, initialStatus: state.options.initialStatus ?? 'latent' },
470
- agentTimings: agentTimingsAccum,
471
- trace: [{
472
- node: "intro_evaluation_fatal",
473
- detail: `IntroEvaluation failed (using fallback): ${errMsg}`,
474
- data: { error: errMsg },
475
- }],
476
- };
477
- }
478
- const evaluatedOpportunity = { actors, score, reasoning };
479
- return {
480
- evaluatedOpportunities: [evaluatedOpportunity],
481
- introductionContext: { createdByName: introducerName },
482
- options: { ...state.options, initialStatus: state.options.initialStatus ?? 'latent' },
483
- agentTimings: agentTimingsAccum,
484
- };
485
- });
486
- }
487
- /**
488
- * The channel defaults the introduction path relies on. Discovery-only channels
489
- * stay at their empty values because the introduction path never fills them.
490
- */
491
- function introductionState(request) {
492
- return {
493
- userId: request.userId,
494
- searchQuery: undefined,
495
- networkId: request.networkId,
496
- indexScope: undefined,
497
- triggerIntentId: undefined,
498
- targetUserId: undefined,
499
- onBehalfOfUserId: undefined,
500
- options: { ...(request.options ?? {}) },
501
- operationMode: 'create_introduction',
502
- introductionEntities: request.introductionEntities,
503
- introductionHint: request.introductionHint,
504
- requiredNetworkId: request.requiredNetworkId,
505
- introductionContext: undefined,
506
- opportunityId: undefined,
507
- newStatus: undefined,
508
- indexedIntents: [],
509
- userNetworks: [],
510
- targetNetworks: [],
511
- indexRelevancyScores: {},
512
- discoverySource: 'context',
513
- resolvedTriggerIntentId: undefined,
514
- sourceProfile: null,
515
- sourcePremises: [],
516
- sourceContexts: [],
517
- resolvedIntentInIndex: false,
518
- createIntentSuggested: false,
519
- suggestedIntentDescription: undefined,
520
- hydeEmbeddings: {},
521
- candidates: [],
522
- remainingCandidates: [],
523
- discoveryId: null,
524
- evaluatedCandidates: [],
525
- evaluatedOpportunities: [],
526
- opportunities: [],
527
- existingBetweenActors: [],
528
- persistenceOutcome: undefined,
529
- negotiationContinuationReceipt: undefined,
530
- error: undefined,
531
- readResult: undefined,
532
- mutationResult: undefined,
533
- trace: [],
534
- agentTimings: [],
535
- discoveryNegotiations: [],
536
- discoverySummary: null,
537
- };
538
- }
@@ -1,109 +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 { type OpportunityGraphDeps, type OpportunityState } from "./opportunity.graph.shared.js";
12
- /**
13
- * Node 3b: Negotiate (post-persist)
14
- */
15
- export declare function negotiateNode(state: OpportunityState, deps: OpportunityGraphDeps): Promise<{
16
- trace?: undefined;
17
- discoveryNegotiations?: undefined;
18
- discoverySummary?: undefined;
19
- } | {
20
- trace: {
21
- node: string;
22
- detail: string;
23
- data: {
24
- negotiateTimeoutMs: number;
25
- candidateCount: number;
26
- durationMs: number;
27
- };
28
- }[];
29
- discoveryNegotiations: {
30
- indexContext: string;
31
- outcome: {
32
- reasoning: string;
33
- hasOpportunity: boolean;
34
- reason?: "timeout" | "turn_cap" | "screened_out" | undefined;
35
- agreedRoles?: {
36
- userId: string;
37
- role: "agent" | "patient" | "peer";
38
- }[] | undefined;
39
- };
40
- counterpartyHint: string;
41
- counterpartyId: string;
42
- turns: {
43
- reasoning: string;
44
- action: "propose" | "accept" | "reject" | "counter" | "question" | "outreach" | "withdraw" | "decline" | "ask_user";
45
- suggestedRoles: {
46
- ownUser: "agent" | "patient" | "peer";
47
- otherUser: "agent" | "patient" | "peer";
48
- };
49
- }[];
50
- seedAssessmentScore?: number | undefined;
51
- }[];
52
- discoverySummary: import("../shared/schemas/discovery-question.schema.js").DiscoverySummary;
53
- } | {
54
- trace: ({
55
- node: string;
56
- detail: string;
57
- data: {
58
- userId: string;
59
- opportunityId: string | undefined;
60
- name: string;
61
- outcome: string;
62
- turns: number;
63
- };
64
- } | {
65
- node: string;
66
- detail: string;
67
- data: {
68
- durationMs: number;
69
- candidateCount: number;
70
- acceptedCount: number;
71
- otherCount: number;
72
- };
73
- })[];
74
- discoveryNegotiations: {
75
- indexContext: string;
76
- outcome: {
77
- reasoning: string;
78
- hasOpportunity: boolean;
79
- reason?: "timeout" | "turn_cap" | "screened_out" | undefined;
80
- agreedRoles?: {
81
- userId: string;
82
- role: "agent" | "patient" | "peer";
83
- }[] | undefined;
84
- };
85
- counterpartyHint: string;
86
- counterpartyId: string;
87
- turns: {
88
- reasoning: string;
89
- action: "propose" | "accept" | "reject" | "counter" | "question" | "outreach" | "withdraw" | "decline" | "ask_user";
90
- suggestedRoles: {
91
- ownUser: "agent" | "patient" | "peer";
92
- otherUser: "agent" | "patient" | "peer";
93
- };
94
- }[];
95
- seedAssessmentScore?: number | undefined;
96
- }[];
97
- discoverySummary: import("../shared/schemas/discovery-question.schema.js").DiscoverySummary;
98
- } | {
99
- trace: {
100
- node: string;
101
- detail: string;
102
- data: {
103
- durationMs: number;
104
- error: boolean;
105
- };
106
- }[];
107
- discoveryNegotiations: never[];
108
- discoverySummary: import("../shared/schemas/discovery-question.schema.js").DiscoverySummary;
109
- }>;