@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,43 +0,0 @@
1
- import { gatherPresenterContext } from "./opportunity.presentation.js";
2
- import { buildDeliveryCardPresentationCacheKey } from "./opportunity.presentation.js";
3
- export const DELIVERY_CARD_CACHE_TTL = 24 * 60 * 60; // 24 hours
4
- export async function getOrCreateDeliveryCardBatch(cache, presenter, presenterDb, opportunities, viewerId, options) {
5
- if (opportunities.length === 0) {
6
- return new Map();
7
- }
8
- const ttl = options?.ttl ?? DELIVERY_CARD_CACHE_TTL;
9
- const keys = opportunities.map((opp) => buildDeliveryCardPresentationCacheKey(opp.id, opp.status, viewerId));
10
- const cached = await cache.mget(keys);
11
- const result = new Map();
12
- const misses = [];
13
- for (let i = 0; i < opportunities.length; i++) {
14
- const item = cached[i];
15
- if (item) {
16
- result.set(opportunities[i].id, item);
17
- }
18
- else {
19
- misses.push({ opp: opportunities[i], index: i });
20
- }
21
- }
22
- // Generate cards for cache misses
23
- await Promise.all(misses.map(async ({ opp, index }) => {
24
- const presenterInput = await gatherPresenterContext(presenterDb, opp, viewerId);
25
- presenterInput.opportunityStatus = opp.status;
26
- const presented = await presenter.presentCard(presenterInput);
27
- const card = {
28
- opportunityId: opp.id,
29
- headline: presented.headline,
30
- personalizedSummary: presented.personalizedSummary,
31
- suggestedAction: presented.suggestedAction,
32
- narratorRemark: presented.narratorRemark,
33
- greeting: presented.greeting ?? '',
34
- };
35
- result.set(opp.id, card);
36
- // Presenter fallbacks are safe for this request but are deliberately not
37
- // persisted for 24 hours; a later request should retry genuine copy.
38
- if (!presented.isFallback) {
39
- await cache.set(keys[index], card, { ttl });
40
- }
41
- }));
42
- return result;
43
- }
@@ -1,20 +0,0 @@
1
- export declare const DISCOVERY_MIN_SIMILARITY_DEFAULT = 0.3;
2
- export declare const DISCOVERY_EVALUATOR_MIN_SCORE_DEFAULT = 50;
3
- export declare function validateDiscoveryMinSimilarity(value: number): number;
4
- export declare function validateDiscoveryEvaluatorMinScore(value: number): number;
5
- export declare function discoveryMinSimilarity(): number;
6
- export declare function discoveryEvaluatorMinScore(): number;
7
- /** Data types allowed to participate in opportunity matching. */
8
- export type DiscoveryMatchType = 'intent' | 'profile';
9
- /** Test hook: clear warn-once state so each test observes warnings. */
10
- export declare function resetDiscoveryEnvWarningsForTests(): void;
11
- /** Current DISCOVERY_ALLOWED_TYPES set (default: intent + profile). */
12
- export declare function discoveryAllowedTypes(): ReadonlySet<DiscoveryMatchType>;
13
- /** True when intents may participate in matching (source or candidate). */
14
- export declare function discoveryIntentMatchingEnabled(): boolean;
15
- /** True when profile data (premises or user_contexts) may participate. */
16
- export declare function discoveryProfileMatchingEnabled(): boolean;
17
- /** What "profile" means in matching: heavyweight premises or lightweight user_contexts. */
18
- export type DiscoveryProfileSource = 'premise' | 'user_context';
19
- /** Current DISCOVERY_PROFILE_SOURCE (default: premise). */
20
- export declare function discoveryProfileSource(): DiscoveryProfileSource;
@@ -1,109 +0,0 @@
1
- /**
2
- * Centralized accessors for discovery match-type environment variables.
3
- *
4
- * DISCOVERY_ALLOWED_TYPES CSV of `intent`, `profile` (default: both).
5
- * Master gate for which data types may participate
6
- * in opportunity matching. `profile` is an umbrella
7
- * whose representation is selected by
8
- * DISCOVERY_PROFILE_SOURCE. Unknown tokens warn once
9
- * and are ignored; if no valid tokens remain, falls
10
- * back to both-allowed with a warning (a typo must
11
- * never disable all discovery).
12
- * DISCOVERY_PROFILE_SOURCE `premise` (default, heavyweight: atomic premises
13
- * as profile corpus + premise-to-premise) or
14
- * `user_context` (lightweight: synthesized context
15
- * paragraphs as profile corpus + context-to-context).
16
- * Unknown values warn once and fall back to `premise`.
17
- *
18
- * All reads go through this module — do not read these variables via
19
- * `process.env` elsewhere. Values are read on every call (no caching) so
20
- * tests and long-lived processes observe changes.
21
- */
22
- import { protocolLogger } from '../shared/observability/protocol.logger.js';
23
- const envLog = protocolLogger('Discovery:env');
24
- export const DISCOVERY_MIN_SIMILARITY_DEFAULT = 0.30;
25
- export const DISCOVERY_EVALUATOR_MIN_SCORE_DEFAULT = 50;
26
- const DECIMAL_VALUE = /^[+]?(?:\d+(?:\.\d*)?|\.\d+)$/;
27
- function validateThreshold(name, value, max) {
28
- if (!Number.isFinite(value) || value < 0 || value > max) {
29
- throw new Error(`${name} must be a finite decimal between 0 and ${max} (inclusive)`);
30
- }
31
- return value;
32
- }
33
- function readThreshold(raw, name, fallback, max) {
34
- if (raw === undefined || raw.trim() === '')
35
- return fallback;
36
- const normalized = raw.trim();
37
- if (!DECIMAL_VALUE.test(normalized)) {
38
- throw new Error(`${name} must be a finite decimal between 0 and ${max} (inclusive)`);
39
- }
40
- return validateThreshold(name, Number(normalized), max);
41
- }
42
- export function validateDiscoveryMinSimilarity(value) {
43
- return validateThreshold('DISCOVERY_MIN_SIMILARITY', value, 1);
44
- }
45
- export function validateDiscoveryEvaluatorMinScore(value) {
46
- return validateThreshold('DISCOVERY_EVALUATOR_MIN_SCORE', value, 100);
47
- }
48
- export function discoveryMinSimilarity() {
49
- return readThreshold(process.env.DISCOVERY_MIN_SIMILARITY, 'DISCOVERY_MIN_SIMILARITY', DISCOVERY_MIN_SIMILARITY_DEFAULT, 1);
50
- }
51
- export function discoveryEvaluatorMinScore() {
52
- return readThreshold(process.env.DISCOVERY_EVALUATOR_MIN_SCORE, 'DISCOVERY_EVALUATOR_MIN_SCORE', DISCOVERY_EVALUATOR_MIN_SCORE_DEFAULT, 100);
53
- }
54
- const VALID_TOKENS = new Set(['intent', 'profile']);
55
- const BOTH = new Set(['intent', 'profile']);
56
- /** Tokens/values already warned about (warn-once per process). */
57
- const warned = new Set();
58
- /** Test hook: clear warn-once state so each test observes warnings. */
59
- export function resetDiscoveryEnvWarningsForTests() {
60
- warned.clear();
61
- }
62
- function warnOnce(key, message) {
63
- if (warned.has(key))
64
- return;
65
- warned.add(key);
66
- envLog.warn(message);
67
- }
68
- /** Current DISCOVERY_ALLOWED_TYPES set (default: intent + profile). */
69
- export function discoveryAllowedTypes() {
70
- const raw = process.env.DISCOVERY_ALLOWED_TYPES;
71
- if (raw === undefined || raw.trim() === '')
72
- return BOTH;
73
- const parsed = new Set();
74
- for (const token of raw.split(',')) {
75
- const t = token.trim().toLowerCase();
76
- if (!t)
77
- continue;
78
- if (VALID_TOKENS.has(t)) {
79
- parsed.add(t);
80
- }
81
- else {
82
- warnOnce(`token:${t}`, `DISCOVERY_ALLOWED_TYPES: ignoring unknown token "${t}" (valid: intent, profile)`);
83
- }
84
- }
85
- if (parsed.size === 0) {
86
- warnOnce('fallback', `DISCOVERY_ALLOWED_TYPES="${raw}" has no valid tokens; falling back to intent,profile`);
87
- return BOTH;
88
- }
89
- return parsed;
90
- }
91
- /** True when intents may participate in matching (source or candidate). */
92
- export function discoveryIntentMatchingEnabled() {
93
- return discoveryAllowedTypes().has('intent');
94
- }
95
- /** True when profile data (premises or user_contexts) may participate. */
96
- export function discoveryProfileMatchingEnabled() {
97
- return discoveryAllowedTypes().has('profile');
98
- }
99
- /** Current DISCOVERY_PROFILE_SOURCE (default: premise). */
100
- export function discoveryProfileSource() {
101
- const raw = process.env.DISCOVERY_PROFILE_SOURCE;
102
- if (raw === undefined || raw.trim() === '')
103
- return 'premise';
104
- const v = raw.trim().toLowerCase();
105
- if (v === 'premise' || v === 'user_context')
106
- return v;
107
- warnOnce(`source:${v}`, `DISCOVERY_PROFILE_SOURCE: unknown value "${raw}"; falling back to "premise" (valid: premise, user_context)`);
108
- return 'premise';
109
- }
@@ -1,90 +0,0 @@
1
- import type { QuestionPoolDiscriminator } from "../../questions/question.module.js";
2
- /** Recipient and intent provenance that scopes one pool preference. */
3
- export interface PoolAdjustmentProvenance {
4
- recipientUserId: string;
5
- intentId: string;
6
- }
7
- /** One applied adjustment on an opportunity (stored in metadata.poolAdjustments). */
8
- export interface PoolAdjustment extends PoolAdjustmentProvenance {
9
- /** The answered question that produced this adjustment (reversal key). */
10
- questionId: string;
11
- /** Discriminator label, e.g. "Hands-on builders vs advisors". */
12
- label: string;
13
- /** Side this candidate was assigned to (or "unknown"). */
14
- side: string;
15
- /** Multiplicative factor: chosen 1.0, other 0.6, unknown 0.9. */
16
- factor: number;
17
- /** Template chip text from the user's own answer. Set on demotions only. */
18
- detail?: string;
19
- /** ISO-8601 apply timestamp. */
20
- appliedAt: string;
21
- /** Full intent fingerprint authoritative when this adjustment was created. */
22
- intentFingerprint?: string;
23
- /** Audit-only marker: stale adjustments remain stored but have no ranking effect. */
24
- stale?: true;
25
- }
26
- /** Reads valid adjustments, optionally narrowed to one recipient + intent. */
27
- export declare function readPoolAdjustments(metadata: Record<string, unknown> | null | undefined, provenance?: PoolAdjustmentProvenance): PoolAdjustment[];
28
- /** Reads valid, non-stale adjustments for ranking and presentation behavior. */
29
- export declare function readActivePoolAdjustments(metadata: Record<string, unknown> | null | undefined, provenance?: PoolAdjustmentProvenance): PoolAdjustment[];
30
- /**
31
- * Cumulative adjustment multiplier for an opportunity, floored at
32
- * {@link POOL_ADJUSTMENT_FLOOR}. 1 when no scoped adjustments exist.
33
- */
34
- export declare function poolAdjustmentMultiplier(metadata: Record<string, unknown> | null | undefined, provenance: PoolAdjustmentProvenance): number;
35
- /** Adjusted confidence: `confidence × Π factor`, floored. */
36
- export declare function adjustedConfidence(confidence: number, metadata: Record<string, unknown> | null | undefined, provenance: PoolAdjustmentProvenance): number;
37
- /** Deterministic provenance signal stored alongside one adjustment. */
38
- export interface PoolAdjustmentSignal extends PoolAdjustmentProvenance {
39
- type: "pool_discriminator";
40
- weight: 1 | -1 | 0;
41
- detail: string;
42
- questionId: string;
43
- }
44
- /** Pure helper input shared by Tier-0 answers and newborn stamping. */
45
- export interface BuildPoolAdjustmentInput extends PoolAdjustmentProvenance {
46
- questionId: string;
47
- label: string;
48
- /** Verified side assignment, or null when the candidate is unassigned. */
49
- assignedSide: string | null;
50
- chosenSide: string;
51
- appliedAt: string;
52
- /** Full intent fingerprint authoritative when this adjustment was created. */
53
- intentFingerprint?: string;
54
- }
55
- /**
56
- * Build one P3-compatible adjustment and signal. This is the only place that
57
- * defines chosen/other/unknown factors, weights, and safe template details.
58
- */
59
- export declare function buildPoolAdjustment(input: BuildPoolAdjustmentInput): {
60
- adjustment: PoolAdjustment;
61
- signal: PoolAdjustmentSignal;
62
- };
63
- /** Plan entry: what to write on one opportunity for one answer. */
64
- export interface PoolAdjustmentPlanEntry {
65
- opportunityId: string;
66
- adjustment: PoolAdjustment;
67
- signal: PoolAdjustmentSignal;
68
- }
69
- /**
70
- * Computes the write plan for one answered discriminator. Pure: the caller
71
- * loads/patches rows. "Both matter" (or any label not in `sides`) yields an
72
- * empty plan — no preference, no adjustments.
73
- *
74
- * @param discriminator The asked discriminator (from detection.pool).
75
- * @param chosenSide The selected option label (chip label = side label).
76
- * @param questionId Reversal key.
77
- * @param recipientUserId User whose answer produced the preference.
78
- * @param intentId Intent whose candidate pool was ranked.
79
- * @param now ISO-8601 timestamp.
80
- * @param intentFingerprint Full intent fingerprint authoritative at apply time.
81
- */
82
- export declare function planPoolAdjustments(discriminator: QuestionPoolDiscriminator, chosenSide: string, questionId: string, recipientUserId: string, intentId: string, now: string, intentFingerprint?: string): PoolAdjustmentPlanEntry[];
83
- /**
84
- * Merges one adjustment into an opportunity's existing metadata, replacing
85
- * only the entry for the same question + recipient + intent provenance.
86
- * Returns the NEW metadata object (caller persists it wholesale).
87
- */
88
- export declare function mergePoolAdjustment(metadata: Record<string, unknown> | null | undefined, adjustment: PoolAdjustment): Record<string, unknown>;
89
- /** Latest scoped user-explainable demotion detail for card presentation. */
90
- export declare function latestPoolDemotionDetail(metadata: Record<string, unknown> | null | undefined, provenance: PoolAdjustmentProvenance): string | undefined;
@@ -1,141 +0,0 @@
1
- /**
2
- * Pool-adjustment domain logic (IND-419) — pure functions, no I/O.
3
- *
4
- * When a user answers a pool_discovery question, every candidate the mining
5
- * pass assigned to a side gets a multiplicative adjustment written to
6
- * `opportunities.metadata.poolAdjustments`. The radar view (flag-gated) orders
7
- * by `confidence × Π factor`, floored so demoted candidates stay visible.
8
- *
9
- * Invariants:
10
- * - Deterministic and O(pool): no LLM at answer time — the applyPlan was
11
- * computed (and evidence-verified) at mining time.
12
- * - Reversible: entries are keyed by questionId; re-answering replaces them,
13
- * dismissal-driven reversal removes them.
14
- * - `detail` carries the template chip text built from the user's OWN answer
15
- * ("Hands-on builders vs advisors: you chose Advisor") — never LLM
16
- * reasoning (see `packages/protocol/src/opportunity/AGENTS.md`).
17
- */
18
- import { POOL_ADJUSTMENT_FACTOR_OTHER, POOL_ADJUSTMENT_FACTOR_UNKNOWN, POOL_ADJUSTMENT_FLOOR } from "./discriminator.env.js";
19
- /** Reads valid adjustments, optionally narrowed to one recipient + intent. */
20
- export function readPoolAdjustments(metadata, provenance) {
21
- const raw = metadata?.poolAdjustments;
22
- if (!Array.isArray(raw))
23
- return [];
24
- return raw.filter((a) => {
25
- if (typeof a !== "object" || a === null ||
26
- typeof a.questionId !== "string" ||
27
- typeof a.recipientUserId !== "string" ||
28
- typeof a.intentId !== "string" ||
29
- typeof a.factor !== "number" ||
30
- (a.stale !== undefined && a.stale !== true))
31
- return false;
32
- return provenance === undefined || (a.recipientUserId === provenance.recipientUserId &&
33
- a.intentId === provenance.intentId);
34
- });
35
- }
36
- /** Reads valid, non-stale adjustments for ranking and presentation behavior. */
37
- export function readActivePoolAdjustments(metadata, provenance) {
38
- return readPoolAdjustments(metadata, provenance).filter((adjustment) => adjustment.stale !== true);
39
- }
40
- /**
41
- * Cumulative adjustment multiplier for an opportunity, floored at
42
- * {@link POOL_ADJUSTMENT_FLOOR}. 1 when no scoped adjustments exist.
43
- */
44
- export function poolAdjustmentMultiplier(metadata, provenance) {
45
- const adjustments = readActivePoolAdjustments(metadata, provenance);
46
- if (adjustments.length === 0)
47
- return 1;
48
- const product = adjustments.reduce((acc, a) => acc * (Number.isFinite(a.factor) && a.factor > 0 ? a.factor : 1), 1);
49
- return Math.max(POOL_ADJUSTMENT_FLOOR, product);
50
- }
51
- /** Adjusted confidence: `confidence × Π factor`, floored. */
52
- export function adjustedConfidence(confidence, metadata, provenance) {
53
- return confidence * poolAdjustmentMultiplier(metadata, provenance);
54
- }
55
- /**
56
- * Build one P3-compatible adjustment and signal. This is the only place that
57
- * defines chosen/other/unknown factors, weights, and safe template details.
58
- */
59
- export function buildPoolAdjustment(input) {
60
- const isUnknown = input.assignedSide === null;
61
- const isChosen = !isUnknown && input.assignedSide === input.chosenSide;
62
- const factor = isUnknown ? POOL_ADJUSTMENT_FACTOR_UNKNOWN : isChosen ? 1 : POOL_ADJUSTMENT_FACTOR_OTHER;
63
- const weight = isUnknown ? 0 : isChosen ? 1 : -1;
64
- const side = input.assignedSide ?? "unknown";
65
- return {
66
- adjustment: {
67
- questionId: input.questionId,
68
- recipientUserId: input.recipientUserId,
69
- intentId: input.intentId,
70
- label: input.label,
71
- side,
72
- factor,
73
- ...(!isChosen && !isUnknown ? { detail: `${input.label}: you chose ${input.chosenSide}` } : {}),
74
- appliedAt: input.appliedAt,
75
- ...(input.intentFingerprint !== undefined ? { intentFingerprint: input.intentFingerprint } : {}),
76
- },
77
- signal: {
78
- type: "pool_discriminator",
79
- weight,
80
- recipientUserId: input.recipientUserId,
81
- intentId: input.intentId,
82
- detail: isUnknown ? `${input.label}: unassigned` : `${input.label}: ${input.chosenSide}`,
83
- questionId: input.questionId,
84
- },
85
- };
86
- }
87
- /**
88
- * Computes the write plan for one answered discriminator. Pure: the caller
89
- * loads/patches rows. "Both matter" (or any label not in `sides`) yields an
90
- * empty plan — no preference, no adjustments.
91
- *
92
- * @param discriminator The asked discriminator (from detection.pool).
93
- * @param chosenSide The selected option label (chip label = side label).
94
- * @param questionId Reversal key.
95
- * @param recipientUserId User whose answer produced the preference.
96
- * @param intentId Intent whose candidate pool was ranked.
97
- * @param now ISO-8601 timestamp.
98
- * @param intentFingerprint Full intent fingerprint authoritative at apply time.
99
- */
100
- export function planPoolAdjustments(discriminator, chosenSide, questionId, recipientUserId, intentId, now, intentFingerprint) {
101
- // Chip labels are word-capped side labels; match on the capped prefix too.
102
- const matchesSide = (side) => side === chosenSide || side.startsWith(chosenSide) || chosenSide.startsWith(side);
103
- const chosen = discriminator.sides.find(matchesSide);
104
- if (!chosen)
105
- return []; // "Both matter" or unrecognized option → no adjustments.
106
- const plan = [];
107
- for (const a of discriminator.assignments) {
108
- plan.push({
109
- opportunityId: a.opportunityId,
110
- ...buildPoolAdjustment({
111
- questionId,
112
- recipientUserId,
113
- intentId,
114
- label: discriminator.label,
115
- assignedSide: a.side,
116
- chosenSide: chosen,
117
- appliedAt: now,
118
- ...(intentFingerprint !== undefined ? { intentFingerprint } : {}),
119
- }),
120
- });
121
- }
122
- return plan;
123
- }
124
- /**
125
- * Merges one adjustment into an opportunity's existing metadata, replacing
126
- * only the entry for the same question + recipient + intent provenance.
127
- * Returns the NEW metadata object (caller persists it wholesale).
128
- */
129
- export function mergePoolAdjustment(metadata, adjustment) {
130
- const existing = readPoolAdjustments(metadata).filter((a) => !(a.questionId === adjustment.questionId &&
131
- a.recipientUserId === adjustment.recipientUserId &&
132
- a.intentId === adjustment.intentId));
133
- return { ...(metadata ?? {}), poolAdjustments: [...existing, adjustment] };
134
- }
135
- /** Latest scoped user-explainable demotion detail for card presentation. */
136
- export function latestPoolDemotionDetail(metadata, provenance) {
137
- return [...readActivePoolAdjustments(metadata, provenance)]
138
- .reverse()
139
- .find((adjustment) => adjustment.factor < 1 && typeof adjustment.detail === 'string' && adjustment.detail.length > 0)
140
- ?.detail;
141
- }
@@ -1,78 +0,0 @@
1
- import { z } from "zod";
2
- import { createStructuredModel } from "../../shared/agent/model.config.js";
3
- import type { PoolCandidate } from "./discriminator.types.js";
4
- declare const AxisSchema: z.ZodObject<{
5
- questionId: z.ZodString;
6
- assignments: z.ZodArray<z.ZodObject<{
7
- candidateId: z.ZodString;
8
- side: z.ZodNullable<z.ZodString>;
9
- evidence: z.ZodNullable<z.ZodString>;
10
- }, "strip", z.ZodTypeAny, {
11
- evidence: string | null;
12
- side: string | null;
13
- candidateId: string;
14
- }, {
15
- evidence: string | null;
16
- side: string | null;
17
- candidateId: string;
18
- }>, "many">;
19
- }, "strip", z.ZodTypeAny, {
20
- assignments: {
21
- evidence: string | null;
22
- side: string | null;
23
- candidateId: string;
24
- }[];
25
- questionId: string;
26
- }, {
27
- assignments: {
28
- evidence: string | null;
29
- side: string | null;
30
- candidateId: string;
31
- }[];
32
- questionId: string;
33
- }>;
34
- type RawAxis = z.infer<typeof AxisSchema>;
35
- /** Fixed answered axis; deliberately excludes the owner's chosen side. */
36
- export interface PoolDiscriminatorAssignmentAxis {
37
- questionId: string;
38
- label: string;
39
- sides: string[];
40
- }
41
- /** One batched assignment call. */
42
- export interface PoolDiscriminatorAssignmentInput {
43
- axes: PoolDiscriminatorAssignmentAxis[];
44
- candidates: PoolCandidate[];
45
- }
46
- /** Verified assignment. Invalid or explicit unknown classifications use null. */
47
- export interface PoolDiscriminatorCandidateAssignment {
48
- candidateId: string;
49
- side: string | null;
50
- evidence: string | null;
51
- }
52
- /** One valid returned axis. Missing or malformed axes are omitted entirely. */
53
- export interface PoolDiscriminatorAssignedAxis {
54
- questionId: string;
55
- assignments: PoolDiscriminatorCandidateAssignment[];
56
- }
57
- /** Construction options for {@link PoolDiscriminatorAssigner}. */
58
- export interface PoolDiscriminatorAssignerConfig {
59
- modelConfig?: Parameters<typeof createStructuredModel>[3];
60
- }
61
- /** Build the classifier prompt without any chosen-side preference. */
62
- export declare function buildAssignmentPrompt(input: PoolDiscriminatorAssignmentInput): string;
63
- /** Verify one model-returned axis against fixed IDs, sides, and contexts. */
64
- export declare function verifyAssignedAxis(raw: RawAxis, input: PoolDiscriminatorAssignmentInput): PoolDiscriminatorAssignedAxis | null;
65
- /** Stateless one-call newborn candidate classifier. */
66
- export declare class PoolDiscriminatorAssigner {
67
- private model;
68
- constructor(config?: PoolDiscriminatorAssignerConfig);
69
- /**
70
- * Classify every candidate against every fixed axis in one provider call.
71
- * Provider failures propagate so the host graph's fail-open seam can retain
72
- * the original un-stamped create items.
73
- */
74
- assign(input: PoolDiscriminatorAssignmentInput, options?: {
75
- signal?: AbortSignal;
76
- }): Promise<PoolDiscriminatorAssignedAxis[]>;
77
- }
78
- export {};
@@ -1,153 +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
- * Evidence-verified assignment of call-local newborn candidates to already
12
- * answered pool-discriminator axes (IND-420 P4b).
13
- *
14
- * One structured model call batches every fixed axis and candidate. The model
15
- * never receives the owner's chosen side; it only classifies public candidate
16
- * context. Code owns all identifiers, allowed sides, and evidence verification.
17
- */
18
- import { HumanMessage, SystemMessage } from "@langchain/core/messages";
19
- import { z } from "zod";
20
- import { createStructuredModel } from "../../shared/agent/model.config.js";
21
- import { invokeWithAbortSignal } from "../../shared/agent/model-signal.js";
22
- import { protocolLogger } from "../../shared/observability/protocol.logger.js";
23
- import { Timed } from "../../shared/observability/performance.js";
24
- import { POOL_DISCRIMINATOR_MAX_CANDIDATES } from "./discriminator.env.js";
25
- import { poolEvidenceMatches } from "./discriminator.miner.js";
26
- /** QuestionerAdapter caps fresh answered preferences at this count. */
27
- const MAX_ASSIGNMENT_AXES = 10;
28
- const logger = protocolLogger("PoolDiscriminatorAssigner");
29
- const AssignmentSchema = z.object({
30
- candidateId: z.string(),
31
- side: z.string().nullable(),
32
- evidence: z.string().max(200).nullable(),
33
- });
34
- const AxisSchema = z.object({
35
- questionId: z.string(),
36
- assignments: z.array(AssignmentSchema).max(POOL_DISCRIMINATOR_MAX_CANDIDATES),
37
- });
38
- // Keep fields optional at the outer response layer so one malformed/missing
39
- // axis can be skipped independently, while still bounding and describing the
40
- // nested assignment payload sent through structured output.
41
- const ResponseAxisSchema = z.object({
42
- questionId: z.string().optional(),
43
- assignments: z.array(AssignmentSchema).max(POOL_DISCRIMINATOR_MAX_CANDIDATES).optional(),
44
- }).passthrough();
45
- const ResponseSchema = z.object({ axes: z.array(ResponseAxisSchema).max(MAX_ASSIGNMENT_AXES) });
46
- const SYSTEM_PROMPT = `Classify candidate matches against FIXED preference axes.
47
-
48
- Rules:
49
- - Use only the supplied questionId, candidateId, and side labels. Never invent or rename them.
50
- - Return one axis object per supplied question and one assignment per candidate.
51
- - Pick a side only when the candidate context clearly supports it; otherwise use side null and evidence null.
52
- - Every non-null side requires a short VERBATIM substring copied from that candidate's context. It is checked mechanically.
53
- - Do not infer the user's preference. You are classifying candidates, not choosing which side is better.
54
- - Return only questionId, candidateId, side, and evidence fields.`;
55
- /** Build the classifier prompt without any chosen-side preference. */
56
- export function buildAssignmentPrompt(input) {
57
- const axes = input.axes.map((axis) => ({
58
- questionId: axis.questionId,
59
- label: axis.label,
60
- sides: axis.sides,
61
- }));
62
- const candidates = input.candidates.map((candidate) => ({
63
- candidateId: candidate.id,
64
- publicContext: candidate.publicContext,
65
- }));
66
- return JSON.stringify({ axes, candidates }, null, 2);
67
- }
68
- /** Verify one model-returned axis against fixed IDs, sides, and contexts. */
69
- export function verifyAssignedAxis(raw, input) {
70
- const fixedAxis = input.axes.find((axis) => axis.questionId === raw.questionId);
71
- if (!fixedAxis)
72
- return null;
73
- const contextById = new Map(input.candidates.map((candidate) => [candidate.id, candidate.publicContext]));
74
- const firstById = new Map();
75
- for (const assignment of raw.assignments) {
76
- const context = contextById.get(assignment.candidateId);
77
- if (context === undefined || firstById.has(assignment.candidateId))
78
- continue;
79
- if (assignment.side === null) {
80
- firstById.set(assignment.candidateId, {
81
- candidateId: assignment.candidateId,
82
- side: null,
83
- evidence: null,
84
- });
85
- continue;
86
- }
87
- if (!fixedAxis.sides.includes(assignment.side) || !poolEvidenceMatches(context, assignment.evidence)) {
88
- firstById.set(assignment.candidateId, {
89
- candidateId: assignment.candidateId,
90
- side: null,
91
- evidence: null,
92
- });
93
- continue;
94
- }
95
- firstById.set(assignment.candidateId, {
96
- candidateId: assignment.candidateId,
97
- side: assignment.side,
98
- evidence: assignment.evidence,
99
- });
100
- }
101
- return {
102
- questionId: fixedAxis.questionId,
103
- assignments: input.candidates.map((candidate) => firstById.get(candidate.id) ?? {
104
- candidateId: candidate.id,
105
- side: null,
106
- evidence: null,
107
- }),
108
- };
109
- }
110
- /** Stateless one-call newborn candidate classifier. */
111
- export class PoolDiscriminatorAssigner {
112
- constructor(config) {
113
- this.model = createStructuredModel("poolDiscriminatorAssigner", ResponseSchema, { name: "pool_newborn_assignments" }, config?.modelConfig);
114
- }
115
- /**
116
- * Classify every candidate against every fixed axis in one provider call.
117
- * Provider failures propagate so the host graph's fail-open seam can retain
118
- * the original un-stamped create items.
119
- */
120
- async assign(input, options) {
121
- if (input.axes.length === 0 || input.candidates.length === 0)
122
- return [];
123
- const boundedInput = {
124
- axes: input.axes.slice(0, MAX_ASSIGNMENT_AXES),
125
- candidates: input.candidates.slice(0, POOL_DISCRIMINATOR_MAX_CANDIDATES),
126
- };
127
- const raw = await invokeWithAbortSignal(this.model, [new SystemMessage(SYSTEM_PROMPT), new HumanMessage(buildAssignmentPrompt(boundedInput))], options?.signal);
128
- const parsed = ResponseSchema.safeParse(raw);
129
- if (!parsed.success) {
130
- logger.warn("Assignment response failed schema validation", { issues: parsed.error.issues.length });
131
- return [];
132
- }
133
- const seen = new Set();
134
- const verified = [];
135
- for (const rawAxis of parsed.data.axes) {
136
- const axis = AxisSchema.safeParse(rawAxis);
137
- if (!axis.success || seen.has(axis.data.questionId))
138
- continue;
139
- const result = verifyAssignedAxis(axis.data, boundedInput);
140
- if (!result)
141
- continue;
142
- seen.add(result.questionId);
143
- verified.push(result);
144
- }
145
- return verified;
146
- }
147
- }
148
- __decorate([
149
- Timed(),
150
- __metadata("design:type", Function),
151
- __metadata("design:paramtypes", [Object, Object]),
152
- __metadata("design:returntype", Promise)
153
- ], PoolDiscriminatorAssigner.prototype, "assign", null);