@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,109 +0,0 @@
1
- /**
2
- * The individual retrieval strategies the discovery node runs, plus the merge
3
- * that folds their results into one candidate set.
4
- *
5
- * These were nested functions inside the discovery closure, capturing the node's
6
- * locals. They now take an explicit {@link DiscoveryStrategyContext} so each
7
- * strategy reads on its own.
8
- */
9
- import type { Id } from '../shared/interfaces/database.interface.js';
10
- import type { CandidateMatch } from './opportunity.state.js';
11
- import type { LensEmbedding } from '../shared/interfaces/embedder.interface.js';
12
- import { discoveryProfileSource } from './discovery.env.js';
13
- import { type OpportunityGraphDeps, type OpportunityState } from "./opportunity.graph.shared.js";
14
- /** Corpus gating passed through to the embedder on every HyDE search. */
15
- export interface DiscoveryCorpusGating {
16
- readonly intents: boolean;
17
- readonly profile: boolean;
18
- readonly profileCorpus: ReturnType<typeof discoveryProfileSource>;
19
- }
20
- /** Everything the strategies below need, resolved once by the discovery node. */
21
- export interface DiscoveryStrategyContext {
22
- state: OpportunityState;
23
- deps: OpportunityGraphDeps;
24
- discoveryUserId: string;
25
- limitPerStrategy: number;
26
- perIndexLimit: number;
27
- corpusGating: DiscoveryCorpusGating;
28
- intentResultsEnabled: boolean;
29
- premiseResultsEnabled: boolean;
30
- contextResultsEnabled: boolean;
31
- }
32
- /** Trace payload the query-HyDE path produces alongside its candidates. */
33
- export interface QueryHydeDiscoveryResult {
34
- candidates: CandidateMatch[];
35
- lensInput: {
36
- profileContext: string | undefined;
37
- model: string;
38
- };
39
- hydeOutput: {
40
- lenses: Array<{
41
- label: string;
42
- corpus: string;
43
- }>;
44
- hydeDocuments: Record<string, {
45
- hydeText?: string;
46
- }>;
47
- };
48
- }
49
- /**
50
- * Query-driven HyDE retrieval: generate hypothetical documents from the search
51
- * text, then search every target network with the resulting lens embeddings.
52
- */
53
- export declare function runQueryHydeDiscovery(ctx: DiscoveryStrategyContext): Promise<QueryHydeDiscoveryResult | null>;
54
- /** Map HyDE embeddings back onto their lens metadata. */
55
- export declare function toLensEmbeddings(hydeEmbeddings: Record<string, number[]>, lenses: Array<{
56
- label: string;
57
- corpus: 'profiles' | 'intents' | 'premises';
58
- }>): LensEmbedding[];
59
- /**
60
- * Turn embedder hits into candidates, honouring the match-type gates.
61
- *
62
- * Result filtering here is defense-in-depth: corpusGating already scopes the
63
- * embedder's corpus searches, but adapters may still return other types.
64
- */
65
- export declare function collectHydeResults(results: Awaited<ReturnType<OpportunityGraphDeps['embedder']['searchWithHydeEmbeddings']>>, networkId: Id<'networks'>, ctx: Pick<DiscoveryStrategyContext, 'intentResultsEnabled' | 'premiseResultsEnabled' | 'contextResultsEnabled'>): CandidateMatch[];
66
- /**
67
- * Premise-to-premise discovery (path D).
68
- * Searches for other users' premises similar to the discoverer's premises,
69
- * scoped to target networks. Additive — merges into existing candidates.
70
- */
71
- export declare function runPremiseDiscovery(ctx: DiscoveryStrategyContext): Promise<CandidateMatch[]>;
72
- /**
73
- * Context-to-intent discovery: searches intents using context HyDE embeddings.
74
- * When HyDE documents exist for a context, uses optimised hypothetical-document
75
- * embeddings via searchWithHydeEmbeddings. Falls back to raw context embedding
76
- * via searchIntentsByContextEmbedding when no HyDE docs are available.
77
- */
78
- export declare function runContextToIntentDiscovery(ctx: DiscoveryStrategyContext): Promise<CandidateMatch[]>;
79
- /**
80
- * Context-to-context discovery (lightweight profile mode only).
81
- * Raw network-scoped context embeddings → candidate user_contexts.
82
- * No HyDE: both sides are the same document type (synthesized
83
- * 3–6 sentence paragraphs), so direct paragraph similarity is correct
84
- * (same rationale as raw premise-to-premise).
85
- */
86
- export declare function runContextToContextDiscovery(ctx: DiscoveryStrategyContext): Promise<CandidateMatch[]>;
87
- /**
88
- * Run the three additive strategies concurrently, in the order the discovery
89
- * node reports them: premise-to-premise, context-to-intent, context-to-context.
90
- */
91
- export declare function runAuxiliaryStrategies(ctx: DiscoveryStrategyContext): Promise<[CandidateMatch[], CandidateMatch[], CandidateMatch[]]>;
92
- /**
93
- * Merge candidates from multiple strategies. Deduplicates by userId + networkId + entityId,
94
- * keeps the highest similarity, tracks which strategies found each candidate,
95
- * and applies a multi-strategy boost (+0.05 per additional strategy, boost capped at 0.15,
96
- * final similarity capped at 1.0).
97
- */
98
- export declare function mergeStrategyCandidates(...groups: CandidateMatch[][]): CandidateMatch[];
99
- /** Per-lens candidate counts and mean similarity, for the discovery trace. */
100
- export declare function computeLensStats(candidates: CandidateMatch[]): Record<string, {
101
- count: number;
102
- avgSimilarity: number;
103
- }>;
104
- /** One `strategy` trace line per auxiliary strategy that produced candidates. */
105
- export declare function auxiliaryStrategyTraces(premiseCands: CandidateMatch[], contextCands: CandidateMatch[], contextSimCands: CandidateMatch[]): Array<{
106
- node: string;
107
- detail?: string;
108
- data?: Record<string, unknown>;
109
- }>;
@@ -1,451 +0,0 @@
1
- /**
2
- * The individual retrieval strategies the discovery node runs, plus the merge
3
- * that folds their results into one candidate set.
4
- *
5
- * These were nested functions inside the discovery closure, capturing the node's
6
- * locals. They now take an explicit {@link DiscoveryStrategyContext} so each
7
- * strategy reads on its own.
8
- */
9
- import { getModelName } from '../shared/agent/model.config.js';
10
- import { selectHydeDocumentsForGeneration, getHydeGenerationMode } from '../discovery/index.js';
11
- import { mergeOpportunityEvidence, withCandidateEvidence, withMatchedStrategies } from './opportunity.evidence.js';
12
- import { discoveryProfileMatchingEnabled, discoveryProfileSource, discoveryIntentMatchingEnabled } from './discovery.env.js';
13
- import { buildDiscovererContext, discoveryLog, getSourcePremiseDiscoveryLimit, PREMISE_MATCH_LIMIT_PER_SOURCE } from "./opportunity.graph.shared.js";
14
- /**
15
- * Query-driven HyDE retrieval: generate hypothetical documents from the search
16
- * text, then search every target network with the resulting lens embeddings.
17
- */
18
- export async function runQueryHydeDiscovery(ctx) {
19
- const { state, deps, discoveryUserId, limitPerStrategy, perIndexLimit, corpusGating } = ctx;
20
- const searchText = state.searchQuery?.trim() ?? '';
21
- const lensInput = {
22
- profileContext: buildDiscovererContext(state.sourceProfile, state.indexedIntents),
23
- model: getModelName("lensInferrer"),
24
- };
25
- if (!searchText)
26
- return null;
27
- discoveryLog.verbose('runQueryHydeDiscovery start', { searchText: searchText.slice(0, 80) });
28
- const hydeResult = await deps.hydeGenerator.invoke({
29
- sourceType: 'query',
30
- sourceText: searchText,
31
- forceRegenerate: false,
32
- profileContext: lensInput.profileContext,
33
- });
34
- const hydeEmbeddings = hydeResult.hydeEmbeddings;
35
- const lenses = hydeResult.lenses ?? [];
36
- const hydeOutput = {
37
- lenses: lenses,
38
- hydeDocuments: (hydeResult.hydeDocuments ?? {}),
39
- };
40
- const embeddingKeys = hydeEmbeddings ? Object.keys(hydeEmbeddings) : [];
41
- discoveryLog.verbose('HyDE generator result', {
42
- lensCount: embeddingKeys.length,
43
- lenses: embeddingKeys,
44
- });
45
- if (!hydeEmbeddings || Object.keys(hydeEmbeddings).length === 0) {
46
- return { candidates: [], lensInput, hydeOutput };
47
- }
48
- const lensEmbeddings = toLensEmbeddings(hydeEmbeddings, lenses);
49
- const all = [];
50
- await Promise.all(state.targetNetworks.map(async (targetIndex) => {
51
- const results = await deps.embedder.searchWithHydeEmbeddings(lensEmbeddings, {
52
- indexScope: [targetIndex.networkId],
53
- excludeUserId: discoveryUserId,
54
- limitPerStrategy,
55
- limit: perIndexLimit,
56
- minScore: deps.retrievalMinSimilarity,
57
- corpusGating,
58
- });
59
- all.push(...collectHydeResults(results, targetIndex.networkId, ctx));
60
- }));
61
- const intentCount = all.filter((c) => c.candidateIntentId).length;
62
- const premiseCount = all.filter((c) => c.candidatePremiseId).length;
63
- discoveryLog.verbose('searchWithHydeEmbeddings raw results', {
64
- total: all.length,
65
- fromIntent: intentCount,
66
- fromPremise: premiseCount,
67
- fromContext: all.filter((c) => c.candidateContextId).length,
68
- });
69
- const byKey = new Map();
70
- for (const c of all) {
71
- // Dedup by candidateUserId + entity (intent or premise), NOT by indexId.
72
- // Including indexId caused the same user to appear once per index they belong to.
73
- const key = `${c.candidateUserId}:${entityKey(c)}`;
74
- if (!byKey.has(key) || c.similarity > (byKey.get(key)?.similarity ?? 0)) {
75
- byKey.set(key, c);
76
- }
77
- }
78
- return { candidates: Array.from(byKey.values()), lensInput, hydeOutput };
79
- }
80
- /** `intent:`/`premise:`/`context:` discriminator used by the dedup keys. */
81
- function entityKey(c) {
82
- return c.candidateIntentId
83
- ? `intent:${c.candidateIntentId}`
84
- : c.candidatePremiseId
85
- ? `premise:${c.candidatePremiseId}`
86
- : `context:${c.candidateContextId}`;
87
- }
88
- /** Map HyDE embeddings back onto their lens metadata. */
89
- export function toLensEmbeddings(hydeEmbeddings, lenses) {
90
- const lensMap = new Map(lenses.map(l => [l.label, l]));
91
- const lensEmbeddings = [];
92
- for (const [label, emb] of Object.entries(hydeEmbeddings)) {
93
- if (emb?.length) {
94
- const lens = lensMap.get(label);
95
- lensEmbeddings.push({ lens: label, corpus: lens?.corpus ?? 'profiles', embedding: emb });
96
- }
97
- }
98
- return lensEmbeddings;
99
- }
100
- /**
101
- * Turn embedder hits into candidates, honouring the match-type gates.
102
- *
103
- * Result filtering here is defense-in-depth: corpusGating already scopes the
104
- * embedder's corpus searches, but adapters may still return other types.
105
- */
106
- export function collectHydeResults(results, networkId, ctx) {
107
- const collected = [];
108
- if (ctx.intentResultsEnabled)
109
- for (const r of results.filter((x) => x.type === 'intent')) {
110
- collected.push(withCandidateEvidence({
111
- candidateUserId: r.userId,
112
- candidateIntentId: r.id,
113
- networkId,
114
- similarity: r.score,
115
- lens: r.matchedVia,
116
- candidatePayload: '',
117
- candidateSummary: undefined,
118
- discoverySource: 'query',
119
- }));
120
- }
121
- if (ctx.premiseResultsEnabled)
122
- for (const r of results.filter((x) => x.type === 'premise')) {
123
- collected.push(withCandidateEvidence({
124
- candidateUserId: r.userId,
125
- candidatePremiseId: r.id,
126
- networkId,
127
- similarity: r.score,
128
- lens: r.matchedVia,
129
- candidatePayload: '',
130
- candidateSummary: undefined,
131
- discoverySource: 'query',
132
- }));
133
- }
134
- if (ctx.contextResultsEnabled)
135
- for (const r of results.filter((x) => x.type === 'user_context')) {
136
- collected.push(withCandidateEvidence({
137
- candidateUserId: r.userId,
138
- candidateContextId: r.id,
139
- networkId,
140
- similarity: r.score,
141
- lens: r.matchedVia,
142
- candidatePayload: r.text ?? '',
143
- candidateSummary: undefined,
144
- discoverySource: 'query',
145
- }));
146
- }
147
- return collected;
148
- }
149
- /**
150
- * Premise-to-premise discovery (path D).
151
- * Searches for other users' premises similar to the discoverer's premises,
152
- * scoped to target networks. Additive — merges into existing candidates.
153
- */
154
- export async function runPremiseDiscovery(ctx) {
155
- const { state, deps, discoveryUserId } = ctx;
156
- const targetNetworkIds = state.targetNetworks.map(t => t.networkId);
157
- if (targetNetworkIds.length === 0)
158
- return [];
159
- if (!discoveryProfileMatchingEnabled() || discoveryProfileSource() === 'user_context') {
160
- discoveryLog.verbose('runPremiseDiscovery disabled by DISCOVERY_ALLOWED_TYPES/DISCOVERY_PROFILE_SOURCE');
161
- return [];
162
- }
163
- const sourceLimit = getSourcePremiseDiscoveryLimit();
164
- if (sourceLimit === 0) {
165
- discoveryLog.verbose('runPremiseDiscovery disabled by DISCOVERY_SOURCE_PREMISE_LIMIT=0');
166
- return [];
167
- }
168
- const sourcePremisesFromDb = deps.database.getPremisesForUserInNetworks
169
- ? await deps.database.getPremisesForUserInNetworks(discoveryUserId, targetNetworkIds, 'ACTIVE', sourceLimit)
170
- : await deps.database.getPremisesForUser(discoveryUserId, 'ACTIVE');
171
- const sourcePremises = (sourcePremisesFromDb.length > 0
172
- ? sourcePremisesFromDb
173
- .filter(p => Array.isArray(p.embedding) && p.embedding.length > 0)
174
- .slice(0, sourceLimit)
175
- .map(p => ({ premiseId: p.id, embedding: p.embedding }))
176
- : (state.sourcePremises ?? []).slice(0, sourceLimit));
177
- if (sourcePremises.length === 0)
178
- return [];
179
- discoveryLog.verbose('runPremiseDiscovery start', {
180
- premiseCount: sourcePremises.length,
181
- sourceLimit,
182
- targetNetworks: targetNetworkIds.length,
183
- batched: !!deps.database.searchPremisesBySimilarityBatch,
184
- });
185
- const rawResults = deps.database.searchPremisesBySimilarityBatch
186
- ? await deps.database.searchPremisesBySimilarityBatch({
187
- sources: sourcePremises,
188
- networkIds: targetNetworkIds,
189
- excludeUserId: discoveryUserId,
190
- limitPerSource: PREMISE_MATCH_LIMIT_PER_SOURCE,
191
- minScore: deps.retrievalMinSimilarity,
192
- })
193
- : (await Promise.all(sourcePremises.map(async (sp) => {
194
- const results = await deps.database.searchPremisesBySimilarity({
195
- embedding: sp.embedding,
196
- networkIds: targetNetworkIds,
197
- excludeUserId: discoveryUserId,
198
- limit: PREMISE_MATCH_LIMIT_PER_SOURCE,
199
- minScore: deps.retrievalMinSimilarity,
200
- });
201
- return results.map((r) => ({ ...r, sourcePremiseId: sp.premiseId }));
202
- }))).flat();
203
- const premiseCandidates = [];
204
- for (const r of rawResults) {
205
- premiseCandidates.push(withCandidateEvidence({
206
- candidateUserId: r.userId,
207
- sourcePremiseId: r.sourcePremiseId,
208
- candidatePremiseId: r.premiseId,
209
- networkId: r.networkId,
210
- similarity: typeof r.similarity === 'number' ? r.similarity : parseFloat(String(r.similarity)),
211
- lens: 'premise_match',
212
- candidatePayload: r.assertionText ?? '',
213
- discoverySource: 'premise-similarity',
214
- }));
215
- }
216
- // Dedup by userId + premiseId + networkId (a premise can appear in multiple networks)
217
- const deduped = dedupeBestBy(premiseCandidates, (c) => `${c.candidateUserId}:${c.candidatePremiseId ?? 'none'}:${c.networkId}`);
218
- discoveryLog.verbose('runPremiseDiscovery complete', {
219
- sourcePremiseCount: sourcePremises.length,
220
- rawCount: premiseCandidates.length,
221
- dedupedCount: deduped.length,
222
- });
223
- return deduped;
224
- }
225
- /**
226
- * Context-to-intent discovery: searches intents using context HyDE embeddings.
227
- * When HyDE documents exist for a context, uses optimised hypothetical-document
228
- * embeddings via searchWithHydeEmbeddings. Falls back to raw context embedding
229
- * via searchIntentsByContextEmbedding when no HyDE docs are available.
230
- */
231
- export async function runContextToIntentDiscovery(ctx) {
232
- const { state, deps, discoveryUserId, limitPerStrategy, corpusGating } = ctx;
233
- if (!state.sourceContexts?.length)
234
- return [];
235
- const contextToIntentEnabled = process.env.DISCOVERY_CONTEXT_TO_INTENT !== '0';
236
- if (!contextToIntentEnabled)
237
- return [];
238
- if (!discoveryProfileMatchingEnabled() || discoveryProfileSource() !== 'user_context' || !discoveryIntentMatchingEnabled())
239
- return [];
240
- const targetNetworkIds = state.targetNetworks.map(t => t.networkId);
241
- if (targetNetworkIds.length === 0)
242
- return [];
243
- discoveryLog.verbose('runContextToIntentDiscovery start', {
244
- contextCount: state.sourceContexts.length,
245
- targetNetworks: targetNetworkIds.length,
246
- });
247
- const contextCandidates = [];
248
- for (const context of state.sourceContexts.filter(c => targetNetworkIds.includes(c.networkId))) {
249
- // Attempt HyDE-enhanced search first
250
- const persistedHydeDocs = await deps.database.getHydeDocumentsForSource('context', context.contextId);
251
- const hydeDocs = selectHydeDocumentsForGeneration(persistedHydeDocs, getHydeGenerationMode(), context.text);
252
- const lensEmbeddings = hydeDocs
253
- .filter(d => d.hydeEmbedding?.length > 0)
254
- .map(d => ({
255
- lens: d.strategy,
256
- corpus: (d.targetCorpus === 'intents' ? 'intents' : d.targetCorpus === 'premises' ? 'premises' : 'intents'),
257
- embedding: d.hydeEmbedding,
258
- }));
259
- if (lensEmbeddings.length > 0) {
260
- // HyDE-enhanced search: same path as query HyDE, scoped to this context's network
261
- const results = await deps.embedder.searchWithHydeEmbeddings(lensEmbeddings, {
262
- indexScope: [context.networkId],
263
- excludeUserId: discoveryUserId,
264
- limitPerStrategy: limitPerStrategy,
265
- limit: 20,
266
- minScore: deps.retrievalMinSimilarity,
267
- corpusGating,
268
- });
269
- for (const r of results.filter(r => r.type === 'intent')) {
270
- contextCandidates.push(withCandidateEvidence({
271
- candidateUserId: r.userId,
272
- candidateIntentId: r.id,
273
- sourceContextId: context.contextId,
274
- networkId: context.networkId,
275
- similarity: r.score,
276
- lens: r.matchedVia,
277
- candidatePayload: '',
278
- candidateSummary: undefined,
279
- discoverySource: 'context-to-intent',
280
- }));
281
- }
282
- }
283
- else {
284
- // Fallback: raw context embedding search (no HyDE docs yet)
285
- const results = await deps.database.searchIntentsByContextEmbedding({
286
- embedding: context.embedding,
287
- networkIds: [context.networkId],
288
- excludeUserId: discoveryUserId,
289
- limit: 20,
290
- minScore: deps.retrievalMinSimilarity,
291
- });
292
- for (const r of results) {
293
- contextCandidates.push(withCandidateEvidence({
294
- candidateUserId: r.userId,
295
- candidateIntentId: r.intentId,
296
- sourceContextId: context.contextId,
297
- networkId: r.networkId,
298
- similarity: typeof r.similarity === 'number' ? r.similarity : parseFloat(String(r.similarity)),
299
- lens: 'context_match',
300
- candidatePayload: r.payload ?? '',
301
- candidateSummary: r.summary ?? undefined,
302
- discoverySource: 'context-to-intent',
303
- }));
304
- }
305
- }
306
- }
307
- const deduped = dedupeBestBy(contextCandidates, (c) => `${c.candidateUserId}:${c.candidateIntentId ?? 'none'}:${c.networkId}`);
308
- discoveryLog.verbose('runContextToIntentDiscovery complete', {
309
- rawCount: contextCandidates.length,
310
- dedupedCount: deduped.length,
311
- });
312
- return deduped;
313
- }
314
- /**
315
- * Context-to-context discovery (lightweight profile mode only).
316
- * Raw network-scoped context embeddings → candidate user_contexts.
317
- * No HyDE: both sides are the same document type (synthesized
318
- * 3–6 sentence paragraphs), so direct paragraph similarity is correct
319
- * (same rationale as raw premise-to-premise).
320
- */
321
- export async function runContextToContextDiscovery(ctx) {
322
- const { state, deps, discoveryUserId, contextResultsEnabled } = ctx;
323
- if (!contextResultsEnabled)
324
- return [];
325
- if (!state.sourceContexts?.length)
326
- return [];
327
- if (typeof deps.database.searchUserContextsBySimilarity !== 'function')
328
- return [];
329
- const targetNetworkIds = state.targetNetworks.map(t => t.networkId);
330
- if (targetNetworkIds.length === 0)
331
- return [];
332
- const contextCandidates = [];
333
- for (const context of state.sourceContexts.filter(c => targetNetworkIds.includes(c.networkId))) {
334
- const results = await deps.database.searchUserContextsBySimilarity({
335
- embedding: context.embedding,
336
- networkIds: [context.networkId],
337
- excludeUserId: discoveryUserId,
338
- limit: 20,
339
- minScore: deps.retrievalMinSimilarity,
340
- });
341
- for (const r of results) {
342
- contextCandidates.push(withCandidateEvidence({
343
- candidateUserId: r.userId,
344
- candidateContextId: r.contextId,
345
- sourceContextId: context.contextId,
346
- networkId: r.networkId,
347
- similarity: typeof r.similarity === 'number' ? r.similarity : parseFloat(String(r.similarity)),
348
- lens: 'context_match',
349
- candidatePayload: r.text ?? '',
350
- discoverySource: 'context-similarity',
351
- }));
352
- }
353
- }
354
- // Dedup by userId + contextId + networkId (mirror premise dedup)
355
- const deduped = dedupeBestBy(contextCandidates, (c) => `${c.candidateUserId}:${c.candidateContextId ?? 'none'}:${c.networkId}`);
356
- discoveryLog.verbose('runContextToContextDiscovery complete', {
357
- rawCount: contextCandidates.length,
358
- dedupedCount: deduped.length,
359
- });
360
- return deduped;
361
- }
362
- /** Keep the highest-similarity candidate per composite key. */
363
- function dedupeBestBy(candidates, keyOf) {
364
- const byKey = new Map();
365
- for (const c of candidates) {
366
- const key = keyOf(c);
367
- if (!byKey.has(key) || c.similarity > (byKey.get(key)?.similarity ?? 0)) {
368
- byKey.set(key, c);
369
- }
370
- }
371
- return Array.from(byKey.values());
372
- }
373
- /**
374
- * Run the three additive strategies concurrently, in the order the discovery
375
- * node reports them: premise-to-premise, context-to-intent, context-to-context.
376
- */
377
- export function runAuxiliaryStrategies(ctx) {
378
- return Promise.all([
379
- runPremiseDiscovery(ctx),
380
- runContextToIntentDiscovery(ctx),
381
- runContextToContextDiscovery(ctx),
382
- ]);
383
- }
384
- /**
385
- * Merge candidates from multiple strategies. Deduplicates by userId + networkId + entityId,
386
- * keeps the highest similarity, tracks which strategies found each candidate,
387
- * and applies a multi-strategy boost (+0.05 per additional strategy, boost capped at 0.15,
388
- * final similarity capped at 1.0).
389
- */
390
- export function mergeStrategyCandidates(...groups) {
391
- const merged = new Map();
392
- for (const group of groups) {
393
- for (const c of group) {
394
- const entityId = c.candidateIntentId ?? c.candidatePremiseId ?? c.candidateContextId ?? 'none';
395
- const key = `${c.candidateUserId}:${c.networkId}:${entityId}`;
396
- const existing = merged.get(key);
397
- if (!existing) {
398
- merged.set(key, { ...c, _strategies: new Set([c.discoverySource ?? 'unknown']) });
399
- }
400
- else {
401
- existing._strategies.add(c.discoverySource ?? 'unknown');
402
- const mergedEvidence = mergeOpportunityEvidence(existing.evidence, c.evidence);
403
- if (c.similarity > existing.similarity) {
404
- Object.assign(existing, { ...c, evidence: mergedEvidence });
405
- }
406
- else {
407
- existing.evidence = mergedEvidence;
408
- }
409
- }
410
- }
411
- }
412
- return Array.from(merged.values()).map(({ _strategies, ...c }) => {
413
- const matchedStrategies = Array.from(_strategies);
414
- const boost = Math.min((_strategies.size - 1) * 0.05, 0.15);
415
- return {
416
- ...c,
417
- similarity: Math.min(c.similarity + boost, 1.0),
418
- matchedStrategies,
419
- evidence: withMatchedStrategies(mergeOpportunityEvidence(c.evidence), matchedStrategies),
420
- };
421
- });
422
- }
423
- /** Per-lens candidate counts and mean similarity, for the discovery trace. */
424
- export function computeLensStats(candidates) {
425
- const lensStats = {};
426
- for (const c of candidates) {
427
- const s = c.lens || 'unknown';
428
- if (!lensStats[s])
429
- lensStats[s] = { count: 0, avgSimilarity: 0 };
430
- lensStats[s].count++;
431
- lensStats[s].avgSimilarity += c.similarity;
432
- }
433
- for (const s of Object.values(lensStats)) {
434
- s.avgSimilarity = s.count > 0 ? Math.round((s.avgSimilarity / s.count) * 1000) / 1000 : 0;
435
- }
436
- return lensStats;
437
- }
438
- /** One `strategy` trace line per auxiliary strategy that produced candidates. */
439
- export function auxiliaryStrategyTraces(premiseCands, contextCands, contextSimCands) {
440
- const entries = [];
441
- if (premiseCands.length > 0) {
442
- entries.push({ node: "strategy", detail: `premise-to-premise → ${premiseCands.length} candidate(s)` });
443
- }
444
- if (contextCands.length > 0) {
445
- entries.push({ node: "strategy", detail: `context-to-intent → ${contextCands.length} candidate(s)` });
446
- }
447
- if (contextSimCands.length > 0) {
448
- entries.push({ node: "strategy", detail: `context-to-context → ${contextSimCands.length} candidate(s)` });
449
- }
450
- return entries;
451
- }
@@ -1,69 +0,0 @@
1
- /**
2
- * Discovery pipeline, stage 3: candidate retrieval.
3
- *
4
- * Three shapes share this node — a direct-connection fast path, a
5
- * context-sourced path, and the intent/query HyDE path. The retrieval
6
- * strategies themselves live in `opportunity.graph.discovery-strategies.ts`.
7
- */
8
- import type { Id } from '../shared/interfaces/database.interface.js';
9
- import type { CandidateMatch } from './opportunity.state.js';
10
- import { type OpportunityGraphDeps, type OpportunityState } from "./opportunity.graph.shared.js";
11
- /** Trace entries accumulate in the order the frontend renders them. */
12
- type TraceEntry = {
13
- node: string;
14
- detail?: string;
15
- data?: Record<string, unknown>;
16
- };
17
- /**
18
- * Node 3: Discovery
19
- * Generates HyDE embeddings and performs semantic search.
20
- */
21
- export declare function discoveryNode(state: OpportunityState, deps: OpportunityGraphDeps): Promise<{
22
- candidates: never[];
23
- trace: {
24
- node: string;
25
- detail: string;
26
- data: {
27
- targetUserId: Id<"users">;
28
- };
29
- }[];
30
- } | {
31
- candidates: CandidateMatch[];
32
- trace: {
33
- node: string;
34
- detail: string;
35
- data: {
36
- targetUserId: Id<"users">;
37
- candidateCount: number;
38
- sharedIndexes: number;
39
- durationMs: number;
40
- };
41
- }[];
42
- } | {
43
- candidates: CandidateMatch[];
44
- trace: TraceEntry[];
45
- } | {
46
- candidates: CandidateMatch[];
47
- trace: {
48
- node: string;
49
- detail: string;
50
- }[];
51
- hydeEmbeddings?: undefined;
52
- } | {
53
- candidates: never[];
54
- error?: undefined;
55
- trace?: undefined;
56
- } | {
57
- candidates: never[];
58
- error: string;
59
- trace: {
60
- node: string;
61
- detail: string;
62
- data: {
63
- error: string;
64
- };
65
- }[];
66
- }>;
67
- /** Trace summary for {@link discoveryNode}. */
68
- export declare function discoveryTraceSummary(result: unknown): string | undefined;
69
- export {};