@indexnetwork/protocol 22.0.0-rc.499.1 → 64.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -134
  12. package/dist/index.js +41 -105
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -2,7 +2,7 @@
2
2
  * Radar Graph: Build the opportunity radar view — a flat, presenter-texted
3
3
  * list of opportunity cards for a viewer, optionally scoped to one intent.
4
4
  *
5
- * Independent of ChatGraph. Flow:
5
+ * Flow:
6
6
  * loadOpportunities → checkPresenterCache → [generateCardText if misses]
7
7
  * → cachePresenterResults → normalizeItems
8
8
  *
@@ -21,24 +21,19 @@ import { buildRadarCardPresentationCacheKey } from '../opportunity.presentation.
21
21
  import { protocolLogger } from '../../shared/observability/protocol.logger.js';
22
22
  import { timed } from '../../shared/observability/performance.js';
23
23
  import { requestContext } from "../../shared/observability/request-context.js";
24
- import { adjustedConfidence, latestPoolDemotionDetail, readActivePoolAdjustments } from '../discriminator/discriminator.adjustments.js';
25
- import { poolQuestionsRanking } from '../discriminator/discriminator.env.js';
26
24
  const logger = protocolLogger('RadarGraph');
27
25
  const checkPresenterCacheLog = protocolLogger('RadarGraph:checkPresenterCache');
28
26
  const cachePresenterResultsLog = protocolLogger('RadarGraph:cachePresenterResults');
29
27
  const generateCardTextLog = protocolLogger('RadarGraph:generateCardText');
30
28
  const normalizeItemsLog = protocolLogger('RadarGraph:normalizeItems');
31
29
  /** Default radar statuses: the lifecycle stages a viewer can act on today. */
32
- export const DEFAULT_RADAR_STATUSES = ['latent', 'pending'];
30
+ export const DEFAULT_RADAR_STATUSES = ['pending'];
33
31
  // Exhaustive registry — keys must cover every OpportunityStatus union member.
34
32
  // Adding a new status to OpportunityStatus without adding a key here is a TS error,
35
33
  // which is the whole point: prevents ALL_OPPORTUNITY_STATUSES from silently drifting.
36
34
  const OPPORTUNITY_STATUS_REGISTRY = {
37
- latent: true,
38
- draft: true,
39
35
  negotiating: true,
40
36
  pending: true,
41
- stalled: true,
42
37
  accepted: true,
43
38
  rejected: true,
44
39
  expired: true,
@@ -116,39 +111,18 @@ const getRawConfidence = (opp) => {
116
111
  }
117
112
  return 0;
118
113
  };
