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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -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,90 +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 { protocolLogger } from '../shared/observability/protocol.logger.js';
22
- const logger = protocolLogger('NegotiationContextLoader');
23
- const STATUSES_WITH_NO_NEGOTIATION = ['draft', 'latent', 'expired'];
24
- const NEGOTIATION_OUTCOME_ARTIFACT_NAME = 'negotiation-outcome';
25
- /**
26
- * Loads the negotiation context for an opportunity.
27
- *
28
- * @param db - Narrow slice of NegotiationGraphDatabase.
29
- * @param opportunityId - Opportunity to load negotiation context for.
30
- * @param opportunityStatus - Current opportunity status. Used to gate loading
31
- * and to decide which fields to populate.
32
- * @returns NegotiationContext, or null when no meaningful negotiation exists
33
- * (draft/latent/expired) or when the task lookup fails.
34
- */
35
- export async function loadNegotiationContext(db, opportunityId, opportunityStatus) {
36
- if (STATUSES_WITH_NO_NEGOTIATION.includes(opportunityStatus)) {
37
- return null;
38
- }
39
- const task = await db.getNegotiationTaskForOpportunity(opportunityId);
40
- if (!task) {
41
- logger.verbose('No negotiation task found for opportunity', { opportunityId, opportunityStatus });
42
- return null;
43
- }
44
- const turnCap = readNumber(task.metadata, 'maxTurns') ?? 0;
45
- // Scoped to this opportunity: `turnCount`/`turns` describe THIS negotiation,
46
- // and the pair's shared DM also holds concluded negotiations for other matches.
47
- const messages = await db.getNegotiationMessages(opportunityId);
48
- const turns = extractTurns(messages);
49
- const turnCount = turns.length;
50
- if (opportunityStatus === 'negotiating') {
51
- return { status: opportunityStatus, conversationId: task.conversationId, turnCount, turnCap };
52
- }
53
- const artifacts = await db.getArtifactsForTask(task.id);
54
- const outcome = extractOutcome(artifacts);
55
- // P2.2: screened_out is the client's private gate decision, not a negotiation.
56
- if (outcome?.reason === 'screened_out') {
57
- return null;
58
- }
59
- return {
60
- status: opportunityStatus,
61
- conversationId: task.conversationId,
62
- turnCount,
63
- turnCap,
64
- ...(outcome ? { outcome } : {}),
65
- turns,
66
- };
67
- }
68
- function readNumber(metadata, key) {
69
- if (!metadata)
70
- return undefined;
71
- const value = metadata[key];
72
- return typeof value === 'number' ? value : undefined;
73
- }
74
- function extractTurns(messages) {
75
- const turns = [];
76
- for (const message of messages) {
77
- const dataPart = message.parts.find((p) => p.kind === 'data');
78
- if (dataPart?.data) {
79
- turns.push(dataPart.data);
80
- }
81
- }
82
- return turns;
83
- }
84
- function extractOutcome(artifacts) {
85
- const outcomeArtifact = artifacts.find((a) => a.name === NEGOTIATION_OUTCOME_ARTIFACT_NAME);
86
- if (!outcomeArtifact)
87
- return undefined;
88
- const dataPart = outcomeArtifact.parts.find((p) => p.kind === 'data');
89
- return dataPart?.data;
90
- }
@@ -1,43 +0,0 @@
1
- /**
2
- * Centralized accessor + constants for the Lens C negotiation-evidence
3
- * question producer (IND-433).
4
- *
5
- * NEGOTIATION_EVIDENCE_QUESTIONS_MODE off | shadow | on — default off.
6
- * - off (default): the lens never runs; zero reads, zero telemetry.
7
- * - shadow (this issue): mine + verify neutral hypotheses over allowlisted
8
- * negotiation evidence, emit AGGREGATE telemetry only. Persists no
9
- * questions and changes no ranking, intent, premise, memory, policy,
10
- * newborn-stamping, or push behavior.
11
- * - on (future, IND-437): additionally synthesize/enqueue questions and
12
- * suppress the older IND-296–299 transcript-question producer.
13
- *
14
- * All reads go through this module — do not read the variable via
15
- * `process.env` elsewhere. The value is read on every call (no caching) so
16
- * tests and long-lived processes observe changes.
17
- */
18
- /** Documented modes for the Lens C negotiation-evidence question producer. */
19
- export declare const NEGOTIATION_EVIDENCE_QUESTIONS_MODES: readonly ["off", "shadow", "on"];
20
- /** Mode for the Lens C negotiation-evidence question producer. */
21
- export type NegotiationEvidenceQuestionsMode = (typeof NEGOTIATION_EVIDENCE_QUESTIONS_MODES)[number];
22
- /**
23
- * Current NEGOTIATION_EVIDENCE_QUESTIONS_MODE (default off). Any value other
24
- * than an exact documented mode (after trimming) coerces to off — an
25
- * unrecognized flag must never silently enable the lens.
26
- */
27
- export declare function negotiationEvidenceQuestionsMode(): NegotiationEvidenceQuestionsMode;
28
- /**
29
- * Recurrence floor: a mined hypothesis is only retained when its verified
30
- * support spans at least this many DISTINCT opportunities (IND-433 `k=5`).
31
- * Continuation segments of one opportunity are grouped and count once, so this
32
- * is genuinely a cross-opportunity threshold — same-pair repetition cannot
33
- * inflate it.
34
- */
35
- export declare const NEGOTIATION_EVIDENCE_MIN_DISTINCT_OPPORTUNITIES = 5;
36
- /**
37
- * Max opportunities (already grouped, one per opportunity) whose allowlisted
38
- * evidence is sent to the miner in one pass. Bounds prompt size the same way
39
- * the Lens A miner caps its candidate pool.
40
- */
41
- export declare const NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES = 24;
42
- /** Max chars of allowlisted evidence content retained per evidence unit. */
43
- export declare const NEGOTIATION_EVIDENCE_MAX_CONTENT_CHARS = 400;
@@ -1,44 +0,0 @@
1
- /**
2
- * Centralized accessor + constants for the Lens C negotiation-evidence
3
- * question producer (IND-433).
4
- *
5
- * NEGOTIATION_EVIDENCE_QUESTIONS_MODE off | shadow | on — default off.
6
- * - off (default): the lens never runs; zero reads, zero telemetry.
7
- * - shadow (this issue): mine + verify neutral hypotheses over allowlisted
8
- * negotiation evidence, emit AGGREGATE telemetry only. Persists no
9
- * questions and changes no ranking, intent, premise, memory, policy,
10
- * newborn-stamping, or push behavior.
11
- * - on (future, IND-437): additionally synthesize/enqueue questions and
12
- * suppress the older IND-296–299 transcript-question producer.
13
- *
14
- * All reads go through this module — do not read the variable via
15
- * `process.env` elsewhere. The value is read on every call (no caching) so
16
- * tests and long-lived processes observe changes.
17
- */
18
- /** Documented modes for the Lens C negotiation-evidence question producer. */
19
- export const NEGOTIATION_EVIDENCE_QUESTIONS_MODES = ["off", "shadow", "on"];
20
- /**
21
- * Current NEGOTIATION_EVIDENCE_QUESTIONS_MODE (default off). Any value other
22
- * than an exact documented mode (after trimming) coerces to off — an
23
- * unrecognized flag must never silently enable the lens.
24
- */
25
- export function negotiationEvidenceQuestionsMode() {
26
- const raw = process.env.NEGOTIATION_EVIDENCE_QUESTIONS_MODE?.trim();
27
- return raw === "shadow" || raw === "on" ? raw : "off";
28
- }
29
- /**
30
- * Recurrence floor: a mined hypothesis is only retained when its verified
31
- * support spans at least this many DISTINCT opportunities (IND-433 `k=5`).
32
- * Continuation segments of one opportunity are grouped and count once, so this
33
- * is genuinely a cross-opportunity threshold — same-pair repetition cannot
34
- * inflate it.
35
- */
36
- export const NEGOTIATION_EVIDENCE_MIN_DISTINCT_OPPORTUNITIES = 5;
37
- /**
38
- * Max opportunities (already grouped, one per opportunity) whose allowlisted
39
- * evidence is sent to the miner in one pass. Bounds prompt size the same way
40
- * the Lens A miner caps its candidate pool.
41
- */
42
- export const NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES = 24;
43
- /** Max chars of allowlisted evidence content retained per evidence unit. */
44
- export const NEGOTIATION_EVIDENCE_MAX_CONTENT_CHARS = 400;
@@ -1,24 +0,0 @@
1
- import type { AllowlistedEvidence, EvidenceKind, EvidenceMiningScope, RawEvidenceSegment } from "./negotiation-evidence.types.js";
2
- /** Result of one extraction pass over a recipient+intent's segments. */
3
- export interface ExtractionResult {
4
- /** Allowlisted evidence, grouped/deduped, one logical set per opportunity. */
5
- evidence: AllowlistedEvidence[];
6
- /** Distinct opportunities that produced at least one evidence unit. */
7
- distinctOpportunities: number;
8
- /** Candidate records rejected by allowlist / exclusion / provenance rules. */
9
- excludedRecords: number;
10
- /** Allowlisted evidence unit counts, by kind. */
11
- evidenceCounts: Record<EvidenceKind, number>;
12
- }
13
- /**
14
- * Extract allowlisted evidence for one (recipient, intent) mining scope.
15
- *
16
- * Continuation grouping: segments are grouped by `opportunityId`; a single
17
- * opportunity contributes ONE deduped evidence set regardless of how many
18
- * continuation tasks it spans, so an opportunity counts once toward recurrence.
19
- *
20
- * Contamination guard: a segment whose recipient / intent / fingerprint /
21
- * network do not match the scope, or whose own recipient equals its
22
- * counterparty, is rejected wholesale (all records counted as excluded).
23
- */
24
- export declare function extractAllowlistedEvidence(scope: EvidenceMiningScope, segments: RawEvidenceSegment[]): ExtractionResult;
@@ -1,188 +0,0 @@
1
- /**
2
- * Lens C in-place evidence extraction (IND-433).
3
- *
4
- * Reads raw negotiation segments and projects ONLY the allowlist:
5
- * - authoritative owner answers (answerer === recipient),
6
- * - structured bilateral actions and coarse outcomes,
7
- * - explicitly shared (tagged) message content.
8
- *
9
- * Everything else is dropped by construction. The function is pure and
10
- * deterministic so adversarial fixtures can prove that every excluded source
11
- * and every recipient / intent / opportunity / network / task / speaker
12
- * mismatch is rejected, and that same-pair continuations cannot inflate the
13
- * distinct-opportunity count.
14
- */
15
- import { NEGOTIATION_EVIDENCE_MAX_CONTENT_CHARS, NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES } from "./negotiation-evidence.env.js";
16
- const EMPTY_COUNTS = () => ({
17
- owner_answer: 0,
18
- bilateral_action: 0,
19
- coarse_outcome: 0,
20
- shared_message: 0,
21
- });
22
- /** Collapse whitespace + lowercase for dedup only (not for stored content). */
23
- function dedupKey(kind, speaker, content) {
24
- return `${kind}\u0000${speaker}\u0000${content.toLowerCase().replace(/\s+/g, " ").trim()}`;
25
- }
26
- /** Bound + whitespace-normalize stored content. */
27
- function boundContent(raw) {
28
- return raw.replace(/\s+/g, " ").trim().slice(0, NEGOTIATION_EVIDENCE_MAX_CONTENT_CHARS);
29
- }
30
- /**
31
- * A segment matches the pass scope only when EVERY provenance field is exactly
32
- * equal. A single mismatch rejects the whole segment (cross-recipient,
33
- * cross-intent, cross-fingerprint, or cross-network contamination).
34
- */
35
- function segmentMatchesScope(segment, scope) {
36
- return (segment.recipientUserId === scope.recipientUserId &&
37
- segment.intentId === scope.intentId &&
38
- segment.intentFingerprint === scope.intentFingerprint &&
39
- segment.networkId === scope.networkId);
40
- }
41
- /** Map a turn sender to owner/counterparty, or null when it is neither. */
42
- function mapSpeaker(senderUserId, segment) {
43
- if (senderUserId === segment.recipientUserId)
44
- return "owner";
45
- if (senderUserId === segment.counterpartyUserId)
46
- return "counterparty";
47
- return null;
48
- }
49
- /** Count every raw record a segment carries (for excluded-record accounting). */
50
- function countSegmentRecords(segment) {
51
- let n = segment.turns.length + (segment.ownerAnswers?.length ?? 0);
52
- if (segment.outcome)
53
- n += 1;
54
- return n;
55
- }
56
- /**
57
- * Extract allowlisted evidence for one (recipient, intent) mining scope.
58
- *
59
- * Continuation grouping: segments are grouped by `opportunityId`; a single
60
- * opportunity contributes ONE deduped evidence set regardless of how many
61
- * continuation tasks it spans, so an opportunity counts once toward recurrence.
62
- *
63
- * Contamination guard: a segment whose recipient / intent / fingerprint /
64
- * network do not match the scope, or whose own recipient equals its
65
- * counterparty, is rejected wholesale (all records counted as excluded).
66
- */
67
- export function extractAllowlistedEvidence(scope, segments) {
68
- const evidenceCounts = EMPTY_COUNTS();
69
- let excludedRecords = 0;
70
- // Group in-scope segments by opportunity (continuation grouping).
71
- const byOpportunity = new Map();
72
- for (const segment of segments) {
73
- if (!segmentMatchesScope(segment, scope) || segment.recipientUserId === segment.counterpartyUserId) {
74
- excludedRecords += countSegmentRecords(segment);
75
- continue;
76
- }
77
- const group = byOpportunity.get(segment.opportunityId);
78
- if (group)
79
- group.push(segment);
80
- else
81
- byOpportunity.set(segment.opportunityId, [segment]);
82
- }
83
- const evidence = [];
84
- let distinctOpportunities = 0;
85
- for (const [opportunityId, group] of byOpportunity) {
86
- if (distinctOpportunities >= NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES) {
87
- // Cap opportunities per pass; remaining segments simply are not mined.
88
- excludedRecords += group.reduce((n, s) => n + countSegmentRecords(s), 0);
89
- continue;
90
- }
91
- const seen = new Set();
92
- const opportunityEvidence = [];
93
- const push = (segment, kind, speaker, rawContent) => {
94
- const content = boundContent(rawContent);
95
- if (content.length === 0)
96
- return false;
97
- const key = dedupKey(kind, speaker, content);
98
- if (seen.has(key))
99
- return true; // duplicate continuation content retains its first source
100
- seen.add(key);
101
- opportunityEvidence.push({
102
- kind,
103
- speaker,
104
- content,
105
- taskId: segment.taskId,
106
- conversationId: segment.conversationId,
107
- });
108
- return true;
109
- };
110
- for (const segment of group) {
111
- // Authoritative owner answers — answerer MUST be the recipient.
112
- for (const answer of segment.ownerAnswers ?? []) {
113
- if (answer.answererUserId !== segment.recipientUserId) {
114
- excludedRecords += 1;
115
- continue;
116
- }
117
- const parts = [...answer.selectedOptions, ...(answer.freeText ? [answer.freeText] : [])];
118
- const content = parts.join(" | ");
119
- if (!push(segment, "owner_answer", "owner", content))
120
- excludedRecords += 1;
121
- }
122
- // Turns → structured bilateral action + explicitly shared message.
123
- for (const turn of segment.turns) {
124
- const speaker = mapSpeaker(turn.senderUserId, segment);
125
- if (speaker === null) {
126
- // Speaker mismatch: neither owner nor counterparty. Nothing from
127
- // this turn (action AND message) may be trusted.
128
- excludedRecords += 1;
129
- continue;
130
- }
131
- // Structured bilateral action (label only; reasoning never read).
132
- const action = turn.action?.trim();
133
- if (action)
134
- push(segment, "bilateral_action", "system", action);
135
- // Explicitly shared message content only. Untagged → excluded.
136
- const message = turn.message?.trim();
137
- if (message) {
138
- if (turn.sharedTagged === true)
139
- push(segment, "shared_message", speaker, message);
140
- else
141
- excludedRecords += 1;
142
- }
143
- }
144
- // Coarse outcome. `screened_out` is a private client gate → excluded.
145
- const outcome = segment.outcome;
146
- if (outcome) {
147
- if (outcome.reason === "screened_out") {
148
- excludedRecords += 1;
149
- }
150
- else {
151
- const roles = (outcome.agreedRoles ?? [])
152
- .map((r) => `${r.role}`)
153
- .sort()
154
- .join(",");
155
- const content = [
156
- `hasOpportunity=${outcome.hasOpportunity}`,
157
- outcome.reason ? `reason=${outcome.reason}` : "",
158
- roles ? `roles=${roles}` : "",
159
- ]
160
- .filter(Boolean)
161
- .join(" ");
162
- push(segment, "coarse_outcome", "system", content);
163
- }
164
- }
165
- }
166
- if (opportunityEvidence.length === 0)
167
- continue;
168
- distinctOpportunities += 1;
169
- const first = group[0];
170
- opportunityEvidence.forEach((e, ordinal) => {
171
- evidenceCounts[e.kind] += 1;
172
- evidence.push({
173
- evidenceId: `${e.kind}:${opportunityId}:${ordinal}`,
174
- kind: e.kind,
175
- speaker: e.speaker,
176
- content: e.content,
177
- recipientUserId: first.recipientUserId,
178
- intentId: first.intentId,
179
- intentFingerprint: first.intentFingerprint,
180
- opportunityId,
181
- taskId: e.taskId,
182
- conversationId: e.conversationId,
183
- networkId: first.networkId,
184
- });
185
- });
186
- }
187
- return { evidence, distinctOpportunities, excludedRecords, evidenceCounts };
188
- }
@@ -1,26 +0,0 @@
1
- import { createStructuredModel } from "../../shared/agent/model.config.js";
2
- import type { AllowlistedEvidence, MinedEvidenceHypothesis } from "./negotiation-evidence.types.js";
3
- /** Config for NegotiationEvidenceMiner construction. */
4
- export interface NegotiationEvidenceMinerConfig {
5
- /** Optional model config override (API key / base URL / model). */
6
- modelConfig?: Parameters<typeof createStructuredModel>[3];
7
- }
8
- /**
9
- * Stateless hypothesis-mining agent. One `mine()` call = one structured LLM
10
- * pass. All support verification happens later, in the verifier.
11
- */
12
- export declare class NegotiationEvidenceMiner {
13
- private model;
14
- constructor(config?: NegotiationEvidenceMinerConfig);
15
- /**
16
- * Mine neutral hypotheses for one allowlisted evidence set.
17
- *
18
- * @returns Proposed hypotheses (may be empty). Throws on LLM failure —
19
- * callers run this fire-and-forget and must catch.
20
- */
21
- mine(evidence: AllowlistedEvidence[], options?: {
22
- signal?: AbortSignal;
23
- }): Promise<MinedEvidenceHypothesis[]>;
24
- }
25
- /** Builds the human message: one block per allowlisted evidence unit. */
26
- export declare function buildEvidencePrompt(evidence: AllowlistedEvidence[]): string;
@@ -1,112 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- /**
11
- * NegotiationEvidenceMiner — one structured LLM pass that proposes neutral
12
- * clarification hypotheses over ALLOWLISTED negotiation evidence, with
13
- * code-side support verification delegated to the verifier (IND-433).
14
- *
15
- * The miner only ever sees the allowlisted projection (owner answers, bilateral
16
- * actions, coarse outcomes, explicitly shared messages) — never reasoning,
17
- * memories, disclosure subjects, or provenance. Every proposed hypothesis must
18
- * cite the `evidenceId`s that support it and quote a verbatim span from each;
19
- * unsupported or hallucinated references are discarded in code, not trusted
20
- * from the prompt.
21
- *
22
- * Follows the Lens A `PoolDiscriminatorMiner` pattern: constructor binds the
23
- * structured model once; a single public `mine()` per call.
24
- */
25
- import { HumanMessage, SystemMessage } from "@langchain/core/messages";
26
- import { z } from "zod";
27
- import { createStructuredModel } from "../../shared/agent/model.config.js";
28
- import { invokeWithAbortSignal } from "../../shared/agent/model-signal.js";
29
- import { protocolLogger } from "../../shared/observability/protocol.logger.js";
30
- import { Timed } from "../../shared/observability/performance.js";
31
- const logger = protocolLogger("NegotiationEvidenceMiner");
32
- /** Max hypotheses requested from (and accepted out of) one mining pass. */
33
- const MAX_HYPOTHESES = 8;
34
- const HypothesisMiningResponseSchema = z.object({
35
- hypotheses: z
36
- .array(z.object({
37
- statement: z
38
- .string()
39
- .describe("A neutral, non-identifying clarification hypothesis about the intent owner's preferences or context"),
40
- claimType: z
41
- .enum(["observation", "recipient_fact", "recipient_preference"])
42
- .describe("observation = a neutral pattern; recipient_fact/recipient_preference = a claim ABOUT the intent owner (needs owner-authored or structured support)"),
43
- supportRefs: z
44
- .array(z.object({
45
- evidenceId: z.string().describe("An evidenceId exactly as given in the evidence list"),
46
- span: z
47
- .string()
48
- .max(200)
49
- .describe("VERBATIM span (<=120 chars) copied from that evidence's content"),
50
- }))
51
- .min(1)
52
- .describe("One or more support references; every hypothesis must be grounded"),
53
- }))
54
- .max(MAX_HYPOTHESES),
55
- });
56
- const SYSTEM_PROMPT = `You review ALLOWLISTED evidence gathered from a user's past negotiations and propose neutral clarification hypotheses about that user's (the "intent owner") preferences or context.
57
-
58
- You are given only a safe projection of evidence: the owner's own answers, structured bilateral actions, coarse outcomes, and explicitly shared messages. Each item has an id, a kind, and a speaker (owner | counterparty | system).
59
-
60
- Rules for every hypothesis:
61
- - State it neutrally and at an aggregate level. NEVER name or describe any specific person, and NEVER infer protected attributes (race, ethnicity, religion, gender, age, nationality, disability, politics, sexual orientation).
62
- - Ground it: cite the evidenceId(s) that support it and copy a short (<=120 chars) VERBATIM substring of that evidence's content as the span. Copy it exactly — spans are checked mechanically and paraphrased spans are discarded.
63
- - claimType:
64
- - Use "recipient_fact" or "recipient_preference" only for a claim ABOUT the intent owner. Such claims may ONLY be supported by owner or system evidence — a counterparty statement can never establish a fact or preference about the owner.
65
- - Use "observation" for a neutral pattern that a counterparty statement may also support.
66
- - Do not speculate beyond the evidence. If an item does not support a distinct hypothesis, ignore it.
67
-
68
- Prefer a few well-supported hypotheses over many weak ones. Propose at most ${MAX_HYPOTHESES}.`;
69
- /**
70
- * Stateless hypothesis-mining agent. One `mine()` call = one structured LLM
71
- * pass. All support verification happens later, in the verifier.
72
- */
73
- export class NegotiationEvidenceMiner {
74
- constructor(config) {
75
- this.model = createStructuredModel("negotiationEvidenceMiner", HypothesisMiningResponseSchema, { name: "negotiation_evidence_hypotheses" }, config?.modelConfig);
76
- }
77
- /**
78
- * Mine neutral hypotheses for one allowlisted evidence set.
79
- *
80
- * @returns Proposed hypotheses (may be empty). Throws on LLM failure —
81
- * callers run this fire-and-forget and must catch.
82
- */
83
- async mine(evidence, options) {
84
- if (evidence.length === 0)
85
- return [];
86
- const prompt = buildEvidencePrompt(evidence);
87
- const raw = await invokeWithAbortSignal(this.model, [new SystemMessage(SYSTEM_PROMPT), new HumanMessage(prompt)], options?.signal);
88
- const parsed = HypothesisMiningResponseSchema.safeParse(raw);
89
- if (!parsed.success) {
90
- logger.warn("Mining response failed schema validation", { issues: parsed.error.issues.length });
91
- return [];
92
- }
93
- return parsed.data.hypotheses.slice(0, MAX_HYPOTHESES).map((h) => ({
94
- statement: h.statement,
95
- claimType: h.claimType,
96
- supportRefs: h.supportRefs.map((r) => ({ evidenceId: r.evidenceId, span: r.span })),
97
- }));
98
- }
99
- }
100
- __decorate([
101
- Timed(),
102
- __metadata("design:type", Function),
103
- __metadata("design:paramtypes", [Array, Object]),
104
- __metadata("design:returntype", Promise)
105
- ], NegotiationEvidenceMiner.prototype, "mine", null);
106
- /** Builds the human message: one block per allowlisted evidence unit. */
107
- export function buildEvidencePrompt(evidence) {
108
- const blocks = evidence
109
- .map((e) => `[${e.evidenceId}] (${e.kind}, ${e.speaker})\n${e.content}`)
110
- .join("\n\n");
111
- return `Allowlisted evidence (${evidence.length} items, id in brackets):\n\n${blocks}`;
112
- }
@@ -1,19 +0,0 @@
1
- import type { NegotiationEvidenceMiner } from "./negotiation-evidence.miner.js";
2
- import type { EvidenceMiningScope, NegotiationEvidenceShadowResult, RawEvidenceSegment } from "./negotiation-evidence.types.js";
3
- /** Input for one shadow mining pass. */
4
- export interface NegotiationEvidenceShadowInput {
5
- /** The exact recipient + intent/fingerprint + network this pass is bound to. */
6
- scope: EvidenceMiningScope;
7
- /** Raw negotiation segments read in place (one or more per opportunity). */
8
- segments: RawEvidenceSegment[];
9
- /** Structured hypothesis miner (injectable seam). */
10
- miner: Pick<NegotiationEvidenceMiner, "mine">;
11
- /** Override the recurrence floor (defaults to the IND-433 `k=5`). */
12
- minDistinctOpportunities?: number;
13
- signal?: AbortSignal;
14
- }
15
- /**
16
- * Run one Lens C shadow pass. Throws only when *mining* fails (callers run
17
- * fire-and-forget and must catch); extraction and verification are pure.
18
- */
19
- export declare function runNegotiationEvidenceShadow(input: NegotiationEvidenceShadowInput): Promise<NegotiationEvidenceShadowResult>;
@@ -1,61 +0,0 @@
1
- /**
2
- * Lens C shadow orchestrator (IND-433).
3
- *
4
- * extract (allowlist, in place) → mine (neutral hypotheses) → verify (support
5
- * resolves to allowlisted evidence + speaker constraint) → recurrence gate
6
- * (>= k distinct opportunities). Returns aggregate telemetry plus the retained
7
- * hypotheses for OFFLINE review.
8
- *
9
- * This function performs NO persistence and NO user-visible action. It does
10
- * not create questions and changes no ranking, intent, premise, memory,
11
- * policy, newborn-stamping, or push behavior — those belong to the future
12
- * `on` mode (IND-437). Callers in shadow mode must log only
13
- * {@link NegotiationEvidenceShadowResult.telemetry} (aggregate-only) and must
14
- * not persist or route the retained hypotheses.
15
- */
16
- import { NEGOTIATION_EVIDENCE_MIN_DISTINCT_OPPORTUNITIES } from "./negotiation-evidence.env.js";
17
- import { extractAllowlistedEvidence } from "./negotiation-evidence.extractor.js";
18
- import { verifyHypotheses } from "./negotiation-evidence.verifier.js";
19
- /**
20
- * Run one Lens C shadow pass. Throws only when *mining* fails (callers run
21
- * fire-and-forget and must catch); extraction and verification are pure.
22
- */
23
- export async function runNegotiationEvidenceShadow(input) {
24
- const { scope, segments } = input;
25
- const minDistinct = input.minDistinctOpportunities ?? NEGOTIATION_EVIDENCE_MIN_DISTINCT_OPPORTUNITIES;
26
- const extraction = extractAllowlistedEvidence(scope, segments);
27
- const baseTelemetry = {
28
- recipientUserId: scope.recipientUserId,
29
- intentId: scope.intentId,
30
- segments: segments.length,
31
- distinctOpportunities: extraction.distinctOpportunities,
32
- evidenceCounts: extraction.evidenceCounts,
33
- excludedRecords: extraction.excludedRecords,
34
- };
35
- // Cheap exit: recurrence is impossible below the distinct-opportunity floor,
36
- // so never spend an LLM call that could only be discarded.
37
- if (extraction.distinctOpportunities < minDistinct) {
38
- return {
39
- telemetry: {
40
- ...baseTelemetry,
41
- hypothesesMined: 0,
42
- hypothesesSupported: 0,
43
- hypothesesRecurrent: 0,
44
- hypothesesDiscarded: 0,
45
- },
46
- hypotheses: [],
47
- };
48
- }
49
- const mined = await input.miner.mine(extraction.evidence, input.signal ? { signal: input.signal } : undefined);
50
- const verification = verifyHypotheses(mined, extraction.evidence, minDistinct);
51
- return {
52
- telemetry: {
53
- ...baseTelemetry,
54
- hypothesesMined: mined.length,
55
- hypothesesSupported: verification.supported,
56
- hypothesesRecurrent: verification.recurrent,
57
- hypothesesDiscarded: verification.discarded,
58
- },
59
- hypotheses: verification.retained,
60
- };
61
- }