@indexnetwork/protocol 22.0.0-rc.499.1 → 64.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -134
  12. package/dist/index.js +41 -105
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -1,155 +0,0 @@
1
- import { POOL_DISCRIMINATOR_MIN_POOL_SIZE, POOL_QUESTION_MAX_DISCRIMINATORS, POOL_QUESTION_MIN_EVIDENCE_RATE, POOL_QUESTION_MIN_VOI } from "./discriminator.env.js";
2
- /** Fixed option appended to every pool question — the no-preference escape. */
3
- export const BOTH_MATTER_LABEL = "Both matter";
4
- /** Max words in a chip-style option label (prototype voice: terse, glanceable). */
5
- const MAX_LABEL_WORDS = 5;
6
- /** Question title (≤12 chars, per QuestionSchema). */
7
- const POOL_QUESTION_TITLE = "Matches";
8
- /**
9
- * Converts a scored discriminator into the compact snapshot form stored on
10
- * the question row (verified assignments only; unknowns dropped).
11
- */
12
- export function toQuestionDiscriminator(d) {
13
- const sideCounts = {};
14
- for (const side of d.sides)
15
- sideCounts[side] = 0;
16
- const assignments = [];
17
- for (const a of d.assignments) {
18
- if (a.side === null || !a.verified)
19
- continue;
20
- if (!(a.side in sideCounts))
21
- continue;
22
- sideCounts[a.side] += 1;
23
- assignments.push({ opportunityId: a.id, side: a.side });
24
- }
25
- return {
26
- label: d.label,
27
- questionSeed: d.questionSeed,
28
- sides: d.sides,
29
- sideCounts,
30
- voi: d.voi,
31
- evidenceRate: d.evidenceRate,
32
- ...(d.embedding ? { embedding: d.embedding } : {}),
33
- ...(d.embeddingModel ? { embeddingModel: d.embeddingModel } : {}),
34
- assignments,
35
- };
36
- }
37
- /**
38
- * Filters a mining pass down to question-eligible discriminators:
39
- * VoI ≥ {@link POOL_QUESTION_MIN_VOI}, evidenceRate ≥
40
- * {@link POOL_QUESTION_MIN_EVIDENCE_RATE}, capped at
41
- * {@link POOL_QUESTION_MAX_DISCRIMINATORS}. Input is already VoI-sorted.
42
- */
43
- export function selectQuestionDiscriminators(discriminators) {
44
- return discriminators
45
- .filter((d) => d.voi >= POOL_QUESTION_MIN_VOI && d.evidenceRate >= POOL_QUESTION_MIN_EVIDENCE_RATE)
46
- .slice(0, POOL_QUESTION_MAX_DISCRIMINATORS);
47
- }
48
- /** Truncates a side label to the chip word budget. */
49
- function chipLabel(side) {
50
- const words = side.trim().split(/\s+/);
51
- return words.slice(0, MAX_LABEL_WORDS).join(" ");
52
- }
53
- /**
54
- * Miner seeds are sometimes written from the intent owner's POV ("Do I
55
- * prefer…"). The question is asked TO the owner, so normalize to second
56
- * person. Conservative verb-pair map + bare pronoun/possessive swaps.
57
- */
58
- function toSecondPerson(seed) {
59
- return seed
60
- .replace(/\b(do|should|would|could|can|will) I\b/gi, (_, verb) => `${verb.toLowerCase()} you`)
61
- .replace(/\bam I\b/gi, "are you")
62
- .replace(/\bI\b/g, "you")
63
- .replace(/\bmy\b/gi, "your")
64
- // Third-person seeds ("Is the user primarily involved…") — the question is
65
- // asked TO the owner, never ABOUT them.
66
- .replace(/\b(is|was) (?:the|this) (user|owner|discoverer|client)\b/gi, "are you")
67
- .replace(/\bdoes (?:the|this) (user|owner|discoverer|client)\b/gi, "do you")
68
- .replace(/\b(?:the|this) (user|owner|discoverer|client)'s\b/gi, "your")
69
- .replace(/\b(?:the|this) (user|owner|discoverer|client)\b/gi, "you");
70
- }
71
- /**
72
- * Catch-all: after normalization the prompt must be second-person. Any
73
- * residual third-person reference to the owner means an unanticipated seed
74
- * shape slipped through — the deterministic two-sided template (always
75
- * second-person) is the safe fallback.
76
- */
77
- function isStillThirdPerson(prompt) {
78
- return /\b(?:the|this|a) (?:user|owner|discoverer|client)\b/i.test(prompt);
79
- }
80
- /**
81
- * A good discriminator prompt names BOTH sides so the chips read as a real
82
- * choice. When the seed mentions fewer than two sides (e.g. "Do you prefer
83
- * hands-on prototyping?"), fall back to a deterministic two-sided template.
84
- */
85
- function mentionsSide(seed, side) {
86
- const lowerSeed = seed.toLowerCase();
87
- return side
88
- .toLowerCase()
89
- .split(/[^a-z0-9-]+/)
90
- .filter((w) => w.length > 3)
91
- .some((w) => lowerSeed.includes(w));
92
- }
93
- /** Ensures the prompt reads as one second-person, two-sided question. */
94
- function toPrompt(questionSeed, sides) {
95
- let p = toSecondPerson(questionSeed.trim().replace(/\s+/g, " "));
96
- const sidesMentioned = sides.filter((s) => mentionsSide(p, s)).length;
97
- if (sidesMentioned < 2 || isStillThirdPerson(p)) {
98
- const last = sides[sides.length - 1];
99
- const head = sides.slice(0, -1).join(", ");
100
- p = `Which matters more here: ${head} or ${last}`;
101
- }
102
- // Sentence-case the first character (template + normalization can lowercase it).
103
- p = p.charAt(0).toUpperCase() + p.slice(1);
104
- if (!/[?]$/.test(p))
105
- p = p.replace(/[.!]+$/, "") + "?";
106
- return p.slice(0, 400);
107
- }
108
- /**
109
- * Builds the pool_discovery question. Returns null when the pool is below
110
- * the k-anonymity floor or the discriminator shape is unusable (guards are
111
- * duplicated here so no caller can bypass them).
112
- */
113
- export function synthesizePoolQuestion(input) {
114
- const { discriminator: d, poolSize } = input;
115
- if (poolSize < POOL_DISCRIMINATOR_MIN_POOL_SIZE)
116
- return null;
117
- if (d.sides.length < 2 || d.sides.length > 3)
118
- return null;
119
- // Evidence chip: aggregate count + the intent it belongs to, so the card is
120
- // self-identifying on every surface (QuestionSchema caps evidence at 160).
121
- const snippet = input.intentText?.trim().replace(/\s+/g, " ") ?? "";
122
- const evidence = snippet.length > 0
123
- ? `based on ${poolSize} people matching “${snippet.slice(0, 110)}${snippet.length > 110 ? "…" : ""}”`
124
- : `based on ${poolSize} people matching this intent`;
125
- const sideOptions = d.sides.map((side) => ({
126
- label: chipLabel(side),
127
- description: `${d.sideCounts[side] ?? 0} of your ${poolSize} current matches lean this way`,
128
- }));
129
- const options = [
130
- ...sideOptions,
131
- {
132
- label: BOTH_MATTER_LABEL,
133
- description: "No preference — keep the current ranking",
134
- },
135
- ];
136
- return {
137
- payload: {
138
- title: POOL_QUESTION_TITLE,
139
- prompt: toPrompt(d.questionSeed, d.sides),
140
- options,
141
- multiSelect: false,
142
- evidence,
143
- },
144
- pool: {
145
- poolSize,
146
- opportunityIds: [...input.opportunityIds],
147
- minedAt: input.minedAt,
148
- ...(input.runId ? { runId: input.runId } : {}),
149
- ...(snippet.length > 0 ? { intentText: snippet.slice(0, 160) } : {}),
150
- ...(input.intentFingerprint ? { intentFingerprint: input.intentFingerprint } : {}),
151
- discriminator: d,
152
- alternates: input.alternates,
153
- },
154
- };
155
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Pool-axis VoI scorer — pure functions, no LLM, no I/O (IND-417).
3
- *
4
- * VoI = H_norm × coverage^1.5 × novelty
5
- *
6
- * H_norm score-weighted entropy over the axis sides, normalized by
7
- * log2(k). Entropy is computed over candidate *score mass*
8
- * (confidence weights), not head counts, so a balanced split of
9
- * low-confidence junk-tail candidates doesn't inflate VoI.
10
- * coverage fraction of total pool score mass with a verified side
11
- * assignment. The ^1.5 exponent is the anti-vague-axis knob:
12
- * axes the LLM couldn't ground in evidence lose fast.
13
- * novelty 1 − max cosine similarity between the axis embedding and
14
- * reference embeddings (existing premises, intent sentences).
15
- * An axis the user has already answered elsewhere scores ~0.
16
- */
17
- import type { MinedDiscriminator, PoolCandidate, ScoredDiscriminator } from "./discriminator.types.js";
18
- /** Cosine similarity of two equal-length vectors, in [-1, 1]. 0 for degenerate input. */
19
- export declare function cosineSimilarity(a: number[], b: number[]): number;
20
- /**
21
- * Novelty of an axis vs reference texts: 1 − max cosine similarity, clamped
22
- * to [0, 1]. No references → 1 (fully novel).
23
- */
24
- export declare function computeNovelty(axisEmbedding: number[], referenceEmbeddings: number[][]): number;
25
- /**
26
- * Score one mined axis against its pool.
27
- *
28
- * @param axis Mined axis with verified assignments (one per candidate).
29
- * @param candidates The pool (provides score mass per candidate id).
30
- * @param novelty Precomputed novelty in [0,1] (see {@link computeNovelty}).
31
- */
32
- export declare function scoreDiscriminator(axis: MinedDiscriminator, candidates: PoolCandidate[], novelty: number): ScoredDiscriminator;
@@ -1,105 +0,0 @@
1
- /**
2
- * Pool-axis VoI scorer — pure functions, no LLM, no I/O (IND-417).
3
- *
4
- * VoI = H_norm × coverage^1.5 × novelty
5
- *
6
- * H_norm score-weighted entropy over the axis sides, normalized by
7
- * log2(k). Entropy is computed over candidate *score mass*
8
- * (confidence weights), not head counts, so a balanced split of
9
- * low-confidence junk-tail candidates doesn't inflate VoI.
10
- * coverage fraction of total pool score mass with a verified side
11
- * assignment. The ^1.5 exponent is the anti-vague-axis knob:
12
- * axes the LLM couldn't ground in evidence lose fast.
13
- * novelty 1 − max cosine similarity between the axis embedding and
14
- * reference embeddings (existing premises, intent sentences).
15
- * An axis the user has already answered elsewhere scores ~0.
16
- */
17
- /** Cosine similarity of two equal-length vectors, in [-1, 1]. 0 for degenerate input. */
18
- export function cosineSimilarity(a, b) {
19
- if (a.length === 0 || a.length !== b.length)
20
- return 0;
21
- let dot = 0;
22
- let normA = 0;
23
- let normB = 0;
24
- for (let i = 0; i < a.length; i++) {
25
- dot += a[i] * b[i];
26
- normA += a[i] * a[i];
27
- normB += b[i] * b[i];
28
- }
29
- if (normA === 0 || normB === 0)
30
- return 0;
31
- return dot / (Math.sqrt(normA) * Math.sqrt(normB));
32
- }
33
- /**
34
- * Novelty of an axis vs reference texts: 1 − max cosine similarity, clamped
35
- * to [0, 1]. No references → 1 (fully novel).
36
- */
37
- export function computeNovelty(axisEmbedding, referenceEmbeddings) {
38
- if (referenceEmbeddings.length === 0)
39
- return 1;
40
- let maxSim = 0;
41
- for (const ref of referenceEmbeddings) {
42
- const sim = cosineSimilarity(axisEmbedding, ref);
43
- if (sim > maxSim)
44
- maxSim = sim;
45
- }
46
- return Math.min(1, Math.max(0, 1 - maxSim));
47
- }
48
- /**
49
- * Weight for one candidate's score mass. Negative/NaN scores contribute 0;
50
- * when the whole pool has zero mass the caller falls back to count weights.
51
- */
52
- function massOf(score) {
53
- return Number.isFinite(score) && score > 0 ? score : 0;
54
- }
55
- /**
56
- * Score one mined axis against its pool.
57
- *
58
- * @param axis Mined axis with verified assignments (one per candidate).
59
- * @param candidates The pool (provides score mass per candidate id).
60
- * @param novelty Precomputed novelty in [0,1] (see {@link computeNovelty}).
61
- */
62
- export function scoreDiscriminator(axis, candidates, novelty) {
63
- const massById = new Map();
64
- let totalMass = 0;
65
- for (const c of candidates) {
66
- const m = massOf(c.score);
67
- massById.set(c.id, m);
68
- totalMass += m;
69
- }
70
- // Degenerate pool (all zero/invalid scores): fall back to count weights.
71
- const useCounts = totalMass <= 0;
72
- if (useCounts) {
73
- totalMass = candidates.length;
74
- for (const c of candidates)
75
- massById.set(c.id, 1);
76
- }
77
- const sideMass = new Map();
78
- let assignedMass = 0;
79
- for (const a of axis.assignments) {
80
- if (a.side === null || !a.verified)
81
- continue;
82
- if (!axis.sides.includes(a.side))
83
- continue;
84
- const m = massById.get(a.id) ?? 0;
85
- if (m <= 0)
86
- continue;
87
- sideMass.set(a.side, (sideMass.get(a.side) ?? 0) + m);
88
- assignedMass += m;
89
- }
90
- const k = axis.sides.length;
91
- let entropy = 0;
92
- if (assignedMass > 0 && k >= 2) {
93
- let h = 0;
94
- for (const mass of sideMass.values()) {
95
- const p = mass / assignedMass;
96
- if (p > 0)
97
- h -= p * Math.log2(p);
98
- }
99
- entropy = h / Math.log2(k);
100
- }
101
- const coverage = totalMass > 0 ? assignedMass / totalMass : 0;
102
- const clampedNovelty = Math.min(1, Math.max(0, novelty));
103
- const voi = entropy * Math.pow(coverage, 1.5) * clampedNovelty;
104
- return { ...axis, entropy, coverage, novelty: clampedNovelty, voi };
105
- }
@@ -1,32 +0,0 @@
1
- import type { EmbeddingGenerator } from "../../shared/interfaces/embedder.interface.js";
2
- import type { PoolDiscriminatorMiner } from "./discriminator.miner.js";
3
- import type { PoolCandidate, DiscriminatorShadowResult } from "./discriminator.types.js";
4
- /** Input for one shadow mining+scoring pass. */
5
- export interface DiscriminatorShadowInput {
6
- /** Intent payload (+ summary) or search query that produced the pool. */
7
- intentText: string;
8
- /** The pool (already filtered/capped by the caller). */
9
- candidates: PoolCandidate[];
10
- /**
11
- * Novelty references: the intent owner's active premise texts and intent
12
- * sentences. An axis semantically equal to any reference scores ~0.
13
- */
14
- referenceTexts: string[];
15
- /** Legacy/model-mismatched resolved axes re-embedded with an independent budget. */
16
- priorReferenceTexts?: string[];
17
- /** Fresh resolved-axis vectors generated by the current embedding model. */
18
- priorReferenceEmbeddings?: number[][];
19
- /** Model used for current axis embeddings and persisted metadata. */
20
- embeddingModel?: string;
21
- /** Retain generated axis vectors on results for durable question snapshots. */
22
- retainEmbeddings?: boolean;
23
- miner: Pick<PoolDiscriminatorMiner, "mine">;
24
- embedder: EmbeddingGenerator;
25
- signal?: AbortSignal;
26
- }
27
- /**
28
- * Runs miner → embeddings → scorer. Throws only when *mining* fails (callers
29
- * are fire-and-forget); embedding failures degrade to novelty = 1 for all
30
- * discriminators rather than dropping the pass.
31
- */
32
- export declare function runPoolDiscriminatorShadow(input: DiscriminatorShadowInput): Promise<DiscriminatorShadowResult>;
@@ -1,90 +0,0 @@
1
- /**
2
- * Shadow orchestrator: mine discriminators for a pool, embed them, score VoI, and
3
- * return the log payload (IND-417). No persistence, no questions, no UI —
4
- * P1 output is consumed only by structured logs for human review.
5
- */
6
- import { protocolLogger } from "../../shared/observability/protocol.logger.js";
7
- import { computeNovelty, scoreDiscriminator } from "./discriminator.scorer.js";
8
- const logger = protocolLogger("PoolDiscriminatorShadow");
9
- /** Max ordinary current-intent/premise text references compared for novelty. */
10
- const MAX_REFERENCE_TEXTS = 24;
11
- /** Text embedded per discriminator for the novelty comparison. */
12
- function discriminatorEmbeddingText(d) {
13
- return `${d.label} — ${d.questionSeed}`;
14
- }
15
- /**
16
- * Runs miner → embeddings → scorer. Throws only when *mining* fails (callers
17
- * are fire-and-forget); embedding failures degrade to novelty = 1 for all
18
- * discriminators rather than dropping the pass.
19
- */
20
- export async function runPoolDiscriminatorShadow(input) {
21
- const { candidates } = input;
22
- const mined = await input.miner.mine({ intentText: input.intentText, candidates }, input.signal ? { signal: input.signal } : undefined);
23
- if (mined.length === 0) {
24
- return { poolSize: candidates.length, discriminators: [] };
25
- }
26
- const references = input.referenceTexts
27
- .map((t) => t.trim())
28
- .filter((t) => t.length > 0)
29
- .slice(0, MAX_REFERENCE_TEXTS);
30
- const priorReferenceTexts = (input.priorReferenceTexts ?? [])
31
- .map((text) => text.trim())
32
- .filter((text) => text.length > 0);
33
- const priorReferenceEmbeddings = (input.priorReferenceEmbeddings ?? [])
34
- .filter((embedding) => embedding.length > 0);
35
- const hasPriorReferenceHistory = priorReferenceTexts.length > 0 || priorReferenceEmbeddings.length > 0;
36
- let novelties = mined.map(() => 1);
37
- let discriminatorEmbeddings = null;
38
- let priorReferenceComparisonUnavailable = false;
39
- const shouldEmbed = input.retainEmbeddings
40
- || references.length > 0
41
- || hasPriorReferenceHistory;
42
- if (shouldEmbed) {
43
- try {
44
- const texts = [
45
- ...mined.map(discriminatorEmbeddingText),
46
- ...references,
47
- ...priorReferenceTexts,
48
- ];
49
- const embeddings = (await input.embedder.generate(texts));
50
- if (embeddings.length !== texts.length || embeddings.some((embedding) => !Array.isArray(embedding) || embedding.length === 0)) {
51
- throw new Error("Embedding provider returned an invalid batch");
52
- }
53
- const comparisonEmbeddings = [...embeddings, ...priorReferenceEmbeddings];
54
- const dimension = comparisonEmbeddings[0]?.length;
55
- if (dimension !== undefined && comparisonEmbeddings.some((embedding) => embedding.length !== dimension)) {
56
- throw new Error("Embedding comparison batch contains incompatible vector dimensions");
57
- }
58
- discriminatorEmbeddings = embeddings.slice(0, mined.length);
59
- const referenceEmbeddings = [
60
- ...priorReferenceEmbeddings,
61
- ...embeddings.slice(mined.length),
62
- ];
63
- novelties = discriminatorEmbeddings.map((embedding) => computeNovelty(embedding, referenceEmbeddings));
64
- }
65
- catch (err) {
66
- logger.warn("Novelty embedding failed; defaulting novelty to 1", {
67
- error: err instanceof Error ? err.message : String(err),
68
- });
69
- priorReferenceComparisonUnavailable = hasPriorReferenceHistory;
70
- }
71
- }
72
- const discriminators = mined
73
- .map((d, i) => {
74
- const scored = scoreDiscriminator(d, candidates, novelties[i]);
75
- const embedding = input.retainEmbeddings ? discriminatorEmbeddings?.[i] : undefined;
76
- return embedding
77
- ? {
78
- ...scored,
79
- embedding,
80
- ...(input.embeddingModel ? { embeddingModel: input.embeddingModel } : {}),
81
- }
82
- : scored;
83
- })
84
- .sort((a, b) => b.voi - a.voi);
85
- return {
86
- poolSize: candidates.length,
87
- discriminators,
88
- ...(priorReferenceComparisonUnavailable ? { priorReferenceComparisonUnavailable: true } : {}),
89
- };
90
- }
@@ -1,93 +0,0 @@
1
- /**
2
- * Pool discriminator mining — shared types (IND-416 / IND-417).
3
- *
4
- * A "pool discriminator" is a preference dimension that splits a discovery-run
5
- * candidate pool into meaningfully different groups (e.g. "hands-on builders
6
- * vs advisors"). Discriminators are mined by one structured LLM pass, then
7
- * scored deterministically (VoI = entropy × coverage^1.5 × novelty) so the
8
- * highest value question can eventually be asked to the intent owner.
9
- *
10
- * Vocabulary note: the LLM wire format (prompt + response schema in the miner)
11
- * speaks of "axes" with mutually exclusive "sides" — the clearest way to
12
- * explain the concept to the model. Everything the rest of the codebase
13
- * touches (types, exports, logs) uses "discriminator".
14
- *
15
- * P1 (shadow) uses these types for log-only output; later phases reuse them
16
- * for question synthesis and answer application.
17
- */
18
- /** One candidate in the pool as supplied to the miner LLM. */
19
- export interface PoolCandidate {
20
- /** Opportunity id (stable key for later answer application). */
21
- id: string;
22
- /**
23
- * The exact public-context string shown to the LLM for this candidate
24
- * (name + bio + matchReason + headline + premise snippets, ≤400 chars).
25
- * Evidence spans are substring-verified against this exact string.
26
- */
27
- publicContext: string;
28
- /** Candidate confidence/score — the mass used for score-weighted entropy. */
29
- score: number;
30
- }
31
- /** Input envelope for one mining pass. */
32
- export interface DiscriminatorMiningInput {
33
- /** Intent payload (+ summary) or ad-hoc search query that produced the pool. */
34
- intentText: string;
35
- candidates: PoolCandidate[];
36
- }
37
- /**
38
- * One candidate assignment on a discriminator, after code-side evidence verification.
39
- * `side === null` means unknown (LLM abstained, evidence failed verification,
40
- * or the candidate was missing from the LLM output).
41
- */
42
- export interface VerifiedAssignment {
43
- /** Candidate (opportunity) id. */
44
- id: string;
45
- /** Verified side label (one of the discriminator's sides), or null = unknown. */
46
- side: string | null;
47
- /** The evidence span quoted by the LLM (kept for logging/audit), if any. */
48
- evidence: string | null;
49
- /**
50
- * True when the LLM proposed a side AND its evidence span substring-matched
51
- * the candidate's publicContext. False for demoted-to-unknown proposals.
52
- */
53
- verified: boolean;
54
- }
55
- /** One mined discriminator after evidence verification (pre-scoring). */
56
- export interface MinedDiscriminator {
57
- /** Short discriminator label, e.g. "Hands-on builders vs strategic advisors". */
58
- label: string;
59
- /** A question the intent owner could be asked to resolve the discriminator. */
60
- questionSeed: string;
61
- /** 2–3 mutually exclusive side labels. */
62
- sides: string[];
63
- /** Exactly one entry per pool candidate. */
64
- assignments: VerifiedAssignment[];
65
- /**
66
- * verified-proposals / total side proposals from the LLM for this discriminator
67
- * (0 when the LLM proposed no sides at all). The hallucination health metric.
68
- */
69
- evidenceRate: number;
70
- }
71
- /** A mined discriminator with its deterministic VoI score components. */
72
- export interface ScoredDiscriminator extends MinedDiscriminator {
73
- /** Current discriminator embedding retained for durable semantic dedup. */
74
- embedding?: number[];
75
- /** Model that generated {@link embedding}. */
76
- embeddingModel?: string;
77
- /** Normalized score-weighted entropy over sides, in [0,1]. */
78
- entropy: number;
79
- /** Assigned score mass / total pool score mass, in [0,1]. */
80
- coverage: number;
81
- /** 1 − max cosine similarity vs reference texts (premises/intent), in [0,1]. */
82
- novelty: number;
83
- /** entropy × coverage^1.5 × novelty. */
84
- voi: number;
85
- }
86
- /** Result of one shadow mining+scoring pass (the log payload shape). */
87
- export interface DiscriminatorShadowResult {
88
- poolSize: number;
89
- /** Scored discriminators, sorted by VoI descending. */
90
- discriminators: ScoredDiscriminator[];
91
- /** Historical-axis comparison could not be completed due to invalid embeddings. */
92
- priorReferenceComparisonUnavailable?: boolean;
93
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * Pool discriminator mining — shared types (IND-416 / IND-417).
3
- *
4
- * A "pool discriminator" is a preference dimension that splits a discovery-run
5
- * candidate pool into meaningfully different groups (e.g. "hands-on builders
6
- * vs advisors"). Discriminators are mined by one structured LLM pass, then
7
- * scored deterministically (VoI = entropy × coverage^1.5 × novelty) so the
8
- * highest value question can eventually be asked to the intent owner.
9
- *
10
- * Vocabulary note: the LLM wire format (prompt + response schema in the miner)
11
- * speaks of "axes" with mutually exclusive "sides" — the clearest way to
12
- * explain the concept to the model. Everything the rest of the codebase
13
- * touches (types, exports, logs) uses "discriminator".
14
- *
15
- * P1 (shadow) uses these types for log-only output; later phases reuse them
16
- * for question synthesis and answer application.
17
- */
18
- export {};
@@ -1,59 +0,0 @@
1
- /**
2
- * Negotiation context loader: given an opportunity, fetches the attached
3
- * negotiation task's transcript and outcome so the card presenter can
4
- * explain *why* the opportunity surfaced.
5
- *
6
- * For `draft`, `latent`, and `expired` opportunities, no negotiation has
7
- * happened (or no longer matters) so the loader returns null.
8
- *
9
- * For `negotiating` opportunities, only `turnCount` / `turnCap` are returned
10
- * — the presenter renders a templated chip without invoking the LLM.
11
- *
12
- * For `pending`, `stalled`, `accepted`, and `rejected` opportunities, the
13
- * full transcript and outcome are included so the prompt can ground its
14
- * explanation in concrete turn content.
15
- *
16
- * Screened-out negotiations (P2.2 — the client's own outreach gate declined
17
- * before any turn was exchanged) return null: presentation treats them as
18
- * never-happened, so no card, feed, or digest surface can frame the client's
19
- * private gate decision as a "counterparty declined" event.
20
- */
21
- import type { NegotiationGraphDatabase, OpportunityStatus } from '../shared/interfaces/database.interface.js';
22
- import type { NegotiationOutcome, NegotiationTurn } from '../negotiations/negotiation.module.js';
23
- /**
24
- * Narrow slice of {@link NegotiationGraphDatabase} required by the loader. Kept
25
- * minimal so call sites can opt into a smaller surface.
26
- */
27
- export type NegotiationContextDatabase = Pick<NegotiationGraphDatabase, 'getNegotiationTaskForOpportunity' | 'getNegotiationMessages' | 'getArtifactsForTask'>;
28
- /**
29
- * Snapshot of a negotiation surfaced to the presenter. `turns` and `outcome`
30
- * are only populated for post-negotiation statuses (pending/stalled/
31
- * accepted/rejected); `negotiating` gets only the counters.
32
- */
33
- export interface NegotiationContext {
34
- status: OpportunityStatus;
35
- /**
36
- * Conversation/task id of the A2A negotiation that produced this opportunity.
37
- * Lets callers deep-link to the negotiation trace (e.g. `/chat/:conversationId`).
38
- * Present whenever a negotiation task exists (i.e. context is non-null).
39
- */
40
- conversationId: string;
41
- turnCount: number;
42
- /** Max turns allowed for this negotiation (0 = unlimited). */
43
- turnCap: number;
44
- /** Only present when status is not `negotiating`. */
45
- outcome?: NegotiationOutcome;
46
- /** Only present when status is not `negotiating`. */
47
- turns?: NegotiationTurn[];
48
- }
49
- /**
50
- * Loads the negotiation context for an opportunity.
51
- *
52
- * @param db - Narrow slice of NegotiationGraphDatabase.
53
- * @param opportunityId - Opportunity to load negotiation context for.
54
- * @param opportunityStatus - Current opportunity status. Used to gate loading
55
- * and to decide which fields to populate.
56
- * @returns NegotiationContext, or null when no meaningful negotiation exists
57
- * (draft/latent/expired) or when the task lookup fails.
58
- */
59
- export declare function loadNegotiationContext(db: NegotiationContextDatabase, opportunityId: string, opportunityStatus: OpportunityStatus): Promise<NegotiationContext | null>;