119
- /**
120
- * Sort confidence, optionally pool-adjusted (IND-419): when
121
- * POOL_QUESTIONS_RANKING=on, answered discriminators multiply confidence by
122
- * their stored factors (floor 0.3) so the user's answers re-rank the radar.
123
- * Flag off → identical to raw confidence (adjustments are write-only).
124
- */
125
- const getPoolRankingProvenance = (state) => {
126
- if (poolQuestionsRanking() !== 'on' ||
127
- !state.userId ||
128
- state.scopeType !== 'intent' ||
129
- !state.scopeId)
130
- return null;
131
- return { recipientUserId: state.userId, intentId: state.scopeId };
132
- };
133
- const hasPoolAdjustment = (opp, provenance) => readActivePoolAdjustments(opp.metadata, provenance).length > 0;
134
- const getConfidence = (opp, provenance) => {
135
- const raw = getRawConfidence(opp);
136
- if (!provenance)
137
- return raw;
138
- return adjustedConfidence(raw, opp.metadata, provenance);
139
- };
140
- /** Unique non-introducer, non-viewer userIds for an opportunity (actors can repeat). */
114
+ /** Unique non-viewer userIds for an opportunity (actors can repeat). */
141
115
  const getUniqueCounterpartUserIds = (opp, viewerId) => {
142
116
  const ids = new Set();
143
117
  for (const a of opp.actors) {
144
- if (a.role !== 'introducer' && a.userId !== viewerId && a.userId) {
118
+ if (a.userId !== viewerId && a.userId) {
145
119
  ids.add(a.userId);
146
120
  }
147
121
  }
148
122
  return ids;
149
123
  };
150
124
  const pickDisplayCounterpartActor = (opportunity, viewerId) => {
151
- const candidates = opportunity.actors.filter((actor) => actor.userId !== viewerId && actor.role !== 'introducer');
125
+ const candidates = opportunity.actors.filter((actor) => actor.userId !== viewerId);
152
126
  if (candidates.length === 0) {
153
127
  return null;
154
128
  }
@@ -199,11 +173,10 @@ export async function loadOpportunitiesNode(state, deps) {
199
173
  }
200
174
  try {
201
175
  // Minimum of 50 ensures enough candidates across all radar categories
202
- // (connection, connector-flow, expired) for selectByComposition to fill
176
+ // (connection, expired) for selectByComposition to fill
203
177
  // its soft targets, even after visibility filtering and dedup.
204
178
  const fetchLimit = Math.min(150, Math.max(50, state.limit * 3));
205
179
  const statuses = state.statuses ?? DEFAULT_RADAR_STATUSES;
206
- const poolRankingProvenance = getPoolRankingProvenance(state);
207
180
  const options = {
208
181
  limit: fetchLimit,
209
182
  statuses,
@@ -220,7 +193,7 @@ export async function loadOpportunitiesNode(state, deps) {
220
193
  // Actionability only gates the live statuses a viewer could act on:
221
194
  // latent/pending cards the viewer cannot act on are noise, but
222
195
  // terminal/internal statuses (accepted, rejected, expired, negotiating,
223
- // stalled, draft) are deliberate history — when a caller explicitly
196
+ // draft) are deliberate history — when a caller explicitly
224
197
  // requests them via `statuses`, they must pass through (they are never
225
198
  // actionable by rule 5, so filtering them here would return nothing).
226
199
  // The requested-status membership check is defense-in-depth: rows
@@ -229,18 +202,18 @@ export async function loadOpportunitiesNode(state, deps) {
229
202
  const visibleForRadar = visible.filter((opp) => {
230
203
  if (!requestedStatuses.has(opp.status))
231
204
  return false;
232
- if (opp.status === 'latent' || opp.status === 'pending') {
233
- return isActionableForViewer(opp.actors, opp.status, state.userId);
205
+ if (opp.status === 'pending') {
206
+ return isActionableForViewer(opp.actors, opp.status, state.userId, opp.committedActorIds ?? []);
234
207
  }
235
208
  return true;
236
209
  });
237
210
  const explicitStatuses = (state.statuses?.length ?? 0) > 0;
238
211
  if (explicitStatuses) {
239
- // Lifecycle view (e.g. intent radar): newest-first so counterpart
240
- // dedup keeps each person's most recent state (an accepted
241
- // opportunity supersedes an older pending one), no composition
242
- // capping — the caller wants the full pipeline up to `limit`.
243
- const newestFirst = [...visibleForRadar].sort((a, b) => safeParseDate(b.updatedAt) - safeParseDate(a.updatedAt));
212
+ // Lifecycle view (e.g. intent radar): newest-created first so status
213
+ // transitions do not reorder cards merely by touching updatedAt.
214
+ // Counterpart dedup still keeps each person's newest opportunity; no
215
+ // composition capping because the caller wants the full pipeline.
216
+ const newestFirst = [...visibleForRadar].sort((a, b) => safeParseDate(b.createdAt) - safeParseDate(a.createdAt));
244
217
  const seenIds = new Set();
245
218
  const dedupedByCounterpart = newestFirst.filter((opp) => {
246
219
  const counterpartIds = getUniqueCounterpartUserIds(opp, state.userId);
@@ -251,32 +224,11 @@ export async function loadOpportunitiesNode(state, deps) {
251
224
  seenIds.add(id);
252
225
  return true;
253
226
  });
254
- // Preserve byte-identical newest-first behavior while the flag is
255
- // off. When on, re-order the already-deduped lifecycle set by
256
- // adjusted confidence so each client-side radar bucket reflects
257
- // pool answers immediately.
258
- if (!poolRankingProvenance ||
259
- !dedupedByCounterpart.some((opportunity) => hasPoolAdjustment(opportunity, poolRankingProvenance))) {
260
- return { opportunities: dedupedByCounterpart.slice(0, state.limit) };
261
- }
262
- const adjustedOrder = [...dedupedByCounterpart].sort((a, b) => {
263
- const confidenceDelta = getConfidence(b, poolRankingProvenance) - getConfidence(a, poolRankingProvenance);
264
- if (confidenceDelta !== 0)
265
- return confidenceDelta;
266
- return safeParseDate(b.updatedAt) - safeParseDate(a.updatedAt);
267
- });
268
- return { opportunities: adjustedOrder.slice(0, state.limit) };
227
+ return { opportunities: dedupedByCounterpart.slice(0, state.limit) };
269
228
  }
270
229
  const sorted = [...visibleForRadar].sort((a, b) => {
271
- // Connections before connector-flow so dedup claims counterpart IDs
272
- // for direct connections first — prevents introducer cards from
273
- // shadowing a user's own connection opportunities.
274
- const aIsIntroducer = a.actors.some((ac) => ac.userId === state.userId && ac.role === 'introducer');
275
- const bIsIntroducer = b.actors.some((ac) => ac.userId === state.userId && ac.role === 'introducer');
276
- if (aIsIntroducer !== bIsIntroducer)
277
- return aIsIntroducer ? 1 : -1;
278
- const confA = getConfidence(a, poolRankingProvenance);
279
- const confB = getConfidence(b, poolRankingProvenance);
230
+ const confA = getRawConfidence(a);
231
+ const confB = getRawConfidence(b);
280
232
  if (confB !== confA)
281
233
  return confB - confA;
282
234
  const aTime = safeParseDate(a.updatedAt);
@@ -304,8 +256,7 @@ export async function loadOpportunitiesNode(state, deps) {
304
256
  }
305
257
  export async function checkPresenterCacheNode(state, deps) {
306
258
  return timed("RadarGraph.checkPresenterCache", async () => {
307
- const { opportunities, userId } = state;
308
- const poolRankingProvenance = getPoolRankingProvenance(state);
259
+ const { opportunities, userId, scopeId } = state;
309
260
  if (opportunities.length === 0) {
310
261
  return { cachedCards: new Map(), uncachedOpportunities: [] };
311
262
  }
@@ -323,7 +274,7 @@ export async function checkPresenterCacheNode(state, deps) {
323
274
  // transitions (e.g. negotiating → pending) don't serve stale cards.
324
275
  const cacheable = opportunities.filter((opp) => opp.status !== 'negotiating');
325
276
  const liveNegotiating = opportunities.filter((opp) => opp.status === 'negotiating');
326
- const keys = cacheable.map((opp) => buildRadarCardPresentationCacheKey(opp.id, opp.status, userId));
277
+ const keys = cacheable.map((opp) => buildRadarCardPresentationCacheKey(opp.id, opp.status, userId, scopeId));
327
278
  const results = keys.length > 0 ? await deps.cache.mget(keys) : [];
328
279
  const cachedCards = new Map();
329
280
  const uncachedOpportunities = [...liveNegotiating];
@@ -333,13 +284,9 @@ export async function checkPresenterCacheNode(state, deps) {
333
284
  const originalIndex = opportunities.indexOf(cacheable[i]);
334
285
  // Stamp the live status: pre-status cache entries lack the field,
335
286
  // and the key already guarantees it matches the current status.
336
- const deprioritizedReason = poolRankingProvenance
337
- ? latestPoolDemotionDetail(cacheable[i].metadata, poolRankingProvenance)
338
- : undefined;
339
287
  cachedCards.set(cacheable[i].id, {
340
288
  ...cached,
341
289
  status: cacheable[i].status,
342
- deprioritizedReason,
343
290
  _cardIndex: originalIndex,
344
291
  });
345
292
  }
@@ -360,7 +307,7 @@ export async function checkPresenterCacheNode(state, deps) {
360
307
  }
361
308
  });
362
309
  }
363
- export function shouldGenerateCards(state, deps) {
310
+ export function shouldGenerateCards(state, _deps) {
364
311
  if (state.uncachedOpportunities.length > 0) {
365
312
  return 'generate';
366
313
  }
@@ -404,34 +351,14 @@ export async function generateCardTextNode(state, deps) {
404
351
  const cardIndex = oppIndexMap.get(opportunity.id) ?? (i + offset);
405
352
  const viewerActor = opportunity.actors.find((a) => a.userId === state.userId);
406
353
  const viewerRole = viewerActor?.role ?? 'party';
407
- const isIntroducer = viewerRole === 'introducer';
408
354
  const preferredActor = pickDisplayCounterpartActor(opportunity, state.userId)
409
- ?? opportunity.actors.find((a) => a.userId !== state.userId && a.role !== 'introducer');
410
- const actorWithProfile = opportunity.actors.find((a) => a.userId !== state.userId && a.role !== 'introducer' && !!userMap.get(a.userId));
411
- const introducer = opportunity.actors.find((a) => a.role === 'introducer');
412
- let otherActor = (preferredActor && userMap.get(preferredActor.userId))
355
+ ?? opportunity.actors.find((a) => a.userId !== state.userId);
356
+ const actorWithProfile = opportunity.actors.find((a) => a.userId !== state.userId && !!userMap.get(a.userId));
357
+ const otherActor = (preferredActor && userMap.get(preferredActor.userId))
413
358
  ? preferredActor
414
359
  : (actorWithProfile ?? preferredActor);
415
- // When the only other participant is the introducer (no separate party), use introducer as display counterpart so the card shows a name instead of "Unknown"
416
- if (!otherActor && introducer && introducer.userId !== state.userId && introducer.userId) {
417
- otherActor = { userId: introducer.userId, role: introducer.role };
418
- }
419
360
  const otherUser = otherActor ? userMap.get(otherActor.userId) ?? null : null;
420
- const introducerCounterparts = opportunity.actors.filter((a) => a.userId !== state.userId && a.role !== 'introducer');
421
- // Deduplicate by userId — actors array can contain multiple rows per user
422
- // (e.g. from different intents), which would produce repeated names.
423
- const uniqueCounterpartIds = [...new Set(introducerCounterparts.map((a) => a.userId))];
424
- const participantNames = uniqueCounterpartIds
425
- .map((uid) => userMap.get(uid)?.name ?? 'Unknown')
426
- .sort();
427
- // When secondPartyData will be present (2+ counterparts), use single counterpart name
428
- // because the frontend arrow layout renders "card.name → secondParty.name".
429
- // Using the joined "A ↔ B" format here would produce redundant "A ↔ B → B".
430
- // Only use the joined format when there is a single counterpart (no arrow layout).
431
- const willHaveSecondParty = isIntroducer && uniqueCounterpartIds.length > 1;
432
- let userName = isIntroducer && participantNames.length > 0 && !willHaveSecondParty
433
- ? participantNames.join(' ↔ ')
434
- : (otherUser?.name ?? 'Unknown');
361
+ let userName = otherUser?.name ?? 'Unknown';
435
362
  // Fallback to profile identity name when users.name is missing (e.g. profile has display name, users row does not)
436
363
  if ((userName === 'Unknown' || !userName?.trim()) && otherActor?.userId && db.getProfile) {
437
364
  const profile = await db.getProfile(otherActor.userId).catch((err) => {
@@ -465,19 +392,6 @@ export async function generateCardTextNode(state, deps) {
465
392
  maxChars: MAX_REASONING_SNIPPET_LENGTH,
466
393
  emptyText: 'A promising connection.',
467
394
  });
468
- // Build secondParty for introducer arrow layout (the party that isn't the display counterpart)
469
- let secondPartyData;
470
- if (isIntroducer && introducerCounterparts.length > 1 && otherActor) {
471
- const secondActor = introducerCounterparts.find((a) => a.userId !== otherActor.userId);
472
- if (secondActor) {
473
- const secondUser = userMap.get(secondActor.userId) ?? null;
474
- secondPartyData = {
475
- name: secondUser?.name ?? 'Unknown',
476
- avatar: secondUser?.avatar ?? null,
477
- userId: secondActor.userId,
478
- };
479
- }
480
- }
481
395
  // Skeleton presentation: return an identity-only card without the
482
396
  // deps.presenter LLM or negotiation-context load. Name resolution and
483
397
  // the unresolvable-counterpart drop above still apply, so the card
@@ -493,39 +407,32 @@ export async function generateCardTextNode(state, deps) {
493
407
  cta: '',
494
408
  primaryActionLabel: getPrimaryActionLabel(viewerRole),
495
409
  secondaryActionLabel: SECONDARY_ACTION_LABEL,
496
- mutualIntentsLabel: isIntroducer ? 'Connector match' : 'Shared interests',
410
+ mutualIntentsLabel: 'Shared interests',
497
411
  viewerRole,
498
- ...(secondPartyData ? { secondParty: secondPartyData } : {}),
499
412
  presentationPending: true,
500
413
  _cardIndex: cardIndex,
501
414
  };
502
415
  }
503
- const isPendingIntroducerFallback = isIntroducer && opportunity.status !== 'latent';
504
- const fallbackCard = () => ({
416
+ const fallbackCard = (outcomeReasoning) => ({
505
417
  opportunityId: opportunity.id,
506
418
  status: opportunity.status,
507
419
  userId: otherActor?.userId ?? '',
508
420
  name: userName,
509
421
  avatar: userAvatar,
510
- mainText: reasoningSnippet,
511
- cta: isIntroducer
512
- ? (isPendingIntroducerFallback ? 'Share this introduction to get things started.' : 'Take a look and decide if this is a good match.')
513
- : 'Take a look and decide whether to reach out.',
422
+ mainText: outcomeReasoning ?? reasoningSnippet,
423
+ cta: 'Take a look and decide whether to reach out.',
514
424
  primaryActionLabel: getPrimaryActionLabel(viewerRole),
515
425
  secondaryActionLabel: SECONDARY_ACTION_LABEL,
516
- mutualIntentsLabel: isIntroducer ? 'Connector match' : 'Shared interests',
517
- narratorChip: isIntroducer
518
- ? { name: 'You', text: 'Worth a look.', userId: state.userId }
519
- : { name: 'Index', text: 'Worth a look.' },
426
+ mutualIntentsLabel: 'Shared interests',
427
+ narratorChip: { name: 'Index', text: 'Worth a look.' },
520
428
  viewerRole,
521
- ...(secondPartyData ? { secondParty: secondPartyData } : {}),
522
429
  _presentationFallback: true,
523
430
  _cardIndex: cardIndex,
524
431
  });
525
432
  try {
526
433
  const [ctx, negotiationContext] = await Promise.all([
527
- gatherPresenterContext(db, opportunity, state.userId, otherActor?.userId),
528
- loadNegotiationContext(db, opportunity.id, opportunity.status),
434
+ gatherPresenterContext(db, opportunity, state.userId, otherActor?.userId, state.scopeId),
435
+ loadNegotiationContext(db, opportunity.id, opportunity.status, state.userId),
529
436
  ]);
530
437
  const presenterInput = {
531
438
  ...ctx,
@@ -543,26 +450,8 @@ export async function generateCardTextNode(state, deps) {
543
450
  if (presentation.isFallback) {
544
451
  return fallbackCard();
545
452
  }
546
- let narratorChip;
547
- // Only show a person as narrator when they are the introducer and not the display counterpart
548
- // (bad data can have same user as introducer and party, e.g. "Amina introduced you to Amina")
549
- const introducerIsCounterpart = introducer && otherActor && introducer.userId === otherActor.userId;
550
- if (introducer && introducer.userId !== state.userId && !introducerIsCounterpart) {
551
- const introUser = userMap.get(introducer.userId) ?? null;
552
- const narratorName = introUser?.name ?? 'Someone';
553
- narratorChip = {
554
- name: narratorName,
555
- text: stripLeadingNarratorName(presentation.narratorRemark, narratorName),
556
- avatar: introUser?.avatar ?? null,
557
- userId: introducer.userId,
558
- };
559
- }
560
- else if (introducer?.userId === state.userId) {
561
- narratorChip = { name: 'You', text: presentation.narratorRemark, userId: state.userId };
562
- }
563
- else {
564
- narratorChip = { name: 'Index', text: presentation.narratorRemark };
565
- }
453
+ // Every card is system-discovered now: one narrator.
454
+ const narratorChip = { name: 'Index', text: presentation.narratorRemark };
566
455
  return {
567
456
  opportunityId: opportunity.id,
568
457
  status: opportunity.status,
@@ -577,7 +466,6 @@ export async function generateCardTextNode(state, deps) {
577
466
  mutualIntentsLabel: presentation.mutualIntentsLabel,
578
467
  narratorChip,
579
468
  viewerRole,
580
- ...(secondPartyData ? { secondParty: secondPartyData } : {}),
581
469
  _cardIndex: cardIndex,
582
470
  };
583
471
  }
@@ -598,18 +486,9 @@ export async function generateCardTextNode(state, deps) {
598
486
  }
599
487
  export async function cachePresenterResultsNode(state, deps) {
600
488
  return timed("RadarGraph.cachePresenterResults", async () => {
601
- const { cards, cachedCards, userId, opportunities } = state;
602
- const poolRankingProvenance = getPoolRankingProvenance(state);
603
- const liveById = new Map(opportunities.map((opportunity) => [opportunity.id, opportunity]));
604
- const cardsWithAdjustments = cards.map((card) => {
605
- const opportunity = liveById.get(card.opportunityId);
606
- const deprioritizedReason = poolRankingProvenance
607
- ? latestPoolDemotionDetail(opportunity?.metadata, poolRankingProvenance)
608
- : undefined;
609
- return { ...card, deprioritizedReason };
610
- });
489
+ const { cards, cachedCards, userId, opportunities, scopeId } = state;
611
490
  // Only cache cards that weren't already from cache
612
- const newCards = cardsWithAdjustments.filter((card) => !cachedCards.has(card.opportunityId));
491
+ const newCards = cards.filter((card) => !cachedCards.has(card.opportunityId));
613
492
  const statusById = new Map(opportunities.map((opp) => [opp.id, opp.status]));
614
493
  try {
615
494
  await Promise.all(newCards.map((card) => {
@@ -618,16 +497,16 @@ export async function cachePresenterResultsNode(state, deps) {
618
497
  // safe for the current response but must not become 24h entries.
619
498
  if (!status || !isRadarPresentationCacheable(card, status))
620
499
  return Promise.resolve();
621
- return deps.cache.set(buildRadarCardPresentationCacheKey(card.opportunityId, status, userId), card, { ttl: RADAR_CACHE_TTL });
500
+ return deps.cache.set(buildRadarCardPresentationCacheKey(card.opportunityId, status, userId, scopeId), card, { ttl: RADAR_CACHE_TTL });
622
501
  }));
623
502
  }
624
503
  catch (e) {
625
504
  cachePresenterResultsLog.warn('cache write failed, continuing', { error: e });
626
505
  }
627
506
  // Merge cached cards into full card list
628
- const allCards = [...cardsWithAdjustments];
507
+ const allCards = [...cards];
629
508
  for (const [oppId, cachedCard] of cachedCards) {
630
- if (!cardsWithAdjustments.some((card) => card.opportunityId === oppId)) {
509
+ if (!cards.some((card) => card.opportunityId === oppId)) {
631
510
  allCards.push(cachedCard);
632
511
  }
633
512
  }
@@ -646,9 +525,10 @@ export async function cachePresenterResultsNode(state, deps) {
646
525
  export async function normalizeItemsNode(state) {
647
526
  return timed("RadarGraph.normalizeItems", async () => {
648
527
  normalizeItemsLog.verbose('entry', { cardsLength: state.cards.length });
528
+ const createdAtById = new Map(state.opportunities.map((opportunity) => [opportunity.id, opportunity.createdAt.toISOString()]));
649
529
  const items = state.cards.map((card) => {
650
530
  const { _cardIndex, _presentationFallback, ...rest } = card;
651
- return rest;
531
+ return { ...rest, createdAt: createdAtById.get(card.opportunityId) };
652
532
  });
653
533
  const meta = { totalOpportunities: state.opportunities.length };
654
534
  normalizeItemsLog.verbose('exit', { totalOpportunities: meta.totalOpportunities, totalItems: items.length });
@@ -1,10 +1,11 @@
1
- import type { Opportunity, OpportunityStatus } from '../../shared/interfaces/database.interface.js';
2
- import type { DebugMetaAgent } from '../../agents/agent.module.js';
1
+ import type { Opportunity, OpportunityStatus } from '../../../platform/database.js';
2
+ import type { DebugMetaAgent } from "../../../protocol/core.js";
3
3
  /**
4
4
  * Radar card item: one opportunity with full presenter-driven display contract.
5
5
  */
6
6
  export interface RadarCardItem {
7
7
  opportunityId: string;
8
+ createdAt?: string;
8
9
  /** Lifecycle status of the underlying opportunity at render time (client bucketing, e.g. intent radar). */
9
10
  status?: OpportunityStatus;
10
11
  userId: string;
@@ -25,16 +26,8 @@ export interface RadarCardItem {
25
26
  avatar?: string | null;
26
27
  userId?: string;
27
28
  };
28
- /** Viewer's role in this opportunity (e.g. 'introducer', 'party', 'agent', 'patient', 'peer'). */
29
+ /** Viewer's role in this opportunity (e.g. 'party', 'agent', 'patient', 'peer'). */
29
30
  viewerRole?: string;
30
- /** Template-only explanation for a pool-answer demotion (never evaluator reasoning). */
31
- deprioritizedReason?: string;
32
- /** Second party in introducer arrow layout. Present when viewerRole is 'introducer'. */
33
- secondParty?: {
34
- name: string;
35
- avatar?: string | null;
36
- userId?: string;
37
- };
38
31
  /**
39
32
  * True when this card was produced by a skeleton-presentation run: identity
40
33
  * fields (name/avatar/status) are real but mainText/cta are empty because the
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Returns a LangChain RunnableConfig carrying the active AbortSignal(s),
3
- * when tool/runtime execution installed one in AsyncLocalStorage or a caller
3
+ * when the host installed one in AsyncLocalStorage or a caller
4
4
  * supplied an explicit signal.
5
5
  */
6
6
  export declare function getAbortSignalConfig(signal?: AbortSignal): {
@@ -24,7 +24,7 @@ function combineAbortSignals(signals) {
24
24
  }
25
25
  /**
26
26
  * Returns a LangChain RunnableConfig carrying the active AbortSignal(s),
27
- * when tool/runtime execution installed one in AsyncLocalStorage or a caller
27
+ * when the host installed one in AsyncLocalStorage or a caller
28
28
  * supplied an explicit signal.
29
29
  */
30
30
  export function getAbortSignalConfig(signal) {