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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -132
  12. package/dist/index.js +41 -100
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -1,173 +0,0 @@
1
- /**
2
- * Shared vocabulary for the opportunity graph's nodes and modes.
3
- *
4
- * The nodes used to be closures inside `OpportunityGraphFactory.createGraph()`,
5
- * capturing `this` and the resolved thresholds. They are now top-level functions
6
- * that take an explicit {@link OpportunityGraphDeps} bag, so each node is
7
- * readable — and testable — on its own. This module owns the pieces more than
8
- * one of them needs: the dependency bag, the loggers, the trace wrapper, and the
9
- * small pure helpers.
10
- */
11
- import type { Id } from '../shared/interfaces/database.interface.js';
12
- import { OpportunityGraphState, type IndexedIntent, type SourceProfileData, type CandidateMatch } from './opportunity.state.js';
13
- import type { CandidateProfile, EvaluatorEntity, EvaluatorInput } from "./opportunity.evaluator.js";
14
- import type { OpportunityGraphDatabase, Opportunity } from '../shared/interfaces/database.interface.js';
15
- import type { Embedder } from '../shared/interfaces/embedder.interface.js';
16
- import type { NegotiationGraphLike } from '../negotiations/negotiation.module.js';
17
- import type { AgentDispatcher } from '../shared/interfaces/agent-dispatcher.interface.js';
18
- import type { QueueOpportunityNotificationFn } from "./opportunity.lifecycle.js";
19
- import type { StampNewbornOpportunitiesFn } from "./opportunity.newborn-stamping.js";
20
- /** The graph's channel state, as every node sees it. */
21
- export type OpportunityState = typeof OpportunityGraphState.State;
22
- /** Optional evaluator for testing (avoids LLM calls). */
23
- export type OpportunityEvaluatorLike = {
24
- invoke?: (sourceProfileContext: string, candidates: CandidateProfile[], options: {
25
- minScore?: number;
26
- }) => Promise<Array<{
27
- sourceId: string;
28
- candidateId: string;
29
- score: number;
30
- reasoning: string;
31
- valencyRole: 'Agent' | 'Patient' | 'Peer';
32
- }>>;
33
- invokeEntityBundle?: (input: EvaluatorInput, options: {
34
- minScore?: number;
35
- returnAll?: boolean;
36
- signal?: AbortSignal;
37
- }) => Promise<Array<{
38
- reasoning: string;
39
- score: number;
40
- actors: Array<{
41
- userId: string;
42
- role: 'agent' | 'patient' | 'peer';
43
- intentId?: string | null;
44
- evidenceKey?: string | null;
45
- }>;
46
- }>>;
47
- };
48
- /** Input shape for the HyDE graph invoke call (query-based embedding). */
49
- export interface HydeGeneratorInvokeInput {
50
- sourceType: 'query';
51
- sourceText: string;
52
- forceRegenerate?: boolean;
53
- profileContext?: string;
54
- }
55
- /** The compiled HyDE graph, as the discovery node consumes it. */
56
- export interface OpportunityHydeGenerator {
57
- invoke: (input: HydeGeneratorInvokeInput) => Promise<{
58
- hydeEmbeddings: Record<string, number[]>;
59
- lenses?: Array<{
60
- label: string;
61
- corpus: 'profiles' | 'intents' | 'premises';
62
- }>;
63
- hydeDocuments?: Record<string, {
64
- hydeText?: string;
65
- lens?: string;
66
- }>;
67
- }>;
68
- }
69
- export interface OpportunityGraphThresholdOverrides {
70
- retrievalMinSimilarity?: number;
71
- evaluatorMinScore?: number;
72
- }
73
- /**
74
- * Everything the nodes and modes reach for. Composed once by
75
- * `OpportunityGraphFactory` and passed to each function explicitly.
76
- */
77
- export interface OpportunityGraphDeps {
78
- database: OpportunityGraphDatabase;
79
- embedder: Embedder;
80
- hydeGenerator: OpportunityHydeGenerator;
81
- /** Resolved evaluator: the injected test double, or a real `OpportunityEvaluator`. */
82
- evaluatorAgent: OpportunityEvaluatorLike;
83
- queueNotification?: QueueOpportunityNotificationFn;
84
- negotiationGraph?: NegotiationGraphLike;
85
- /**
86
- * Used on the chat path to decide whether to wait for the user's personal
87
- * agent (long timeout) or fall back to the system agent immediately
88
- * (short timeout). Without it, the chat path always uses a short timeout.
89
- */
90
- agentDispatcher?: Pick<AgentDispatcher, 'hasExternalAgent'>;
91
- /**
92
- * Callback to enqueue a negotiate_existing job for an opportunity.
93
- * When provided, negotiate_existing mode uses this to queue follow-up
94
- * negotiations after introducer approval.
95
- */
96
- queueNegotiateExisting?: (opportunityId: string, userId: string) => Promise<void>;
97
- /** Host-side P4b stamper. Omitted by manual/introducer/enrichment roots. */
98
- stampNewbornOpportunities?: StampNewbornOpportunitiesFn;
99
- retrievalMinSimilarity: number;
100
- evaluatorMinScore: number;
101
- }
102
- export declare const logger: import("../shared/observability/log.js").LoggerWithSource;
103
- export declare const prepLog: import("../shared/observability/log.js").LoggerWithSource;
104
- export declare const scopeLog: import("../shared/observability/log.js").LoggerWithSource;
105
- export declare const resolveLog: import("../shared/observability/log.js").LoggerWithSource;
106
- export declare const discoveryLog: import("../shared/observability/log.js").LoggerWithSource;
107
- export declare const evaluationLog: import("../shared/observability/log.js").LoggerWithSource;
108
- export declare const negotiateLog: import("../shared/observability/log.js").LoggerWithSource;
109
- export declare const rankingLog: import("../shared/observability/log.js").LoggerWithSource;
110
- export declare const introValidationLog: import("../shared/observability/log.js").LoggerWithSource;
111
- export declare const introEvaluationLog: import("../shared/observability/log.js").LoggerWithSource;
112
- export declare const persistLog: import("../shared/observability/log.js").LoggerWithSource;
113
- export declare const persistPathLog: import("../shared/observability/log.js").LoggerWithSource;
114
- export declare const persistDedupLog: import("../shared/observability/log.js").LoggerWithSource;
115
- export declare const readLog: import("../shared/observability/log.js").LoggerWithSource;
116
- export declare const updateLog: import("../shared/observability/log.js").LoggerWithSource;
117
- export declare const deleteLog: import("../shared/observability/log.js").LoggerWithSource;
118
- export declare const sendLog: import("../shared/observability/log.js").LoggerWithSource;
119
- export declare const negotiateExistingLog: import("../shared/observability/log.js").LoggerWithSource;
120
- export declare const routingLog: import("../shared/observability/log.js").LoggerWithSource;
121
- /**
122
- * Error text can include provider response bodies, URLs, and credentials. Keep
123
- * observability useful by retaining only a conservative error class at this
124
- * boundary; detailed errors are intentionally not emitted from graph traces.
125
- */
126
- export declare function safeOpportunityGraphError(_error: unknown): string;
127
- /**
128
- * Wraps a graph node function to emit agent_start/agent_end trace events
129
- * at its boundaries so the frontend TRACE panel shows real-time progress.
130
- * @param traceName - Kebab-case agent name (e.g. "opportunity-prep")
131
- * @param nodeFn - The original node function
132
- * @param summaryFn - Optional function to derive a summary string from the node result
133
- */
134
- export declare function withNodeTrace<S, R>(traceName: string, nodeFn: (state: S) => Promise<R>, summaryFn?: (result: R) => string | undefined): (state: S) => Promise<R>;
135
- /** Shared trace summary: surface `error` when a node returned one. */
136
- export declare function errorSummary(result: unknown): string | undefined;
137
- /** Time window for persist-node dedup. Suppresses a second opportunity with the same person while a recent one (within 30 days) is still in flight, so a person is not re-surfaced multiple times within a month (EDG-23). */
138
- export declare const DEDUP_WINDOW_MS: number;
139
- export declare function isActiveNegotiationTaskFresh(task: {
140
- state: string;
141
- updatedAt: Date;
142
- }): boolean;
143
- export declare function triggerForOwner(opportunity: Opportunity, ownerUserId: string): string | undefined;
144
- export declare function belongsToOwnedIntent(opportunity: Opportunity, ownerUserId: string, triggerIntentId: string): boolean;
145
- export declare function getRejectionCooldownMs(): number;
146
- /**
147
- * Similarity multiplier applied to candidates that fall within the rejection
148
- * cool-down window (IND-567). 0.5 halves their ranking score, typically
149
- * pushing them below the evaluation-batch cut while leaving a soft trace in
150
- * the trace log rather than silently dropping them.
151
- */
152
- export declare const REJECTION_COOLDOWN_SIMILARITY_PENALTY = 0.5;
153
- export declare function networkMembershipPairKey(userId: string, networkId: string): string;
154
- /** Per-source cap for candidate premise matches. */
155
- export declare const PREMISE_MATCH_LIMIT_PER_SOURCE = 20;
156
- /** Resolve the source premise discovery cap from env, preserving 0 as an explicit disable switch. */
157
- export declare function getSourcePremiseDiscoveryLimit(): number;
158
- export declare function buildEvaluatorEvidenceKey(candidate: CandidateMatch): string;
159
- /**
160
- * Builds a compact text summary of the discoverer's profile and active intents
161
- * for use as profileContext in HyDE generation.
162
- * @param profile - The discoverer's profile data (identity, attributes)
163
- * @param intents - The discoverer's indexed intents (capped at 5)
164
- * @returns A context string, or undefined if no meaningful data is available
165
- */
166
- export declare function buildDiscovererContext(profile: SourceProfileData | null | undefined, intents: IndexedIntent[] | undefined): string | undefined;
167
- /**
168
- * Build a networkContexts map for the evaluator from a set of entities.
169
- * Fetches network data, checks permissions.contextInjection.discovery,
170
- * and renders context for eligible networks.
171
- */
172
- export declare function buildNetworkContexts(entities: EvaluatorEntity[], database: Pick<OpportunityGraphDatabase, 'getNetwork'>): Promise<Record<string, string>>;
173
- export type { Id };
@@ -1,199 +0,0 @@
1
- /**
2
- * Shared vocabulary for the opportunity graph's nodes and modes.
3
- *
4
- * The nodes used to be closures inside `OpportunityGraphFactory.createGraph()`,
5
- * capturing `this` and the resolved thresholds. They are now top-level functions
6
- * that take an explicit {@link OpportunityGraphDeps} bag, so each node is
7
- * readable — and testable — on its own. This module owns the pieces more than
8
- * one of them needs: the dependency bag, the loggers, the trace wrapper, and the
9
- * small pure helpers.
10
- */
11
- import { ASK_USER_LOCK_SLACK_MS, askUserAnswerWindowMs } from '../negotiations/negotiation.module.js';
12
- import { protocolLogger } from '../shared/observability/protocol.logger.js';
13
- import { renderNetworkContext } from '../shared/network/metadata.renderer.js';
14
- import { requestContext } from '../shared/observability/request-context.js';
15
- export const logger = protocolLogger('OpportunityGraph');
16
- export const prepLog = protocolLogger('OpportunityGraph:Prep');
17
- export const scopeLog = protocolLogger('OpportunityGraph:Scope');
18
- export const resolveLog = protocolLogger('OpportunityGraph:Resolve');
19
- export const discoveryLog = protocolLogger('OpportunityGraph:Discovery');
20
- export const evaluationLog = protocolLogger('OpportunityGraph:Evaluation');
21
- export const negotiateLog = protocolLogger('OpportunityGraph:Negotiate');
22
- export const rankingLog = protocolLogger('OpportunityGraph:Ranking');
23
- export const introValidationLog = protocolLogger('OpportunityGraph:IntroValidation');
24
- export const introEvaluationLog = protocolLogger('OpportunityGraph:IntroEvaluation');
25
- export const persistLog = protocolLogger('OpportunityGraph:Persist');
26
- export const persistPathLog = protocolLogger('OpportunityGraph:Persist:PathSelect');
27
- export const persistDedupLog = protocolLogger('OpportunityGraph:Persist:Dedup');
28
- export const readLog = protocolLogger('OpportunityGraph:Read');
29
- export const updateLog = protocolLogger('OpportunityGraph:Update');
30
- export const deleteLog = protocolLogger('OpportunityGraph:Delete');
31
- export const sendLog = protocolLogger('OpportunityGraph:Send');
32
- export const negotiateExistingLog = protocolLogger('OpportunityGraph:NegotiateExisting');
33
- export const routingLog = protocolLogger('OpportunityGraph:Routing');
34
- /**
35
- * Error text can include provider response bodies, URLs, and credentials. Keep
36
- * observability useful by retaining only a conservative error class at this
37
- * boundary; detailed errors are intentionally not emitted from graph traces.
38
- */
39
- export function safeOpportunityGraphError(_error) {
40
- return 'OpportunityEvaluationError: [redacted]';
41
- }
42
- /**
43
- * Wraps a graph node function to emit agent_start/agent_end trace events
44
- * at its boundaries so the frontend TRACE panel shows real-time progress.
45
- * @param traceName - Kebab-case agent name (e.g. "opportunity-prep")
46
- * @param nodeFn - The original node function
47
- * @param summaryFn - Optional function to derive a summary string from the node result
48
- */
49
- export function withNodeTrace(traceName, nodeFn, summaryFn) {
50
- return async (state) => {
51
- const traceEmitter = requestContext.getStore()?.traceEmitter;
52
- const nodeStart = Date.now();
53
- traceEmitter?.({ type: "agent_start", name: traceName });
54
- try {
55
- const result = await nodeFn(state);
56
- const durationMs = Date.now() - nodeStart;
57
- const summary = summaryFn?.(result) ?? undefined;
58
- traceEmitter?.({ type: "agent_end", name: traceName, durationMs, summary });
59
- return result;
60
- }
61
- catch (err) {
62
- const durationMs = Date.now() - nodeStart;
63
- const errMsg = safeOpportunityGraphError(err);
64
- traceEmitter?.({ type: "agent_end", name: traceName, durationMs, summary: `error: ${errMsg}` });
65
- throw err;
66
- }
67
- };
68
- }
69
- /** Shared trace summary: surface `error` when a node returned one. */
70
- export function errorSummary(result) {
71
- const r = result;
72
- return r?.error ? `error: ${r.error}` : undefined;
73
- }
74
- /** Time window for persist-node dedup. Suppresses a second opportunity with the same person while a recent one (within 30 days) is still in flight, so a person is not re-surfaced multiple times within a month (EDG-23). */
75
- export const DEDUP_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;
76
- const ACTIVE_NEGOTIATION_TASK_STATES = new Set([
77
- 'submitted',
78
- 'working',
79
- 'input_required',
80
- 'waiting_for_agent',
81
- 'claimed',
82
- ]);
83
- export function isActiveNegotiationTaskFresh(task) {
84
- if (!ACTIVE_NEGOTIATION_TASK_STATES.has(task.state))
85
- return false;
86
- const freshnessMs = task.state === 'input_required'
87
- ? askUserAnswerWindowMs() + ASK_USER_LOCK_SLACK_MS
88
- : 5 * 60 * 1000;
89
- return Date.now() - new Date(task.updatedAt).getTime() < freshnessMs;
90
- }
91
- export function triggerForOwner(opportunity, ownerUserId) {
92
- return opportunity.detection.triggeredBy
93
- ?? opportunity.actors.find((actor) => actor.userId === ownerUserId)?.intent;
94
- }
95
- export function belongsToOwnedIntent(opportunity, ownerUserId, triggerIntentId) {
96
- return opportunity.detection.triggeredBy === triggerIntentId
97
- || opportunity.actors.some((actor) => actor.userId === ownerUserId && actor.intent === triggerIntentId);
98
- }
99
- /**
100
- * IND-567: Cool-down window (ms) for cross-query rejection suppression.
101
- * Candidates with a recently rejected or stalled opportunity within this window
102
- * receive a similarity penalty during evaluation ranking. Default 7 days.
103
- * Override with DISCOVERY_REJECTION_COOLDOWN_DAYS (positive float).
104
- */
105
- const DEFAULT_REJECTION_COOLDOWN_MS = 7 * 24 * 60 * 60 * 1000;
106
- export function getRejectionCooldownMs() {
107
- const raw = process.env.DISCOVERY_REJECTION_COOLDOWN_DAYS;
108
- if (!raw)
109
- return DEFAULT_REJECTION_COOLDOWN_MS;
110
- const n = Number.parseFloat(raw);
111
- return Number.isFinite(n) && n > 0 ? Math.round(n * 24 * 60 * 60 * 1000) : DEFAULT_REJECTION_COOLDOWN_MS;
112
- }
113
- /**
114
- * Similarity multiplier applied to candidates that fall within the rejection
115
- * cool-down window (IND-567). 0.5 halves their ranking score, typically
116
- * pushing them below the evaluation-batch cut while leaving a soft trace in
117
- * the trace log rather than silently dropping them.
118
- */
119
- export const REJECTION_COOLDOWN_SIMILARITY_PENALTY = 0.5;
120
- /** Default cap for source premises used by premise-to-premise discovery. Prevents BACKEND-5-style fan-out. */
121
- const DEFAULT_SOURCE_PREMISE_DISCOVERY_LIMIT = 40;
122
- /** NUL separator: it cannot occur inside an id, so the composite key is unambiguous. */
123
- const PAIR_KEY_SEPARATOR = String.fromCharCode(0);
124
- export function networkMembershipPairKey(userId, networkId) {
125
- return userId + PAIR_KEY_SEPARATOR + networkId;
126
- }
127
- /** Per-source cap for candidate premise matches. */
128
- export const PREMISE_MATCH_LIMIT_PER_SOURCE = 20;
129
- /** Resolve the source premise discovery cap from env, preserving 0 as an explicit disable switch. */
130
- export function getSourcePremiseDiscoveryLimit() {
131
- const raw = process.env.DISCOVERY_SOURCE_PREMISE_LIMIT;
132
- if (raw === undefined || raw.trim() === '')
133
- return DEFAULT_SOURCE_PREMISE_DISCOVERY_LIMIT;
134
- const parsed = Number.parseInt(raw, 10);
135
- return Number.isFinite(parsed) && parsed >= 0 ? parsed : DEFAULT_SOURCE_PREMISE_DISCOVERY_LIMIT;
136
- }
137
- export function buildEvaluatorEvidenceKey(candidate) {
138
- return [
139
- candidate.candidateUserId,
140
- candidate.networkId,
141
- candidate.candidateIntentId ?? candidate.candidatePremiseId ?? candidate.candidateContextId ?? candidate.sourceContextId ?? 'profile',
142
- ].join(':');
143
- }
144
- /**
145
- * Builds a compact text summary of the discoverer's profile and active intents
146
- * for use as profileContext in HyDE generation.
147
- * @param profile - The discoverer's profile data (identity, attributes)
148
- * @param intents - The discoverer's indexed intents (capped at 5)
149
- * @returns A context string, or undefined if no meaningful data is available
150
- */
151
- export function buildDiscovererContext(profile, intents) {
152
- const lines = [];
153
- if (profile) {
154
- const identity = profile.identity;
155
- if (identity?.name || identity?.bio) {
156
- lines.push(`Profile: ${[identity.name, identity.bio].filter(Boolean).join(', ')}`);
157
- }
158
- if (identity?.location) {
159
- lines.push(`Location: ${identity.location}`);
160
- }
161
- if (profile.context) {
162
- lines.push(`Context: ${profile.context}`);
163
- }
164
- }
165
- if (intents?.length) {
166
- // indexedIntents preserves DB order from getActiveIntents (newest first),
167
- // so slice(0, 5) is deterministic without an explicit sort.
168
- const capped = intents.slice(0, 5);
169
- lines.push('');
170
- lines.push('Active intents:');
171
- for (const intent of capped) {
172
- lines.push(`- ${intent.payload}`);
173
- }
174
- }
175
- return lines.length > 0 ? lines.join('\n') : undefined;
176
- }
177
- /**
178
- * Build a networkContexts map for the evaluator from a set of entities.
179
- * Fetches network data, checks permissions.contextInjection.discovery,
180
- * and renders context for eligible networks.
181
- */
182
- export async function buildNetworkContexts(entities, database) {
183
- const networkIds = [...new Set(entities.map((e) => e.networkId))];
184
- const networks = await Promise.all(networkIds.map((nid) => database.getNetwork(nid).then((n) => ({ nid, n }))));
185
- const contexts = {};
186
- for (const { nid, n: network } of networks) {
187
- if (!network)
188
- continue;
189
- const perms = (network.permissions ?? {});
190
- const injection = perms.contextInjection;
191
- if (injection?.discovery === false)
192
- continue;
193
- contexts[nid] = renderNetworkContext({
194
- title: network.title,
195
- prompt: network.prompt,
196
- });
197
- }
198
- return contexts;
199
- }
@@ -1,2 +0,0 @@
1
- /** Strict, default-off gate for finding opportunities on behalf of another user. */
2
- export declare function isIntroducerDiscoveryEnabled(): boolean;
@@ -1,4 +0,0 @@
1
- /** Strict, default-off gate for finding opportunities on behalf of another user. */
2
- export function isIntroducerDiscoveryEnabled() {
3
- return process.env.INTRODUCER_DISCOVERY_ENABLED === "true";
4
- }
@@ -1,77 +0,0 @@
1
- /**
2
- * Introducer Discovery: proactive discovery of connector-flow opportunities
3
- * between a user's contacts.
4
- *
5
- * Selects top-N contacts from the user's personal network and runs scoped
6
- * HyDE discovery for each, creating latent introducer opportunities that
7
- * the user (as introducer) must approve before parties see them.
8
- */
9
- /** Maximum contacts to evaluate per maintenance cycle. */
10
- export declare const MAX_CONTACTS_PER_CYCLE = 5;
11
- /** Maximum candidate opportunities per contact. */
12
- export declare const MAX_CANDIDATES_PER_CONTACT = 3;
13
- /** Detection source value for introducer-discovered opportunities. */
14
- export declare const INTRODUCER_DISCOVERY_SOURCE: "introducer_discovery";
15
- /** A contact with their active intents, used for introducer discovery selection. */
16
- export interface ContactWithIntents {
17
- userId: string;
18
- /** Most recent intent updatedAt timestamp (ISO string or null). */
19
- latestIntentAt: string | null;
20
- /** Number of active intents this contact has. */
21
- intentCount: number;
22
- }
23
- /** Database methods needed for introducer discovery contact selection. */
24
- export interface IntroducerDiscoveryDatabase {
25
- /** Get the user's personal network ID. */
26
- getPersonalIndexId(userId: string): Promise<string | null>;
27
- /** Get contacts from a personal network with their intent freshness data. */
28
- getContactsWithIntentFreshness(personalIndexId: string, ownerId: string, limit: number): Promise<ContactWithIntents[]>;
29
- }
30
- /** Queue interface for enqueuing introducer discovery jobs. */
31
- export interface IntroducerDiscoveryQueue {
32
- addJob(data: {
33
- intentId: string;
34
- userId: string;
35
- indexIds?: string[];
36
- contactUserId?: string;
37
- }, options?: {
38
- priority?: number;
39
- jobId?: string;
40
- }): Promise<unknown>;
41
- }
42
- /** Result of a single introducer discovery cycle. */
43
- export interface IntroducerDiscoveryResult {
44
- contactsEvaluated: number;
45
- jobsEnqueued: number;
46
- skippedReason?: string;
47
- }
48
- /**
49
- * Select top-N contacts for introducer discovery, sorted by intent freshness.
50
- * Contacts with no active intents are excluded.
51
- *
52
- * @param database - Database adapter with contact/intent queries
53
- * @param userId - The introducer user
54
- * @param limit - Max contacts to return (default MAX_CONTACTS_PER_CYCLE)
55
- * @returns Sorted contacts with intent data
56
- */
57
- export declare function selectContactsForDiscovery(database: IntroducerDiscoveryDatabase, userId: string, limit?: number): Promise<ContactWithIntents[]>;
58
- /**
59
- * Determine whether introducer discovery should run based on the current
60
- * connector-flow composition. Triggers when connector-flow count is below
61
- * the soft target.
62
- *
63
- * @param connectorFlowCount - Current number of connector-flow opportunities
64
- * @param connectorFlowTarget - Soft target (default 2)
65
- * @returns Whether introducer discovery should run
66
- */
67
- export declare function shouldRunIntroducerDiscovery(connectorFlowCount: number, connectorFlowTarget?: number): boolean;
68
- /**
69
- * Run introducer discovery for a user: select contacts, enqueue discovery jobs.
70
- * Each job uses onBehalfOfUserId so the opportunity graph treats the user as introducer.
71
- *
72
- * @param database - Database adapter for contact queries
73
- * @param queue - Queue for enqueuing discovery jobs
74
- * @param userId - The introducer user
75
- * @returns Summary of the discovery cycle
76
- */
77
- export declare function runIntroducerDiscovery(database: IntroducerDiscoveryDatabase, queue: IntroducerDiscoveryQueue, userId: string): Promise<IntroducerDiscoveryResult>;
@@ -1,99 +0,0 @@
1
- /**
2
- * Introducer Discovery: proactive discovery of connector-flow opportunities
3
- * between a user's contacts.
4
- *
5
- * Selects top-N contacts from the user's personal network and runs scoped
6
- * HyDE discovery for each, creating latent introducer opportunities that
7
- * the user (as introducer) must approve before parties see them.
8
- */
9
- import { protocolLogger } from '../shared/observability/protocol.logger.js';
10
- const logger = protocolLogger('IntroducerDiscovery');
11
- /** Maximum contacts to evaluate per maintenance cycle. */
12
- export const MAX_CONTACTS_PER_CYCLE = 5;
13
- /** Maximum candidate opportunities per contact. */
14
- export const MAX_CANDIDATES_PER_CONTACT = 3;
15
- /** Detection source value for introducer-discovered opportunities. */
16
- export const INTRODUCER_DISCOVERY_SOURCE = 'introducer_discovery';
17
- /**
18
- * Select top-N contacts for introducer discovery, sorted by intent freshness.
19
- * Contacts with no active intents are excluded.
20
- *
21
- * @param database - Database adapter with contact/intent queries
22
- * @param userId - The introducer user
23
- * @param limit - Max contacts to return (default MAX_CONTACTS_PER_CYCLE)
24
- * @returns Sorted contacts with intent data
25
- */
26
- export async function selectContactsForDiscovery(database, userId, limit = MAX_CONTACTS_PER_CYCLE) {
27
- const personalIndexId = await database.getPersonalIndexId(userId);
28
- if (!personalIndexId) {
29
- logger.verbose('No personal network found', { userId });
30
- return [];
31
- }
32
- const contacts = await database.getContactsWithIntentFreshness(personalIndexId, userId, limit);
33
- logger.verbose('Selected contacts for discovery', { userId, totalContacts: contacts.length, limit });
34
- return contacts;
35
- }
36
- /**
37
- * Determine whether introducer discovery should run based on the current
38
- * connector-flow composition. Triggers when connector-flow count is below
39
- * the soft target.
40
- *
41
- * @param connectorFlowCount - Current number of connector-flow opportunities
42
- * @param connectorFlowTarget - Soft target (default 2)
43
- * @returns Whether introducer discovery should run
44
- */
45
- export function shouldRunIntroducerDiscovery(connectorFlowCount, connectorFlowTarget = 2) {
46
- return connectorFlowCount < connectorFlowTarget;
47
- }
48
- /**
49
- * Run introducer discovery for a user: select contacts, enqueue discovery jobs.
50
- * Each job uses onBehalfOfUserId so the opportunity graph treats the user as introducer.
51
- *
52
- * @param database - Database adapter for contact queries
53
- * @param queue - Queue for enqueuing discovery jobs
54
- * @param userId - The introducer user
55
- * @returns Summary of the discovery cycle
56
- */
57
- export async function runIntroducerDiscovery(database, queue, userId) {
58
- const personalIndexId = await database.getPersonalIndexId(userId);
59
- if (!personalIndexId) {
60
- return { contactsEvaluated: 0, jobsEnqueued: 0, skippedReason: 'no_personal_index' };
61
- }
62
- const contacts = await selectContactsForDiscovery(database, userId);
63
- if (contacts.length === 0) {
64
- return { contactsEvaluated: 0, jobsEnqueued: 0, skippedReason: 'no_contacts' };
65
- }
66
- const bucket = Math.floor(Date.now() / (12 * 60 * 60 * 1000)); // 12h dedup bucket
67
- const results = await Promise.allSettled(contacts.map(async (contact) => {
68
- // For each contact, we enqueue a discovery job using one of their intents
69
- // The opportunity graph will use onBehalfOfUserId to discover on behalf of the contact
70
- // while the userId (introducer) gets the introducer role
71
- const jobId = `introducer-discovery-${userId}-${contact.userId}-${bucket}`;
72
- try {
73
- await queue.addJob({
74
- intentId: `introducer:${contact.userId}`,
75
- userId,
76
- indexIds: [personalIndexId],
77
- contactUserId: contact.userId,
78
- }, { priority: 15, jobId });
79
- return true;
80
- }
81
- catch (err) {
82
- const message = err instanceof Error ? err.message : String(err);
83
- if (/duplicate|already exists|job.*id/i.test(message)) {
84
- logger.verbose('Job skipped (duplicate)', { userId, contactUserId: contact.userId, error: message });
85
- return false;
86
- }
87
- throw err;
88
- }
89
- }));
90
- for (const r of results) {
91
- if (r.status === 'rejected') {
92
- const errMsg = r.reason instanceof Error ? r.reason.message : String(r.reason);
93
- logger.error('Job enqueue failed', { error: errMsg });
94
- }
95
- }
96
- const jobsEnqueued = results.filter((r) => r.status === 'fulfilled' && r.value).length;
97
- logger.info('Discovery cycle complete', { userId, contactsEvaluated: contacts.length, jobsEnqueued });
98
- return { contactsEvaluated: contacts.length, jobsEnqueued };
99
- }
@@ -1,10 +0,0 @@
1
- /** Max chars for main text in minimal opportunity cards (chat tool payload). Full text shown so cards are not truncated. */
2
- export const MINIMAL_MAIN_TEXT_MAX_CHARS = 2000;
3
- /** Hardcoded button labels for opportunity cards (not LLM-generated). */
4
- export const PRIMARY_ACTION_LABEL_INTRODUCER = "Good match";
5
- export const PRIMARY_ACTION_LABEL_DEFAULT = "Start Chat";
6
- export const SECONDARY_ACTION_LABEL = "Skip";
7
- /** Returns the primary action label based on the viewer's role. */
8
- export function getPrimaryActionLabel(viewerRole) {
9
- return viewerRole === "introducer" ? PRIMARY_ACTION_LABEL_INTRODUCER : PRIMARY_ACTION_LABEL_DEFAULT;
10
- }
@@ -1,63 +0,0 @@
1
- import type { Opportunity, OpportunityActor, OpportunityGraphDatabase } from '../shared/interfaces/database.interface.js';
2
- /** The mutation result shape returned by opportunity lifecycle graph nodes. */
3
- export interface OpportunityMutationResult {
4
- success: boolean;
5
- message?: string;
6
- opportunityId?: string;
7
- notified?: string[];
8
- conversationId?: string;
9
- error?: string;
10
- }
11
- /** Narrow persistence boundary for user-driven opportunity lifecycle actions. */
12
- export type OpportunityLifecyclePort = Pick<OpportunityGraphDatabase, 'getOpportunity' | 'getOrCreateDM' | 'stampOpportunityActorAction' | 'updateOpportunityActorApproval' | 'updateOpportunityStatus'>;
13
- /** Host callback used to notify an actor after an opportunity becomes visible to them. */
14
- export type QueueOpportunityNotificationFn = (opportunityId: string, recipientId: string, priority: 'immediate' | 'high' | 'low') => Promise<unknown>;
15
- type StatusTransitionPlan = {
16
- kind: 'stamp_accepted';
17
- counterpartUserId?: string;
18
- } | {
19
- kind: 'set_terminal_status';
20
- status: 'rejected' | 'expired';
21
- };
22
- type SendOpportunityPlan = {
23
- sender: OpportunityActor;
24
- recipients: OpportunityActor[];
25
- };
26
- /**
27
- * Applies status-transition admission rules before lifecycle persistence.
28
- * Acceptance is a two-party action: an actor that already acted cannot accept
29
- * again, while rejection and expiry remain available to any participating actor.
30
- */
31
- export declare function assessOpportunityStatusTransition(opportunity: Opportunity, actorUserId: string, newStatus: string | undefined): StatusTransitionPlan | OpportunityMutationResult;
32
- /**
33
- * Applies send admission and recipient-routing rules without performing writes.
34
- * Introducers, peers, and direct patient/party flows each reveal the next tier
35
- * to a distinct audience.
36
- */
37
- export declare function assessOpportunitySend(opportunity: Opportunity, actorUserId: string): SendOpportunityPlan | OpportunityMutationResult;
38
- /** Checks whether a caller may approve this opportunity's introducer gate. */
39
- export declare function assessIntroductionApproval(opportunity: Opportunity, actorUserId: string): OpportunityMutationResult | {
40
- kind: 'approve';
41
- };
42
- /** Persists an admitted status transition, preserving accept-before-write DM ordering. */
43
- export declare function updateOpportunityLifecycle(database: OpportunityLifecyclePort, input: {
44
- opportunityId?: string;
45
- actorUserId: string;
46
- newStatus?: string;
47
- }): Promise<OpportunityMutationResult>;
48
- /** Expires an opportunity after verifying the caller is one of its actors. */
49
- export declare function deleteOpportunityLifecycle(database: OpportunityLifecyclePort, input: {
50
- opportunityId?: string;
51
- actorUserId: string;
52
- }): Promise<OpportunityMutationResult>;
53
- /** Persists a send transition, then notifies only the actors exposed by its routing policy. */
54
- export declare function sendOpportunityLifecycle(database: OpportunityLifecyclePort, input: {
55
- opportunityId?: string;
56
- actorUserId: string;
57
- }, queueNotification?: QueueOpportunityNotificationFn): Promise<OpportunityMutationResult>;
58
- /** Approves an introducer gate before enqueuing the existing-opportunity negotiation. */
59
- export declare function approveOpportunityIntroduction(database: OpportunityLifecyclePort, input: {
60
- opportunityId?: string;
61
- actorUserId: string;
62
- }, queueNegotiateExisting?: (opportunityId: string, userId: string) => Promise<void>): Promise<OpportunityMutationResult>;
63
- export {};