@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,103 +0,0 @@
1
- /**
2
- * Centralized accessors for pool-question environment variables (IND-416).
3
- *
4
- * POOL_QUESTIONS_MINING off | shadow — P1 shadow axis mining on
5
- * discovery-run completion. `shadow` mines and
6
- * scores axes and logs them; no questions are
7
- * generated and no user-facing behavior changes.
8
- * Any value other than "shadow" (including unset)
9
- * means off.
10
- *
11
- * All reads go through this module — do not read these variables via
12
- * `process.env` elsewhere. Values are read on every call (no caching) so
13
- * tests and long-lived processes observe changes.
14
- */
15
- /** Mining mode for pool discriminator axes. */
16
- export type PoolQuestionsMiningMode = "off" | "shadow";
17
- /** Current POOL_QUESTIONS_MINING mode (default off). */
18
- export declare function poolQuestionsMiningMode(): PoolQuestionsMiningMode;
19
- /** Question mode for pool discriminators (IND-418). */
20
- export type PoolQuestionsMode = "off" | "on";
21
- /**
22
- * Current POOL_QUESTIONS_MODE (default off). When "on", the mining hook also
23
- * enqueues a pool_discovery question for the top eligible discriminator
24
- * (still subject to the QUESTIONER_ENABLED master gate and per-intent budget).
25
- * "on" implies mining runs even when POOL_QUESTIONS_MINING is off.
26
- */
27
- export declare function poolQuestionsMode(): PoolQuestionsMode;
28
- /** Push delivery mode for high-VoI pool questions (IND-421). */
29
- export type PoolQuestionsPushMode = "off" | "on";
30
- /**
31
- * Current POOL_QUESTIONS_PUSH mode (default off). Callers must additionally
32
- * require pool-question mode and negotiator availability before delivery.
33
- */
34
- export declare function poolQuestionsPushMode(): PoolQuestionsPushMode;
35
- /** Visit-triggered pool-mining mode (IND-439 visibility-audit slice). */
36
- export type PoolQuestionsVisitTriggerMode = "off" | "on";
37
- /**
38
- * Current POOL_QUESTIONS_VISIT_TRIGGER mode (default off). When "on", an
39
- * intent owner's intent-page pending-questions fetch may enqueue a debounced
40
- * pool-mining pass for that intent when no live pending pool_discovery
41
- * question exists. The trigger only adds a *when* — every existing mining
42
- * gate (POOL_QUESTIONS_MODE, k-anonymity floor, VoI threshold, per-intent
43
- * budgets, fingerprint freshness, push budgets) applies unchanged, so this
44
- * is a no-op unless {@link poolQuestionsMode} is also "on".
45
- */
46
- export declare function poolQuestionsVisitTrigger(): PoolQuestionsVisitTriggerMode;
47
- /**
48
- * Debounce window for visit-triggered pool mining, per intent (IND-439).
49
- * At most one visit-triggered mining run per intent per window, enforced via
50
- * BullMQ deduplication — no new tables.
51
- */
52
- export declare const POOL_VISIT_MINING_DEBOUNCE_MS: number;
53
- /** Newborn-opportunity stamping mode (IND-420 P4b). */
54
- export type PoolQuestionsStampNewbornMode = "off" | "on";
55
- /**
56
- * Current POOL_QUESTIONS_STAMP_NEWBORN mode (default off). Effective callers
57
- * additionally require {@link poolQuestionsMode} to be on.
58
- */
59
- export declare function poolQuestionsStampNewborn(): PoolQuestionsStampNewbornMode;
60
- /** Minimum VoI for a discriminator to become (or chain) a question. */
61
- export declare const POOL_QUESTION_MIN_VOI = 0.2;
62
- /** Minimum evidence-verification rate for a discriminator to become a question. */
63
- export declare const POOL_QUESTION_MIN_EVIDENCE_RATE = 0.6;
64
- /** Max eligible discriminators carried per mining pass (asked + alternates). */
65
- export declare const POOL_QUESTION_MAX_DISCRIMINATORS = 3;
66
- /** Unattended budget: max pending questions of ANY mode per intent. */
67
- export declare const POOL_QUESTION_MAX_PENDING_PER_INTENT = 3;
68
- /** Initial internal VoI threshold for proactive push delivery. */
69
- export declare const POOL_QUESTION_PUSH_BASE_VOI = 0.6;
70
- /** Multiplicative VoI threshold increase per consecutive dismissal. */
71
- export declare const POOL_QUESTION_PUSH_DISMISSAL_DECAY = 1.15;
72
- /** Minimum pool size for proactive delivery (stricter than mining). */
73
- export declare const POOL_QUESTION_PUSH_MIN_POOL_SIZE = 8;
74
- /** Maximum claimed proactive pool pushes per recipient per UTC day. */
75
- export declare const POOL_QUESTION_PUSH_DAILY_CAP = 2;
76
- /** Ranking mode for pool adjustments (IND-419). */
77
- export type PoolQuestionsRankingMode = "off" | "on";
78
- /**
79
- * Current POOL_QUESTIONS_RANKING (default off). When "on", the radar view
80
- * orders by adjusted confidence (confidence × Π poolAdjustments.factor,
81
- * floor {@link POOL_ADJUSTMENT_FLOOR}). Adjustments are WRITTEN regardless of
82
- * this flag — it only gates whether ordering reads them, so the apply path
83
- * can ship first.
84
- */
85
- export declare function poolQuestionsRanking(): PoolQuestionsRankingMode;
86
- /** Adjustment factor for candidates on the side the user did NOT choose. */
87
- export declare const POOL_ADJUSTMENT_FACTOR_OTHER = 0.6;
88
- /** Adjustment factor for candidates the miner could not assign (unknown). */
89
- export declare const POOL_ADJUSTMENT_FACTOR_UNKNOWN = 0.9;
90
- /** Floor for the cumulative adjustment multiplier — demoted, never hidden. */
91
- export declare const POOL_ADJUSTMENT_FLOOR = 0.3;
92
- /** Debounce window for answer-triggered re-discovery (Tier 1), per intent. */
93
- export declare const POOL_RERUN_DEBOUNCE_MS = 60000;
94
- /**
95
- * k-anonymity floor: axes are only mined when the pool has at least this many
96
- * candidates, so no axis (or later, question option) can be traced back to a
97
- * specific individual.
98
- */
99
- export declare const POOL_DISCRIMINATOR_MIN_POOL_SIZE = 5;
100
- /** Max candidates sent to the miner LLM (top-N by score). */
101
- export declare const POOL_DISCRIMINATOR_MAX_CANDIDATES = 24;
102
- /** Max chars of public context per candidate in the miner prompt. */
103
- export declare const POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS = 400;
@@ -1,103 +0,0 @@
1
- /**
2
- * Centralized accessors for pool-question environment variables (IND-416).
3
- *
4
- * POOL_QUESTIONS_MINING off | shadow — P1 shadow axis mining on
5
- * discovery-run completion. `shadow` mines and
6
- * scores axes and logs them; no questions are
7
- * generated and no user-facing behavior changes.
8
- * Any value other than "shadow" (including unset)
9
- * means off.
10
- *
11
- * All reads go through this module — do not read these variables via
12
- * `process.env` elsewhere. Values are read on every call (no caching) so
13
- * tests and long-lived processes observe changes.
14
- */
15
- /** Current POOL_QUESTIONS_MINING mode (default off). */
16
- export function poolQuestionsMiningMode() {
17
- return process.env.POOL_QUESTIONS_MINING?.trim() === "shadow" ? "shadow" : "off";
18
- }
19
- /**
20
- * Current POOL_QUESTIONS_MODE (default off). When "on", the mining hook also
21
- * enqueues a pool_discovery question for the top eligible discriminator
22
- * (still subject to the QUESTIONER_ENABLED master gate and per-intent budget).
23
- * "on" implies mining runs even when POOL_QUESTIONS_MINING is off.
24
- */
25
- export function poolQuestionsMode() {
26
- return process.env.POOL_QUESTIONS_MODE?.trim() === "on" ? "on" : "off";
27
- }
28
- /**
29
- * Current POOL_QUESTIONS_PUSH mode (default off). Callers must additionally
30
- * require pool-question mode and negotiator availability before delivery.
31
- */
32
- export function poolQuestionsPushMode() {
33
- return process.env.POOL_QUESTIONS_PUSH?.trim() === "on" ? "on" : "off";
34
- }
35
- /**
36
- * Current POOL_QUESTIONS_VISIT_TRIGGER mode (default off). When "on", an
37
- * intent owner's intent-page pending-questions fetch may enqueue a debounced
38
- * pool-mining pass for that intent when no live pending pool_discovery
39
- * question exists. The trigger only adds a *when* — every existing mining
40
- * gate (POOL_QUESTIONS_MODE, k-anonymity floor, VoI threshold, per-intent
41
- * budgets, fingerprint freshness, push budgets) applies unchanged, so this
42
- * is a no-op unless {@link poolQuestionsMode} is also "on".
43
- */
44
- export function poolQuestionsVisitTrigger() {
45
- return process.env.POOL_QUESTIONS_VISIT_TRIGGER?.trim() === "on" ? "on" : "off";
46
- }
47
- /**
48
- * Debounce window for visit-triggered pool mining, per intent (IND-439).
49
- * At most one visit-triggered mining run per intent per window, enforced via
50
- * BullMQ deduplication — no new tables.
51
- */
52
- export const POOL_VISIT_MINING_DEBOUNCE_MS = 6 * 60 * 60 * 1000;
53
- /**
54
- * Current POOL_QUESTIONS_STAMP_NEWBORN mode (default off). Effective callers
55
- * additionally require {@link poolQuestionsMode} to be on.
56
- */
57
- export function poolQuestionsStampNewborn() {
58
- return process.env.POOL_QUESTIONS_STAMP_NEWBORN?.trim() === "on" ? "on" : "off";
59
- }
60
- /** Minimum VoI for a discriminator to become (or chain) a question. */
61
- export const POOL_QUESTION_MIN_VOI = 0.2;
62
- /** Minimum evidence-verification rate for a discriminator to become a question. */
63
- export const POOL_QUESTION_MIN_EVIDENCE_RATE = 0.6;
64
- /** Max eligible discriminators carried per mining pass (asked + alternates). */
65
- export const POOL_QUESTION_MAX_DISCRIMINATORS = 3;
66
- /** Unattended budget: max pending questions of ANY mode per intent. */
67
- export const POOL_QUESTION_MAX_PENDING_PER_INTENT = 3;
68
- /** Initial internal VoI threshold for proactive push delivery. */
69
- export const POOL_QUESTION_PUSH_BASE_VOI = 0.6;
70
- /** Multiplicative VoI threshold increase per consecutive dismissal. */
71
- export const POOL_QUESTION_PUSH_DISMISSAL_DECAY = 1.15;
72
- /** Minimum pool size for proactive delivery (stricter than mining). */
73
- export const POOL_QUESTION_PUSH_MIN_POOL_SIZE = 8;
74
- /** Maximum claimed proactive pool pushes per recipient per UTC day. */
75
- export const POOL_QUESTION_PUSH_DAILY_CAP = 2;
76
- /**
77
- * Current POOL_QUESTIONS_RANKING (default off). When "on", the radar view
78
- * orders by adjusted confidence (confidence × Π poolAdjustments.factor,
79
- * floor {@link POOL_ADJUSTMENT_FLOOR}). Adjustments are WRITTEN regardless of
80
- * this flag — it only gates whether ordering reads them, so the apply path
81
- * can ship first.
82
- */
83
- export function poolQuestionsRanking() {
84
- return process.env.POOL_QUESTIONS_RANKING?.trim() === "on" ? "on" : "off";
85
- }
86
- /** Adjustment factor for candidates on the side the user did NOT choose. */
87
- export const POOL_ADJUSTMENT_FACTOR_OTHER = 0.6;
88
- /** Adjustment factor for candidates the miner could not assign (unknown). */
89
- export const POOL_ADJUSTMENT_FACTOR_UNKNOWN = 0.9;
90
- /** Floor for the cumulative adjustment multiplier — demoted, never hidden. */
91
- export const POOL_ADJUSTMENT_FLOOR = 0.3;
92
- /** Debounce window for answer-triggered re-discovery (Tier 1), per intent. */
93
- export const POOL_RERUN_DEBOUNCE_MS = 60000;
94
- /**
95
- * k-anonymity floor: axes are only mined when the pool has at least this many
96
- * candidates, so no axis (or later, question option) can be traced back to a
97
- * specific individual.
98
- */
99
- export const POOL_DISCRIMINATOR_MIN_POOL_SIZE = 5;
100
- /** Max candidates sent to the miner LLM (top-N by score). */
101
- export const POOL_DISCRIMINATOR_MAX_CANDIDATES = 24;
102
- /** Max chars of public context per candidate in the miner prompt. */
103
- export const POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS = 400;
@@ -1,114 +0,0 @@
1
- import { z } from "zod";
2
- import { createStructuredModel } from "../../shared/agent/model.config.js";
3
- import type { MinedDiscriminator, DiscriminatorMiningInput } from "./discriminator.types.js";
4
- declare const AxisMiningResponseSchema: z.ZodObject<{
5
- axes: z.ZodArray<z.ZodObject<{
6
- axis: z.ZodString;
7
- questionSeed: z.ZodString;
8
- sides: z.ZodArray<z.ZodString, "many">;
9
- assignments: z.ZodArray<z.ZodObject<{
10
- id: z.ZodString;
11
- side: z.ZodNullable<z.ZodString>;
12
- evidence: z.ZodNullable<z.ZodString>;
13
- }, "strip", z.ZodTypeAny, {
14
- id: string;
15
- evidence: string | null;
16
- side: string | null;
17
- }, {
18
- id: string;
19
- evidence: string | null;
20
- side: string | null;
21
- }>, "many">;
22
- }, "strip", z.ZodTypeAny, {
23
- questionSeed: string;
24
- sides: string[];
25
- assignments: {
26
- id: string;
27
- evidence: string | null;
28
- side: string | null;
29
- }[];
30
- axis: string;
31
- }, {
32
- questionSeed: string;
33
- sides: string[];
34
- assignments: {
35
- id: string;
36
- evidence: string | null;
37
- side: string | null;
38
- }[];
39
- axis: string;
40
- }>, "many">;
41
- }, "strip", z.ZodTypeAny, {
42
- axes: {
43
- questionSeed: string;
44
- sides: string[];
45
- assignments: {
46
- id: string;
47
- evidence: string | null;
48
- side: string | null;
49
- }[];
50
- axis: string;
51
- }[];
52
- }, {
53
- axes: {
54
- questionSeed: string;
55
- sides: string[];
56
- assignments: {
57
- id: string;
58
- evidence: string | null;
59
- side: string | null;
60
- }[];
61
- axis: string;
62
- }[];
63
- }>;
64
- type AxisMiningResponse = z.infer<typeof AxisMiningResponseSchema>;
65
- /** Config for PoolDiscriminatorMiner construction. */
66
- export interface PoolDiscriminatorMinerConfig {
67
- /** Optional model config override (API key / base URL / model). */
68
- modelConfig?: Parameters<typeof createStructuredModel>[3];
69
- }
70
- /**
71
- * Collapse whitespace, lowercase, and fold typographic punctuation to ASCII
72
- * (curly quotes/apostrophes, en/em dashes, ellipsis), so evidence matching
73
- * tolerates formatting drift without weakening the verbatim requirement.
74
- */
75
- export declare function normalizePoolEvidenceForMatch(s: string): string;
76
- /**
77
- * Strips wrapping quotes and edge punctuation from an evidence span before
78
- * matching. LLMs habitually sentence-ize copied spans (append a trailing
79
- * period, wrap in quotes); the meaningful content must still match verbatim.
80
- */
81
- export declare function stripPoolEvidenceEdgePunctuation(s: string): string;
82
- /** Evidence verifier shared by mining and newborn assignment. */
83
- export declare function poolEvidenceMatches(publicContext: string, evidence: string | null): boolean;
84
- /**
85
- * Stateless axis-mining agent. One `mine()` call = one structured LLM pass +
86
- * deterministic evidence verification.
87
- */
88
- export declare class PoolDiscriminatorMiner {
89
- private model;
90
- constructor(config?: PoolDiscriminatorMinerConfig);
91
- /**
92
- * Mine discriminating axes for one pool.
93
- *
94
- * @returns Verified axes (may be empty). Throws on LLM failure — callers
95
- * run this fire-and-forget and must catch.
96
- */
97
- mine(input: DiscriminatorMiningInput, options?: {
98
- signal?: AbortSignal;
99
- }): Promise<MinedDiscriminator[]>;
100
- }
101
- /** Builds the human message: intent text + one numbered block per candidate. */
102
- export declare function buildMiningPrompt(input: DiscriminatorMiningInput): string;
103
- /**
104
- * Deterministic post-pass over one LLM axis:
105
- * - drops assignments for ids not in the pool,
106
- * - demotes to unknown: sides not in the axis's side list, missing evidence,
107
- * and evidence that does not substring-match the candidate's publicContext,
108
- * - collapses duplicate proposals to the same trim-normalized side,
109
- * - demotes a candidate proposed for different sides to unknown (zero support),
110
- * - guarantees exactly one assignment per pool candidate (missing → unknown),
111
- * - computes evidenceRate = verified / distinct candidate-side proposals.
112
- */
113
- export declare function verifyAxis(axis: AxisMiningResponse["axes"][number], candidates: DiscriminatorMiningInput["candidates"]): MinedDiscriminator;
114
- export {};
@@ -1,228 +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
- * PoolDiscriminatorMiner — one structured LLM pass that proposes discriminating axes
12
- * over a discovery-run candidate pool, with code-side evidence verification
13
- * (IND-417).
14
- *
15
- * Anti-hallucination contract: every side assignment must quote a short
16
- * evidence span from that candidate's supplied publicContext. Verification is
17
- * done in code (substring match, case/whitespace-insensitive), NOT trusted
18
- * from the prompt. Failed verifications are demoted to `unknown`, which
19
- * lowers coverage → lowers VoI → buries the axis. The failure mode
20
- * self-punishes.
21
- *
22
- * Follows the QuestionerAgent pattern: constructor binds the structured
23
- * model once; 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("PoolDiscriminatorMiner");
32
- /** Max axes requested from (and accepted out of) one mining pass. */
33
- const MAX_AXES = 6;
34
- const AxisMiningResponseSchema = z.object({
35
- axes: z
36
- .array(z.object({
37
- axis: z
38
- .string()
39
- .describe("Short discriminating-axis label, e.g. 'Hands-on builders vs strategic advisors'"),
40
- questionSeed: z
41
- .string()
42
- .describe("A direct question the intent owner could answer to resolve this axis"),
43
- sides: z
44
- .array(z.string())
45
- .min(2)
46
- .max(3)
47
- .describe("2-3 mutually exclusive side labels (2-5 words each)"),
48
- assignments: z
49
- .array(z.object({
50
- id: z.string().describe("Candidate id exactly as given"),
51
- side: z
52
- .string()
53
- .nullable()
54
- .describe("One of this axis's side labels, or null when the context is insufficient"),
55
- evidence: z
56
- .string()
57
- .max(200)
58
- .nullable()
59
- .describe("VERBATIM span (≤80 chars) copied from this candidate's context that justifies the side. null when side is null"),
60
- }))
61
- .describe("One entry per candidate"),
62
- }))
63
- .max(MAX_AXES),
64
- });
65
- const SYSTEM_PROMPT = `You analyze a pool of candidate matches for one user intent and propose the preference axes that best SPLIT the pool into meaningfully different groups.
66
-
67
- Rules for every axis:
68
- - Sides must be mutually exclusive readings of one dimension (a candidate belongs to at most one side).
69
- - The axis must NOT already be determined by the intent text itself — only propose axes the intent leaves genuinely open.
70
- - The axis must be phrased as a preference the intent OWNER could hold and answer (the questionSeed asks them directly).
71
- - Side labels are terse (2-5 words), concrete, and derived from patterns across MULTIPLE candidates — never from a single person and never naming anyone.
72
- - BANNED axis families: protected attributes (race, ethnicity, religion, gender, age, nationality, disability, politics, sexual orientation), and vanity/noise splits (profile completeness, bio length, has photo, name alphabet).
73
-
74
- Rules for assignments:
75
- - Assign EVERY candidate: pick a side only when the candidate's context contains clear support; otherwise use side null.
76
- - When you pick a side you MUST quote a short (≤80 chars) VERBATIM substring of that candidate's context as evidence. Copy it exactly — it is checked mechanically, and paraphrased evidence is discarded. Do NOT add punctuation that is not in the source (no trailing period); cutting off mid-sentence is fine.
77
- - Never invent context. If unsure, use side null with evidence null.
78
-
79
- Prefer axes that split the pool close to evenly and that cover many candidates with verifiable evidence. Propose at most ${MAX_AXES} axes; fewer strong axes beat many weak ones.`;
80
- /**
81
- * Collapse whitespace, lowercase, and fold typographic punctuation to ASCII
82
- * (curly quotes/apostrophes, en/em dashes, ellipsis), so evidence matching
83
- * tolerates formatting drift without weakening the verbatim requirement.
84
- */
85
- export function normalizePoolEvidenceForMatch(s) {
86
- return s
87
- .toLowerCase()
88
- .replace(/[\u2018\u2019\u02bc]/g, "'")
89
- .replace(/[\u201c\u201d]/g, '"')
90
- .replace(/[\u2013\u2014]/g, "-")
91
- .replace(/\u2026/g, "...")
92
- .replace(/\s+/g, " ")
93
- .trim();
94
- }
95
- /**
96
- * Strips wrapping quotes and edge punctuation from an evidence span before
97
- * matching. LLMs habitually sentence-ize copied spans (append a trailing
98
- * period, wrap in quotes); the meaningful content must still match verbatim.
99
- */
100
- export function stripPoolEvidenceEdgePunctuation(s) {
101
- return s.replace(/^[\s"'.,;:!?()\u2018\u2019\u201c\u201d]+/, "").replace(/[\s"'.,;:!?()\u2018\u2019\u201c\u201d]+$/, "");
102
- }
103
- /** Minimum normalized span that counts as meaningful verbatim evidence. */
104
- const MIN_POOL_EVIDENCE_CHARS = 8;
105
- /** Evidence verifier shared by mining and newborn assignment. */
106
- export function poolEvidenceMatches(publicContext, evidence) {
107
- if (evidence === null)
108
- return false;
109
- const context = normalizePoolEvidenceForMatch(publicContext);
110
- const evidenceCore = normalizePoolEvidenceForMatch(stripPoolEvidenceEdgePunctuation(evidence));
111
- return evidenceCore.length >= MIN_POOL_EVIDENCE_CHARS && context.includes(evidenceCore);
112
- }
113
- /**
114
- * Stateless axis-mining agent. One `mine()` call = one structured LLM pass +
115
- * deterministic evidence verification.
116
- */
117
- export class PoolDiscriminatorMiner {
118
- constructor(config) {
119
- this.model = createStructuredModel("poolDiscriminatorMiner", AxisMiningResponseSchema, { name: "pool_axes" }, config?.modelConfig);
120
- }
121
- /**
122
- * Mine discriminating axes for one pool.
123
- *
124
- * @returns Verified axes (may be empty). Throws on LLM failure — callers
125
- * run this fire-and-forget and must catch.
126
- */
127
- async mine(input, options) {
128
- const prompt = buildMiningPrompt(input);
129
- const raw = await invokeWithAbortSignal(this.model, [new SystemMessage(SYSTEM_PROMPT), new HumanMessage(prompt)], options?.signal);
130
- const parsed = AxisMiningResponseSchema.safeParse(raw);
131
- if (!parsed.success) {
132
- logger.warn("Mining response failed schema validation", { issues: parsed.error.issues.length });
133
- return [];
134
- }
135
- return parsed.data.axes.slice(0, MAX_AXES).map((axis) => verifyAxis(axis, input.candidates));
136
- }
137
- }
138
- __decorate([
139
- Timed(),
140
- __metadata("design:type", Function),
141
- __metadata("design:paramtypes", [Object, Object]),
142
- __metadata("design:returntype", Promise)
143
- ], PoolDiscriminatorMiner.prototype, "mine", null);
144
- /** Builds the human message: intent text + one numbered block per candidate. */
145
- export function buildMiningPrompt(input) {
146
- const candidateBlocks = input.candidates
147
- .map((c) => `[${c.id}]\n${c.publicContext}`)
148
- .join("\n\n");
149
- return [
150
- `Intent:\n${input.intentText}`,
151
- `Candidate pool (${input.candidates.length} candidates, id in brackets):\n\n${candidateBlocks}`,
152
- ].join("\n\n");
153
- }
154
- /**
155
- * Deterministic post-pass over one LLM axis:
156
- * - drops assignments for ids not in the pool,
157
- * - demotes to unknown: sides not in the axis's side list, missing evidence,
158
- * and evidence that does not substring-match the candidate's publicContext,
159
- * - collapses duplicate proposals to the same trim-normalized side,
160
- * - demotes a candidate proposed for different sides to unknown (zero support),
161
- * - guarantees exactly one assignment per pool candidate (missing → unknown),
162
- * - computes evidenceRate = verified / distinct candidate-side proposals.
163
- */
164
- export function verifyAxis(axis, candidates) {
165
- const contextById = new Map(candidates.map((c) => [c.id, c.publicContext]));
166
- const normalizedAxisSides = axis.sides.map((side) => side.trim());
167
- const axisSidesAreValid = normalizedAxisSides.every(Boolean)
168
- && new Set(normalizedAxisSides).size === normalizedAxisSides.length;
169
- const canonicalSideByNormalized = new Map(axis.sides.map((side) => [side.trim(), side]));
170
- const proposalsById = new Map();
171
- for (const assignment of axis.assignments) {
172
- if (!contextById.has(assignment.id) || assignment.side === null)
173
- continue;
174
- const normalizedSide = assignment.side.trim();
175
- let sides = proposalsById.get(assignment.id);
176
- if (!sides) {
177
- sides = new Map();
178
- proposalsById.set(assignment.id, sides);
179
- }
180
- const sameSide = sides.get(normalizedSide) ?? [];
181
- sameSide.push(assignment);
182
- sides.set(normalizedSide, sameSide);
183
- }
184
- const byId = new Map();
185
- let proposed = 0;
186
- let verified = 0;
187
- for (const [id, sides] of proposalsById) {
188
- proposed += sides.size;
189
- // Conflicting classifier output is permanently ambiguous regardless of
190
- // proposal order or evidence quality. It must contribute zero support.
191
- if (sides.size !== 1 || !axisSidesAreValid) {
192
- byId.set(id, { id, side: null, evidence: null, verified: false });
193
- continue;
194
- }
195
- const [[normalizedSide, sameSideProposals]] = [...sides];
196
- const canonicalSide = canonicalSideByNormalized.get(normalizedSide);
197
- const context = contextById.get(id);
198
- const evidenceValid = canonicalSide
199
- ? sameSideProposals.find((proposal) => poolEvidenceMatches(context, proposal.evidence))
200
- : undefined;
201
- if (canonicalSide && evidenceValid) {
202
- verified++;
203
- byId.set(id, {
204
- id,
205
- side: canonicalSide,
206
- evidence: evidenceValid.evidence,
207
- verified: true,
208
- });
209
- }
210
- else {
211
- byId.set(id, {
212
- id,
213
- side: null,
214
- evidence: sameSideProposals[0]?.evidence ?? null,
215
- verified: false,
216
- });
217
- }
218
- }
219
- const assignments = candidates.map((candidate) => byId.get(candidate.id)
220
- ?? { id: candidate.id, side: null, evidence: null, verified: false });
221
- return {
222
- label: axis.axis,
223
- questionSeed: axis.questionSeed,
224
- sides: axis.sides,
225
- assignments,
226
- evidenceRate: proposed > 0 ? verified / proposed : 0,
227
- };
228
- }
@@ -1,13 +0,0 @@
1
- import type { QuestionPoolSnapshot } from "../../questions/question.module.js";
2
- /** Maximum raw intent-title characters included in a proactive DM line. */
3
- export declare const POOL_QUESTION_PUSH_TITLE_MAX_CHARS = 80;
4
- /** Stable identity for one pool refresh cycle. Chained alternates retain it. */
5
- export declare function poolQuestionCycleKey(pool: Pick<QuestionPoolSnapshot, "runId" | "minedAt">): string;
6
- /** Escape plain text so it cannot alter the deterministic Markdown template. */
7
- export declare function escapePoolPushMarkdown(text: string): string;
8
- /** Build the sole proactive user-facing DM line for a pushed pool question. */
9
- export declare function buildPoolQuestionPushMessage(input: {
10
- intentId: string;
11
- intentTitle: string;
12
- questionPrompt: string;
13
- }): string;
@@ -1,19 +0,0 @@
1
- /** Maximum raw intent-title characters included in a proactive DM line. */
2
- export const POOL_QUESTION_PUSH_TITLE_MAX_CHARS = 80;
3
- /** Stable identity for one pool refresh cycle. Chained alternates retain it. */
4
- export function poolQuestionCycleKey(pool) {
5
- const runId = pool.runId?.trim();
6
- return runId ? `run:${runId}` : `mined:${pool.minedAt}`;
7
- }
8
- /** Escape plain text so it cannot alter the deterministic Markdown template. */
9
- export function escapePoolPushMarkdown(text) {
10
- return text.replace(/([\\`*_[\]{}()<>#+\-.!|])/g, "\\$1");
11
- }
12
- /** Build the sole proactive user-facing DM line for a pushed pool question. */
13
- export function buildPoolQuestionPushMessage(input) {
14
- const normalizedTitle = input.intentTitle.replace(/\s+/g, " ").trim() || "your intent";
15
- const boundedTitle = normalizedTitle.length > POOL_QUESTION_PUSH_TITLE_MAX_CHARS
16
- ? `${normalizedTitle.slice(0, POOL_QUESTION_PUSH_TITLE_MAX_CHARS - 1)}…`
17
- : normalizedTitle;
18
- return `Quick one about [${escapePoolPushMarkdown(boundedTitle)}](/i/${input.intentId}): ${escapePoolPushMarkdown(input.questionPrompt)}`;
19
- }
@@ -1,58 +0,0 @@
1
- /**
2
- * Deterministic pool_discovery question synthesis (IND-418).
3
- *
4
- * A mined discriminator already carries everything a question needs: a label,
5
- * a question seed, 2–3 sides, and verified per-candidate assignments. This
6
- * module turns the top discriminator into a `Question` payload + server-side
7
- * pool snapshot with ZERO generation-time LLM calls — the phrasing was
8
- * produced (and evidence-verified) at mining time, so synthesis is pure,
9
- * auditable, and cheap to re-run for interview-mode chaining.
10
- */
11
- import type { Question, QuestionPoolDiscriminator, QuestionPoolSnapshot } from "../../questions/question.module.js";
12
- import type { ScoredDiscriminator } from "./discriminator.types.js";
13
- /** Fixed option appended to every pool question — the no-preference escape. */
14
- export declare const BOTH_MATTER_LABEL = "Both matter";
15
- /**
16
- * Converts a scored discriminator into the compact snapshot form stored on
17
- * the question row (verified assignments only; unknowns dropped).
18
- */
19
- export declare function toQuestionDiscriminator(d: ScoredDiscriminator): QuestionPoolDiscriminator;
20
- /**
21
- * Filters a mining pass down to question-eligible discriminators:
22
- * VoI ≥ {@link POOL_QUESTION_MIN_VOI}, evidenceRate ≥
23
- * {@link POOL_QUESTION_MIN_EVIDENCE_RATE}, capped at
24
- * {@link POOL_QUESTION_MAX_DISCRIMINATORS}. Input is already VoI-sorted.
25
- */
26
- export declare function selectQuestionDiscriminators(discriminators: ScoredDiscriminator[]): ScoredDiscriminator[];
27
- /** Input for one question synthesis. */
28
- export interface SynthesizePoolQuestionInput {
29
- /** The discriminator to ask about (already eligibility-filtered). */
30
- discriminator: QuestionPoolDiscriminator;
31
- /** Remaining ranked eligible discriminators (interview-mode chain stash). */
32
- alternates: QuestionPoolDiscriminator[];
33
- poolSize: number;
34
- /** Exact bounded candidate opportunity IDs supplied to this synthesis pass. */
35
- opportunityIds: string[];
36
- /** ISO-8601 timestamp of the mining pass. */
37
- minedAt: string;
38
- /** Discovery run id, when known. */
39
- runId?: string;
40
- /**
41
- * Intent payload snippet — folded into the evidence chip so the question
42
- * self-identifies on any surface ("based on 16 people matching ‘…’").
43
- */
44
- intentText?: string;
45
- /** Stable hash of the full normalized intent payload + summary. */
46
- intentFingerprint?: string;
47
- }
48
- /** Synthesized question: client payload + server-side snapshot. */
49
- export interface SynthesizedPoolQuestion {
50
- payload: Question;
51
- pool: QuestionPoolSnapshot;
52
- }
53
- /**
54
- * Builds the pool_discovery question. Returns null when the pool is below
55
- * the k-anonymity floor or the discriminator shape is unusable (guards are
56
- * duplicated here so no caller can bypass them).
57
- */
58
- export declare function synthesizePoolQuestion(input: SynthesizePoolQuestionInput): SynthesizedPoolQuestion | null;